البدء السريع

أنشئ أول وكيل ذكاء اصطناعي لك في أقل من 5 دقائق.

المتطلبات الأساسية

  • Rust 1.95.0 أو إصدار أحدث (rustup update stable)
  • مفتاح OpenAI API لهذا الدليل

الخطوة 1: إنشاء هيكل خادم OpenAI

cargo install cargo-adk
cargo adk new quickstart_agent --template api --provider openai
cd quickstart_agent

ينشئ هذا مشروع Rust كاملًا مع وكيل OpenAI، وجلسات مخزنة في الذاكرة، ووقت تشغيل ADK HTTP، ونقاط نهاية للبث، وواجهة مستخدم مضمّنة للتطوير.

القوالب الأخرى

# Agent with custom tools using #[tool] macro
cargo adk new my_agent --template tools

# RAG agent with Gemini embeddings and in-memory vector search
cargo adk new my_agent --template rag

# REST API server with the embedded runtime UI
cargo adk new my_agent --template api

# OpenAI GPT-5-mini agent
cargo adk new my_agent --template openai

# A2A protocol agent with builder API
cargo adk new my_agent --template a2a

# Use any provider with any template
cargo adk new my_agent --template tools --provider anthropic

# Add optional addons to any template
cargo adk new my_agent --template tools --addon docker --addon ci
القالبما تحصل عليه
basicوكيل Gemini مع وحدة تحكم تفاعلية (افتراضيًا)
toolsوكيل مزوّد بأدوات مخصّصة باستخدام ماكرو #[tool] + إنشاء مخطط schemars
ragخط أنابيب RAG — تضمينات Gemini، مخزن متجهات في الذاكرة، واستيعاب المستندات
apiخادم Axum REST، وفحص السلامة، ونقاط نهاية البث، وواجهة مستخدم مضمنة لوقت التشغيل
openaiوكيل OpenAI GPT-5-mini مع وحدة تحكم
a2aوكيل بروتوكول A2A مع منشئ A2aServer وبطاقة وكيل
graphسير عمل قائم على الرسوم البيانية مع نقاط تحقق واستئناف دائم
realtimeوكيل بث الصوت/الملفات الصوتية في الوقت الفعلي

تلميح: استخدم العلامة --addon لإنشاء قوالب مع إضافات اختيارية مثل docker وci وtelemetry وغير ذلك. راجع صفحة القوالب القابلة للتركيب للاطلاع على القائمة الكاملة التي تضم 9 إضافات و5 أنماط للمؤسسات.

الخطوة 2: أضف مفتاح API الخاص بك

cp .env.example .env
# Open .env and replace the OPENAI_API_KEY placeholder.

يستبعد .gitignore المُنشأ .env. احتفظ بالمفتاح محليًا ولا تُدرجه أبدًا في المستودع.

الخطوة 3: شغّل الوكيل

cargo run

افتح http://127.0.0.1:8080/ui/. سيظهر الوكيل تلقائيًا؛ ولا تحتاج إلى إنشاء جلسة أو استدعاء نقطة نهاية أولًا.

الخطوة 4: اختبره في واجهة مستخدم وقت التشغيل

أدخل مطالبة مثل:

Explain what this agent can do in three concise Markdown bullets.

يتدفق الرد إلى المحادثة. استخدم أداة الفحص الموجودة على اليمين لمراجعة طوبولوجيا التنفيذ، والمخطط الزمني المرتب للأحداث، وتغييرات الحالة، والمصنوعات، والجلسات، وإمكانات البروتوكول، وبيانات القياس عن بُعد دون مغادرة الصفحة.

إدخال مطالبة، ومراقبة تسليم المهمة بين فريق، وفتح أداة فحص بيانات القياس عن بُعد لوقت تشغيل ADK

يستخدم هذا التسجيل عرض الفريق المحمول، لذا يسهل رؤية عملية تسليم المهمة المتحركة. ويستخدم وكيلك المُنشأ من القالب واجهة مستخدم وقت التشغيل نفسها مع طوبولوجيا تتكون من عقدة واحدة.

تحقق من وقت تشغيل HTTP بشكل منفصل إذا أردت إجراء اختبار أولي:

curl -fsS http://127.0.0.1:8080/api/health

لديك الآن ملف تنفيذي واحد يشغّل الوكيل، ويدير الجلسات، ويبث الأحداث، ويقدم واجهة الاختبار الخاصة به. ولا يلزم تثبيت واجهة أمامية منفصلة.

هل تفضّل وكيلًا يعمل من الطرفية فقط؟

استخدم قالب وحدة التحكم OpenAI بدلًا من ذلك:

cargo adk new quickstart_console --template openai
cd quickstart_console
cp .env.example .env   # replace the OPENAI_API_KEY placeholder
cargo run

البديل دون إعداد — adk::run()

إذا كنت تريد فقط تشغيل وكيل سريع دون إنشاء هيكل، فاستخدم الأمر في سطر واحد:

use adk_rust::run;

#[tokio::main]
async fn main() -> anyhow::Result<()> {
    dotenvy::dotenv().ok();
    // Minimal default: set GOOGLE_API_KEY. Add provider features for OpenAI/Anthropic.
    let response = run("You are a helpful assistant.", "Explain Rust in one sentence.").await?;
    println!("{response}");
    Ok(())
}

يتولى هذا اكتشاف المزوّد للمزوّدين المُترجمين، وإنشاء الجلسة، وبناء الوكيل، والتنفيذ في استدعاء واحد. وهو مناسب للبرامج النصية والنماذج الأولية والتجارب السريعة.


فهم الشيفرة المُنشأة

يبني src/main.rs الخاص بـ API كائن LlmAgent عاديًا، ثم يثبّته في الخادم القياسي. التوصيل المهم هو:

use adk_rust::prelude::*;
use adk_rust::server::{ServerConfig, create_app};
use adk_rust::session::InMemorySessionService;
use std::sync::Arc;

#[tokio::main]
async fn main() -> anyhow::Result<()> {
    dotenvy::dotenv().ok();
    let api_key = std::env::var("OPENAI_API_KEY")?;

    let model = adk_rust::model::openai::OpenAIClient::new(
        adk_rust::model::openai::OpenAIConfig::new(&api_key, "gpt-5.6-terra"),
    )?;

    let agent: Arc<dyn Agent> = Arc::new(
        LlmAgentBuilder::new("quickstart_agent")
            .description("REST API agent")
            .instruction("You are a helpful assistant accessible via REST API.")
            .model(Arc::new(model))
            .build()?,
    );

    let config = ServerConfig::new(
        Arc::new(adk_rust::SingleAgentLoader::new(agent)),
        Arc::new(InMemorySessionService::new()),
    );
    let app = create_app(config);

    let listener = tokio::net::TcpListener::bind("127.0.0.1:8080").await?;
    axum::serve(listener, app).await?;
    Ok(())
}
الجزءما الذي يفعله
OpenAIClientينشئ عميل النموذج من OPENAI_API_KEY
LlmAgentBuilderنمط المنشئ: الاسم، الوصف، التعليمات (موجّه النظام)، النموذج، الأدوات
InMemorySessionServiceيخزّن جلسات التطوير المحلية للمشغّل وواجهة المستخدم
create_appيضمّن REST/SSE API وواجهة مستخدم وقت التشغيل المضمّنة في موجّه Axum واحد

إضافة أدوات مخصصة

أسرع طريقة لإضافة الأدوات هي استخدام ماكرو #[tool]. أضف adk-tool إلى تبعياتك:

[dependencies]
adk-tool = "2.1.0"
schemars = "1"
serde = { version = "1", features = ["derive"] }

ثم عرّف أداة — حيث يصبح تعليق التوثيق الوصف، ويصبح هيكل الوسائط مخطط JSON:

use adk_tool::{tool, AdkError};
use schemars::JsonSchema;
use serde::Deserialize;
use serde_json::{json, Value};

#[derive(Deserialize, JsonSchema)]
struct WeatherArgs {
    /// The city to look up
    city: String,
}

/// Get the current weather for a city.
#[tool]
async fn get_weather(args: WeatherArgs) -> std::result::Result<Value, AdkError> {
    Ok(json!({ "temp": 22, "city": args.city, "condition": "sunny" }))
}

ينشئ الماكرو بنية GetWeather تطبّق Tool. أضفها إلى وكيلك:

let agent = LlmAgentBuilder::new("weather_agent")
    .instruction("Use the get_weather tool for weather questions.")
    .model(Arc::new(model))
    .tool(Arc::new(GetWeather))  // Generated by #[tool]
    .build()?;

تلميح: أو أنشئ مشروعًا باستخدام قالب يحتوي على الأدوات مُعدّة مسبقًا: cargo adk new my-agent --template tools

الأدوات المضمنة

يتضمن ADK أيضًا أدوات جاهزة للاستخدام:

// Google Search (handled server-side by Gemini)
.tool(Arc::new(GoogleSearchTool::new()))

// Exit a LoopAgent
.tool(Arc::new(ExitLoopTool::new()))

التشغيل كخادم ويب

أنشئ مشروع خادم باستخدام قالب عندما تريد تقديم HTTP:

cargo adk new my-api --template api --provider openai
cd my-api
cp .env.example .env
cargo run

افتح http://127.0.0.1:8080/ui/. يستخدم القالب الأساسي الافتراضي مُشغّل وحدة التحكم خفيف الوزن بدلًا من ذلك.


استخدام نماذج أخرى

فعّل موفّري الخدمة عبر أعلام الميزات. يظل البناء الافتراضي مقتصرًا على Gemini لتثبيت سريع، لذا أضف موفّر الخدمة الذي تحتاج إليه فقط:

[dependencies]
adk-rust = { version = "2.1.0", features = ["openai"] }

أو أنشئ مشروعًا باستخدام موفّر خدمة: cargo adk new my-agent --provider openai

OpenAI

let api_key = std::env::var("OPENAI_API_KEY")?;
let model = OpenAIClient::new(OpenAIConfig::new(api_key, "gpt-5.6-terra"))?;

Anthropic

let api_key = std::env::var("ANTHROPIC_API_KEY")?;
let model = AnthropicClient::new(AnthropicConfig::new(api_key, "claude-sonnet-5"))?;

DeepSeek

let api_key = std::env::var("DEEPSEEK_API_KEY")?;
let model = DeepSeekClient::chat(api_key)?;         // standard
// let model = DeepSeekClient::reasoner(api_key)?;   // chain-of-thought

Groq

let api_key = std::env::var("GROQ_API_KEY")?;
let model = GroqClient::new(GroqConfig::gpt_oss_120b(api_key))?;

Ollama (محلي)

// Requires: ollama serve && ollama pull llama3.2
let model = OllamaModel::new(OllamaConfig::new("llama3.2"))?;

النماذج المدعومة

مزود الخدمةأمثلة على النماذجعلامة الميزة
Geminigemini-3.7-flash، gemini-3.6-flash، gemini-3.1-pro-preview(افتراضي)
OpenAIgpt-5.6-terra، gpt-5.6-sol، gpt-5.6-lunaopenai
Anthropicclaude-sonnet-5, claude-opus-5, claude-fable-5anthropic
DeepSeekdeepseek-v4-flash, deepseek-v4-prodeepseek
Groqopenai/gpt-oss-120b, openai/gpt-oss-20bgroq
Ollamaqwen3.6:35b-a3b, qwen3.5, llama3.2:3bollama

الخطوات التالية


السابق: المقدمة | التالي: LlmAgent