赋予 Agent 双手:工具的力量
赋予Agent双手:工具的力量
Section titled “赋予Agent双手:工具的力量”没有工具的AI Agent,就像一个被锁在空房间里的天才。它们可以思考绝妙的想法,但却无法与外界互动。为了构建真正自主的Agent,我们必须为它们配备工具。在CrewAI中,工具本质上是一种技能或功能——例如搜索互联网、读取文件或执行数据库查询——Agent可以在需要时调用这些功能。
CrewAI工具包
Section titled “CrewAI工具包”CrewAI提供了一个名为crewai_tools的专用包,其中包含一系列强大的预构建工具。这些工具旨在与你的Agent无缝协作,自动处理参数和输出的复杂性。
首先,你通常需要安装额外的包:
pip install 'crewai[tools]'配备内置工具
Section titled “配备内置工具”CrewAI提供了多种开箱即用的工具。其中一些最常用的包括:
- SerperDevTool: 允许Agent执行Google搜索(需要API密钥)。
- FileReadTool: 使Agent能够读取本地文件的内容。
- ScrapeWebsiteTool: 能够从网站读取和提取文本。
- CodeInterpreterTool: 允许Agent编写和执行Python代码(非常适合数据分析)。
以下是如何实例化并准备这些工具以供使用:
import osfrom crewai_tools import SerperDevTool, FileReadTool
# Set API keys for external servicesos.environ["SERPER_API_KEY"] = "your_api_key"
# Instantiate toolssearch_tool = SerperDevTool()file_tool = FileReadTool()分配工具:Agent级与任务级
Section titled “分配工具:Agent级与任务级”CrewAI的灵活特性之一是你在何处分配这些工具。你有两种主要的分配级别,每种都服务于不同的策略。
1. Agent级分配
Section titled “1. Agent级分配”当你将工具分配给一个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)2. 任务级分配
Section titled “2. 任务级分配”有时,你希望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] # 专门分配给此任务)工具中的错误处理
Section titled “工具中的错误处理”实际世界中的交互是复杂的。API会失败,网站会崩溃。CrewAI的工具执行引擎包含内置的错误处理机制。如果工具执行失败(抛出异常),错误消息会反馈给Agent。Agent随后可以决定使用不同的参数重试,或者制定一个响应来解释操作失败的原因,而不是导致整个流程崩溃。