Skip to content

反思与重试工具插件

Supported in ADKPython v1.16.0

反思与重试工具插件可以帮助你的智能体从 ADK 工具 的错误响应中恢复,并自动重试工具请求。此插件拦截工具失败,为 AI 模型提供结构化指导以进行反思和纠正,并根据可配置的限制重试操作。此插件可以帮助你在智能体工作流中构建更强的弹性,包括以下功能:

  • 并发安全:使用锁定安全地处理并行工具执行。
  • 可配置范围:按每次调用(默认)或全局跟踪失败。
  • 精细跟踪:按工具跟踪失败次数。
  • 自定义错误提取:支持检测正常工具响应中的错误。

添加反思与重试插件

通过将其添加到 ADK 项目的 App 对象的插件设置中,将此插件添加到你的 ADK 工作流中,如下所示:

from google.adk.apps.app import App
from google.adk.plugins import ReflectAndRetryToolPlugin

app = App(
    name="my_app",
    root_agent=root_agent,
    plugins=[
        ReflectAndRetryToolPlugin(max_retries=3),
    ],
)

通过此配置,如果智能体调用的任何工具返回错误,请求将更新并再次尝试,每个工具最多尝试 3 次。

配置设置

反思与重试插件具有以下配置选项:

  • max_retries:(可选)系统为接收非错误响应而进行的额外尝试总次数。默认值为 3。
  • throw_exception_if_retry_exceeded:(可选)如果设置为 False,则如果最终重试尝试失败,系统不会引发错误。默认值为 True
  • tracking_scope:(可选)
    • TrackingScope.INVOCATION:在单个调用和用户之间跟踪工具失败。此值为默认值。
    • TrackingScope.GLOBAL:在所有调用和所有用户之间跟踪工具失败。

高级配置

你可以通过扩展 ReflectAndRetryToolPlugin 类来进一步修改此插件的行为。以下代码示例演示了通过选择具有错误状态的响应来简单扩展行为:

class CustomRetryPlugin(ReflectAndRetryToolPlugin):
  async def extract_error_from_result(self, *, tool, tool_args,tool_context,
  result):
    # Detect error based on response content
    if result.get('status') == 'error':
        return result
    return None  # No error detected

# add this modified plugin to your App object:
error_handling_plugin = CustomRetryPlugin(max_retries=5)

下一步

有关使用反思与重试插件的完整代码示例,请参阅以下内容: