部署与事件监听器
部署与事件监听器
Section titled “部署与事件监听器”恭喜!你已经构建了一个复杂的 Crew。现在是时候将它从本地机器部署到生产环境了。在本章的最后,我们将介绍生命周期钩子(Event Listeners)、安全最佳实践以及如何使用 Docker 将你的应用程序容器化。
事件监听器:挂钩生命周期
Section titled “事件监听器:挂钩生命周期”在生产环境中,你经常需要执行 AI 主要逻辑之外的操作。例如,你可能希望在每次任务完成时将数据记录到数据库中,或者在 Crew 启动时发送 Slack 通知。CrewAI 提供了充当事件监听器的回调机制。
你可以在任务(Task)层面或 Crew 层面,使用 task_callback、step_callback 或 before_kickoff 和 after_kickoff 等生命周期钩子来分配回调函数。
def on_task_completed(output): # 将输出发送到日志服务 print(f"[Log] Task Finished: {output.raw[:50]}...")
research_task = Task( description="Research AI trends", expected_output="A summary report", agent=researcher, callback=on_task_completed # 当此任务完成时触发)保护 API 密钥
Section titled “保护 API 密钥”切勿将你的 API 密钥(例如 sk-proj-...)直接硬编码到 Python 脚本中。这是一个重大的安全风险,特别是当你将代码推送到 GitHub 时。
标准做法是使用 .env 文件。CrewAI 被设计为自动查找这些环境变量。
- 在你的根文件夹中创建一个名为
.env的文件。 - 添加你的密钥:
OPENAI_API_KEY=sk-... - 将
.env添加到你的.gitignore文件中,这样它就不会被上传。 - 如果你依赖标准模型配置,CrewAI 将自动加载这些变量。
使用 Docker 容器化 CrewAI
Section titled “使用 Docker 容器化 CrewAI”为了确保你的 Crew 在服务器上和在你的笔记本电脑上以相同的方式运行,你应该使用 Docker。Docker 为你的代码创建一个自包含的环境(容器)。
下面是一个基于 Python 的 CrewAI 项目的标准 Dockerfile:
# 使用官方 Python 运行时作为父镜像FROM python:3.10-slim
# 在容器中设置工作目录WORKDIR /app
# 将当前目录内容复制到容器的 /app 目录中COPY . /app
# 安装 requirements.txt 中指定的任何所需包# 如果使用 poetry,则应安装 poetry 并运行 'poetry install'RUN pip install --no-cache-dir crewai crewai-toolsRUN pip install -r requirements.txt
# 当容器启动时运行 crew 脚本CMD ["python", "src/main.py"]运行 LLM 智能体(agents)可能会很昂贵。以下是两种优化成本的关键策略:
- 缓存:CrewAI 默认启用缓存。如果一个智能体(agent)接收到完全相同的输入并产生完全相同的工具输出,它就可以从缓存中提取结果,而不是再次调用昂贵的 LLM。请确保在你的 Crew 配置中将
cache=True设置为真。 - 模型选择:并非每个智能体(agent)都需要 GPT-4。将更小、更快、更便宜的模型(如 GPT-4o-mini 或 Haiku)分配给执行简单任务(如摘要)的智能体,并将“最智能”的模型保留给复杂的推理任务。
凭借这些部署策略,你的 CrewAI 应用程序将变得健壮、安全,并为实际应用做好准备。祝你编码愉快!