主题
既然你已经有了一个能干活的 agent,相信你也期待它能做更多。扩展 agent 能力的核心在于手上的工具,而这方面有好消息:LlamaIndex 有数百个集成,其中就包括数十个现成的智能体工具,拿来就能用。下面我们会演示如何使用现成工具,也会讲怎么自己构建并提交新工具。
使用现成工具
示例里我们用 Yahoo Finance 工具。它提供六个智能体工具,可以查询股票代码的各类信息。
先安装这个工具:
终端窗口
pip install llama-index-tools-yahoo-finance依赖和上一个示例相同,只需要再加上 Yahoo Finance 工具:
from llama_index.tools.yahoo_finance import YahooFinanceToolSpec为了演示自定义工具与现成工具如何混用,我们保留 add 和 multiply 这两个函数,尽管这里用不到它们。把工具引入进来:
finance_tools = YahooFinanceToolSpec().to_tool_list()工具列表就是一个普通数组,所以可以用 Python 的 extend 方法把我们自己的工具加进去:
finance_tools.extend([multiply, add])这次我们换一个提问,新问题必须用到刚加入的工具:
workflow = FunctionAgent(
name="Agent",
description="Useful for performing financial operations.",
llm=OpenAI(model="gpt-4o-mini"),
tools=finance_tools,
system_prompt="You are a helpful assistant.",
)
async def main():
response = await workflow.run(
user_msg="What's the current stock price of NVIDIA?"
)
print(response)我们得到这样的回答:
The current stock price of NVIDIA Corporation (NVDA) is $128.41.(这里有点取巧,因为模型本来就知道 NVIDIA 的股票代码。如果换成一家不那么知名的公司,你就需要再加一个像 Tavily 这样的搜索工具来查找代码。)
就这么简单!现在你就能在自己的 agent 里使用任何现成的工具集成了。
照例,你可以查看仓库里的这份文件,看到完整集中的代码。
构建并提交你自己的工具
我们非常欢迎新工具的开源贡献!可以先看看 Yahoo Finance 工具的代码长什么样:
- 一个继承
BaseToolSpec的类 - 一组任意的 Python 函数
- 一个
spec_functions列表,把这些函数映射到工具的 API 上
工具跑通之后,请按照我们的贡献指南正确设置元数据并提交 pull request。
下一节我们来看如何在 agent 中维护状态。