admin 管理员组文章数量: 1103785
AI智能体(二)
LangGraph:基于状态机的工作流
- 跨越多个对话或工具的无缝状态管理
- 根据动态条件在节点之间灵活跳转
- 在LLMs和人工操作之间平滑切换
- 长时间运行的持久性
LangGraph更低级别、更细粒度管理Agent的状态和行为。适合大型复杂的Agent。langchain提供类似AgentExecutor这样的更高层次框架,适合快速开发和部署。
上图是LangGraph完整的图计算的模式,有开始,有结束,中间有很多节点,节点之间会有一定的关系。我们会有三个概念来实现LangGraph。
- State:状态机状态,任何Python类型,它对应于上图中的线,表示各种状态。
- Nodes:Agent的逻辑函数,操作State。如上图中的entry_node,它操作之后才决定流程是走到node_entry_node_A还是走到node_entry_node_B。
- Edges:控制流规则,条件分支或固定转换。如上图中的start和end。
Graph:对象与关系表达,它的组成有
- 顶点(Vertices)
- 边(Edges)
- 表示对象及其相互关系
有关图的内容可以参考图论整理
HelloWorld
代码语言:javascript代码运行次数:0运行复制pip install langgraph
代码语言:javascript代码运行次数:0运行复制from langgraph.graph import StateGraph, END
from langchain_community.chat_models import ChatZhipuAI
from langchain_core.messages import BaseMessage, HumanMessage
from typing import TypedDict, Annotated, Sequence
import operator
import os
class AgentState(TypedDict):
'''
状态记录
'''
messages: Annotated[Sequence[BaseMessage], operator.add]
def _call_model(state):
'''
执行LLM操作
'''
response = chat.invoke(state['messages'])
return {'messages': [response]}
if __name__ == '__main__':
os.environ['ZHIPUAI_API_KEY'] = '******'
chat = ChatZhipuAI(model='glm-4', temperature=0.5)
workflow = StateGraph(AgentState)
workflow.add_node('model', _call_model)
workflow.set_entry_point('model')
workflow.add_edge('model', END)
app = workflowpile()
res = app.invoke({'messages': [HumanMessage(content='你好')]})
print(res)
运行结果
代码语言:javascript代码运行次数:0运行复制{'messages': [HumanMessage(content='你好', additional_kwargs={}, response_metadata={}), AIMessage(content='你好
本文标签:
AI智能体(二)
版权声明:本文标题:AI智能体(二) 内容由网友自发贡献,该文观点仅代表作者本人,
转载请联系作者并注明出处:http://www.520sys.cn/xp/1755021121a1457384.html,
本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌抄袭侵权/违法违规的内容,一经查实,本站将立刻删除。
发表评论