crew.py 文件中正确引用**智能体 (agents)**、**任务 (tasks)** 和其他组件。
简介
CrewAI 框架中的注解用于修饰类和方法,为团队的各种组件提供元数据和功能。这些注解有助于组织和构建您的代码,使其更具可读性和可维护性。可用的注解
CrewAI 框架提供以下注解@CrewBase:用于修饰主 Crew 类。@agent:修饰定义并返回 Agent 对象的方法。@task:修饰定义并返回 Task 对象的方法。@crew:修饰创建并返回 Crew 对象的方法。@llm:修饰初始化并返回语言模型对象的方法。@tool:修饰初始化并返回 Tool 对象的方法。@callback:用于定义回调方法。@output_json:用于输出 JSON 数据的方法。@output_pydantic:用于输出 Pydantic 模型的方法。@cache_handler:用于定义缓存处理方法。
用法示例
让我们通过示例来了解如何使用这些注解1. Crew 基类
@CrewBase 注解用于修饰主 Crew 类。此类通常包含用于创建智能体、任务和 Crew 本身的配置和方法。
@CrewBase 的作用不仅仅是注册类- 配置引导: 查找
agents_config和tasks_config(默认路径为类文件旁边的config/agents.yaml和config/tasks.yaml),在实例化时加载它们,如果文件缺失则安全地回退到空字典。 - 装饰器编排: 对每个标有
@agent、@task、@before_kickoff或@after_kickoff的方法保留记忆化引用,以便它们在每个 Crew 中只实例化一次,并按声明顺序执行。 - 钩子绑定: 自动将保留的 kickoff 钩子附加到由
@crew方法返回的Crew对象上,使它们在.kickoff()之前和之后运行。 - MCP 集成: 当类定义
mcp_server_params时,get_mcp_tools()会延迟启动一个 MCP 服务器适配器,实例化声明的工具,并且一个内部的 after-kickoff 钩子会停止该适配器。有关适配器配置的详细信息,请参见 MCP 概述。
2. 工具定义
@tool 注解用于修饰返回工具对象的方法。这些工具可以被智能体用来执行特定任务。
3. LLM 定义
@llm 注解用于修饰初始化并返回语言模型对象的方法。这些 LLM 被智能体用于自然语言处理任务。
4. 智能体定义
@agent 注解用于修饰定义并返回 Agent 对象的方法。
5. 任务定义
@task 注解用于修饰定义并返回 Task 对象的方法。这些方法指定任务配置和负责该任务的智能体。
6. Crew 创建
@crew 注解用于修饰创建并返回 Crew 对象的方法。该方法将所有组件(智能体和任务)组装成一个功能齐全的 Crew。
YAML 配置
智能体配置通常存储在 YAML 文件中。以下是研究员智能体的agents.yaml 文件示例
LinkedinProfileCrew 类中定义的研究员智能体。配置指定了智能体的角色、目标、背景故事以及其他属性,例如它使用的 LLM 和工具。 请注意,YAML 文件中的 llm 和 tools 如何对应于 Python 类中用 @llm 和 @tool 修饰的方法。最佳实践
- 一致的命名:为您的方法使用清晰且一致的命名约定。例如,智能体方法可以根据其角色命名(例如,researcher、reporting_analyst)。
- 环境变量:对敏感信息(如 API 密钥)使用环境变量。
- 灵活性:通过允许轻松添加或删除智能体和任务来设计您的 Crew,使其具有灵活性。
- YAML-代码对应:确保 YAML 文件中的名称和结构与 Python 代码中带注解的方法正确对应。
