Skip to content

Not

Ollama Bulut'u şu anda yapılandırılmış çıktıları desteklemiyor.

Yapılandırılmış çıktılar, model yanıtlarına bir JSON şeması zorunlu kılmanızı sağlayarak, güvenilir bir şekilde yapılandırılmış veri çıkarmanıza, görüntüleri tanımlamanıza veya her yanıtı tutarlı tutmanıza olanak tanır.

Yapılandırılmış JSON oluşturma

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)

Şema ile yapılandırılmış JSON oluşturma

format alanına bir JSON şeması sağlayın.

Not

Modelin yanıtını temellendirmek için JSON şemasını bir dize olarak da isteme metnine eklemek idealdir.

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 modelleri kullanın, model_json_schema()format alanına ileterek yanıtı doğrulayın:

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 şemasını z.toJSONSchema() ile serileştirin ve yapılandırılmış yanıtı ayrıştırın:

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)

Örnek: Yapılandırılmış veri çıkarma

Döndürülmesini istediğiniz nesneleri tanımlayın ve modelin alanları doldurmasına izin verin:

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)

Örnek: Yapılandırılmış çıktılarla görü

Görü modelleri aynı format parametresini kabul eder, bu da görüntülerin belirleyici açıklamalarını mümkün kılar:

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)

Güvenilir yapılandırılmış çıktılar için ipuçları

  • Şemaları Pydantic (Python) veya Zod (JavaScript) ile tanımlayın, böylece doğrulama için yeniden kullanılabilirler.
  • Daha belirleyici tamamlamalar için sıcaklığı düşürün (örneğin 0 olarak ayarlayın).
  • Yapılandırılmış çıktılar, OpenAI uyumlu API üzerinden response_format ile çalışır