LlmAgent
集中推理
模型、指令、工具、回调和流输出——大多数系统的小而有用的中心。
ADK-Rust 将类型化代理、工具、持久状态、实时媒体和开放协议引入一个异步运行时,以便您可以从专注的代理转变为可以放心操作的系统。
从工作单元开始
代理是一个异步 Rust 组件。它接收调用上下文,使用模型或工具执行工作,并在处理过程中发出类型化事件。 LLM 代理、工作流、实时代理、编码代理和自定义 Rust 代理都使用此共享合约。
ADK-Rust 的引人注目之处在于,代理仍然是您可以理解和控制的软件系统的一部分。模型调用、工具输入、状态更改、批准和流事件具有显式的 Rust 合约。相同的运行时可以支持专注的助手、持久的多代理工作流程、实时语音体验或跨服务工作的代理,同时保留 Rust 团队期望的性能、并发性、可移植性和操作规范。
如果您了解 LangGraph、Google ADK、OpenAI Agents SDK 或 CrewAI,您就会认识工具、切换、工作流程、内存、护栏和跟踪。 ADK-Rust 将这些想法带入 Rust 原生运行时,并将它们与实时媒体、代码执行、RAG、工件和开放协议(例如 MCP、A2A、ACP 和 AWP)连接起来。版本 2 通过图形、实时、编码和 CodeAct 代理扩展了该基础;提供商感知的工具模式;可组合的项目模板和 货物adk构建;更强的国家和运营控制;以及从第一次模型调用到生产的一致类型化事件跟踪。
如何阅读架构
按照图从左到右进行操作。产品表面向Runner发送请求。 Runner 附加会话状态和调用上下文,然后调用选定的代理。模型、工具和状态支持工作,而类型化事件则返回进度和结果。
Runner、代理、类型化事件、模型/工具循环、会话、回调、传输和取消。
MCP、A2A、ACP、AWP、HTTP、SSE 和实时传输连接单独的系统和信任区域。
Studio,UI、Playground、控制平面消耗ADK-Rust;它们不在 Runner 内部运行。
框架面
ADK-Rust 将完整的代理生命周期引入一个框架中:组合代理行为,为其提供工具,保留上下文,将其连接到其他系统,并在生产中安全地操作它。以下各组显示了这些功能如何组合在一起。
构建LLM、工作流、图形、实时和编码代理;为他们配备类型化工具、MCP、RAG、内存、会话和工件;通过REST、A2A、ACP、AWP连接;然后添加授权、护栏、遥测和生产评估。
撰写 capability
The main model-driven agent. Give it instructions, an LLM, tools, callbacks, and optional sub-agents; the Runner streams its work as typed events.
法案 capability
Turns a typed async Rust function into a model-callable tool and derives the argument schema from Rust types.
记住 capability
Keep conversation events and application state together so a user can continue the same interaction over multiple turns.
连接 capability
Exposes familiar HTTP endpoints for clients that send a request and receive a structured response.
操作 capability
Establishes who is calling the system through API keys, OAuth, OIDC, SSO, and application identity.
构建 capability
Generate working starting shapes for focused agents, tools, retrieval, APIs, workflows, realtime sessions, and custom logic.
看看它是如何工作的
Runner 解析会话、构建调用上下文、运行代理、流模型和工具工作、应用状态更改、保留持久事件,并在发生时将进度返回给调用者。
同样的跟踪可以提供给终端、Web UI、API 客户端、评估或实时对话。
遵循真实的要求
客户问:“为什么我的支付失败?” Runner 打开正确的会话,流式传输模型输出和工具活动,记录状态更改,并将每个有用的事件返回到界面。用户看到进度,而操作员则获得完整的执行记录。
撰写行为
路由器识别必须完成的工作。专家处理他们最了解的部分。顺序和并行工作流程控制执行顺序,而图形检查点则保留附加到同一作业的证据、批准和进度。
LlmAgent
模型、指令、工具、回调和流输出——大多数系统的小而有用的中心。
Sequential · Parallel · Loop
直接在Rust程序中表达顺序、并发、重复和退出条件。
GraphAgent
分支、检查点、中断一个人,并在流程或对话继续后恢复。
CodingAgent · CodeActAgent
让代理在您控制的工作区和沙箱边界内检查、编辑和运行代码。
RealtimeAgent
通过一次实时会话携带音频、文字记录、视频帧、中断和服务器端工具。
CustomAgent
实现直接用 Rust 编写的产品特定行为的代理合约。
围绕代理的系统
有用的代理需要工具、状态、接口、边界和证据。 ADK-Rust 通过您拥有的可组合 Rust 接口公开每个部分。
一种产品,多种责任
在客户支持产品中,模型起草响应,工具检查订单,会话携带客户上下文,授权控制退款,工件存储收据,遥测记录结果。每个职责在运行时都保持可见。
托管前沿模型、快速路由模型、本地 Ollama 和本地 Mistra.rs 推理位于通用 Llm 合约的后面。
Gemini · OpenAI · Anthropic · OpenRouter · DeepSeek · Groq · Ollama · Bedrock · Azure AI · 兼容端点
将类型化的 Rust 函数、MCP 服务器、技能、浏览器会话、编码代理或沙盒进程转换为运行时可以检查和调用的功能。
#[tool] · FunctionTool · MCP · ACP · 技能 · 浏览器 · 代码
会话保存事件历史记录。记忆检索有用的知识。工件保存文件。图形检查点使长时间的工作可以恢复。
SQLite · PostgreSQL · Redis · MongoDB · Firestore · Neo4j · 加密会话
ADK-Rust 在 Rust 拥有的会话中保留音频、文字记录、视频帧、工具调用、中断和更改上下文。
OpenAI Realtime · Gemini Live · Vertex Live · LiveKit · 可选 WebRTC
在模型给出答案之前,对文档进行分块、嵌入、搜索向量存储、对结果重新排序以及按项目隔离内存。
RAG 管道 · 语义记忆 · 知识图 · 五种向量存储实现
授权、回调、护栏、沙箱配置文件、取消、遥测和评估构成了生产执行边界。
RBAC · OAuth/OIDC · 工具确认 · PII 护栏 · OpenTelemetry · 评估
选择边界
从功能运行的地方开始。
当子代理共享部署、状态和信任时,将子代理保留在一个 ADK-Rust 运行时内。当功能、代理、编码工作区或网站具有自己的部署、流程、所有权或信任边界时,引入协议。
相同Rust流程
代理、子代理或工具
外部工具或资源
MCP
独立部署代理
A2A
编码过程或IDE
ACP
代理可读的网站
AWP
模型上下文协议
What is MCP?
外部服务器发布代理可以调用的工具和它可以读取的资源的标准方法。
代理到代理协议
What is A2A?
一种网络协议,用于发现远程代理、向其发送工作、跟踪进度并跨 HTTP 边界接收结果。
代理客户端协议
What is ACP?
一种标准化编码代理和托管它们的客户端(包括编辑器、CLI 和编排系统)之间的会话的协议。
代理网络协议
What is AWP?
一种网络协议,网站通过该协议发布其身份、代理可以做什么、适用哪些策略以及其面向代理的服务是否健康。
开发者快速入门
从一个小型的、有效的 Rust 项目开始。下面的指导步骤解释了生成器添加的内容、如何在本地编译项目以及随着产品的增长在何处扩展项目。
最后你会得到什么
编译后的 Rust 代理,带有类型化工具、交互式 Launcher 会话、遥测设置、会话和护栏集成点以及终端中的真实模型响应。生成的项目是普通的 Rust 源代码,您可以阅读、更改和扩展。
开始之前
您的机器需要两件事
Rust 1.95 或更高版本。
使用 rustup 安装或更新稳定的工具链。
API 型号钥匙。
该路径使用 GOOGLE_API_KEY;稍后可以选择另一个提供商。
Cargo-adk 添加了用于创建、检查、构建和部署代理项目的 Cargo adk 命令。
cargo install cargo-adk从可以调用类型化 Rust 工具的代理开始。在生成项目时添加可观察性、会话状态和护栏挂钩。
cargo adk new support-agent --template tools \
--addon telemetry --addon sessions --addon guardrails生成的示例默认使用 Gemini。复制安全示例文件,然后将密钥放入未跟踪的 .env 文件中。
cd support-agent
cp .env.example .env
# set GOOGLE_API_KEY in .envCargo adk build 检查生成的依赖项、功能组合、Rust 类型并发布二进制文件,而无需部署任何内容。
cargo adk build启动生成的控制台,输入消息,然后观察相同类型的运行时,该运行时可以稍后为 API、工作流或实时产品提供支持。
cargo run安装一次
$ cargo install cargo-adk生成项目
$ cargo adk new support-agent \
+ --template tools \
+ --addon telemetry \
+ --addon sessions \
+ --addon guardrails配置模型
$ cd support-agent
cp .env.example .env
# Add GOOGLE_API_KEY to .env验证,然后运行
$ cargo adk build
cargo run ADK-Rust — support-agent
Type a message to chat. Type 'exit' to quit.
You > Greet Ada casually.
[tool] greet({"name":"Ada","style":"casual"})
Hey Ada! What's up?
You > exit
Goodbye.了解脚手架
模板提供工作剂形状。每个附加组件都提供所需的包功能、导入、配置以及完成集成的明确位置。
模板
生成具有类型化 #[tool] 函数和模型工具调用所需的模式连接的 LLM 代理。
Add-on
启用 OpenTelemetry 集成,以便可以跟踪模型、工具和运行时工作。
Add-on
添加会话服务连接,以便对话状态可以在一次模型调用之外继续存在。
Add-on
添加用于输入验证、输出检查和内容过滤的功能和清除挂钩。
选择不同的起始形状
选择与第一个有用的作品相匹配的形状。模板生成可编辑的 Rust 源、依赖项、提供程序配置和可运行的入口点。
llm代理模板生成 LlmAgentBuilder、Gemini 模型设置、说明、会话支持的 Launcher 和交互式终端。
当
选择它作为助手、提取、分类或集中的模型和工具循环。
生成的起点
一名 LLM 代理 · 流式控制台 · 提供商配置
cargo adk new my-agent --template llmtools代理模板添加 src/tools.rs 以及工作的 #[tool] 函数、类型化参数、JSON 模式生成以及在 LLM 代理上的注册。
当
当代理需要计算、检索数据、调用业务逻辑或执行操作时选择它。
生成的起点
LlmAgent · Greet 工具 · serde · schemars · adk-tool
cargo adk new my-agent --template toolsrag代理模板使用文档分块、Gemini 嵌入、内存中向量存储、示例文档和 RagTool 创建 RAG 管道。
当
选择它来获取产品文档、政策、研究集合或基于私人材料的答案。
生成的起点
RagPipeline · 分块器 · 嵌入 · 矢量搜索 · RagTool
cargo adk new my-agent --template ragapi代理模板生成一个 Axum 服务器,其中包含 LLM 代理的运行状况、会话创建和流式运行端点。
当
当 Web 应用程序、移动客户端、后端服务或自动化平台调用代理时选择它。
生成的起点
Axum · REST 路由 · SSE 响应 · 内存中会话
cargo adk new my-agent --template apia2a模式别名解析为 a2a 服务器模式,并将 LLM 代理与服务器和会话功能相结合,以实现代理到代理的访问。
当
当另一个代理必须跨部署或所有权边界发现并调用此代理时选择它。
生成的起点
A2A 服务器·代理身份·任务处理·会话
cargo adk new my-agent --template a2agraph代理模板启用图形功能并为节点、边、检查点、中断和恢复创建导入和代理起点。
当
选择它用于具有分支、审批步骤、恢复或持久执行状态的长期运行工作。
生成的起点
图特征·工作流代理·拓扑起点
cargo adk new my-agent --template graphrealtime代理模板启用实时支持并通过实时导入和提供程序配置创建简洁的语音代理起点。
当
选择它来进行自然对话、打断、实时翻译、音频工具或传入视频帧。
生成的起点
实时功能·语音指令·运输起点
cargo adk new my-agent --template realtimesequential工作流程模板在 SequentialAgent 内生成研究员和作家代理,以便每个阶段都会收到前一阶段产生的工作。
当
当流程具有明确的阶段(例如收集、分析、起草、审查和发布)时选择它。
生成的起点
两个 LLM 代理 · 有序执行 · 共享调用轨迹
cargo adk new my-agent --template sequentialparallel工作流程模板在 ParallelAgent 内生成两个专家代理,并通过一个父工作流程收集他们的工作。
当
当多个调查可以从相同的输入开始并独立完成时选择它。
生成的起点
两个 LLM 代理 · 并发执行 · 聚合结果
cargo adk new my-agent --template parallelloop工作流程模板在 LoopAgent 内创建一个具有明确完成信号和五次迭代安全限制的工作线程。
当
选择它来进行起草、批评、修复、验证或搜索过程,通过重复进行改进。
生成的起点
LoopAgent 构建器 · 工作代理 · 完成指令 · 最大迭代次数
cargo adk new my-agent --template loopconditional工作流程模板在 ConditionalAgent 内生成技术代理和通用代理,从传入请求中选择路径。
当
当工作类别需要不同的指令、工具、模型或领域专家时选择它。
生成的起点
ConditionalAgent · 两条路线 · 基于 LLM 的选择
cargo adk new my-agent --template conditionalcustom代理模板使用 Agent 特征方法和运行函数创建一个 MyAgent 类型,为您自己的 Rust 执行逻辑和事件流做好准备。
当
选择它用于确定性编排、现有状态机、域运行时或需要完全 Rust 控制的行为。
生成的起点
代理特征骨架 · InvocacyContext · EventStream 入口点
cargo adk new my-agent --template customCLI 注册表还包括特定于提供商的 openai 模板、五种企业模式、 basic 和 a2a 别名和可组合功能附加组件。
cargo adk templatescargo adk addons编译你需要的东西
首先为项目的执行形状选择一个模板。然后为编译到二进制文件中的功能选择一个功能层。
功能层控制依赖项、编译时间、二进制表面和可用框架 API。持久数据库、MCP、云秘密管理器和特定的实时传输仍然是明确的选择。
代理商·Gemini·Runner·会话
具有最小默认表面的聚焦代理。
工具·内存·图形·服务器·身份验证·评估·遥测
大多数 API、工作流程系统和内部代理产品。
实时基础·浏览器·RAG·支付·AWP
需要更丰富交互和互操作性的产品。
音频·代码执行·沙箱
选择最强大的本地和执行功能。
adk-rust = { version = "2.0.0", features = ["standard"] }