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

langgraph的使用

文章目录

  • 简介
  • 构建基础ChatBot
  • 使用Tools强化Chatbot
  • ChatBot添加记忆

简介

  • 若langgraph无法直接访问, 则从langchain架构进入;
  • 使用LLM构建健壮且有状态的多参与者应用程序;
  • workflows工作流围绕大模型调用,内置了预定义代码路径的脚手架,通过预定义的代码路径,可以引导控制流;
  • 也可以拆除这些脚手架,通过工具调用(tool calls),构建可以计划、采取行动的自主代理系统,并且可以直接回应它自己行动的反馈;
  • workflows vs agent:
    在这里插入图片描述
  • 三大核心好处:
    • 持久化,支持应用程序状态的任何方面的持久化;状态(state)就是检查点(checkpoint),允许为了决策、验证、纠正,通过人类输入来中断、恢复程序执行;
    • 流处理,支持在执行过程中,将工作流/代理状态流式传给用户;支持工具调用反馈的事件流和LLM calls的token流;
  • 调用&部署,通过 langgraph platform实现简单的测试、调试、部署应用;
     

构建基础ChatBot

使用langgraph构建一个基础的聊天机器人。

  • langgraph.graph.StateGraph,将聊天机器人的架构定义为状态机
  • StateGraph.add_node(name, llm/func),添加节点(工作单元),节点可以是调用的大模型或者函数;
  • StateGraph.add_edge(start_key, end_key),添加边,表示控制流的走向;
  • 基础Chatbot的知识受限于它的训练数据;
from typing import Annotated  # 类型注解  python3.10+ 使用typing导入
from typing_extensions import TypedDict  # python3.9及之前的版本
from langgraph.graph import StateGraph, START, END  # 图的开始节点、结束节点
from langgraph.graph.message import add_messages  # 图中的消息


# 定义状态类
class State(TypedDict):
    # messages是一个列表类型,add_messages函数表示应该追加更新列表,将最新的输入消息存入列表的末尾
    messages: Annotated[list, add_messages]  # Annotated[类型,元数据,元数据...],仅类型注解,不影响代码的运行,若没有add_messages函数,则覆盖重写列表内容


# 实例化,并传入State类
graph_builder = StateGraph(State)
# 图中的每个节点接收当前State作为输入,输出的信息更新到该State中
# 更新的message会追加到messages列表中(add_messages函数实现)


# 定义函数节点
def node1(state: State):  # 接收State对象作为输入
	# 这里面从state对象获取输入的message,调用LLM
	msg = state["messages"][-1]  # 获取最新的消息
	llm = QianfanChatEndpoint(
                model="ERNIE-3.5-8K",
                temperature=0.2, # 越大越随机回答
                timeout=30,  # 有时网络不好,可能会超时,可以指定长些
                # api_key="...",
                # secret_key="...",
                # top_p="...",
                # other params...
            )
    res = llm.invoke([msg])  # 传入消息列表
    return {
   "messages": [res]}  # 返回一个字典,包含messages key 列表,列表中的消息会被更新到State对象中的messages列表中
	
# 添加节点
graph_builder.add_node("node1", node1)
# 添加切入点
graph_builder.add_edge(START, "node1")  # 每次运行图时,从node1节点开始执行
# 添加结束点
graph_builder.add_edge("node1", END)  # 执行node1节点后,退出
# 也可以使用
#graph_builder.set_entry_point("chatbot")
#graph_builder.set_finish_point("chatbot")

# 编译图
graph = gra

相关文章:

  • TypeScript 与 JavaScript 对比
  • 雪花算法生成分布式唯一ID
  • (UI自动化测试web端)第二篇:元素定位的方法_css定位之层级选择器
  • LangChain4j与DashScope深度集成实战:一站式开发指南
  • 当 0 编程基础,用 ChatGPT 和 Cursor 开发同一应用时… |AI 开发初体验
  • mysqloracledb2 (uuid函数)
  • 23种设计模式-中介者(Mediator)设计模式
  • lua面向对象
  • Couchbase存储引擎Magma和Couchstore
  • 鸿蒙开发之ArkTS联合类型
  • Kafka 4.0 发布:KRaft 替代 Zookeeper、新一代重平衡协议、点对点消息模型、移除旧协议 API
  • Java排序
  • 输出文字的综合使用例子
  • 本地部署仓库管理工具 Gitlab 并实现外部访问
  • 从零构建大语言模型全栈开发指南:第二部分:模型架构设计与实现-2.2.2文本生成逻辑:Top-k采样与温度控制
  • 级联FFT(超采样FFT架构)的MATLAB代码及原理
  • 前端技巧第十期JavaScript作用域链
  • 【银河麒麟系统常识】命令:dotnet --list-sdks(列出已安装的 .NET SDK 版本)
  • matlab打开两个工程
  • Redis 基础篇笔记
  • 做餐厅logo用什么软件网站/推广公司运营模式
  • 广东企业微信网站建设/培训课程设计方案
  • 做网站推广哪个好/软文推广300字
  • 龙华网站建设yihe kj/如何修改百度上面的门店号码
  • 网站建设费用会计分录/郑州网站建设推广有限公司
  • 做网站 php java/做百度推广的网络公司