دمج أولاما مع بايثون: أمثلة على واجهة برمجة التطبيقات REST وعميل بايثون
أمثلة محددة باستخدام نماذج التفكير الكبيرة
في هذا المقال، سنستكشف طريقتين لربط تطبيقك Python مع Ollama: 1. عبر HTTP REST API; 2. عبر المكتبة الرسمية لـ Ollama لـ Python.
سنغطي كلاً من الدردشة و التوليد، ثم نناقش كيفية استخدام “نماذج التفكير” بفعالية.
Ollama تحوّل بسرعة إلى أحد أكثر الطرق راحة في تشغيل نماذج اللغة الكبيرة (LLMs) محلياً. مع واجهة بسيطة ودعم لنماذج مفتوحة شهيرة مثل Llama 3، Mistral، Qwen2.5، وحتى التغيرات “التفكيرية” مثل qwen3، من السهل دمج قدرات الذكاء الاصطناعي مباشرة في مشاريعك Python — دون الاعتماد على APIs السحابية الخارجية.
🧩 المتطلبات الأساسية
قبل البدء، تأكد من أن لديك:
pip install requests ollama
تأكد من تشغيل Ollama عن طريق تنفيذ:
ollama list
يجب أن ترى النماذج المتاحة مثل llama3
، mistral
، أو qwen3
.
⚙️ الخيار 1: استخدام واجهة REST لـ Ollama
تعتبر واجهة REST مثالية عندما تريد التحكم الأقصى أو عند دمجها مع إطار عمل يدير طلبات HTTP بالفعل.
مثال 1: واجهة الدردشة
import requests
import json
url = "http://localhost:11434/api/chat"
payload = {
"model": "llama3.1",
"messages": [
{"role": "system", "content": "أنت مساعد Python."},
{"role": "user", "content": "اكتب دالة تعكس سلسلة نصية."}
]
}
response = requests.post(url, json=payload, stream=True)
for line in response.iter_lines():
if line:
data = json.loads(line)
print(data.get("message", {}).get("content", ""), end="")
👉 تتدفق واجهة REST لـ Ollama على الاستجابات سطراً بعد سطر (مثل واجهة التدفق لـ OpenAI). يمكنك جمع المحتوى أو عرضه في الوقت الفعلي لأدوات الدردشة أو أدوات السطر الأوامر.
مثال 2: واجهة التوليد
إذا لم تحتاج إلى سياق الدردشة أو الأدوار، استخدم نهاية /api/generate
البسيطة:
import requests
url = "http://localhost:11434/api/generate"
payload = {
"model": "llama3.1",
"prompt": "شرح التكرار في جملة واحدة."
}
response = requests.post(url, json=payload, stream=True)
for line in response.iter_lines():
if line:
print(line.decode("utf-8"))
هذه النهاية مثالية لمهام توليد النصوص الفردية — ملخصات، كتل من الكود، إلخ.
🐍 الخيار 2: استخدام مكتبة Ollama لـ Python
توفر مكتبة Ollama لـ Python واجهة نظيفة للمطورين الذين يفضلون البقاء بالكامل في Python.
مثال 1: واجهة الدردشة
import ollama
response = ollama.chat(
model="llama3.1",
messages=[
{"role": "system", "content": "أنت مساعد كود."},
{"role": "user", "content": "أعد كتابة نص Python يدرج جميع الملفات في دليل."}
]
)
print(response['message']['content'])
هذا يعيد الرسالة النهائية على شكل قاموس. إذا كنت تريد التدفق، يمكنك التكرار عبر تدفق الدردشة:
stream = ollama.chat(
model="llama3.1",
messages=[
{"role": "user", "content": "اكتب هايكو عن التكرار."}
],
stream=True
)
for chunk in stream:
print(chunk['message']['content'], end='', flush=True)
مثال 2: واجهة التوليد
import ollama
output = ollama.generate(
model="llama3.1",
prompt="ملخص مفهوم الزخارف في Python."
)
print(output['response'])
أو تدفق النتيجة:
stream = ollama.generate(
model="llama3.1",
prompt="أدرج ثلاثة مزايا لاستخدام Python لمشاريع الذكاء الاصطناعي.",
stream=True
)
for chunk in stream:
print(chunk['response'], end='', flush=True)
🧠 العمل مع “نماذج التفكير”
يدعم Ollama “نماذج التفكير” مثل qwen3، مصممة لإظهار خطوات التفكير المتوسطة. تنتج هذه النماذج إخراجاً منظماً، غالباً في تنسيق مثل:
<think>
خطوات التفكير هنا...
</think>
الإجابة النهائية هنا.
هذا يجعلها مفيدة لـ:
- تصحيح أخطاء تفكير النموذج
- البحث في التفسيرية
- بناء أدوات تفصل التفكير عن الإخراج
مثال: استخدام نموذج التفكير
import ollama
response = ollama.chat(
model="qwen3",
messages=[
{"role": "user", "content": "ما هي عاصمة أستراليا؟"}
]
)
content = response['message']['content']
# اختيارياً استخراج الجزء "التفكير"
import re
thinking = re.findall(r"<think>(.*?)</think>", content, re.DOTALL)
answer = re.sub(r"<think>.*?</think>", "", content, flags=re.DOTALL)
print("🧠 عملية التفكير:\n", thinking[0].strip() if thinking else "N/A")
print("\n✅ الإجابة النهائية:\n", answer.strip())
متى تستخدم نماذج التفكير
حالة الاستخدام | النموذج الموصى به | السبب |
---|---|---|
التفسيرية / تصحيح الأخطاء | qwen3 |
عرض مسارات التفكير |
التطبيقات الحساسة للأداء | قوة qwen3 غير التفكير |
أسرع، أقل تفصيل |
التعليمي / التفسيري | qwen3 |
يظهر المنطق خطوة بخطوة |
✅ ملخص
المهمة | واجهة REST | عميل Python |
---|---|---|
توليد النصوص البسيطة | /api/generate |
ollama.generate() |
الدردشة التفاعلية | /api/chat |
ollama.chat() |
دعم التدفق | نعم | نعم |
يعمل مع نماذج التفكير | نعم | نعم |
تصميم Ollama المحلي أولاً يجعله مثالياً للتطبيقات الآمنة، أو غير متصل بالإنترنت، أو الحساسة للخصوصية. سواء كنت تبني روبوت دردشة تفاعلي أو خدمة تحسين البيانات في الخلفية، يمكنك دمج LLMs بسلاسة في سير العمل الخاص بك Python — مع التحكم الكامل على النماذج، التأخير، والبيانات.
روابط مفيدة
- https://pypi.org/project/ollama/
- دليل Ollama
- دليل Python
- تثبيت وتكوين Ollama
- تحكم LLMs بالإخراج المنظم: Ollama، Qwen3 & Python أو Go
- مقارنة الإخراج المنظم عبر مزودي LLMs الشهيرين - OpenAI، Gemini، Anthropic، Mistral و AWS Bedrock
- مشكلات الإخراج المنظم لـ Ollama GPT-OSS
- كيفية معالجة Ollama للطلبات المتوازية
- اختبار: جدولة تخصيص الذاكرة في إصدار Ollama الجديد - v0.12.1