Kurs
OpenAI’nin o3 modeli, görsel ve metinsel girdileri harmanlayarak karmaşık çok adımlı problemleri çözebilir ve yanıtlarını güçlendirmek için Python, arama veya görsel inceleme gibi araçları kullanabilir.
Bu eğitimde, adım adım o3’ü API üzerinden nasıl kullanacağınızı, o3’ün GPT-4o gibi genelist modellerden ne yönde farklılaştığını ve akıl yürütme maliyetlerini nasıl etkili biçimde yöneteceğinizi açıklayacağım.
Okurlarımızı yapay zekâdaki en güncel gelişmelerden haberdar etmek için The Median adlı ücretsiz Cuma bültenimizi gönderiyoruz; haftanın öne çıkan hikâyelerini birkaç dakikada özetliyoruz. Abone olun ve her hafta birkaç dakikada güncel kalın:
O3’ü Ne Zaman Kullanmalısınız?
OpenAI’nin o3 modeli, derin akıl yürütme ve özerklik gerektiren ileri düzey, karmaşık görevler için tasarlanmıştır. Yazılım geliştirme, matematik, bilimsel araştırma ve görsel veri yorumlama gibi alanlardaki girift problem çözme görevlerinde özellikle etkilidir.
Modelin ajan benzeri yetenekleri; web araması, Python ve görsel üretim gibi araçları özerk biçimde kullanmasına olanak tanır; bu da çok adımlı analiz ve dinamik karar verme gerektiren görevler için onu ideal kılar.
Projeleriniz yüksek özerklik ve gelişmiş analitik becerilerden fayda sağlayan karmaşık, çok modlu akıl yürütme görevleri içeriyorsa, o3 modelini API üzerinden kullanmayı düşünmelisiniz.
Hadi o3, o4-mini ve GPT-4o arasında hızlı bir karşılaştırmaya bakalım:

Kaynak: OpenAI
API’yi kullanırken fiyatlandırma da dikkate alınması gereken önemli bir faktördür:

Kaynak: OpenAI
OpenAI O3 API: OpenAI’nin API’sine Nasıl Bağlanılır
o3’ün gelişmiş akıl yürütme yeteneklerini kullanmaya başlamadan önce OpenAI API erişimini ayarlamanız gerekir. Bu bölümde şunları adım adım göstereceğim:
- API anahtarınızı güvenli biçimde ayarlamak
- o3 modeline ilk API çağrınızı yapmak
- Akıl yürütme modellerine özgü temel kurulum farklarını vurgulamak
Adım 1: API kimlik bilgilerini alın
OpenAI API’ye erişmek için geçerli bir API anahtarına ihtiyacınız var; bunu OpenAI API Keys sayfasından edinebilir ve faturalandırmanızın etkin olduğundan emin olmalısınız.
Not: o3’ü kullanmak için önce OpenAI organizasyonunuzu doğrulamanız gerekir; buradan doğrulayabilirsiniz. Doğrulamanın etkinleşmesi 15 dakikaya kadar sürebilir.
Adım 2: openai kütüphanesini içe aktarın
O3 modeline API üzerinden erişmek için openai kütüphanesini kurup yükselterek başlıyoruz. Şu komutu çalıştırın:
pip install --upgrade openai
Kurulduktan sonra openai kütüphanesinden OpenAI sınıfını içe aktarırız:
from openai import OpenAI
Adım 3: İstemci nesnesini başlatın
OpenAI’nin API’siyle etkileşim kurmak için gizli API anahtarımızı ayarlayarak kimlik doğrulaması yaparız; bu da o3 gibi modellere yetkili istek göndermemizi sağlar.
client = OpenAI(api_key=YOUR_API_KEY)
Adım 4: Bir API çağrısı yapın
Kurulum tamamlandığına göre, ilk API çağrımızı o3’e yapalım ve Yanıtlar API’si üzerinden basit bir çok adımlı akıl yürütme görevini nasıl ele aldığını görelim.
Örnek 1: Araçsız basit istem
o3 API çağrısını basit bir istemle anlayalım.
response = client.responses.create(
model="o3",
input=[{"role": "user", "content": "What’s the difference between inductive and deductive reasoning?"}]
)
print(response.output_text)
Bu örnek, herhangi bir araç veya özel akıl yürütme parametresi kullanmadan doğal dilde bir soruyu doğrudan o3 modeline gönderir.
model="o3"API’ye o3 akıl yürütme modelini kullanmasını söyler.input=[{"role": "user", "content": "..."}]kavramsal bir açıklama isteyen tek bir kullanıcı mesajını tanımlar.- O3, nihai çıktıyı üretmeden önce varsayılan olarak orta düzeyde bir akıl yürütme zinciri uygular.

Nihai maliyete yansıyacak belirteçler şunlardır:
- Girdi belirteçleri: İstem
- Akıl yürütme belirteçleri: o3’ün dahili düşünce zinciri
- Çıktı belirteçleri: Nihai çıktı
Örnek 2: Kod ve matematik problemi çözme
Bu örnekte, o3’ten hem kod yazmasını hem de ikinci dereceden denklemleri çözmenin arkasındaki matematiği açıklamasını istiyoruz. Bu, yalnızca kodlama değil ayrıntılı bir matematiksel açıklama da gerektiren iki parçalı bir görevdir.
prompt = "Write a Python function that solves quadratic equations and also explain the math behind it."
response = client.responses.create(
model="o3",
reasoning={"effort": "high"},
input=[{"role": "user", "content": prompt}]
)
print(response.output_text)
Bu görev, önce ikinci dereceden denklem formülünü çözmeyi, ardından türetimini açıklamayı içeren çok adımlı matematiksel akıl yürütme gerektirir. reasoning={"effort": "high"} parametresi, o3’ü daha “yoğun düşünmeye” zorlayarak daha büyük bir akıl yürütme izi üretir. Bu, teknik derinlik veya çok aşamalı çözümler gerektiren görevler için idealdir.
Maliyet notu: Daha yüksek akıl yürütme çabası daha fazla akıl yürütme belirteci demektir; bu da daha yüksek çıktı maliyetiyle sonuçlanır.




Örnek 3: Kod yeniden düzenleme (refactoring) görevi
Bu örnekte, ayrıntılı talimatlarla birlikte O3’e bir kod yeniden düzenleme görevi veriyoruz.
prompt = """
Instructions:
- Given the React component below, change it so that nonfiction books have red
text.
- Return only the code in your reply
- Do not include any additional formatting, such as markdown code blocks
- For formatting, use four space tabs, and do not allow any lines of code to
exceed 80 columns
const books = [
{ title: 'Dune', category: 'fiction', id: 1 },
{ title: 'Frankenstein', category: 'fiction', id: 2 },
{ title: 'Moneyball', category: 'nonfiction', id: 3 },
];
export default function BookList() {
const listItems = books.map(book =>
<li>
{book.title}
</li>
);
return (
<ul>{listItems}</ul>
);
}
"""
response = client.responses.create(
model="o3",
reasoning={"effort": "medium", "summary": "detailed"},
input=[
{
"role": "user",
"content": prompt,
}
]
)
print(response.output_text)
Yukarıdaki kodda, O3’e ayrıntılı biçimlendirme kurallarıyla son derece yapılandırılmış bir kod düzenleme görevi veriyoruz.
reasoning={"effort": "medium"}parametresi, dikkatli ama verimli akıl yürütmesini söyler.summary="detailed"parametresi, modelin düşünce sürecinin tam bir iç özetini talep eder. O3 dahili olarak akıl yürütecek ve daha sonrasummaryalanını incelerseniz isteğe bağlı olarak özetlenmiş bir iz döndürecektir.
İpucu: Kullanabileceğiniz birkaç özet ayarı vardır: "concise" (öz), "detailed" (ayrıntılı) veya "auto" (otomatik).

Örnek 4: Görsel akıl yürütme
Bu konferans fotoğrafını kullanalım ve ilgi alanlarımıza göre bir program oluşturmasını o3’ten isteyelim.

Adım 4.1: Yardımcı fonksiyon
Gerekli kütüphaneleri içe aktararak ve bir yardımcı fonksiyon yazarak başlayalım:
import base64, mimetypes, pathlib
def to_data_url(path: str) -> str:
mime = mimetypes.guess_type(path)[0] or "application/octet-stream"
data = pathlib.Path(path).read_bytes()
b64 = base64.b64encode(data).decode()
return f"data:{mime};base64,{b64}"
to_data_url() fonksiyonu, yerel görsel dosyasını base64 ile kodlanmış bir veri URL’sine dönüştürür; çünkü OpenAI’nin API’si görselleri ham dosyalar yerine URL formatında bekler.
to_data_url fonksiyonu şunları yapar:
- Görsel dosyasını (yolu) bilgisayarınızdan okur.
- Türünü çıkarır (örn. image/png).
- Ardından ikili içeriği base64 dizgesine kodlar.
- Son olarak bir veri URL’si döndürür
Adım 4.2: Hem metni hem görseli O3’e gönderin
Görselimizi kodladığımıza göre, hem metni hem de kodlanmış görsel bilgisini O3’e iletiyoruz.
prompt = (
"Create a schedule using this blurry conference photo. "
"Ensure 10-minute gaps between talks and include all talks related to LLMs."
)
image_path = "IMAGE_PATH"
image_url = to_data_url(image_path)
response = client.chat.completions.create(
model="o3",
messages=[
{
"role": "user",
"content": [
{ "type": "text", "text": prompt },
{ "type": "image_url", "image_url": { "url": image_url } }
],
}
],
)
print(response.choices[0].message.content)
Nasıl çalıştığı şöyle:
client.chat.completions.create()çağrısıyla başlarız; burada girdi içeriği hem şunları içeren bir listedir:- metin talimatı (kullanıcının program isteği),
- ve görsel verisi (konferans fotoğrafı).
- o3 modeli her iki girdiyi de dahili düşünce zinciri sırasında birlikte işler.
- Son olarak, metin talimatları ve görsel veriler üzerinde akıl yürüttükten sonra modelin oluşturduğu programı içeren
response.choices[0].message.contentdeğerini yazdırırız.
Önemli maliyet hususları:
- Görsel girdiler, girdi belirteçlerine eşdeğer kabul edilir.
- Model, akıl yürütme döngüsü içinde görsel inceleme kullanır.
- Akıl yürütme zinciri uzunsa, maliyeti
max_completion_tokensparametresiyle dikkatli yönetmeliyiz; bunu bir sonraki bölümde ele alacağız.
Sonuca bakalım:


Akıl Yürütme Belirteçleriyle Maliyet Yönetimi
O3, normal girdi/çıktı belirteçlerine ek olarak akıl yürütme belirteçleri kullanır; bu da toplam belirteç sayısının artması ve dolayısıyla daha yüksek çıktı maliyeti anlamına gelir. Önceki örneğimizi temel alarak akıl yürütme belirteçlerinin maliyete etkisini parçalara ayıralım.
print(response.usage)
CompletionUsage(completion_tokens=3029,prompt_tokens=1007, total_tokens=4036, completion_tokens_details=CompletionTokensDetails(accepted_prediction_tokens=0, audio_tokens=0, reasoning_tokens=2112, rejected_prediction_tokens=0), prompt_tokens_details=PromptTokensDetails(audio_tokens=0, cached_tokens=0))
Maliyetleri kontrol etmek istiyorsanız, toplam kullanımı sınırlamak için max_completion_tokens parametresini uygulayın:
limit_token_response = client.chat.completions.create(
model="o3",
messages=[
{
"role": "user",
"content": [
{ "type": "text", "text": prompt },
{ "type": "image_url", "image_url": { "url": image_url } }
],
}
],
max_completion_tokens=3000,
)
print(limit_token_response.usage)
CompletionUsage(completion_tokens=2746, prompt_tokens=1007, total_tokens=3753, completion_tokens_details=CompletionTokensDetails(accepted_prediction_tokens=0, audio_tokens=0, reasoning_tokens=2112, rejected_prediction_tokens=0), prompt_tokens_details=PromptTokensDetails(audio_tokens=0, cached_tokens=0))
Yukarıdaki çıktıda gördüğümüz gibi, bir max_completion_tokens değeri belirlemek modelin davranışını kontrol etmek açısından kritiktir. Üretilen belirteç sayısına bir üst sınır koyarak, o3’ün gereksiz yere uzun çıktılar üretmesini veya aşırı akıl yürütme belirteci tüketmesini engelleriz; bu da genel API maliyetlerini optimize etmeye yardımcı olur. Bu, özellikle dahili akıl yürütmenin aksi halde belirteç kullanımına egemen olabileceği ancak görünür çıktı açısından orantılı getiriler sağlamayabileceği karmaşık görevlerde önemlidir.
Önemli: o3’ü karmaşık görsel görevlerde kullanırken, max_completion_tokens değerini her zaman temkinli biçimde yüksek ayarlayın. Belirteç sınırı çok düşükse, model tüm belirteçleri dahili akıl yürütme sırasında tüketebilir ve görünür hiçbir çıktı döndürmeyebilir.
O3 ile En İyi İstem Yazma Uygulamaları
O3 modeli, GPT-4o veya Claude 3.5 Sonnet gibi genelist modellere göre farklı davranır; çünkü o3, derin düşünce zinciri akıl yürütmesini dahili olarak yürütür. En iyi performansı yalın ve hedef odaklı istemlerle verir; adımları aşırı belirtmek performansını olumsuz etkileyebilir.
OpenAI’nin o3 için önerdiği bazı en iyi uygulamalar şunlardır:
- İstemleri kısa ve net tutun: O3, ayrıntılı açıklamalara gerek duymadan doğrudan talimatlarla başarılı olur.
- Düşünce zinciri istemlerinden kaçının: O3’e "adım adım düşün" demenize gerek yok—içsel olarak akıl yürütür.
- Netlik için sınırlayıcılar kullanın: Üç tırnak, XML etiketleri veya diğer sınırlayıcıları girdi bölümlerini düzenlemek için kullanın.
- Fazladan bağlamı sınırlayın: retrieval-augmented generation (RAG) kullanıyorsanız, modeli bunaltmamak için yalnızca en ilgili bilgileri ekleyin.
Sonuç
Bu blog boyunca, OpenAI’nin O3 modeline API ile nasıl bağlanacağımızı, akıl yürütme belirteci maliyetlerini nasıl yöneteceğimizi ve en iyi uygulamalarla etkili istemler nasıl yazacağımızı öğrendik. Projeniz çok adımlı matematik, kod yeniden düzenleme veya görsel anlama gibi gelişmiş akıl yürütme kabiliyetleri gerektiriyorsa, O3 en iyi seçimdir.
API’lerle çalışmayı daha fazla öğrenmek için şu blogları öneririm:
ML (Üretken Yapay Zekâ) alanında Google Developers Uzmanıyım, Kaggle 3x Expert unvanına sahibim ve 3+ yıllık teknoloji deneyimiyle Women Techmakers Elçisiyim. 2020'de bir sağlık teknolojileri girişiminin kurucu ortağı oldum ve Georgia Tech'te makine öğrenmesi alanında uzmanlaşarak bilgisayar bilimleri yüksek lisansı yapıyorum.

