大模型从入门到应用——LangChain:代理(Agents)-[计划与执行]

分类目录:《大模型从入门到应用》总目录

LangChain系列文章:


计划与执行代理通过首先规划要做的事情,然后执行子任务来实现目标。这个想法在很大程度上受到了BabyAGI以及《Plan-and-Solve》论文的启发。

  • 规划几乎总是由一个LLM(语言模型)来完成。
  • 执行通常由一个单独的代理(配备工具)来完成。
csharp 复制代码
# 导入模块
from langchain.chat_models import ChatOpenAI
from langchain.experimental.plan_and_execute import PlanAndExecute, load_agent_executor, load_chat_planner
from langchain.llms import OpenAI
from langchain import SerpAPIWrapper
from langchain.agents.tools import Tool
from langchain import LLMMathChain

# 工具
search = SerpAPIWrapper()
llm = OpenAI(temperature=0)
llm_math_chain = LLMMathChain.from_llm(llm=llm, verbose=True)
tools = [
    Tool(
        name = "Search",
        func=search.run,
        description="useful for when you need to answer questions about current events"
    ),
    Tool(
        name="Calculator",
        func=llm_math_chain.run,
        description="useful for when you need to answer questions about math"
    ),
]

# 规划器(Planner)、执行器(Executor)和代理(Agent)
model = ChatOpenAI(temperature=0)
planner = load_chat_planner(model)
executor = load_agent_executor(model, tools, verbose=True)
agent = PlanAndExecute(planner=planner, executor=executor, verbose=True)

# 执行示例
agent.run("Who is Leo DiCaprio's girlfriend? What is her current age raised to the 0.43 power?")
Entering new PlanAndExecute chain...
steps=[Step(value="Search for Leo DiCaprio's girlfriend on the internet."), Step(value='Find her current age.'), Step(value='Raise her current age to the 0.43 power using a calculator or programming language.'), Step(value='Output the result.'), Step(value="Given the above steps taken, respond to the user's original question.\n\n")]

日志输出:

复制代码
日志输出:
Entering new AgentExecutor chain...
Action:

```{
  "action": "Search",
  "action_input": "Who is Leo DiCaprio's girlfriend?"
}```


Observation: DiCaprio broke up with girlfriend Camila Morrone, 25, in the summer of 2022, after dating for four years. He's since been linked to another famous supermodel -- Gigi Hadid. The power couple were first supposedly an item in September after being spotted getting cozy during a party at New York Fashion Week.
Thought:Based on the previous observation, I can provide the answer to the current objective. 
Action:
```{
  "action": "Final Answer",
  "action_input": "Leo DiCaprio is currently linked to Gigi Hadid."
}```


Finished chain.
*****

Step: Search for Leo DiCaprio's girlfriend on the internet.

Response: Leo DiCaprio is currently linked to Gigi Hadid.

Entering new AgentExecutor chain...
Action:
```{
  "action": "Search",
  "action_input": "What is Gigi Hadid's current age?"
}```

Observation: 28 years
Thought:Previous steps: steps=[(Step(value="Search for Leo DiCaprio's girlfriend on the internet."), StepResponse(response='Leo DiCaprio is currently linked to Gigi Hadid.'))]

Current objective: value='Find her current age.'

Action:
```{
  "action": "Search",
  "action_input": "What is Gigi Hadid's current age?"
}```


Observation: 28 years
Thought:Previous steps: steps=[(Step(value="Search for Leo DiCaprio's girlfriend on the internet."), StepResponse(response='Leo DiCaprio is currently linked to Gigi Hadid.')), (Step(value='Find her current age.'), StepResponse(response='28 years'))]

Current objective: None

Action:
```{
  "action": "Final Answer",
  "action_input": "Gigi Hadid's current age is 28 years."
}```



Finished chain.
*****

Step: Find her current age.

Response: Gigi Hadid's current age is 28 years.

Entering new AgentExecutor chain...
Action:
```{
  "action": "Calculator",
  "action_input": "28 ** 0.43"
}```


Entering new LLMMathChain chain...
28 ** 0.43
```text28 ** 0.43```
...numexpr.evaluate("28 ** 0.43")...

Answer: 4.1906168361987195
Finished chain.

Observation: Answer: 4.1906168361987195
Thought:The next step is to provide the answer to the user's question.

Action:
```{
  "action": "Final Answer",
  "action_input": "Gigi Hadid's current age raised to the 0.43 power is approximately 4.19."
}```



Finished chain.
*****

Step: Raise her current age to the 0.43 power using a calculator or programming language.

Response: Gigi Hadid's current age raised to the 0.43 power is approximately 4.19.

Entering new AgentExecutor chain...
Action:
```{
  "action": "Final Answer",
  "action_input": "The result is approximately 4.19."
}```


Finished chain.
*****

Step: Output the result.

Response: The result is approximately 4.19.

Entering new AgentExecutor chain...
Action:
```{
  "action": "Final Answer",
  "action_input": "Gigi Hadid's current age raised to the 0.43 power is approximately 4.19."
}```


Finished chain.
*****

Step: Given the above steps taken, respond to the user's original question.



Response: Gigi Hadid's current age raised to the 0.43 power is approximately 4.19.
Finished chain.

输出:

复制代码
"Gigi Hadid's current age raised to the 0.43 power is approximately 4.19."

参考文献:

1 LangChain官方网站:https://www.langchain.com/

2 LangChain 🦜️🔗 中文网,跟着LangChain一起学LLM/GPT开发:https://www.langchain.com.cn/

3 LangChain中文网 - LangChain 是一个用于开发由语言模型驱动的应用程序的框架:http://www.cnlangchain.com/

相关推荐
skywalk81632 分钟前
经过多次尝试,在kaggle 双T4训练Qwen2.5-0.5B的正确打开方式是:
人工智能·深度学习·机器学习·qwen2.5·段言
孪生质数-12 分钟前
AI Agent 工程实践(一):大模型 API 接入示范
网络·人工智能·ai·chatgpt·github·claude·claudecode
qq_4195630915 分钟前
机器能思考吗?“——图灵测试、达特茅斯会议与 AI 的诞生
人工智能
维核科技18 分钟前
世界模型落地:物理 AI 方案走向商用,机器人“理解“物理世界
人工智能
神神道呵he21 分钟前
[深度学习] 大模型学习-RAG技术全景解析
人工智能·深度学习·学习
deepseek2325 分钟前
750 亿参数只激活 37 亿:LG 开源 K-EXAONE 2.0,与 DeepSeek 的路线之争迎来新玩家
人工智能·ai agent·mcp
AI街潜水的八角30 分钟前
菌落微生物检测和识别2:基于深度学习YOLO26神经网络实现菌落微生物检测和识别(含训练代码和数据集)
人工智能·深度学习·神经网络
weixin_4462608535 分钟前
ORCA-bench:大模型智能体能否胜任线上故障值守?
人工智能
fthux40 分钟前
装闭 RenoPit 源码解析(13):生成AI装修闭坑PDF报告
人工智能·ai·pdf·开源·github
独行侠影a1 小时前
Mojo:专为AI而生的“Python++”,能否真正挑战CUDA与C++的统治地位?
大数据·人工智能·深度学习