青训营笔记:LangChain代理与工具使用指南

74 阅读2分钟

引言

大模型能够通过中间的推理步骤,对复杂问题进行推理,解决具有挑战性的任务。然而,大模型存在一些固有问题,比如:

  • 无法自动更新知识:大模型仅能依赖训练数据和上下文信息,一旦问题超出认知范围,就会出现错误。
  • 幻觉问题:大模型可能会根据提示生成虚假或错误信息。

解决方法

为了解决上述问题,可以:

  1. 验证提示信息的真实性:如发现错误,则进行修正。
  2. 调用外部工具:如搜索引擎,检索并验证信息的真实性。

LangChain代理

大模型自主判断、调用工具,并决定下一步行动的行为,被称为代理

代理的三个关键元素

  1. 大模型:负责逻辑推理和预测生成。
  2. 外部工具:如搜索引擎、数据处理工具。
  3. 代理机制:管理大模型与工具之间的交互流程。

在复杂问题求解中,代理需合理选择工具并制定行动策略。例如:

  • 何时使用本地知识库?
  • 如何验证外部搜索工具返回的内容?
  • 怎样确保信息真实性检索的完整性?

ReAct框架

ReAct框架(Reasoning-Acting)是LangChain代理的核心逻辑,包括以下步骤:

  1. Thought(思考):由大模型生成逻辑推理过程,决定行动依据。
  2. Act(行动):选择适当的工具或API,并生成参数执行目标行动。
  3. Obs(观察):获取外界反馈,为进一步决策提供依据。

通过上述循环,代理可以动态推理和调整计划,与外部工具交互,完成复杂任务。

使用示例

目标:找到玫瑰的当前市场价格,并计算加价15%后的新价格。

环境准备

  1. 注册 SerpAPI 并获取 SERPAPI_API_KEY
  2. 安装必要依赖:
    pip install google-search-results
    
    
import os
from langchain.agents import load_tools, initialize_agent, AgentType
from langchain.llms import OpenAI

# 设置API密钥
os.environ["OPENAI_API_KEY"] = 'Your OpenAI API Key'
os.environ["SERPAPI_API_KEY"] = 'Your SerpAPI API Key'

# 初始化大模型
llm = OpenAI(temperature=0)

# 加载工具
tools = load_tools(["serpapi", "llm-math"], llm=llm)

# 初始化代理
agent = initialize_agent(tools, llm, agent=AgentType.ZERO_SHOT_REACT_DESCRIPTION, verbose=True)

# 执行查询
agent.run("目前市场上玫瑰花的平均价格是多少?如果我在此基础上加价15%卖出,应该如何定价?")