ملاحظة
سحابة Ollama لا تدعم المخرجات المنظمة حاليًا.
تتيح لك المخرجات المنظمة فرض مخطط JSON على استجابات النموذج، حتى تتمكن من استخراج بيانات منظمة بشكل موثوق، أو وصف الصور، أو الحفاظ على تناسق جميع الردود.
توليد JSON منظم
cURL
```shell
curl -X POST http://localhost:11434/api/chat -H "Content-Type: application/json" -d '{
"model": "gpt-oss",
"messages": [{"role": "user", "content": "Tell me about Canada in one line"}],
"stream": false,
"format": "json"
}'
```
Python
```python
from ollama import chat
response = chat(
model='gpt-oss',
messages=[{'role': 'user', 'content': 'Tell me about Canada.'}],
format='json'
)
print(response.message.content)
```
JavaScript
```javascript
import ollama from 'ollama'
const response = await ollama.chat({
model: 'gpt-oss',
messages: [{ role: 'user', content: 'Tell me about Canada.' }],
format: 'json'
})
console.log(response.message.content)
```
توليد JSON منظم باستخدام مخطط
أضف مخطط JSON إلى الحقل format.
ملاحظة
من الأفضل أيضًا تمرير مخطط JSON كسلسلة نصية في الموجه لتثبيت استجابة النموذج على المخطط.
cURL
```shell
curl -X POST http://localhost:11434/api/chat -H "Content-Type: application/json" -d '{
"model": "gpt-oss",
"messages": [{"role": "user", "content": "Tell me about Canada."}],
"stream": false,
"format": {
"type": "object",
"properties": {
"name": {"type": "string"},
"capital": {"type": "string"},
"languages": {
"type": "array",
"items": {"type": "string"}
}
},
"required": ["name", "capital", "languages"]
}
}'
```
Python
استخدم نماذج Pydantic ومرر `model_json_schema()` إلى الحقل `format`، ثم تحقق من صحة الاستجابة:
```python
from ollama import chat
from pydantic import BaseModel
class Country(BaseModel):
name: str
capital: str
languages: list[str]
response = chat(
model='gpt-oss',
messages=[{'role': 'user', 'content': 'Tell me about Canada.'}],
format=Country.model_json_schema(),
)
country = Country.model_validate_json(response.message.content)
print(country)
```
JavaScript
قم بتسلسل مخطط Zod باستخدام `z.toJSONSchema()` ثم حلل الاستجابة المنظمة:
```javascript
import ollama from 'ollama'
import * as z from 'zod'
const Country = z.object({
name: z.string(),
capital: z.string(),
languages: z.array(z.string()),
})
const response = await ollama.chat({
model: 'gpt-oss',
messages: [{ role: 'user', content: 'Tell me about Canada.' }],
format: z.toJSONSchema(Country),
})
const country = Country.parse(JSON.parse(response.message.content))
console.log(country)
```
مثال: استخراج بيانات منظمة
عرّف الكائنات التي تريد إرجاعها واترك النموذج يعبئ الحقول:
python
from ollama import chat
from pydantic import BaseModel
class Pet(BaseModel):
name: str
animal: str
age: int
color: str | None
favorite_toy: str | None
class PetList(BaseModel):
pets: list[Pet]
response = chat(
model='gpt-oss',
messages=[{'role': 'user', 'content': 'I have two cats named Luna and Loki...'}],
format=PetList.model_json_schema(),
)
pets = PetList.model_validate_json(response.message.content)
print(pets)مثال: الرؤية الحاسوبية مع المخرجات المنظمة
تقبل نماذج الرؤية الحاسوبية معامل format نفسه، مما يتيح أوصافًا حتمية للصور:
python
from ollama import chat
from pydantic import BaseModel
from typing import Literal, Optional
class Object(BaseModel):
name: str
confidence: float
attributes: str
class ImageDescription(BaseModel):
summary: str
objects: list[Object]
scene: str
colors: list[str]
time_of_day: Literal['Morning', 'Afternoon', 'Evening', 'Night']
setting: Literal['Indoor', 'Outdoor', 'Unknown']
text_content: Optional[str] = None
response = chat(
model='gemma4',
messages=[{
'role': 'user',
'content': 'Describe this photo and list the objects you detect.',
'images': ['path/to/image.jpg'],
}],
format=ImageDescription.model_json_schema(),
options={'temperature': 0},
)
image_description = ImageDescription.model_validate_json(response.message.content)
print(image_description)نصائح للحصول على مخرجات منظمة موثوقة
- عرّف المخططات باستخدام Pydantic (بايثون) أو Zod (جافاسكريبت) حتى يمكن إعادة استخدامها للتحقق من الصحة.
- اخفض درجة الحرارة (على سبيل المثال، اضبطها على
0) للحصول على إكمالات أكثر حتمية. - تعمل المخرجات المنظمة من خلال واجهة برمجة التطبيقات المتوافقة مع OpenAI عبر
response_format