跳转到主要内容

文档索引

获取完整文档索引: https://docs.crewai.com.cn/llms.txt

在深入了解之前,请使用此文件来浏览所有可用页面。

概述

CrewAI 中的训练功能允许您使用命令行界面 (CLI) 来训练您的 AI 智能体。通过运行命令 crewai train -n <n_iterations>,您可以指定训练过程的迭代次数。 在训练期间,CrewAI 利用各种技术,结合人类反馈来优化智能体的性能。这有助于智能体提高其理解力、决策能力和解决问题的能力。

使用 CLI 训练您的智能体团队

要使用训练功能,请按照以下步骤操作:
  1. 打开您的终端或命令提示符。
  2. 导航到您的 CrewAI 项目所在的目录。
  3. 运行以下命令:
crewai train -n <n_iterations> -f <filename.pkl>
<n_iterations> 替换为您想要的训练迭代次数,并将 <filename> 替换为以 .pkl 结尾的适当文件名。
如果您省略 -f,输出将默认为当前工作目录中的 trained_agents_data.pkl。您可以传递绝对路径来控制文件的保存位置。

以编程方式训练您的智能体团队

要以编程方式训练您的团队,请使用以下步骤:
  1. 定义训练的迭代次数。
  2. 指定训练过程的输入参数。
  3. 在 try-except 代码块中执行训练命令,以处理潜在的错误。
代码
n_iterations = 2
inputs = {"topic": "CrewAI Training"}
filename = "your_model.pkl"

try:
    YourCrewName_Crew().crew().train(
      n_iterations=n_iterations,
      inputs=inputs,
      filename=filename
    )

except Exception as e:
    raise Exception(f"An error occurred while training the crew: {e}")

智能体如何使用训练数据

CrewAI 以两种方式使用训练产物:在训练过程中结合您的人类反馈,以及在训练后通过合并后的建议来引导智能体。

训练数据流

在训练运行期间

  • 在每次迭代中,系统会为每个智能体记录以下内容:
    • initial_output:智能体的初步回答
    • human_feedback:当系统提示时,您提供的内联反馈
    • improved_output:智能体在收到反馈后的后续回答
  • 此数据存储在名为 training_data.pkl 的工作文件中,并按智能体的内部 ID 和迭代次数进行索引。
  • 当训练处于活动状态时,智能体会自动将您之前的人类反馈附加到其提示词中,以便在训练会话的后续尝试中强制执行这些指令。训练是交互式的:任务将 human_input 设置为 true,因此在非交互式环境中运行时,系统会因等待用户输入而阻塞。

训练完成后

  • train(...) 完成时,CrewAI 会针对每个智能体评估收集到的训练数据,并生成一个包含以下内容的综合结果:
    • suggestions:从您的反馈以及初始输出与改进输出之间的差异中提取的清晰、可操作的指令。
    • quality:一个 0 到 1 之间的分数,用于衡量改进程度。
    • final_summary:针对未来任务的一步步行动项目集。
  • 这些综合结果会保存到您传递给 train(...) 的文件名中(通过 CLI 默认为 trained_agents_data.pkl)。条目按智能体的 role 进行索引,以便它们可以跨会话应用。
  • 在正常(非训练)执行期间,每个智能体会自动加载其综合后的 suggestions,并将它们作为强制指令附加到任务提示词中。这使您能够在不更改智能体定义的情况下获得持续的改进。

文件摘要

  • training_data.pkl(临时,按会话)
    • 结构:agent_id -> { 迭代编号: { initial_output, human_feedback, improved_output } }
    • 目的:在训练期间捕获原始数据和人类反馈
    • 位置:保存在当前工作目录 (CWD) 中
  • trained_agents_data.pkl(或您的自定义文件名)
    • 结构:agent_role -> { suggestions: 字符串列表, quality: 数值, final_summary: 字符串 }
    • 目的:为未来的运行持久化综合建议
    • 位置:默认写入 CWD;使用 -f 设置自定义(包括绝对)路径

小语言模型注意事项

在使用较小的语言模型(≤7B 参数)进行训练数据评估时,请注意它们可能在生成结构化输出和遵循复杂指令方面面临挑战。

小模型在训练评估中的局限性

JSON 输出准确性

较小的模型通常难以产生结构化训练评估所需的有效 JSON 响应,从而导致解析错误和数据不完整。

评估质量

与大型模型相比,7B 参数以下的模型可能提供深度有限且不够细致的评估。

指令遵循能力

较小的模型可能无法完全遵循或考虑复杂的训练评估标准。

一致性

使用较小的模型时,跨多次训练迭代的评估可能缺乏一致性。

训练建议

为了获得最佳的训练质量和可靠的评估,我们强烈建议使用 7B 参数或更大的模型。
from crewai import Agent, Crew, Task, LLM

# Recommended minimum for training evaluation
llm = LLM(model="mistral/open-mistral-7b")

# Better options for reliable training evaluation
llm = LLM(model="anthropic/claude-3-sonnet-20240229-v1:0")
llm = LLM(model="gpt-4o")

# Use this LLM with your agents
agent = Agent(
    role="Training Evaluator",
    goal="Provide accurate training feedback",
    llm=llm
)
更强大的模型提供更高质量的反馈和更好的推理能力,从而带来更有效的训练迭代。

关键注意事项

  • 正整数要求:确保迭代次数 (n_iterations) 为正整数。如果不满足此条件,代码将引发 ValueError
  • 文件名要求:确保文件名以 .pkl 结尾。如果不满足此条件,代码将引发 ValueError
  • 错误处理:代码处理子进程错误和意外异常,并向用户提供错误消息。
  • 训练后的引导是在提示时应用的;它不会修改您的 Python/YAML 智能体配置。
  • 智能体会自动从位于当前工作目录中名为 trained_agents_data.pkl 的文件中加载训练建议。如果您训练到了不同的文件名,请在运行前将其重命名为 trained_agents_data.pkl,或在代码中调整加载器。
  • 您可以在调用 crewai train 时使用 -f/--filename 更改输出文件名。如果您想保存在 CWD 之外,支持绝对路径。
需要注意的是,训练过程可能需要一些时间,具体取决于您智能体的复杂程度,并且在每次迭代时都需要您的反馈。 训练完成后,您的智能体将具备增强的能力和知识,能够应对复杂的任务并提供更一致、更有价值的洞察。 请记得定期更新和重新训练您的智能体,以确保它们掌握该领域的最新信息和进展。