ADK-Rust v0.2.0: O Primeiro Lançamento Estável
Anunciando ADK-Rust v0.2.0 - o primeiro lançamento estável com agentes de grafo, voz em tempo real, automação de navegador, framework de avaliação e construtor visual ADK Studio.
ADK-Rust v0.2.0: O Primeiro Lançamento Estável
Estamos entusiasmados em anunciar o ADK-Rust v0.2.0 - o primeiro lançamento estável do framework Rust para a construção de agentes de IA prontos para produção. Este lançamento marca um grande marco com novos recursos significativos, estabilidade aprimorada e um compromisso com o versionamento semântico daqui para frente.
Novidades na v0.2.0
🔀 Agentes de Grafo (Workflows estilo LangGraph)
O novo crate adk-graph traz a orquestração de workflow estilo LangGraph para Rust:
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()?;
Principais recursos:
- Gerenciamento de Estado: Canais de estado tipados com fusão automática
- Roteamento Condicional: Roteamento baseado em campos de estado ou lógica personalizada
- Checkpointing: Backends SQLite e em memória para tolerância a falhas
- Human-in-the-Loop: Interrompa workflows para aprovação humana
- Grafos Cíclicos: Suporte para padrões ReAct com limites de iteração
🎙️ Agentes de Voz em Tempo Real
Crie assistentes de IA habilitados para voz com streaming de áudio bidirecional:
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()?;
Provedores suportados:
- OpenAI Realtime API (
gpt-4o-realtime-preview,gpt-realtime) - Google Gemini Live API (
gemini-2.0-flash-live-preview)
Recursos:
- Streaming de áudio bidirecional (PCM16, G711)
- Detecção de Atividade de Voz no lado do servidor
- Chamada de ferramentas durante conversas de voz
- Transferências multiagente
🌐 Automação de Navegador
O crate adk-browser oferece 46 ferramentas WebDriver para automação web:
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()?;
Categorias de ferramentas:
- Navegação:
browser_navigate,browser_back,browser_forward - Extração:
browser_extract_text,browser_extract_links,browser_extract_html - Interação:
browser_click,browser_type,browser_select - Formulários:
browser_fill_form,browser_submit - Capturas de Tela:
browser_screenshot,browser_screenshot_element - JavaScript:
browser_evaluate,browser_evaluate_async
📊 Framework de Avaliação de Agentes
Teste e valide o comportamento do agente com o crate adk-eval:
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());
Capacidades de avaliação:
- Validação de trajetória (sequências de chamadas de ferramentas)
- Similaridade de resposta (Jaccard, Levenshtein, ROUGE)
- Correspondência semântica julgada por LLM
- Pontuação baseada em rubrica com critérios personalizados
- Detecção de segurança e alucinações
🎨 ADK Studio: Construtor Visual de Agentes
Uma interface de arrastar e soltar para construir agentes de IA:
cargo install adk-studio adk-studio
Recursos:
- Canvas ReactFlow para design visual de workflow
- Paleta completa de agentes: LLM, Sequencial, Paralelo, Loop, Roteador
- Integração de ferramentas: Função, MCP, Navegador, Pesquisa Google
- Teste de chat em tempo real com streaming SSE
- Geração de código com um clique para produção Rust
🛡️ Guardrails
Validação de entrada/saída com o crate adk-guardrail:
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)?;
Guardrails integrados:
- Redação de PII (e-mails, telefones, SSNs, cartões de crédito)
- Filtragem de conteúdo (prejudicial, inadequado)
- Validação de esquema JSON
- Regras de validação personalizadas
🖼️ Geração Dinâmica de UI
O crate adk-ui permite que os agentes renderizem interfaces ricas:
use adk_ui::{UiToolset, UI_AGENT_PROMPT}; let agent = LlmAgentBuilder::new("ui_assistant") .instruction(UI_AGENT_PROMPT) .tools(UiToolset::all_tools()) .build()?;
Componentes: 28 componentes UI incluindo cartões, tabelas, gráficos, formulários
Modelos: 10 modelos pré-construídos para padrões comuns
React Client: npm install @zavora-ai/adk-ui-react
Mudanças Disruptivas
Mudanças em RunnerConfig
A struct RunnerConfig agora inclui um campo 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 })?;
Atualizações de Dependência
sqlxatualizado de 0.7 para 0.8 (necessário para compatibilidade com SQLite)- Edição Rust 2024 (requer Rust 1.85+)
Guia de Migração
-
Atualizar Cargo.toml:
adk-rust = "0.2.0" -
Adicionar
run_config: Nonea RunnerConfig:RunnerConfig { // ... existing fields ... run_config: None, } -
Atualizar sqlx se estiver usando sessões SQLite:
sqlx = { version = "0.8", features = ["sqlite", "runtime-tokio"] }
Melhorias de Desempenho
- Otimização de streaming: Alocações de memória reduzidas no streaming de eventos
- Cache de sessão: Desempenho de pesquisa de sessão aprimorado
- Execução de ferramentas: Execução paralela de ferramentas onde possível
Documentação
Toda a documentação foi atualizada para a v0.2.0:
A documentação agora está disponível em 9 idiomas: Inglês, Espanhol, Chinês, Japonês, Português, Alemão, Francês, Árabe, Hindi e Coreano.
Próximos Passos
Já estamos trabalhando na v0.3.0 com recursos planejados:
- Integrações de nuvem (AWS Bedrock, Azure OpenAI, GCP Vertex AI)
- Sistemas de memória aprimorados com mais backends de banco de dados vetoriais
- Modelos de workflow e padrões de agentes pré-construídos
- Ferramentas de perfil e otimização de desempenho
Comece Agora
# 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
Agradecimentos
Um enorme agradecimento a todos que contribuíram para este lançamento através de código, documentação, relatórios de bugs e feedback. ADK-Rust é construído pela comunidade, para a comunidade.
Links:
Boas construções! 🦀🤖
Pronto para experimentar ADK-Rust v0.5.0?
Comece com o framework Rust mais poderoso para construir agentes de IA.