smolagents 文档

人在环路:以交互方式自定义智能体计划

Hugging Face's logo
加入 Hugging Face 社区

并获得增强的文档体验

开始使用

人在环路:以交互方式自定义智能体计划

本页面演示了 smolagents 库的高级用法,特别关注用于交互式计划创建、用户驱动的计划修改以及智能体工作流程中内存保留的**人在环路 (Human-in-the-Loop, HITL)** 方法。该示例基于 `examples/plan_customization/plan_customization.py` 中的代码。

概述

本示例将教您如何实现人在环路策略以:

  • 在计划创建后中断智能体执行(使用步骤回调)
  • 允许用户在执行前审查和修改智能体的计划(人在环路)
  • 在保留智能体内存的同时恢复执行
  • 根据用户反馈动态更新计划,保持人类的控制权

关键概念

用于计划中断的步骤回调

智能体被配置为在创建计划后暂停。这是通过为 `PlanningStep` 注册一个步骤回调来实现的。

agent = CodeAgent(
    model=InferenceClientModel(),
    tools=[DuckDuckGoSearchTool()],
    planning_interval=5,  # Plan every 5 steps
    step_callbacks={PlanningStep: interrupt_after_plan},
    max_steps=10,
    verbosity_level=1
)

人在环路:交互式计划审查与修改

当智能体创建计划时,回调会显示该计划并提示人类用户:

  1. 批准该计划
  2. 修改该计划
  3. 取消执行

交互示例

============================================================
🤖 AGENT PLAN CREATED
============================================================
1. Search for recent AI developments
2. Analyze the top results
3. Summarize the 3 most significant breakthroughs
4. Include sources for each breakthrough
============================================================

Choose an option:
1. Approve plan
2. Modify plan
3. Cancel
Your choice (1-3):

这个人在环路的步骤使人类能够在执行继续前介入并审查或修改计划,并确保智能体的行动符合人类的意图。

如果用户选择修改,他们可以直接编辑计划。更新后的计划将用于后续的执行步骤。

内存保留与恢复执行

通过使用 `reset=False` 运行智能体,所有之前的步骤和内存都会被保留。这允许您在中断或计划修改后恢复执行。

# First run (may be interrupted)
agent.run(task, reset=True)

# Resume with preserved memory
agent.run(task, reset=False)

检查智能体内存

您可以检查智能体的内存以查看目前为止采取的所有步骤。

print(f"Current memory contains {len(agent.memory.steps)} steps:")
for i, step in enumerate(agent.memory.steps):
    step_type = type(step).__name__
    print(f"  {i+1}. {step_type}")

人在环路工作流示例

  1. 智能体从一个复杂的任务开始
  2. 创建计划步骤,执行暂停以供人类审查
  3. 人类审查并可选择修改计划(人在环路)
  4. 使用批准/修改后的计划恢复执行
  5. 所有步骤都为未来的运行保留,保持透明度和控制力

错误处理

该示例包括针对以下情况的错误处理:

  • 用户取消
  • 计划修改错误
  • 恢复执行失败

环境要求

  • smolagents 库
  • DuckDuckGoSearchTool (smolagents 自带)
  • InferenceClientModel (需要 HuggingFace API 令牌)

教育价值

本示例演示了:

  • 用于自定义智能体行为的步骤回调实现
  • 多步智能体中的内存管理
  • 智能体系统中的用户交互模式
  • 用于动态智能体控制的计划修改技术
  • 交互式智能体系统中的错误处理

要查看完整代码,请参阅 examples/plan_customization

< > 在 GitHub 上更新