Ollama (النماذج المحلية)
شغّل LLMs محليًا مع خصوصية كاملة - دون مفاتيح API، ودون إنترنت، ودون تكاليف.
نظرة عامة
┌─────────────────────────────────────────────────────────────────────┐
│ Ollama Local Setup │
├─────────────────────────────────────────────────────────────────────┤
│ │
│ Your Machine │
│ ┌─────────────────────────────────────────────────────────────┐ │
│ │ │ │
│ │ ┌──────────────┐ ┌──────────────┐ │ │
│ │ │ ADK-Rust │ ───▶ │ Ollama │ │ │
│ │ │ Agent │ │ Server │ │ │
│ │ └──────────────┘ └──────┬───────┘ │ │
│ │ │ │ │
│ │ ┌──────▼───────┐ │ │
│ │ │ Local LLM │ │ │
│ │ │ (llama3.2) │ │ │
│ │ └──────────────┘ │ │
│ │ │ │
│ └─────────────────────────────────────────────────────────────┘ │
│ │
│ 🔒 100% Private - Data never leaves your machine │
│ │
└─────────────────────────────────────────────────────────────────────┘
لماذا Ollama؟
| الفائدة | الوصف |
|---|---|
| 🆓 مجاني | لا توجد تكاليف API على الإطلاق |
| 🔒 خاص | تبقى البيانات على جهازك |
| 📴 دون اتصال | يعمل دون إنترنت |
| 🎛️ تحكم | اختر أي نموذج، وخصّص الإعدادات |
| ⚡ سريع | لا يوجد زمن استجابة للشبكة |
الخطوة 1: تثبيت Ollama
macOS
brew install ollama
Linux
curl -fsSL https://ollama.com/install.sh | sh
Windows
نزّل من ollama.com
الخطوة 2: بدء تشغيل الخادم
ollama serve
من المفترض أن ترى:
Couldn't find '/Users/you/.ollama/id_ed25519'. Generating new private key.
Your new public key is: ssh-ed25519 AAAA...
time=2024-01-05T12:00:00.000Z level=INFO source=server.go msg="Listening on 127.0.0.1:11434"
الخطوة 3: سحب نموذج
في طرفية جديدة:
# Recommended starter model (3B parameters, fast)
ollama pull llama3.2:3b
# Other popular models
ollama pull qwen3.6:35b-a3b # Latest Qwen — 73.4% SWE-bench, MoE 35B/3B active
ollama pull qwen3.5 # Strong multilingual and coding
ollama pull qwen3-coder:30b # Code-focused with tool calling
ollama pull mistral:7b # Good for code
ollama pull deepseek-r1:14b # Reasoning model
ollama pull devstral:24b # Optimized for coding
ollama pull gemma3:9b # Google's efficient model
ollama pull codellama:13b # Code generation
الخطوة 4: الإضافة إلى مشروعك
[dependencies]
adk-model = { version = "2.1.0", features = ["ollama"] }
الخطوة 5: الاستخدام في التعليمات البرمجية
use adk_model::ollama::{OllamaModel, OllamaConfig};
use adk_agent::LlmAgentBuilder;
use std::sync::Arc;
#[tokio::main]
async fn main() -> anyhow::Result<()> {
// No API key needed!
let model = OllamaModel::new(OllamaConfig::new("llama3.2"))?;
let agent = LlmAgentBuilder::new("local_assistant")
.instruction("You are a helpful assistant running locally.")
.model(Arc::new(model))
.build()?;
// Use the agent...
Ok(())
}
مثال عملي كامل
use adk_rust::prelude::*;
use adk_rust::Launcher;
use std::sync::Arc;
#[tokio::main]
async fn main() -> anyhow::Result<()> {
dotenvy::dotenv().ok();
// No API key needed!
let model = OllamaModel::new(OllamaConfig::new("llama3.2"))?;
let agent = LlmAgentBuilder::new("ollama_assistant")
.description("Ollama-powered local assistant")
.instruction("You are a helpful assistant running locally via Ollama. Be concise.")
.model(Arc::new(model))
.build()?;
// Run interactive session
Launcher::new(Arc::new(agent)).run().await?;
Ok(())
}
Cargo.toml
[dependencies]
adk-rust = { version = "2.1.0", features = ["ollama"] }
tokio = { version = "1", features = ["full"] }
dotenvy = "0.15"
anyhow = "1.0"
خيارات الإعداد
use adk_model::ollama::{OllamaModel, OllamaConfig};
let config = OllamaConfig::new("llama3.2")
.with_base_url("http://localhost:11434") // Custom server URL
.with_temperature(0.7) // Creativity (0.0-1.0)
.with_max_tokens(2048); // Max response length
let model = OllamaModel::new(config)?;
النماذج الموصى بها
| النموذج | الحجم | ذاكرة RAM المطلوبة | الأفضل لـ |
|---|---|---|---|
llama3.2:3b | 3B | 4GB | سريع، للاستخدامات العامة |
llama3.1:8b | 8B | 8GB | نموذج متوازن وشائع |
qwen3.6:35b-a3b | 35B (3B نشطة) | 24GB | أفضل أداء في البرمجة الوكيلة — 73.4% في SWE-bench |
qwen3.5 | متغيّر | متغيّر | أداء قوي متعدد اللغات وفي البرمجة |
qwen3-coder:30b | 30B | 19GB | تركيز على البرمجة مع استدعاء الأدوات |
qwen2.5:7b | 7B | 8GB | استدعاء جيد للأدوات، وخفيف الوزن |
mistral:7b | 7B | 8GB | البرمجة والاستدلال |
mistral-nemo:12b | 12B | 12GB | Mistral مُحسّن (سياق بحجم 128K) |
deepseek-r1:14b | 14B | 16GB | الاستدلال المُقطّر |
deepseek-r1:32b | 32B | 32GB | نموذج استدلال أكبر |
gemma3:9b | 9B | 10GB | نموذج جوجل المفتوح الفعّال |
devstral:24b | 24B | 24GB | مُحسَّن للبرمجة |
codellama:13b | 13B | 16GB | توليد التعليمات البرمجية |
llama3.3:70b | 70B | 48GB | أعلى جودة |
اختيار نموذج
- ذاكرة RAM محدودة (8GB)؟ →
llama3.2:3b - أفضل برمجة وكيلية؟ →
qwen3.6:35b-a3b(24GB، MoE — النشط منها 3B فقط) - هل تحتاج إلى استدعاء الأدوات؟ →
qwen3.5أوqwen3-coder:30b - هل تكتب تعليمات برمجية؟ →
devstral:24bأوqwen3-coder:30b - هل تحتاج إلى الاستدلال؟ →
deepseek-r1:14bأوdeepseek-r1:32b - أفضل جودة؟ →
llama3.3:70b(يحتاج إلى ذاكرة RAM بسعة 48GB أو أكثر)
استدعاء الأدوات باستخدام Ollama
يدعم Ollama استدعاء الدوال مع النماذج المتوافقة:
use adk_model::ollama::{OllamaModel, OllamaConfig};
use adk_agent::LlmAgentBuilder;
use adk_tool::FunctionTool;
use std::sync::Arc;
// qwen2.5 has excellent tool calling support
let model = OllamaModel::new(OllamaConfig::new("qwen2.5:7b"))?;
let weather_tool = Arc::new(FunctionTool::new(
"get_weather",
"Get weather for a location",
|_ctx, args| async move {
let location = args.get("location").and_then(|v| v.as_str()).unwrap_or("unknown");
Ok(serde_json::json!({
"location": location,
"temperature": "72°F",
"condition": "Sunny"
}))
},
));
let agent = LlmAgentBuilder::new("weather_assistant")
.instruction("Help users check the weather.")
.model(Arc::new(model))
.tool(weather_tool)
.build()?;
ملاحظة: يستخدم استدعاء الأدوات الوضع غير المتدفق لضمان الموثوقية مع النماذج المحلية.
مثال على المخرجات
👤 User: Hello! What can you do?
🤖 Ollama (llama3.2): Hello! I'm a local AI assistant running on your
machine. I can help with:
- Answering questions
- Writing and editing text
- Explaining concepts
- Basic coding help
All completely private - nothing leaves your computer!
استكشاف الأخطاء وإصلاحها
"تم رفض الاتصال"
# Make sure Ollama is running
ollama serve
"النموذج غير موجود"
# Pull the model first
ollama pull llama3.2
استجابات بطيئة
- استخدم نموذجًا أصغر (
llama3.2بدلًا منllama3.1:70b) - أغلق التطبيقات الأخرى لتحرير ذاكرة RAM
- فكّر في استخدام تسريع GPU إذا كان متاحًا
التحقق من النماذج المتاحة
ollama list
تشغيل الأمثلة
cargo check -p adk-rust --no-default-features --features ollama
شغّل ollama serve واسحب النموذج قبل بدء وكيل يستخدم موفّر الخدمة هذا.
ذات صلة
- موفّرو النماذج - موفّرو LLM المستندون إلى السحابة
- النماذج المحلية (mistral.rs) - استدلال أصلي باستخدام Rust
السابق: ← موفّرو النماذج | التالي: النماذج المحلية (mistral.rs) →