admin 管理员组

文章数量: 1103785

AI智能体(二)

LangGraph:基于状态机的工作流

  1. 跨越多个对话或工具的无缝状态管理
  2. 根据动态条件在节点之间灵活跳转
  3. 在LLMs和人工操作之间平滑切换
  4. 长时间运行的持久性

LangGraph更低级别、更细粒度管理Agent的状态和行为。适合大型复杂的Agent。langchain提供类似AgentExecutor这样的更高层次框架,适合快速开发和部署。

上图是LangGraph完整的图计算的模式,有开始,有结束,中间有很多节点,节点之间会有一定的关系。我们会有三个概念来实现LangGraph。

  1. State:状态机状态,任何Python类型,它对应于上图中的线,表示各种状态。
  2. Nodes:Agent的逻辑函数,操作State。如上图中的entry_node,它操作之后才决定流程是走到node_entry_node_A还是走到node_entry_node_B。
  3. Edges:控制流规则,条件分支或固定转换。如上图中的start和end。

Graph:对象与关系表达,它的组成有

  1. 顶点(Vertices)
  2. 边(Edges)
  3. 表示对象及其相互关系

有关图的内容可以参考图论整理

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智能体(二)