Google's Genkit Ships Agents API with Detached Turns and Human-in-the-Loop for TypeScript and Go

TL;DR · AI 摘要
Google's Genkit Ships Agents API with Detached Turns and Human-in-the-Loop for TypeScript and Go - InfoQ InfoQ Homepage...
核心要点
- 主题聚焦:Google's Genkit Ships Agents API with Detached T
- 来源:InfoQ,建议结合原文判断细节。
- AI 分析暂不可用,本条为保底评分与摘要。
Google 的 Genkit 发布支持分离式回合和人工介入的 Agents API,适用于 TypeScript 和 Go - InfoQ
InfoQ 首页 News Google 的 Genkit 发布支持分离式回合和人工介入的 Agents API,适用于 TypeScript 和 Go
云
QCon 旧金山(11 月 16-20 日):深入的技术会议。改变你思维方式的同行对话。
Google 的 Genkit 发布支持分离式回合和人工介入的 Agents API,适用于 TypeScript 和 Go
2026 年 7 月 14 日 4 分钟阅读
作者:
- Steef-Jan Wiggers
#### 关注我们
YouTube
232K 粉丝
26K 粉丝
新
RSS
19K 读者
X
57.1k 粉丝
21K 喜欢
Bluesky
收听本文 -
0:00
音频准备播放
您的浏览器不支持音频元素。
正常
1.25x
1.5x
喜欢
新下拉阅读列表
- 阅读列表
Google 最近发布了 Genkit 的 Agents API 预览版,这是其用于构建全栈 AI 应用程序的开源框架。该 API 通过单一的 chat() 接口封装了消息历史、工具执行循环、流式传输、状态持久化和前端协议,无论代理是在进程中运行还是通过 HTTP 端点运行,接口行为完全一致。该预览版今天已提供给 TypeScript 和 Go 使用,Python 和 Dart 的支持计划中。
设计原则是通过单一抽象实现可扩展性,无需替换底层原语。相同的代理对象可以处理单次回复、流式多回合对话、等待人工批准的暂停工具调用,以及分离的长期运行任务。随着功能从简单聊天机器人扩展到多代理工作流,团队无需切换到不同框架组件。
Genkit 将大多数框架混淆的两种代理数据类型进行了分离。自定义状态是驱动下一次回合的类型化应用数据:工作流状态、任务列表或选定实体。工件是用户可独立查看、下载或版本管理的生成输出:报告、代码补丁或旅行行程。工具通过活动会话更新其中任意一种,Genkit 会实时将更改流式传输给客户端。
状态持久化遵循两条路径。配置会话存储后,代理由服务器管理:消息、自定义状态和工件以快照形式持久化,客户端可通过会话 ID 重新连接。Genkit 提供了 Firestore(生产多实例)、内存(开发环境)和基于文件(本地测试)的存储实现,并支持自定义实现的插件接口。未配置存储时,代理由客户端管理:服务器返回完整状态,客户端在每次回合中将其发送回服务器。
AI 工程师 Ebenezer Don 强调了这一架构选择的合规性维度:
在决定为 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);
}通过分离运行(detached runs),开发者可以在不使用 WebSocket、独立任务队列或保持连接开放的情况下,创建长期研究任务、多步骤规划和以工具为主的实用工作流。
可中断工具的另一个能力是提供带防伪造保护的人机协作控制。当工具被标记为可中断时,代理会在执行中途暂停,将待处理操作返回给客户端,仅在用户批准或拒绝后才会恢复。运行时会将恢复负载与会话历史进行验证,防止工具被伪造输入欺骗执行。在 Go 中:
runShell := genkitx.DefineInterruptibleTool(g, "run_shell",
"在安全检查后运行一个 shell 命令。",
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: "该命令可以修改文件。",
})
} else if !confirm.Approved {
return ShellOutput{}, errors.New("用户拒绝执行 shell 命令")
}
}
return execute(input.Command)
},
)对于多代理编排,Genkit 的中间件系统(5 月发布)为每个子代理注入了一个委托工具,因此协调器模型可以将请求的某些部分路由给专家。子代理可以通过相同的 chat() 接口在本地运行或通过 HTTP 端点运行。中间件层还提供了可组合的钩子,用于指数退避重试、跨提供商的模型回退、工具批准门控,以及一个技能系统,该系统将 SKILL.md 文件加载到系统提示中。
通过插件架构,Genkit 与模型无关。官方插件支持 Google AI(Gemini)、Vertex AI、Anthropic、OpenAI 和 Ollama。Vercel AI SDK 适配器使团队能够将 Genkit 代理集成到 Next.js 应用程序中。每个代理本身都是一个可服务的操作,路由助手只需几行代码即可在标准 HTTP 多路复用器上设置 turn、snapshot 和 abort 端点。
竞争环境是一个拥挤的领域。LangChain、CrewAI、Semantic Kernel、Autogen、Mastra 和 Pydantic AI 都在解决重叠的问题。谷歌本身正在两个层面同时构建代理基础设施:Genkit 用于自托管代理应用,Gemini API 中的 Managed Agents 用于谷歌托管的运行时,其中后台执行、远程 MCP 服务器和沙箱代码执行完全在服务器端处理。Genkit 在更广泛的生态系统中的差异化优势是全栈方法:服务器端代理逻辑、适用于 Web 和移动设备的类型化客户端 SDK、内置的流式传输协议,以及部署到 Firebase、Cloud Run 或任何运行 Node.js 或 Go 的环境。权衡是 Genkit 相对年轻,与 LangChain 相比,社区集成的生态系统规模较小。
Agents API 处于预览阶段。中间件系统在 TypeScript、Go 和 Dart 中已正式发布(GA)。Genkit 在 GitHub 上以 Apache 2.0 许可证开源。
作者部分主容器
关于作者
小节标题
每个作者的主容器
#### Steef-Jan Wiggers
显示更多
显示更少
#### 该内容属于云技术主题
##### 相关主题:
- 开发
- 架构与设计
- DevOps
- 人工智能、机器学习与数据工程
- Java
- API
- 开源项目发布
- 云
- 代理
- Google Cloud
- 人工智能架构
- 相关编辑内容
- 相关赞助商 [使用智能代理AI构建最佳应用——通过架构防护措施实现确定性结果](链接)
- 相关赞助商 [Copilots使单个开发者效率提升。WaveMaker使10个小组保持一致性。通过架构治理和可预测的结果,实现不同技能水平的开发人员一致性。尝试WaveMaker AI](链接)
InfoQ 电子报
每周二发送上周InfoQ内容摘要。加入超过25万名高级开发者的社区。[查看示例](链接)
我们保护您的隐私。