Skip to content

赋予 Agent 双手:工具的力量

没有工具的AI Agent,就像一个被锁在空房间里的天才。它们可以思考绝妙的想法,但却无法与外界互动。为了构建真正自主的Agent,我们必须为它们配备工具。在CrewAI中,工具本质上是一种技能或功能——例如搜索互联网、读取文件或执行数据库查询——Agent可以在需要时调用这些功能。

CrewAI提供了一个名为crewai_tools的专用包,其中包含一系列强大的预构建工具。这些工具旨在与你的Agent无缝协作,自动处理参数和输出的复杂性。

首先,你通常需要安装额外的包:

Terminal window
pip install 'crewai[tools]'

CrewAI提供了多种开箱即用的工具。其中一些最常用的包括:

  • SerperDevTool: 允许Agent执行Google搜索(需要API密钥)。
  • FileReadTool: 使Agent能够读取本地文件的内容。
  • ScrapeWebsiteTool: 能够从网站读取和提取文本。
  • CodeInterpreterTool: 允许Agent编写和执行Python代码(非常适合数据分析)。

以下是如何实例化并准备这些工具以供使用:

import os
from crewai_tools import SerperDevTool, FileReadTool
# Set API keys for external services
os.environ["SERPER_API_KEY"] = "your_api_key"
# Instantiate tools
search_tool = SerperDevTool()
file_tool = FileReadTool()

CrewAI的灵活特性之一是你在何处分配这些工具。你有两种主要的分配级别,每种都服务于不同的策略。

当你将工具分配给一个Agent时,这些工具就成为该Agent永久工具包的一部分。它们可以用于Agent被分配到的任何任务。这最适合与Agent角色相关的通用能力。

from crewai import Agent
# 这个研究员总是可以搜索网络
researcher = Agent(
role='Senior Researcher',
goal='Uncover groundbreaking technology trends',
backstory='You are a curious mind fascinated by the future.',
tools=[search_tool], # 在此处分配
verbose=True
)

有时,你希望Agent仅针对特定任务拥有特定能力。将工具分配给任务会覆盖Agent在该特定执行上下文中的默认工具。这允许你保持Agent的轻量化和专业化。

from crewai import Task
# Agent仅针对此特定任务需要读取文件
file_analysis_task = Task(
description='Read the report.txt file and summarize it.',
expected_output='A concise summary of the file.',
agent=researcher,
tools=[file_tool] # 专门分配给此任务
)

实际世界中的交互是复杂的。API会失败,网站会崩溃。CrewAI的工具执行引擎包含内置的错误处理机制。如果工具执行失败(抛出异常),错误消息会反馈给Agent。Agent随后可以决定使用不同的参数重试,或者制定一个响应来解释操作失败的原因,而不是导致整个流程崩溃。