ADK-Rust v0.2.0:首个稳定版本
宣布 ADK-Rust v0.2.0——首个稳定版本,包含图代理、实时语音、浏览器自动化、评估框架和 ADK Studio 可视化构建器。
ADK-Rust v0.2.0:首个稳定版本
我们很高兴地宣布 ADK-Rust v0.2.0——Rust 框架的首个稳定版本,用于构建生产就绪的 AI 代理。此版本标志着一个重要的里程碑,带来了显著的新功能、改进的稳定性以及对未来语义版本控制的承诺。
v0.2.0 中的新功能
🔀 图代理(LangGraph 风格的工作流)
新的 adk-graph crate 为 Rust 带来了 LangGraph 风格的工作流编排:
use adk_graph::{prelude::*, node::AgentNode}; let graph = GraphAgent::builder("support_router") .channels(&["input", "category", "response"]) .node(classifier_node) .node(billing_node) .node(technical_node) .edge(START, "classifier") .conditional_edges("classifier", Router::by_field("category", vec![ ("billing", "billing_agent"), ("technical", "technical_agent"), ])) .edge("billing_agent", END) .edge("technical_agent", END) .build()?;
主要功能:
- 状态管理:具有自动合并功能的类型化状态通道
- 条件路由:根据状态字段或自定义逻辑进行路由
- 检查点:SQLite 和内存后端,用于容错
- 人机协作:中断工作流以进行人工审批
- 循环图:支持具有迭代限制的 ReAct 模式
🎙️ 实时语音代理
通过双向音频流构建支持语音的 AI 助手:
use adk_realtime::{RealtimeAgent, openai::OpenAIRealtimeModel}; let agent = RealtimeAgent::builder("voice_assistant") .model(Arc::new(OpenAIRealtimeModel::new(&api_key, "gpt-4o-realtime-preview"))) .instruction("You are a helpful voice assistant.") .voice("alloy") .server_vad() // Voice Activity Detection .build()?;
支持的提供商:
- OpenAI 实时 API (
gpt-4o-realtime-preview,gpt-realtime) - Google Gemini 实时 API (
gemini-2.0-flash-live-preview)
功能:
- 双向音频流(PCM16, G711)
- 服务器端语音活动检测
- 语音对话期间的工具调用
- 多代理移交
🌐 浏览器自动化
adk-browser crate 提供了 46 种用于 Web 自动化的 WebDriver 工具:
use adk_browser::{BrowserSession, BrowserToolset, BrowserConfig}; let session = Arc::new(BrowserSession::new( BrowserConfig::new().webdriver_url("http://localhost:4444") )); let tools = BrowserToolset::new(session).all_tools(); let agent = LlmAgentBuilder::new("web_agent") .model(model) .instruction("Browse the web and extract information.") .tools(tools) .build()?;
工具类别:
- 导航:
browser_navigate、browser_back、browser_forward - 提取:
browser_extract_text、browser_extract_links、browser_extract_html - 交互:
browser_click、browser_type、browser_select - 表单:
browser_fill_form、browser_submit - 截图:
browser_screenshot、browser_screenshot_element - JavaScript:
browser_evaluate、browser_evaluate_async
📊 代理评估框架
使用 adk-eval crate 测试和验证代理行为:
use adk_eval::{Evaluator, EvaluationConfig, EvaluationCriteria}; let config = EvaluationConfig::with_criteria( EvaluationCriteria::exact_tools() .with_response_similarity(0.8) ); let evaluator = Evaluator::new(config); let report = evaluator .evaluate_file(agent, "tests/my_agent.test.json") .await?; assert!(report.all_passed());
评估能力:
- 轨迹验证(工具调用序列)
- 响应相似度(Jaccard、Levenshtein、ROUGE)
- LLM 判定的语义匹配
- 基于评分标准的自定义评分
- 安全性和幻觉检测
🎨 ADK Studio:可视化代理构建器
用于构建 AI 代理的拖放界面:
cargo install adk-studio adk-studio
功能:
- 用于可视化工作流设计的 ReactFlow 画布
- 完整代理调色板:LLM、顺序、并行、循环、路由器
- 工具集成:函数、MCP、浏览器、Google 搜索
- 使用 SSE 流进行实时聊天测试
- 一键生成代码到生产 Rust
🛡️ 护栏
使用 adk-guardrail crate 进行输入/输出验证:
use adk_guardrail::{Guardrails, PiiRedactor, ContentFilter}; let guardrails = Guardrails::new() .add(PiiRedactor::default()) .add(ContentFilter::block_harmful()); let safe_input = guardrails.process_input(user_message)?; let safe_output = guardrails.process_output(agent_response)?;
内置护栏:
- PII 匿名化(电子邮件、电话、SSN、信用卡)
- 内容过滤(有害、不当)
- JSON 模式验证
- 自定义验证规则
🖼️ 动态 UI 生成
adk-ui crate 使代理能够渲染丰富的界面:
use adk_ui::{UiToolset, UI_AGENT_PROMPT}; let agent = LlmAgentBuilder::new("ui_assistant") .instruction(UI_AGENT_PROMPT) .tools(UiToolset::all_tools()) .build()?;
组件: 28 个 UI 组件,包括卡片、表格、图表、表单
模板: 10 个用于常见模式的预构建模板
React 客户端: npm install @zavora-ai/adk-ui-react
破坏性变更
RunnerConfig 变更
RunnerConfig 结构体现在包含一个 run_config 字段:
// Before (v0.1.x) let runner = Runner::new(RunnerConfig { app_name: "my_app".to_string(), agent: agent.clone(), session_service: session_service.clone(), artifact_service: None, memory_service: None, })?; // After (v0.2.0) let runner = Runner::new(RunnerConfig { app_name: "my_app".to_string(), agent: agent.clone(), session_service: session_service.clone(), artifact_service: None, memory_service: None, run_config: None, // NEW: Optional RunConfig for execution settings })?;
依赖更新
sqlx从 0.7 升级到 0.8(SQLite 兼容性所需)- Rust 2024 版(需要 Rust 1.85+)
迁移指南
-
更新 Cargo.toml:
adk-rust = "0.2.0" -
将
run_config: None添加到 RunnerConfig:RunnerConfig { // ... existing fields ... run_config: None, } -
如果使用 SQLite 会话,请更新 sqlx:
sqlx = { version = "0.8", features = ["sqlite", "runtime-tokio"] }
性能改进
- 流优化:减少事件流中的内存分配
- 会话缓存:提高会话查找性能
- 工具执行:尽可能并行执行工具
文档
所有文档均已更新至 v0.2.0:
文档现已提供 9 种语言版本:英语、西班牙语、中文、日语、葡萄牙语、德语、法语、阿拉伯语、印地语和韩语。
后续计划
我们正在开发 v0.3.0,计划中的功能包括:
- 云集成(AWS Bedrock、Azure OpenAI、GCP Vertex AI)
- 增强的内存系统,支持更多向量数据库后端
- 工作流模板和预构建代理模式
- 性能分析和优化工具
开始使用
# Create a new project cargo new my_agent cd my_agent # Add ADK-Rust echo 'adk-rust = "0.2.0"' >> Cargo.toml echo 'tokio = { version = "1.40", features = ["full"] }' >> Cargo.toml # Set your API key export GOOGLE_API_KEY="your-api-key" # Run an example cargo run --example quickstart
感谢
衷心感谢所有通过代码、文档、错误报告和反馈为本次发布做出贡献的人。ADK-Rust 由社区构建,为社区服务。
链接:
祝您构建愉快!🦀🤖