Skip to content

ملاحظة

سحابة 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