يوفر Ollama توافقًا مع واجهة برمجة تطبيقات Anthropic Messages لمساعدتك في ربط التطبيقات الحالية بـ Ollama، بما في ذلك أدوات مثل Claude Code.
الاستخدام
متغيرات البيئة
لاستخدام Ollama مع الأدوات التي تتوقع واجهة برمجة تطبيقات Anthropic (مثل Claude Code)، قم بتعيين متغيرات البيئة هذه:
shell
export ANTHROPIC_AUTH_TOKEN=ollama # مطلوب ولكن يتم تجاهله
export ANTHROPIC_BASE_URL=http://localhost:11434مثال بسيط لـ /v1/messages
python
client = anthropic.Anthropic(
base_url='http://localhost:11434',
api_key='ollama', # مطلوب ولكن يتم تجاهله
)
message = client.messages.create(
model='qwen3-coder',
max_tokens=1024,
messages=[
{'role': 'user', 'content': 'Hello, how are you?'}
]
)
print(message.content[0].text)javascript
const anthropic = new Anthropic({
baseURL: "http://localhost:11434",
apiKey: "ollama", // مطلوب ولكن يتم تجاهله
});
const message = await anthropic.messages.create({
model: "qwen3-coder",
max_tokens: 1024,
messages: [{ role: "user", content: "Hello, how are you?" }],
});
console.log(message.content[0].text);shell
curl -X POST http://localhost:11434/v1/messages \
-H "Content-Type: application/json" \
-H "x-api-key: ollama" \
-H "anthropic-version: 2023-06-01" \
-d '{
"model": "qwen3-coder",
"max_tokens": 1024,
"messages": [{ "role": "user", "content": "Hello, how are you?" }]
}'مثال على البث المتدفق
python
client = anthropic.Anthropic(
base_url='http://localhost:11434',
api_key='ollama',
)
with client.messages.stream(
model='qwen3-coder',
max_tokens=1024,
messages=[{'role': 'user', 'content': 'Count from 1 to 10'}]
) as stream:
for text in stream.text_stream:
print(text, end='', flush=True)javascript
const anthropic = new Anthropic({
baseURL: "http://localhost:11434",
apiKey: "ollama",
});
const stream = await anthropic.messages.stream({
model: "qwen3-coder",
max_tokens: 1024,
messages: [{ role: "user", content: "Count from 1 to 10" }],
});
for await (const event of stream) {
if (
event.type === "content_block_delta" &&
event.delta.type === "text_delta"
) {
process.stdout.write(event.delta.text);
}
}shell
curl -X POST http://localhost:11434/v1/messages \
-H "Content-Type: application/json" \
-d '{
"model": "qwen3-coder",
"max_tokens": 1024,
"stream": true,
"messages": [{ "role": "user", "content": "Count from 1 to 10" }]
}'مثال استدعاء الأدوات
python
client = anthropic.Anthropic(
base_url='http://localhost:11434',
api_key='ollama',
)
message = client.messages.create(
model='qwen3-coder',
max_tokens=1024,
tools=[
{
'name': 'get_weather',
'description': 'Get the current weather in a location',
'input_schema': {
'type': 'object',
'properties': {
'location': {
'type': 'string',
'description': 'The city and state, e.g. San Francisco, CA'
}
},
'required': ['location']
}
}
],
messages=[{'role': 'user', 'content': "What's the weather in San Francisco?"}]
)
for block in message.content:
if block.type == 'tool_use':
print(f'Tool: {block.name}')
print(f'Input: {block.input}')javascript
const anthropic = new Anthropic({
baseURL: "http://localhost:11434",
apiKey: "ollama",
});
const message = await anthropic.messages.create({
model: "qwen3-coder",
max_tokens: 1024,
tools: [
{
name: "get_weather",
description: "Get the current weather in a location",
input_schema: {
type: "object",
properties: {
location: {
type: "string",
description: "The city and state, e.g. San Francisco, CA",
},
},
required: ["location"],
},
},
],
messages: [{ role: "user", content: "What's the weather in San Francisco?" }],
});
for (const block of message.content) {
if (block.type === "tool_use") {
console.log("Tool:", block.name);
console.log("Input:", block.input);
}
}shell
curl -X POST http://localhost:11434/v1/messages \
-H "Content-Type: application/json" \
-d '{
"model": "qwen3-coder",
"max_tokens": 1024,
"tools": [
{
"name": "get_weather",
"description": "Get the current weather in a location",
"input_schema": {
"type": "object",
"properties": {
"location": {
"type": "string",
"description": "The city and state"
}
},
"required": ["location"]
}
}
],
"messages": [{ "role": "user", "content": "What is the weather in San Francisco?" }]
}'الاستخدام مع Claude Code
يمكن تكوين Claude Code لاستخدام Ollama كخلفية له.
النماذج الموصى بها
لحالات الاستخدام المتعلقة بالبرمجة، يوصى باستخدام نماذج مثل glm-4.7 و minimax-m2.1 و qwen3-coder.
قم بتنزيل النموذج قبل الاستخدام:
shell
ollama pull qwen3-coderملاحظة: Qwen 3 coder هو نموذج بمعاملات 30B يتطلب ما لا يقل عن 24 جيجابايت من ذاكرة الفيديو (VRAM) للتشغيل بسلاسة. مطلوب المزيد من الذاكرة لأطوال السياق الأطول.
shell
ollama pull glm-4.7:cloudالإعداد السريع
shell
ollama launch claudeسيطلب منك هذا الخيار تحديد نموذج، وتكوين Claude Code تلقائيًا، ثم تشغيله. للتكوين دون تشغيل:
shell
ollama launch claude --configالإعداد اليدوي
قم بتعيين متغيرات البيئة ثم تشغيل Claude Code:
shell
ANTHROPIC_AUTH_TOKEN=ollama ANTHROPIC_BASE_URL=http://localhost:11434 claude --model qwen3-coderأو قم بتعيين متغيرات البيئة في ملف تعريف الصدفة الخاص بك:
shell
export ANTHROPIC_AUTH_TOKEN=ollama # مطلوب ولكن يتم تجاهله
export ANTHROPIC_BASE_URL=http://localhost:11434ثم قم بتشغيل Claude Code مع أي نموذج من نماذج Ollama:
shell
claude --model qwen3-coderنقاط النهاية
/v1/messages
الميزات المدعومة
- [x] الرسائل
- [x] البث المتدفق
- [x] موجهات النظام
- [x] المحادثات متعددة الأدوار
- [x] الرؤية (الصور)
- [x] الأدوات (استدعاء الوظائف)
- [x] نتائج الأدوات
- [x] التفكير / التفكير الموسع
حقول الطلب المدعومة
- [x]
model - [x]
max_tokens - [x]
messages- [x] محتوى النص
content - [x] محتوى الصور
content(base64) - [x] مصفوفة من كتل المحتوى
- [x] كتل
tool_use - [x] كتل
tool_result - [x] كتل
thinking
- [x] محتوى النص
- [x]
system(سلسلة أو مصفوفة) - [x]
stream - [x]
temperature - [x]
top_p - [x]
top_k - [x]
stop_sequences - [x]
tools - [x]
thinking - [ ]
tool_choice - [ ]
metadata
حقول الاستجابة المدعومة
- [x]
id - [x]
type - [x]
role - [x]
model - [x]
content(كتل النص، و tool_use، و thinking) - [x]
stop_reason(end_turn، max_tokens، tool_use) - [x]
usage(input_tokens، output_tokens)
أحداث البث المتدفق
- [x]
message_start - [x]
content_block_start - [x]
content_block_delta(text_delta، input_json_delta، thinking_delta) - [x]
content_block_stop - [x]
message_delta - [x]
message_stop - [x]
ping - [x]
error
النماذج
يدعم Ollama كلاً من النماذج المحلية والنماذج السحابية.
النماذج المحلية
قم بسحب نموذج محلي قبل الاستخدام:
shell
ollama pull qwen3-coderالنماذج المحلية الموصى بها:
qwen3-coder- ممتاز لمهام البرمجةgpt-oss:20b- نموذج عام قوي
النماذج السحابية
تتوفر النماذج السحابية فورًا دون الحاجة إلى سحبها:
glm-4.7:cloud- نموذج سحابي عالي الأداءminimax-m2.1:cloud- نموذج سحابي سريع
أسماء النماذج الافتراضية
للأدوات التي تعتمد على أسماء نماذج Anthropic الافتراضية مثل claude-3-5-sonnet، استخدم الأمر ollama cp لنسخ اسم نموذج موجود:
shell
ollama cp qwen3-coder claude-3-5-sonnetبعد ذلك، يمكن تحديد اسم النموذج الجديد في الحقل model:
shell
curl http://localhost:11434/v1/messages \
-H "Content-Type: application/json" \
-d '{
"model": "claude-3-5-sonnet",
"max_tokens": 1024,
"messages": [
{
"role": "user",
"content": "Hello!"
}
]
}'الاختلافات عن واجهة برمجة تطبيقات Anthropic
اختلافات في السلوك
- يتم قبول مفتاح API ولكنه لا يتم التحقق من صحته
- يتم قبول رأس
anthropic-versionولكنه لا يتم استخدامه - تعد عدادات الرموز تقريبيات تعتمد على الـ tokenizer الخاص بالنموذج الأساسي
الميزات غير المدعومة
تتضمن ميزات واجهة برمجة تطبيقات Anthropic التالية غير المدعومة حاليًا:
| الميزة | الوصف |
|---|---|
/v1/messages/count_tokens | نقطة نهاية حساب الرموز |
tool_choice | فرض استخدام أداة معينة أو تعطيل الأدوات |
metadata | بيانات وصفية للطلب (user_id) |
| التخزين المؤقت للموجهات | كتل cache_control لتخزين بادئات الموجهات مؤقتًا |
| واجهة برمجة تطبيقات الدفعات | /v1/messages/batches للمعالجة الدفعية غير المتزامنة |
| الاقتباسات | كتل محتوى citations |
| دعم ملفات PDF | كتل محتوى document تحتوي على ملفات PDF |
| الأخطاء المرسلة من الخادم | أحداث error أثناء البث المتدفق (ترجع الأخطاء حالة HTTP) |
الدعم الجزئي
| الميزة | الحالة |
|---|---|
| محتوى الصور | يتم دعم الصور بتنسيق Base64؛ لا يتم دعم الصور عبر عنوان URL |
| التفكير الموسع | دعم أساسي؛ يتم قبول budget_tokens ولكن لا يتم فرضها |