Agent 与工具调用2887 字

LangGraph快速构建Agent工作流应用

·全库 435 / 611

《LangGraph快速构建Agent工作流应用》共 0.3 万字,通篇围绕 Agent、LangChain、prompt、ReAct 展开,归在「Agent 与工具调用」这一层。

覆盖AgentLangChainpromptReAct工作流

适合要让 AI 真的去干活、不只是陪人聊天的人

目录骨架(1 节)
  1. Agent工作流

示例代码

注:将ppt后缀名改为zip后解压

python版本:3.12.4

Agent工作流

下面展示了如何创建一个“计划并执行”风格的代理。 这在很大程度上借鉴了 计划和解决 论文以及 Baby-AGI 项目。

核心思想是先制定一个多步骤计划,然后逐项执行。 完成一项特定任务后,您可以重新审视计划并根据需要进行修改。

一般的计算图如下所示

image.png

这与典型的 ReAct 风格的代理进行了比较,在该代理中,您一次思考一步。 这种“计划并执行”风格代理的优势在于

  1. 明确的长期规划(即使是真正强大的 LLM 也可能难以做到)
  2. 能够使用更小/更弱的模型来执行步骤,仅在规划步骤中使用更大/更好的模型

以下演练演示了如何在 LangGraph 中实现这一点。 生成的代理将留下类似以下示例的轨迹: (链接).

设置

首先,我们需要安装所需的软件包。


%pip install --quiet -U langgraph langchain-community langchain-openai tavily-python

接下来,我们需要为 OpenAI(我们将使用的 LLM)和 Tavily(我们将使用的搜索工具)设置 API 密钥

可以选择设置 LangSmith 跟踪的 API 密钥,这将为我们提供一流的可观察性。

setx TAVILY_API_KEY ""
# Optional, add tracing in LangSmith
setx LANGCHAIN_TRACING_V2 "true"
setx LANGCHAIN_API_KEY ""

定义工具

我们将首先定义要使用的工具。 对于这个简单的示例,我们将使用 Tavily 内置的搜索工具。 但是,创建自己的工具非常容易 - 请参阅有关如何操作的文档 此处。

#示例:plan_execute.py
from langchain_community.tools.tavily_search import TavilySearchResults
# 创建TavilySearchResults工具,设置最大结果数为1
tools = [TavilySearchResults(max_results=1)]

定义我们的执行代理

现在我们将创建要用于执行任务的执行代理。 请注意,对于此示例,我们将对每个任务使用相同的执行代理,但这并非必须如此。

from langchain import hub
from langchain_openai import ChatOpenAI
import asyncio
from langgraph.prebuilt import create_react_agent

# 从LangChain的Hub中获取prompt模板,可以进行修改
prompt = hub.pull("wfh/react-agent-executor")
prompt.pretty_print()

# 选择驱动代理的LLM,使用OpenAI的ChatGPT-4o模型
llm = ChatOpenAI(model="gpt-4o")
# 创建一个REACT代理执行器,使用指定的LLM和工具,并应用从Hub中获取的prompt
agent_executor = create_react_agent(llm, tools, messages_modifier=prompt)
================================ System Message ================================

You are a helpful assistant.

============================= Messages Placeholder =============================

{{messages}}
# 调用代理执行器,询问“谁是美国公开赛的冠军”
agent_executor.invoke({"messages": [("user", "谁是美国公开赛的获胜者")]})

资料里没有你的场景?

把你手上的数据和想解决的那个环节发上来,我们按具体情况回,不复述方法论。

发布需求