SuperAPI AI 工具集

ai-python-custom-loop

智能体与模型

查看项目

更新于 10-16 04:06

技能介绍

用途

ai-python-custom-loop 用于在构建自定义智能体循环(custom agent loop)时,修改工具调度、历史管理、钩子以及控制流。它面向需要偏离默认循环形态、但又希望保留 ai-python 既有语义(校验、审批、缓存重放等)的场景。

主要能力

该技能提供了一份可参考的循环实现骨架:通过继承 ai.Agent 并重写 async def loop(self, context: ai.Context),在每一轮中打开 ai.stream(context=context) 与 ai.ToolRunner(),用 ai.util.merge(stream, runner.events()) 合并事件并逐个 yield;当遇到 ai.events.ToolEnd 时,调用 runner.schedule(context.resolve(event.tool_call)) 调度工具;一轮结束后依次 context.add(stream.message) 与 context.add(runner.get_tool_message())。

使用方式与规则

  • 在每一轮开头调用 context.keep_running()。
  • 使用 ai.stream(context=context),让模型、消息、工具、输出类型与参数保持在一起。
  • 从循环中 yield 事件;Agent.run 会对调用方隐藏重放事件。
  • 在 ToolEnd 时使用 context.resolve(event.tool_call),它负责校验、审批门与缓存重放结果。
  • 除非同时处理校验、审批与缓存结果,否则不要直接调用 tool.fn。
  • 用 ToolRunner.schedule(...) 调度已解析的调用;它也接受返回 ai.events.ToolCallResult 的零参数异步可调用对象。
  • 若自行构造结果,使用 runner.add_result(ai.tool_result(...))。
  • 先添加 stream.message,再添加 runner.get_tool_message();context.add(...) 会跳过重放消息。
  • 每个工具调用必须获得一个工具结果。
  • 对于钩子,让 context.resolve(...) 构建带门控的调用;请求边界可参考 ai-python-serverless-execution。
  • 对于持久化调用,保持该形态并只包裹模型或工具的 I/O;可参考 ai-python-durable-execution。

适用场景

适用于需要自定义智能体循环控制流的开发场景,例如调整工具分发、历史管理、钩子或循环结构,同时希望复用 ai-python 的校验、审批与缓存重放机制。

限制

资料未提供该技能的具体安装命令、依赖版本、平台支持范围、收费方式或性能数据,这些信息暂未提供。