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
0olarak ayarlayın). - Yapılandırılmış çıktılar, OpenAI uyumlu API üzerinden
response_formatile çalışır