谷歌 Genkit 推出 Agents API:支持分离式任务轮次与人机协同
2026/9/11 19:24:06 网站建设 项目流程

作者 | Steef-Jan

译者 | 明知山

最近, 谷歌(那个被用于构建全栈式 AI 应用的开源框架的谷歌)发布了预览版 API, 此 API 把消息历史、工具执行循环、流式传输、状态持久化以及前端协议全给封装在一个 chat 接口的背后, 不管智能体是在进程内运行, 还是部署在 HTTP 端点之后, 这个接口的工作方式都全然一致, 预览版现在已支持 和 Go, 和 Dart 的支持届时也在计划以内。

其核心设计原则为, 仅一个抽象层就能达成扩容, 并不需要去更换底层基础组件, 同一智能体对象能够处理一次性应答, 能够处理流式多轮对话, 能够处理等待人工确认的暂停工具调用, 还能够处理独立运行的长耗时任务, 当产品功能从简易聊天机器人迭代成多智能体协同工作流时, 开发团队不需要去切换框架内的其他组件。

对两种, 大多数框架会混淆的, 智能体数据, 进行了区分。自定义状态, 是驱动下一轮对话的, 强类型应用数据, 比如工作流状态、任务列表, 或已选择的实体。产物(), 是可供用户单独查看、下载, 或版本管理的, 生成输出, 像报告、代码补丁, 或旅行行程。工具可通过当前会话, 更新任意一类数据, 而且会实时将数据变更, 流式推送至客户端。

为状态持久化给出了两种达成的方案, 其一为服务端管理, 完成会话存储配置后, 消息、自定义状态以及产物会依照快照形式进行持久化存放,客户端凭借会话ID再度连接, 这里内置了三种存储方式, 分别是生产多实例存储、内存存储用于开发环境以及文件存储用于本地测试, 并且支持利用可插拔接口付诸实现自定义存储;其二为客户端管理, 当未配置存储之际, 服务端会返还完整状态, 客户端于每次对话轮次把该完整状态回传。

人工智能工程师唐强调了这样一种架构选择,在于合规层面所具备的意义。

要是打算给AI智能体增添记忆能力, 关键的难点在于保证上下文的稳固可靠。

提到客户端管理状况, 关于其管理时候的某种状态, Don专门着重指出了, 基于服务端管理办法, 那种方案所不能给予的数据留存方面具有的优势所在。

这种方式, 极其适配临时会话, 或者有着严格数据驻留约束的应用, 服务端不得持久化用户数据。因此, 会话增长后, 网络负载会增添, 这便是代价所在咯。

在当下, 各类智能体框架不断涌现, 层出不穷, 在这样的状况下, 该框架具备两项能力, 而这两项核心能力格外突出。

当客户端发起智能体任务之后, 分离式交互轮次允许该客户端断开连接, 随后再通过轮询的方式去获取结果。除此之外, 智能体在服务端会持续地运行, 并且把进度写入快照之中, 而任意一个客户端均能够读取这种快照数据:

const chat = reportAgent.chat({ sessionId: 'report-123' });const task = await chat.detach('Write the quarterly market report.');savePendingSnapshot(task.snapshotId);for await (const snapshot of task.poll({ intervalMs: 1000 })) {renderStatus(snapshot.status);if (snapshot.status === 'completed') renderMessages(snapshot.state.messages);}

依靠分离式运行的能力, 当中的开发者能够去创建那样的具备长时间运行特性的研究任务, 还有多步骤规划, 以及那种重度依赖工具的工作流——并不需要, 独立单独的在一旁静静存在的任务队列, 或者一直持续保持连接处于打开状态。

另一项核心能力乃可中断工具, 其具备带防伪造防护的人机协同控制能力。一旦工具被标记成可中断, 智能体于执行途中便会暂停, 把待执行操作返还给客户端, 唯有在用户批准或者驳回之后才会恢复运行。运行之际会结合会话历史校验恢复请求载荷, 以此防止工具因伪造输入诱导而执行。以下是 Go 语言示例:

runShell := genkitx.DefineInterruptibleTool(g, "run_shell","Run a shell command after a safety check.",func(ctx context.Context, input ShellInput, confirm *Confirmation) (ShellOutput, error) {if isRisky(input.Command) {if confirm == nil {return ShellOutput{}, tool.Interrupt(ShellInterrupt{Command: input.Command, Reason: "The command can modify files.",})} else if !confirm.Approved {return ShellOutput{}, errors.New("user rejected shell command execution")}}return execute(input.Command)},)

在多智能体编排场景之中, 已然在五月发布的中间件系统, 会给每一个子智能体注入委派调用工具, 编排主模型能够将请求进行拆分, 之后调配出去给予各专业子智能体予以处理, 各专业子智能体既能够在本地运行, 同时也能够透过HTTP此接口对外进行部署, 这二者共同使用同一个chat接口。该中间件层还能供给可组合的钩子函数, 它支持带有指数退避策略的重试机制, 支持跨提供商的模型降级, 支持工具人工审核门控, 还支持技能体系,这个技能体系能够读取SKILL.md文件, 并且能将内容注入系统提示词。

因由其插件架构达成了模型无关性, 官方插件许可谷歌AI、AI、、和。AI SDK适配器致使团队能够把智能体融入到Next.js应用里, 所有智能体原生支撑对外给予服务,路由辅助工具仅借助少量代码便能于标准HTTP多路复用器上设定交互轮次、快照读取、任务终止三类接口。

当前, 同类智能体开发赛道之中, 竞争极为激烈, AI等框架所解决的业务场景高度呈重合状态, 谷歌自身同时构建了两层智能体基础设施, 其一为面向自建部署智能体应用的, 其二为API托管智能体服务, 后者由谷歌托管运行环境, 后台任务执行这一能力、远程MCP服务这种能力、沙箱代码运行这类能力全部由服务端进行统一处理。将目光投向整个行业, 其核心差异化的优势在于那全栈式开发方案, 此方案涵盖着服务端智能体的逻辑, 有适配网页与移动端的强类型客户端SDK, 还内置流式传输协议, 并且同时支持部署到Cloud Run, 又或者是任意能够运行Node.js、Go的环境。然而其短板在于它面世的时间比较短, 社区第三方集成生态在规模方面比不上另一个。

该 API 当前处于预览状况。其所伴随的基于2.0许可协议所开源的中间件被配置于之上, 且已经正式发布了可供使用的版本, 而此版本是面向Go以及Dart这两种语言的。

查看英文原文:

声明:本文由 InfoQ 翻译,未经许可禁止转载。

今日好文推荐

需要专业的网站建设服务?

联系我们获取免费的网站建设咨询和方案报价,让我们帮助您实现业务目标

立即咨询