前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >AI智能体(二)

AI智能体(二)

作者头像
算法之名
发布2024-10-05 07:53:56
260
发布2024-10-05 07:53:56
举报
文章被收录于专栏:算法之名

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
复制
pip install langgraph
代码语言:javascript
复制
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 = workflow.compile()
    res = app.invoke({'messages': [HumanMessage(content='你好')]})
    print(res)

运行结果

代码语言:javascript
复制
{'messages': [HumanMessage(content='你好', additional_kwargs={}, response_metadata={}), AIMessage(content='你好👋!我是人工智能助手智谱清言,可以叫我小智🤖,很高兴见到你,欢迎问我任何问题。', additional_kwargs={}, response_metadata={'token_usage': {'completion_tokens': 32, 'prompt_tokens': 6, 'total_tokens': 38}, 'model_name': 'glm-4', 'finish_reason': 'stop'}, id='run-b982480c-39d9-4445-8888-62a10339ef86-0')]}

状态持久化

许多AI的应用程序需要Memory来在多个交互中共享上下文。在LangGraph中,通过Checkpointers为任何StateGraph提供内存。

  1. Checkpointers:为你的Agent提供跨应用的状态存储,可以在用户输入打断后续状态,包括很多接口类型内存型,SQL型等等。
  2. StateGraph:状态图是一个基本的图组件,用来记录图的状态。

对于任何一个LangGraph工作流,如果你想设置持久化状态,只需要做两个设置

  1. 设置一个Checkpointers,比如使用AsyncSqliteSaver。
  2. 在图编译的时候使用cdmpile(checkpointer=my_checkpointer)即可。
本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2024-10-05,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • LangGraph:基于状态机的工作流
相关产品与服务
灰盒安全测试
腾讯知识图谱(Tencent Knowledge Graph,TKG)是一个集成图数据库、图计算引擎和图可视化分析的一站式平台。支持抽取和融合异构数据,支持千亿级节点关系的存储和计算,支持规则匹配、机器学习、图嵌入等图数据挖掘算法,拥有丰富的图数据渲染和展现的可视化方案。
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档