配置系统
项目的配置通过一个基于 pydantic 进行数据验证和 hydra 从 YAML 文件加载的系统进行管理。这提供了一种强大而灵活的方式来定义智能体和实验。
所有配置都存储在 /configs 目录下的 .yaml 文件中。
ConfigLoader
ConfigLoader 是将 YAML 文件中的配置加载到 pydantic 模型中的主要入口点。它抽象了文件路径和加载逻辑。
用法:
from utu.config import ConfigLoader
# 从 /configs/agents/my_agent.yaml 加载智能体配置
agent_config = ConfigLoader.load_agent_config("my_agent")
# 从 /configs/eval/my_eval.yaml 加载评估配置
eval_config = ConfigLoader.load_eval_config("my_eval")
AgentConfig
AgentConfig 是定义智能体的中心数据结构。它指定了智能体运行所需的一切,包括其模型、工具和个性。
关键组件
type:智能体的架构。可以是:simple:执行任务的单个智能体。orchestra:一个更复杂的多智能体系统,包含计划者和工作者。
model:(ModelConfigs) 定义智能体将使用的主要 LLM,包括 API 提供商、模型名称和温度等设置。agent:(ProfileConfig) 定义智能体的配置文件,例如其name和系统级instructions(例如,“你是一个有用的助手。”)。env:(EnvConfig) 指定智能体运行的环境(例如,shell_local或browser_docker)。更多详情请参见 智能体环境。toolkits:(dict[str, ToolkitConfig]) 一个定义智能体可用工具的字典。每个工具包可以以builtin模式(在主进程中运行)或mcp模式(作为单独进程运行)加载。max_turns:智能体在停止之前可以进行的最大对话轮数。
对于 orchestra 类型,AgentConfig 还包含用于定义计划者、工作者和报告者智能体的字段。
EvalConfig
EvalConfig 定义了一个完整的评估实验。它指定了要使用的数据集、要测试的智能体以及如何判断结果。
评估的关键组件
data:(DataConfig) 定义用于评估的数据集,包括其名称/路径和相关字段(question_field、gt_field)。rollout:此部分定义了评估的执行阶段。agent:(AgentConfig) 被测试智能体的完整AgentConfig。concurrency:在数据集上运行智能体时要使用的并行进程数。
judgement:此部分定义了判断阶段。judge_model:(ModelConfigs) 作为判断者的 LLM 的配置。judge_concurrency:用于判断结果的并行进程数。eval_method:用于评估的方法(例如,与标准答案进行比较)。