AI创想

标题: LangGraph 教程:初学者综合指南(2) [打印本页]

作者: AI小编    时间: 11 小时前
标题: LangGraph 教程:初学者综合指南(2)
作者:CSDN博客
工具集成

将工具集成到 LangGraph 聊天机器人中可以显着增强其功能,使其能够按照您喜欢的方式访问和处理信息。
让我们修改上一节中创建的基本聊天机器人,以包含一个可以在网络上搜索信息的工具。我们将使用langchain_中community.tools TavilySearchResults工具,对于此示例,您将需要Tavily API 密钥。
(, 下载次数: 0)

以下代码结合了 LangChainLangGraphTavily 搜索工具,创建了一个聊天机器人(chatbot)。代码实现了一个包含多个组件(如模型调用、工具调用、图计算等)的流式聊天框架,涉及到从用户输入到最终响应的完整过程。下面我将详细解释每个部分的作用。
1. 安装依赖:
  1. pip install-U tavily-python langchain_community
复制代码
2. 导入必要的库:
  1. from typing import Annotated
  2. from langchain_community.tools.tavily_search import TavilySearchResults
  3. from typing_extensions import TypedDict
  4. from langgraph.graph import StateGraph
  5. from langgraph.graph.message import add_messages
  6. from langgraph.prebuilt import ToolNode, tools_condition
  7. from langchain_openai import ChatOpenAI
  8. from langgraph.checkpoint.memory import MemorySaver
复制代码
3. 定义聊天状态 (State):
  1. classState(TypedDict):
  2.     messages: Annotated[list, add_messages]
复制代码
4. 初始化工具和模型:
  1. tool = TavilySearchResults(max_results=2)
  2. tools =[tool]
  3. llm = ChatOpenAI(temperature=0)
复制代码
5. 将工具绑定到模型:
  1. llm_with_tools = llm.bind_tools(tools)
复制代码
6. 定义 chatbot 函数:
  1. defchatbot(state: State):return{"messages":[llm_with_tools.invoke(state["messages"])]}
复制代码
7. 构建 LangGraph:
  1. graph_builder = StateGraph(State)
  2. graph_builder.add_node("chatbot", chatbot)
  3. graph_builder.add_node("tools", tool_node)
复制代码
8. 设置条件边:
  1. graph_builder.add_conditional_edges("chatbot", tools_condition)
复制代码
条件路由:利用 graph_builder.add_conditional_edges() 根据LLM是否决定调用工具来设置路由逻辑。 tools_condition函数检查LLM的响应是否包含工具调用指令。
9. 图的入口点和边的设置:
  1. graph_builder.add_edge("tools","chatbot")
  2. graph_builder.set_entry_point("chatbot")
复制代码
10. 设置 MemorySaver:
  1. memory = MemorySaver()
  2. graph = graph_builder.compile(checkpointer=memory)
复制代码
11. 聊天主循环:
  1. config ={"configurable":{"thread_id":"1"}}whileTrue:
  2.     user_input =input("User: ")if user_input.lower()in["quit","exit","q"]:print("Goodbye!")breakfor event in graph.stream({"messages":[("user", user_input)]}, config):for value in event.values():print("Assistant:", value["messages"][-1].content)
复制代码
总结:

这种结构提供了一种可扩展的框架,可以在图中添加更多工具或自定义逻辑,灵活应对各种复杂的对话场景。

原文地址:https://blog.csdn.net/u013565133/article/details/145134355




欢迎光临 AI创想 (https://www.llms-ai.com/) Powered by Discuz! X3.4