langchain学习心得-agent后续

提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档


一、代理 (Agents) 和工具

要使用代理 (Agents) ,我们需要三样东西:

一个基本的 LLM,
我们将要进行交互的工具 Tools,
一个控制交互的代理 (Agents) 。

代码如下(示例):

#初始化LLM
from langchain import OpenAI

llm = OpenAI(
    openai_api_key="OPENAI_API_KEY",
    temperature=0,
    model_name="text-davinci-003"
)

现在初始化计算器工具。
在初始化工具 Tool 时,我们可以创建自定义工具 Tool 或加载预构建工具 Tool。
无论哪种情况,“工具 Tool” 都是一个给定工具 名称 name 和 描述 description 的 实用链。
例如,我们可以从现有的 llm_math 链创建一个新的计算器工具:

from langchain.chains import LLMMathChain
from langchain.agents import Tool

llm_math = LLMMathChain(llm = llm)
# 初始化数学工具
math_tool = Tool(
    name ='Calculator',
    func = llm_math.run,
    description ='Useful for when you need to answer questions about math.'
)
# 在给 LLM 提供工具时,我们必须作为工具列表传递
tools = [math_tool]
# tools [0].name, tools [0].description

在使用自定义工具时,我们必须遵循此过程。然而,一个预构建的 llm_math 工具可以做同样的事情。所以,我们可以这样做:

from langchain.agents import load_tools

tools = load_tools(
    ['llm-math'],
    llm = llm
)

如果我们的用例存在一个预构建的工具,我们只能按照第二种方法进行。

现在我们有了 LLM 和工具,但没有 代理 (Agents) 。
要初始化一个简单的代理 (Agents) ,我们可以这样做:

from langchain.agents import initialize_agent

zero_shot_agent = initialize_agent(
    agent = "zero-shot-react-description",
    tools = tools,
    llm = llm,
    verbose = True,
    max_iterations = 3
)


这里使用的 代理 (Agents) 是一个 “zero-shot-react-description” 代理 (Agents) 。
Zero-shot 意味着代理 (Agents) 仅在当前操作上起作用——它没有 记忆。
它使用 ReAct 框架根据工具的 描述 description 来决定使用哪个工具。

zero_shot_agent(" what is (4.5*2.1)^2.2?")
zero_shot_agent("if Mary has four apples and Giorgio brings two and a half apple "
                "boxes (apple box contains eight apples), how many apples do we "
                "have?")
zero_shot_agent("what is the capital of Norway?")

我们遇到了一个错误。问题在于代理 (Agents) 一直在尝试使用工具。然而,我们的代理 (Agents) 只包含一个工具——计算器。
幸运的是,我们可以通过给代理 (Agents) 添加更多工具来解决这个问题!让我们添加一个简单的 LLM 工具:

from langchain.prompts import PromptTemplate
from langchain.chains import LLMChain

prompt = PromptTemplate(
    input_variables = ["query"],
    template = "{query}"
)

llm_chain = LLMChain(llm = llm, prompt = prompt)

# initialize the LLM tool
llm_tool = Tool(
    name ='Language Model',
    func = llm_chain.run,
    description ='use this tool for general purpose queries and logic'
)

有了这个,我们有了一个新的通用 LLM 工具。我们只需将其添加到 tools 列表中并重新初始化代理 (Agents) :

tools.append(llm_tool)

# reinitialize the agent
zero_shot_agent = initialize_agent(
    agent = "zero-shot-react-description",
    tools = tools,
    llm = llm,
    verbose = True,
    max_iterations = 3
)
zero_shot_agent("what is the capital of Norway?")

二、代理 (Agents) 类型

Zero Shot ReAct
会话式 ReAct Conversational ReAct
ReAct 文档存储
使用搜索自问

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值