Skip to main content
Agno 中的用户控制流使你能够实现“人工干预”模式,在代理执行期间需要人工监督和输入。这对于以下方面至关重要:
  • 验证敏感操作
  • 在执行前审查工具调用
  • 收集用户输入以进行决策
  • 管理外部工具执行

用户控制流类型

Agno 支持四种主要的用户控制流类型:
  1. 用户確認: 在执行工具调用前需要用户明确批准
  2. 用户输入: 在执行期间从用户那里收集特定信息
  3. 动态用户输入: 让代理根据需要收集用户输入
  4. 外部工具执行: 执行代理控制之外的工具

暂停代理执行

用户控制流会中断代理的执行并需要人工监督。然后可以通过调用 continue_run 方法来继续执行。 例如:
continue_run 方法会根据暂停时的代理状态继续执行。你也可以将特定运行的 run_responserun_id 传递给 continue_run 方法。

用户确认

用户确认允许你在继续工具调用之前暂停执行并需要用户明确批准。这对于以下情况很有用:
  • 敏感操作
  • 修改数据的 API 调用
  • 具有重大后果的行动
以下示例展示了如何实现用户确认。
你还可以指定工具包中的哪些工具需要确认。

用户输入

用户输入流允许你在执行期间从用户那里收集特定信息。这对于以下情况很有用:
  • 收集必需的参数
  • 获取用户偏好
  • 收集缺失的信息
在下面的示例中,我们需要用户提供 send_email 工具的所有输入。
RunResponse 对象有一个工具列表,在 requires_user_input 的情况下,需要输入的工具会填充 user_input_schema。 这是一个 UserInputField 对象列表。
你还可以指定哪些字段应由用户填写,而代理将提供其余字段。

动态用户输入

此模式为代理提供了在需要用户输入时发出信号的工具。它非常适合:
  • 不确定用户如何与代理交互的情况
  • 当你希望与用户进行表单式交互时
在以下示例中,我们使用了一个专用工具来允许代理在需要时收集用户反馈。

外部工具执行

外部工具执行允许你在代理控制之外执行工具。这对于以下情况很有用:
  • 外部服务调用
  • 数据库操作

最佳实践

  1. 净化用户输入: 始终验证和净化用户输入,以防止安全漏洞。
  2. 错误处理: 始终为用户输入和外部调用实现适当的错误处理。
  3. 输入验证: 在处理之前验证用户输入。

开发者资源