当前位置: 首页 > news >正文

langchain和langgraph备忘录

langchain

from langchain.agents import create_agent
from langchain_core.messages import HumanMessage, AIMessage
from langchain_ollama import ChatOllamafrom tool import PersonInfoTool# 配置Ollama模型
llm = ChatOllama(model="qwen3:4b",temperature=0.6,num_ctx=2048,verbose=True
)# 创建工具
person_tool = PersonInfoTool()
tools = [person_tool]agent_executor = create_agent(model=llm,tools=tools,system_prompt="你是一个会利用工具的助手。",
)for chunk in agent_executor.stream({"messages": [{"role": "user", "content": "帮我查询下王微微的出生年月?"}]},stream_mode="values"):latest_message = chunk["messages"][-1]if latest_message.content:if isinstance(latest_message, HumanMessage):print(f"user:{latest_message.content}")elif isinstance(latest_message, AIMessage):print(f"AI:{latest_message.content}")elif latest_message.tool_calls:print(f"Calling tools:{[tc['name'] for tc in latest_message.tool_calls]}")

langgraph

from typing import TypedDict, Annotatedfrom langchain_core.messages import AIMessage
from langchain_ollama import ChatOllama
from langgraph.graph import START, StateGraph
from langgraph.graph.message import add_messages
from langgraph.prebuilt import ToolNode, tools_conditionfrom tool import PersonInfoTool# 配置Ollama模型
llm = ChatOllama(model="qwen3:4b",temperature=0.6,num_ctx=2048,verbose=True
)# 创建工具
person_tool = PersonInfoTool()
tools = [person_tool]class State(TypedDict):messages: Annotated[list, add_messages]graph_builder = StateGraph(State)llm_with_tools = llm.bind_tools(tools)def chatbot(state: State):return {"messages": llm_with_tools.invoke(state["messages"])}graph_builder.add_node("chatbot", chatbot)
graph_builder.add_edge(START, "chatbot")tool_node = ToolNode(tools=tools)
graph_builder.add_node("tools", tool_node)graph_builder.add_conditional_edges("chatbot", tools_condition)graph_builder.add_edge("tools", "chatbot")
graph = graph_builder.compile()def stream_graph_updates(user_input: str):for event in graph.stream({"messages": [{"role": "user", "content": user_input}]}):for value in event.values():if isinstance(value["messages"], AIMessage):print("Assistant:", value["messages"].content)else:print("Tool:", value["messages"][-1].content)stream_graph_updates("帮我查询下王微微的出生年月?")

PersonInfoTool

# tools/person_info.py
from typing import Anyfrom langchain_core.tools import BaseToolclass PersonInfoTool(BaseTool):name: str = "person_info"description: str = "查询人物出生年份(输入格式:'人名',例如'肖汪')"def _run(self, name: str, **kwargs: Any) -> str:return "1980"async def _arun(self, name: str, **kwargs: Any) -> str:return self._run(name)
http://www.jsqmd.com/news/425575/

相关文章:

  • 这9款AI降重神器排名靠前,帮你快速完成内容优化处理
  • [AI智能体与提效-102] -AI智能体应用与传统的移动端应用的关系?是替代?还是在现有应用的基础之上被AI集成?
  • 详解无线路由器与无线AP的区别
  • NFS 环境搭建 (学习笔记)
  • 智能降重工具前九强榜单,助您高效提升文本原创度
  • 推荐9款智能降重工具,有效提升文本改写效率
  • 人工智能篇---百度技术生态
  • buuctf 逆向
  • 产线上,逐个产品数据高速数据记录方法
  • 上位机知识篇---Docker vs Node.js
  • Agent之skill:HuggingFaceSkills的简介、安装和使用方法、案例应用之详细攻略
  • 上位机知识篇---租用服务器
  • LLMs之RAG:PageIndex的简介、安装和使用方法、案例应用之详细攻略
  • 基于springboot框架的校园食堂点餐平台_98xr323n
  • 【认知雷达】The Case for Cognition and Radar Sensing 认知雷达传感的必要性
  • 基于springboot框架的校园二手交易系统的设计与开发_42194l18
  • 学Simulink——基于Simulink的PMSM无位置传感器(滑模观测器)控制仿真建模示例
  • 2026年2月文章一览
  • 1.2 从 BERT 到 ChatGPT:发展脉络与典型应用范式
  • 基于springboot框架的大学生在线摄影活动报名系统网站的设计与实现_p456017u
  • MySQL 慢日志分析工具---pt-query-digest
  • 基于springboot框架的宠物商城 论坛领养系统_07ggc7q2
  • 给定一个字符串,求最长交替子序列
  • 分布式AI系统中的短期记忆共享机制设计
  • 基于springboot框架的宠物领养及健康管理系统_3890qn5o
  • 基于springboot框架的成都某民宿预订系统的设计与实现_r93v34dv
  • 基于springboot框架的景区购物商城系统 小程序的设计与实现_2103p0gh
  • MySQL 慢日志统计分析利器---pt-query-digest
  • 基于springboot框架的流浪猫领养系统_ct8whxh8
  • 大数据领域 OLAP 工具的性能评测与对比