## ADDED Requirements ### Requirement: Agent 构建与 SKILL 注入 系统 SHALL 提供一个 Agent 构建函数/类,接受 SKILL 列表和 LLM 配置,创建一个集成了 SKILL 上下文的 LlamaIndex AgentWorkflow。 #### Scenario: 使用 SKILL 列表创建 Agent - **WHEN** 调用 Agent 构建函数,传入一个包含 2 个 Skill 实例的列表和 LLM 配置 - **THEN** 创建的 AgentWorkflow 的 system prompt 中包含这 2 个 Skill 的 `name`、`description` 和 `body` 内容 #### Scenario: 无 SKILL 创建 Agent - **WHEN** 调用 Agent 构建函数,传入空的 SKILL 列表 - **THEN** 创建的 AgentWorkflow 仅包含基础 system prompt,不含任何 SKILL 上下文 ### Requirement: System Prompt 组装 系统 SHALL 按照固定格式将多个 SKILL 的内容组装到 system prompt 中,每个 SKILL 之间用分隔符隔开。 #### Scenario: 多 SKILL 的 prompt 格式 - **WHEN** 注入 2 个名为 "skill-a" 和 "skill-b" 的 SKILL - **THEN** 生成的 system prompt 依次包含基础 prompt、"## Active Skills" 标题、每个 SKILL 的 "### Skill: {name}" 标题及其 body 内容,SKILL 之间用 `---` 分隔 #### Scenario: SKILL 顺序保持一致 - **WHEN** 按 ["skill-b", "skill-a"] 顺序注入 SKILL - **THEN** system prompt 中 skill-b 的内容出现在 skill-a 之前 ### Requirement: Agent 对话执行 系统 SHALL 提供运行 Agent 的能力,接受用户输入并返回 LLM 响应。 #### Scenario: 单轮对话 - **WHEN** 向 Agent 发送一条用户消息 - **THEN** Agent 调用 LLM 并返回文本响应 #### Scenario: 带工具的对话 - **WHEN** Agent 配置了工具函数,且用户消息触发了工具调用 - **THEN** Agent 执行工具调用并将结果整合到最终响应中 ### Requirement: 工具注册 系统 SHALL 支持在创建 Agent 时注册 Python 可调用函数作为工具。 #### Scenario: 注册 Python 函数为工具 - **WHEN** 传入一个带 docstring 的 Python 函数到 Agent 构建函数的 `tools` 参数 - **THEN** 该函数被注册为 LlamaIndex 工具,Agent 可在对话中调用它 #### Scenario: 无工具的 Agent - **WHEN** 创建 Agent 时不传入任何工具 - **THEN** Agent 正常运行,仅进行对话,不进行工具调用