Kurs
OpenAI’nin Responses API’si Nedir?
Responses API, OpenAI’nin en yeni ve en gelişmiş API’sidir. Chat Completions ve Assistants API’lerinin güçlü yönlerini tek bir yalın arabirimde birleştirir. Mart 2025’te yayınlanan bu API, tanıdık yetenekleri korurken yapay zeka uygulamaları geliştirmeye daha bütünleşik bir yaklaşım sunar.
Temel yenilik, orkestrasyon mantığını otomatik olarak yönetmesi ve web araması ile dosya araması için OpenAI’nin yerleşik araçlarını yerel olarak entegre ederek özel bir uygulama gerektirmeden geliştirmeyi basitleştirmesidir.
Bu eğitimde, Responses API’yi projelerinizde nasıl kullanacağınızı adım adım göstereceğiz. Metin üretimini nasıl ele aldığını, görsellerle nasıl çalıştığını ve akışlı yanıtlar sunduğunu göreceksiniz. Geliştirmeyi her zamankinden daha hızlı ve basit hale getiren yerleşik araçları inceleyerek bu araçların API çerçevesi içinde nasıl birlikte çalıştığını göstereceğiz.
Bu rehberin sonunda, ne zaman Responses API’yi diğer OpenAI seçenekleri yerine kullanmanız gerektiğini ve bu bilginin daha az kod ve çabayla daha verimli uygulamalar geliştirmenize nasıl yardımcı olacağını anlayacaksınız. OpenAI API’sinde yeniyseniz, başlangıç için OpenAI API ile Çalışma kursumuza göz atın ve yapay zeka destekli uygulamalar geliştirme yolculuğunuza başlayın.
Responses API ile Başlarken
Responses API, OpenAI’nin modelleriyle etkileşimi daha yalın ve kullanıcı dostu hale getirerek önceden ayrıntılı ve karmaşık söz dizimi gerektiren işlemleri zarif bir çözüme dönüştürür.
Özel kullanım örneklerine geçmeden önce ortamımızı kuralım ve temel söz dizimini anlayalım.
from openai import OpenAI
import os
from dotenv import load_dotenv
# Load environment variables from .env file
load_dotenv()
# Initialize the client
client = OpenAI(api_key=os.getenv("OPENAI_API_KEY"))
Bu başlatma adımı, tüm API isteklerinizi yönetecek bir istemci nesnesi oluşturur. dotenv paketi, API anahtarınızı betiğe gömmek yerine ortam değişkenleriyle güvenli biçimde yönetmenize yardımcı olur; bu da kodunuzu farklı ortamlarda daha taşınabilir ve güvenli kılan en iyi uygulamalardandır.
Responses API ile içerik üretme
Responses API’nin en temel kullanımı metin içeriği üretmektir. Gerçek bir senaryoyu inceleyelim: Bir e-ticaret platformu kurduğunuzu ve temel ürün bilgilerinden otomatik olarak etkileyici ürün açıklamaları üretmeniz gerektiğini varsayalım.
Geleneksel olarak bu, dikkatli bir istem mühendisliği ve birden fazla yineleme gerektirirdi. Responses API ile bunu zarifçe ele alan basit bir işlev yazabilirsiniz:
def generate_product_description(product_name, features, target_audience):
response = client.responses.create(
model="gpt-4o",
instructions="You are a professional copywriter specialized in creating concise, compelling product descriptions. Focus on benefits rather than just features.",
input=f"""
Create a product description for {product_name}.
Key features:
- {features[0]}
- {features[1]}
- {features[2]}
Target audience: {target_audience}
Keep it under 150 words.
""",
temperature=0.7,
max_output_tokens=200
)
return response.output_text
# Example usage
headphones_desc = generate_product_description(
"NoiseGuard Pro Headphones",
["Active noise cancellation", "40-hour battery life", "Memory foam ear cushions"],
"Business travelers and remote workers"
)
print(headphones_desc)
Çıktı:
Experience unparalleled focus and comfort with NoiseGuard Pro Headphones—your perfect travel and work companion.
Designed for business travelers and remote workers, these headphones feature cutting-edge active noise cancellation to block out distractions, allowing you to concentrate on what truly matters.
With an impressive 40-hour battery life, you can enjoy uninterrupted productivity or relaxation on even the longest journeys.
The luxurious memory foam ear cushions ensure a snug, comfortable fit for all-day wear, reducing fatigue and enhancing your listening experience.
Elevate your work and travel with NoiseGuard Pro—where clarity meets comfort.
Sadece birkaç satır kodla, normalde profesyonel bir metin yazarının hazırlayacağı kalitede pazarlama metni ürettik. İşlev aynı zamanda yeniden kullanılabilir; parametreleri değiştirerek kataloğunuzdaki herhangi bir ürün için açıklamalar oluşturabilirsiniz.
Bu örnek, Responses API kullanırken temel desenleri gösterir:
instructionsparametresi, yapay zekânın davranışını ve bağlamını tanımlayan bir sistem istemi gibi çalışır.-
temperature(0-2) rassallığı kontrol eder—düşük değerler daha belirleyici çıktılar üretirken yüksek değerler yaratıcılığı artırır. -
max_output_tokensyanıt uzunluğunu sınırlar; bu da maliyetleri kontrol etmeye ve özlü çıktılar sağlamaya yardımcı olur. - Yanıt nesnesi, üretilen metni
output_textözelliğinde içerir.
Pratik uygulamalar için görsel analiz
Pek çok gerçek dünya uygulaması hem metni hem görselleri işler. Örneğin, e-ticaret platformları ürün fotoğraflarını analiz etmeye, içerik denetleme sistemleri yüklemeleri incelemeye ve sosyal medya uygulamaları görsel içeriği anlamaya ihtiyaç duyar.
Responses API, ayrı uç noktalar veya karmaşık entegrasyon kodu gerektirmeden görsel analiz gibi çok kipli görevlerde mükemmeldir:
def analyze_product_image(image_url):
response = client.responses.create(
model="gpt-4o",
instructions="You are a product photography expert and e-commerce consultant.",
input=[
{"role": "user", "content": "Analyze this product image and provide the following details:\n1. Product category\n2. Key visible features\n3. Potential quality issues\n4. Suggested improvements for the product photography"},
{
"role": "user",
"content": [
{
"type": "input_image",
"image_url": image_url
}
],
},
],
temperature=0.2
)
return response.output_text
# Example with a sports team image
analysis = analyze_product_image("https://upload.wikimedia.org/wikipedia/commons/a/a5/Barcelona_fc_lamina_elgrafico.jpg")
print(analysis)
Çıktı:
1. **Product Category**: Sports team memorabilia or vintage sports photography.
2. **Key Visible Features**:
- The image features a group of individuals in sports uniforms, likely a football (soccer) team.
- The uniforms have distinct vertical stripes in red and blue.
- A football is visible in the foreground.
- The setting appears to be an outdoor field, possibly a stadium.
...
Bu işlev, satıcılar ürün fotoğrafları yüklediğinde bunları otomatik olarak analiz etmek için bir e-ticaret platformuna entegre edilebilir. Sistem, görsel kalitesi hakkında anında geri bildirim verip iyileştirmeler önerebilir; böylece manuel inceleme olmadan daha kaliteli listelemeler yoluyla dönüşüm oranlarının artmasına katkıda bulunur.
Görsellerle çalışırken, girdi parametresine bir dizi mesaj nesnesi (her biri role ve content değerlerine sahip) iletmeniz gerekir; metin yerine dizi kullanmalısınız.
Görsel içeriği, type: input_image ve bir image_url içeren bir nesneyle belirtilir. Aynı istekte metin ve görselleri birleştirerek zengin çok kipli etkileşimler sağlayabilirsiniz.
Duyarlı uygulamalar için akış (streaming) uygulama
Kullanıcılar anında geri bildirim bekler. Bir yapay zekâ yanıtı için birkaç saniye beklemek etkileşimi öldürebilir; bu nedenle özellikle sohbet veya gerçek zamanlı uygulamalarda akış olmazsa olmazdır.
Diyelim ki bir ürün ekibi için müşteri geri bildirimlerini analiz eden bir araç inşa ediyorsunuz. Tam analiz tamamlanana kadar bekletmek yerine, sonuçları üretildikçe akışla iletebilirsiniz:
def analyze_customer_feedback(feedback_text):
print("Analyzing customer feedback in real-time:")
stream = client.responses.create(
model="gpt-4o",
instructions="Extract key sentiments, product issues, and actionable insights from this feedback.",
input=feedback_text,
stream=True,
temperature=0.3,
max_output_tokens=500
)
full_response = ""
print("\nAnalysis results:")
for event in stream:
if event.type == "response.output_text.delta":
print(event.delta, end="")
full_response += event.delta
elif event.type == "response.error":
print(f"\nError occurred: {event.error}")
return full_response
# Example with a complex customer review
feedback = """
I've been using the SmartHome Hub for about 3 months now. The voice recognition is fantastic
and the integration with my existing devices was mostly seamless. However, the app crashes
at least once a day, and the night mode feature often gets stuck until I restart the system.
Customer support was helpful but couldn't fully resolve the app stability issues.
"""
analysis_result = analyze_customer_feedback(feedback)
Gerçek bir uygulamada, print ifadelerinin yerine arayüz güncellemeleri kullanır, kullanıcılarınızın analizin tıpkı modern sohbet uygulamalarında yapay zekânın "düşündüğünü" görmeleri gibi gerçek zamanlı oluştuğunu izlemesini sağlarsınız. Bu, daha ilgi çekici bir deneyim yaratır ve isteğin işlendiğine dair anında geri bildirim verir.
Akış uygulaması şu şekilde çalışır:
- create metodunda
stream=Trueayarlanır - Yanıt, belirli türlere sahip olayların yineleyicisi olarak işlenir
- Farklı olay türleri ayrı ayrı ele alınır: içerik parçaları için
response.output_text.delta, hatalar içinresponse.error
Artık Responses API’nin temel işlevselliğini ele aldığımıza göre, yeteneklerini daha da geliştiren yerleşik araçlarını inceleyelim.
OpenAI Responses API Yerleşik Araçları
Responses API, temel metin üretiminin ötesine geçen birkaç yerleşik araç entegre eder. Bu araçlar, karmaşık entegrasyon kodlarına veya çoklu API çağrılarına ihtiyaç olmadan daha güçlü uygulamalar oluşturmanıza olanak tanır.
Web araması: gerçek zamanlı bilgiye erişim
Web araması aracı, Responses API’nin internetten güncel bilgi almasını sağlayarak LLM’lerin eğitim verileriyle sınırlı olma kısıtını aşar.
from openai import OpenAI
client = OpenAI()
response = client.responses.create(
model="gpt-4o",
tools=[{"type": "web_search_preview"}],
input="What are some news related to the stock market?",
)
print(response.output_text)
Çıktı:
Recent developments in the stock market have been significantly influenced by escalating trade tensions between the United States and China. On April 5, 2025, President Donald Trump announced an additional 34% tariff on Chinese goods, raising total tariffs to 54% this year. In response, China imposed reciprocal 34% tariffs on U.S. products and introduced export restrictions on certain rare earth elements. These actions led to a sharp global market selloff, with the S&P 500 falling 9% for the week, marking the steepest decline since the pandemic. (reuters.com)
…..
## Escalating US-China Trade Tensions Impact Global Markets:
- [China says 'market has spoken' after US tariffs spark selloff](https://www.reuters.com/world/china/china-says-market-has-spoken-after-us-tariffs-spark-selloff-2025-04-05/?utm_source=openai)
- [Trump touts "economic revolution" as economists warn of recession](https://www.axios.com/2025/04/05/trump-tariffs-stock-market-recession?utm_source=openai)
- [Believe it or not, there were some winners in the stock market this week](https://apnews.com/article/ce81e9ae6fb463dc763dfaa464778343?utm_source=openai)
Web araması aracı etkinleştirildiğinde sorguyu analiz etmekten birden fazla kaynaktan uygun atıflarla bilgi sentezine kadar çeşitli işlemleri gerçekleştirir. Bu yetenek, piyasa içgörüleri sunan finansal analiz araçları, çoklu kaynağı birleştiren haber toplayıcıları veya çekirdek içeriği güncel araştırmalarla destekleyen eğitim kaynakları gibi bilgi açısından zengin uygulamalara kapı açar.
Bu aracın önemli bir faydası, özel bir arama entegrasyonu veya web kazıma sistemi kurup sürdürmeden güncel bilgi sunabilmesidir. Araç, arama sürecini yönetir ve bilgi kaynakları hakkında şeffaflığı korumak için sonuçları uygun atıflarla sunar.
Dosya araması: belgelerden bilgi çıkarma
Web araması dış bilgiyi uygulamanıza getirirken, dosya arama aracı belgelerden bilgiyi ortaya çıkarmaya odaklanır. Bu araç, OpenAI’ye yüklenmiş belgelere göz atıp bilgi çıkarmanıza olanak tanır.
Dosya araması aracı, birkaç temel yetenek sağlar:
- Birden çok dosya türü (PDF, Word belgeleri, sunumlar vb.) arasında arama.
- Doğal dil sorgularına göre belgeler içinde belirli bilgiyi bulma.
- Aynı anda birden fazla belgeden bilgi çıkarma ve sentezleme.
- Kaynak belgelerin belirli bölümlerine atıf sağlama.
- Birden fazla dosyadaki bilgilere referans veren karmaşık sorguları destekleme.
Bu yetenek; hukuki sözleşmelerden bilgi çıkarmak, araştırma makalelerini analiz etmek veya teknik dokümantasyondan bilgi tabanları oluşturmak gibi belge analizi kullanım senaryoları için uygundur. Araç, birden çok belge genelinde ilgili bölümleri tespit ederek belirli sorgulara yanıt olarak bilgiyi sentezleyebilir.
Uygulama için önce dosyaların OpenAI’nin dosya uç noktasına yüklenmesi, ardından sorgu yapılırken dosya kimliklerinin Responses API’ye iletilmesi gerekir. Bu, kullanıcıların manuel arama yapmasına gerek kalmadan belgeler içindeki belirli bilgilere başvurması gereken uygulamalar için yalın bir iş akışı oluşturur.
Bilgisayar kullanımı: arayüz etkileşim yetenekleri
Metin ve belge anlama temelinin üzerine inşa edilen bilgisayar kullanımı aracı, yapay zekâ yeteneklerini arayüz etkileşimi alanına taşır. Bu araç, dil anlama ile kullanıcı arayüzü manipülasyonu arasındaki boşluğu kapatan önemli bir gelişmeyi temsil eder.
Bilgisayar kullanımı aracı çeşitli arayüz etkileşimlerini gerçekleştirebilir:
- Web sitelerinde ve web uygulamalarında özerk biçimde gezinme.
- Formları uygun bilgilerle doldurma.
- Web sayfaları ve uygulamalardan veri çıkarma.
- Farklı ekranlar arasında çok adımlı süreçleri yürütme.
- Düğmeler, açılır listeler ve metin alanları gibi öğelerle etkileşim.
- Farklı arayüz öğelerinin bağlamını ve amacını anlama.
Olası uygulamalar arasında tekrarlı görevler için süreç otomasyonu, karmaşık iş akışları için rehberli yardım ve geleneksel arayüzlerle zorlanan kullanıcılar için erişilebilirlik iyileştirmeleri bulunur. Araç, form doldurmayı otomatikleştirmek, karmaşık sitelerde gezinmek veya kullanıcı arayüzlerinin testini gerçekleştirmek için kullanılabilir.
Teknoloji, yapay zekânın ekran öğelerini görmesine ve onlarla etkileşim kurmasına, bağlamı anlamasına ve doğal dil talimatlarına dayalı eylemler yürütmesine olanak tanıyarak çalışır. Bu da aksi halde arayüze özgü özel kod geliştirme gerektirecek otomasyon ve yardım olanakları yaratır.
Ek araç yetenekleri
Responses API içindeki araç ekosistemi büyümeye devam ediyor ve OpenAI düzenli olarak yeni yetenekler ekliyor. Kapsamlı araçlar dokümantasyonu, şu anda mevcut tüm araçların uygulama ayrıntılarını kapsarken ajanlar oluşturmak için yeni araçlar başlıklı makale bu araçların nasıl evrildiğine dair stratejik bağlam sunar.
Bu yerleşik araçlar kutudan çıktığı haliyle güçlü yetenekler sağlar; ancak birçok uygulama, özel servisler veya mülki sistemlere bağlanmayı gerektirir. İşte bu noktada işlev çağırma devreye girer; Responses API’yi kendi özel araçlarınız ve harici servislerle genişletmenize olanak tanır—bir sonraki bölümümüzün odağı.
Responses API’de İşlev Çağırma (Function Calling)
Yerleşik araçlar güçlü yetenekler sunsa da, birçok uygulama özel servisler veya mülki sistemlere bağlanmayı gerektirir. İşlev çağırma, Responses API’yi kendi özel araçlarınızla genişletmenize olanak tanır ve modelin, kullanıcı girdisine göre işlevlerinizi ne zaman ve nasıl çağıracağını belirlemesini sağlar.
İşlev çağırma, yapay zekânın dil anlayışı ile harici sistemleriniz arasında bir köprü kurar—ister döviz kurları çekmek, ister mesafe hesaplamak, ister randevu uygunluğunu kontrol etmek olsun. Bu desen net bir iş akışını izler:
- Yapay zekânın kullanabileceği işlevleri, parametrelerini ve türlerini belirterek tanımlarsınız.
- Yapay zekâ, kullanıcı sorgularına göre bu işlevleri ne zaman çağıracağına karar verir.
- Kodunuz, yapay zekânın sağladığı parametrelerle işlevleri yürütür.
- Sonuçları yapay zekâya geri döndürürsünüz; model bunları yanıtına dahil eder.
Bir döviz dönüştürme aracı oluşturma
Örnek olarak basit bir döviz dönüştürme işlevi uygulayalım:
# Dictionary of exchange rates (relative to USD)
exchange_rates = {
"USD": 1.0,
"EUR": 0.93,
"GBP": 0.79,
"JPY": 153.2,
"CAD": 1.37,
"AUD": 1.52
}
def convert_currency(amount, from_currency, to_currency):
"""Convert an amount from one currency to another."""
# Normalize currency codes to uppercase
from_currency = from_currency.upper()
to_currency = to_currency.upper()
# Check if currencies are supported
if from_currency not in exchange_rates:
return {"error": f"Currency not supported: {from_currency}"}
if to_currency not in exchange_rates:
return {"error": f"Currency not supported: {to_currency}"}
# Convert to USD first, then to target currency
amount_in_usd = amount / exchange_rates[from_currency]
converted_amount = amount_in_usd * exchange_rates[to_currency]
return {
"original_amount": amount,
"from_currency": from_currency,
"to_currency": to_currency,
"converted_amount": round(converted_amount, 2)
}
Bu işlev üç parametre alır: dönüştürülecek tutar, kaynak para birimi ve hedef para birimi. Önceden tanımlı döviz kurlarını kullanarak basit bir dönüşüm yapar ve dönüşüm ayrıntılarını içeren yapılandırılmış bir sonuç döndürür.
İşlevi Responses API için tanımlama
Şimdi, modelin ne zaman çağıracağına karar verebilmesi için işlevimizi modele tanıtmamız gerekiyor:
from openai import OpenAI
import json
client = OpenAI()
tools = [
{
"type": "function",
"name": "convert_currency",
"description": "Convert an amount from one currency to another using current exchange rates",
"parameters": {
"type": "object",
"properties": {
"amount": {
"type": "number",
"description": "The amount of money to convert"
},
"from_currency": {
"type": "string",
"description": "The currency code to convert from (e.g., USD, EUR, GBP)"
},
"to_currency": {
"type": "string",
"description": "The currency code to convert to (e.g., USD, EUR, GBP)"
}
},
"required": ["amount", "from_currency", "to_currency"],
"additionalProperties": False
},
"strict": True
}
]
Bu tanım açıkça şunları belirtir:
convert_currencyadlı ve Python işlevimizle eşleşen işlev adını.- Ne zaman kullanılacağını açıklayan bir açıklamayı.
- Türleri ve açıklamalarıyla birlikte üç zorunlu parametreyi.
- Modelin parametre belirtimlerine tam olarak uymasını sağlayan
strict: truebayrağını.
Bir kullanıcı sorgusunu ele alma
Bir kullanıcının döviz dönüşümü hakkında soru sorduğu bir konuşmayı simüle edelim:
input_messages = [
{"role": "user", "content": "How much is 100 euros in Japanese yen?"}
]
response = client.responses.create(
model="gpt-4o",
input=input_messages,
tools=tools,
)
Model bu döviz dönüşümü sorusunu gördüğünde işlevimizi kullanması gerektiğini anlar. Otomatik olarak şunları tespit eder:
- Tutar 100’dür
- Kaynak para birimi avrodur (EUR)
- Hedef para birimi Japon yeni’dir (JPY)
İşlev çağrısını işleme
Şimdi işlev çağrısı ayrıntılarını çıkaralım ve işlevimizi çalıştıralım:
tool_call = response.output[0]
print(f"Function called: {tool_call.name}")
print(f"Arguments: {tool_call.arguments}")
args = json.loads(tool_call.arguments)
# Execute the function with the parameters determined by the model
conversion_result = convert_currency(**args)
print(f"Function results: {conversion_result}")
Model, doğal dildeki sorguyu yapılandırılmış parametrelere dönüştürmüştür. İşlevimiz de bu parametrelere göre hesaplamayı yapar ve dönüştürülen tutarı döndürür.
İşlev sonuçlarını modele geri döndürme
Son olarak, kullanıcı dostu bir yanıt üretebilmesi için sonuçları modele geri gönderiyoruz:
input_messages.append(tool_call) # append model's function call message
input_messages.append(
{ # append result message
"type": "function_call_output",
"call_id": tool_call.call_id,
"output": json.dumps(conversion_result)
}
)
response_2 = client.responses.create(
model="gpt-4o",
input=input_messages,
tools=tools,
)
print(response_2.output_text)
Çıktı:
100 euros is equal to 16,473.12 Japanese yen based on current exchange rates.
Model, ham dönüşüm verimizi alıp doğal ve okunaklı bir yanıta dönüştürdü. Sayısal sonucu doğru yorumlayıp para birimi için uygun bir formatta sundu.
Hepsini bir araya getirmek
Gerçek bir uygulamada, bu sürecin tamamını, konuşma akışını kesintisiz yöneten tek bir arabirime sarmanız gerekir. İşlev çağırma sürecinin tamamını yöneten eksiksiz bir asistanı şöyle oluşturabilirsiniz:
def currency_assistant(user_message, conversation_history=None):
"""A complete assistant that handles currency conversion queries."""
if conversation_history is None:
conversation_history = []
# Add the user's new message to the conversation
conversation_history.append({"role": "user", "content": user_message})
# Define available tools (our currency conversion function)
tools = [{
"type": "function",
"name": "convert_currency",
"description": "Convert an amount from one currency to another using current exchange rates",
"parameters": {
"type": "object",
"properties": {
"amount": {
"type": "number",
"description": "The amount of money to convert"
},
"from_currency": {
"type": "string",
"description": "The currency code to convert from (e.g., USD, EUR, GBP)"
},
"to_currency": {
"type": "string",
"description": "The currency code to convert to (e.g., USD, EUR, GBP)"
}
},
"required": ["amount", "from_currency", "to_currency"],
"additionalProperties": False
},
"strict": True
}]
# Get initial response from the model
response = client.responses.create(
model="gpt-4o",
input=conversation_history,
tools=tools,
)
# Check if the model wants to call a function
if response.output and isinstance(response.output, list) and response.output[0].type == "function_call":
tool_call = response.output[0]
# Process the function call
args = json.loads(tool_call.arguments)
result = convert_currency(**args)
# Add the function call and its result to the conversation
conversation_history.append(tool_call)
conversation_history.append({
"type": "function_call_output",
"call_id": tool_call.call_id,
"output": json.dumps(result)
})
# Get the final response with the function results incorporated
final_response = client.responses.create(
model="gpt-4o",
input=conversation_history,
tools=tools,
)
return final_response.output_text, conversation_history
else:
# If no function call was needed, return the direct response
return response.output_text, conversation_history
# Example usage
response, conversation = currency_assistant("How much is 50 British pounds in Australian dollars?")
print("Assistant:", response)
# Continue the conversation
response, conversation = currency_assistant("And what if I wanted to convert 200 Canadian dollars instead?", conversation)
print("Assistant:", response)
Bu uygulama:
- Takip soruları için bağlam sağlamak üzere konuşma geçmişini korur.
- İşlev çağırma sürecinin tamamını tek bir arabirimde ele alır.
- Ne zaman işlev çağırmanın gerekli olduğunu, ne zaman modelin doğrudan yanıt verebileceğini belirler.
- Önceki bağlamın önemli olduğu çok turlu konuşmaları destekler.
Bu yaklaşımla, kullanıcıların arka planda gerçekleşen karmaşık işlev çağırmaların farkında olmadan doğal biçimde etkileşimde bulunduğu kesintisiz sohbet deneyimleri oluşturabilirsiniz. Asistan, doğal dil anlama, yapılandırılmış işlev çağrıları ve doğal dil üretimi arasında geçişi yönetir.
Daha karmaşık uygulamalar geliştirmek şunları içerebilir:
- Farklı sorgu türleri için birden fazla işlevi destekleme.
- Hassas işlemler için kimlik doğrulama ve yetkilendirme yönetimi.
- Daha gelişmiş hata yönetimi ve toparlanma mekanizmaları uygulama.
- İşlev kullanımı ve performansı için günlükleme ve izleme ekleme.
- Metin, ses veya çok kipli etkileşimleri destekleyen kullanıcı arayüzleri oluşturma.
İşlev çağırma, Responses API’nin doğal dil girdilerini servisleriniz ve verilerinizle bağlamasını sağlar. Bu, kullanıcı istekleri ile iş sistemleriniz arasında bir köprü kurar; kullanıcılar yalın bir dille talepte bulunurken, uygulamanız arka planda teknik uygulama ayrıntılarını yönetir.
İşlev çağırmanın ötesinde, Responses API’nin bir diğer güçlü yeteneği yapılandırılmış çıktılar üretmektir. Bu özellik, uygulamanızın ihtiyaçlarına uygun belirli formatlarda yanıt almanızı sağlayarak işlev çağırmayı tamamlar.
Responses API ile Yapılandırılmış Çıktılar
Yapay zeka uygulamaları geliştirirken, yanıtları sistemlerinizle kolay entegrasyon için belirli bir formatta almanız sıkça gerekir. Responses API, serbest biçimli metin yerine iyi tanımlanmış ve tutarlı bir formatta veri almanızı sağlayan yapılandırılmış çıktıları destekler. Bu özellik özellikle şu durumlarda değerlidir:
- Yapılandırılmamış metinden belirli bilgileri çıkarmak.
- Kullanıcı girdilerini yapılandırılmış veriye dönüştürmek.
- Sonraki işlemler için tutarlı yanıt formatlarını sağlamak.
- Yapay zeka çıktılarını doğrudan veritabanlarına veya API’lere entegre etmek.
Yapılandırılmış çıktılar, ek ayrıştırma ve doğrulama ihtiyacını azaltarak uygulamalarınızı daha dayanıklı ve bakımı kolay hale getirir.
Açıklamalardan ürün bilgisi çıkarma
Pratik bir örnek inceleyelim: Bir e-ticaret platformu inşa ettiğinizi ve veritabanınızı doldurmak için yapılandırılmamış ürün açıklamalarından otomatik olarak ürün ayrıntıları çıkarmanız gerektiğini düşünün.
from openai import OpenAI
import json
client = OpenAI()
product_description = """
Our Premium Laptop Backpack is perfect for professionals and students alike.
Made with water-resistant material, it features padded compartments that fit
laptops up to 15.6 inches. The backpack includes 3 main storage areas,
5 smaller pockets, and has an integrated USB charging port. Available in
navy blue, black, and gray. Current retail price: $79.99, though it's
currently on sale for $64.99 until the end of the month.
"""
response = client.responses.create(
model="gpt-4o",
input=f"Extract structured product information from this description: {product_description}",
text={
"format": {
"type": "json_schema",
"name": "product_details",
"schema": {
"type": "object",
"properties": {
"product_name": {"type": "string"},
"category": {"type": "string"},
"features": {"type": "array", "items": {"type": "string"}},
"colors": {"type": "array", "items": {"type": "string"}},
"pricing": {
"type": "object",
"properties": {
"regular_price": {"type": "number"},
"sale_price": {"type": "number"},
"currency": {"type": "string"},
},
"additionalProperties": False,
"required": ["regular_price", "sale_price", "currency"],
},
},
"required": ["product_name", "features", "colors", "pricing","category"],
"additionalProperties": False,
},
"strict": True,
}
},
)
product_data = json.loads(response.output_text)
print(json.dumps(product_data, indent=2))
Çıktı:
{
"product_name": "Premium Laptop Backpack",
"category": "Backpack",
"features": [
"Water-resistant material",
"Padded compartments for laptops up to 15.6 inches",
"3 main storage areas",
"5 smaller pockets",
"Integrated USB charging port"
],
"colors": [
"Navy blue",
"Black",
"Gray"
],
"pricing": {
"regular_price": 79.99,
"sale_price": 64.99,
"currency": "USD"
}
}
Bu biçimlendirilmiş JSON verisi artık özel ayrıştırma mantığına gerek kalmadan ürün veritabanınızla doğrudan entegre edilebilir ve hata olasılığını azaltır.
Yapılandırılmış çıktı yapılandırmasını anlama
Etkili ve hatasız yapılandırılmış çıktılar için şemanızı doğru tanımlamak kritik önemdedir. Yapılandırmanın önemli unsurlarını parçalayalım:
text={
"format": {
"type": "json_schema", # Specifies we're using JSON Schema
"name": "product_details", # A descriptive name for this schema
"schema": {
# Your JSON Schema definition here
"type": "object",
"properties": {
# Each property with type information, e.g.
"product_name": {"type": "string"},
# ... other properties
},
"required": ["product_name", ...], # All other properties
"additionalProperties": False
},
"strict": True # Enforce schema constraints strictly
}
}
En önemli bileşenler şunlardır:
- Şema tanımı: Tüm özellikleri ve türlerini içeren yapıyı açıklar.
- Zorunlu alanlar: Yanıtta mutlaka yer alması gereken özellikleri listeler.
- Ek özellikler:
Falseolarak ayarlandığında, şemada tanımlanmayan fazladan alanları engeller. - Sıkı mod:
Trueolduğunda, modelin şemaya tam olarak uymasını sağlar.
Yapılandırılmış çıktıları kullanmaya yönelik pratik ipuçları
Yapılandırılmış çıktılardan en iyi sonucu almak için şu yönergeleri izleyin:
- Şemanızı özenle tasarlayın: Tüm zorunlu alanları dahil edin ancak odağı temel bilgilere koruyun.
- Uygun veri türleri kullanın: Türleri veriyi nasıl kullanacağınıza göre eşleyin (hesaplamalar için sayılar, metin için dizgiler).
- Net kısıtlar belirleyin: Sınırlı seçenekli alanlar için
enum, sayısal sınırlar içinminimum/maximumkullanın. - Çeşitli girdilerle test edin: Şemanızın farklı girdi formatlarını ve uç durumları ele aldığından emin olun.
- Açıklamaları net yazın: Alanlara açıklama eklemek, modelin hangi bilgiyi çıkarması gerektiğini yorumlamasına yardımcı olur.
Chat Completions API ile karşılaştırma
Responses API, JSON Schema aracılığıyla yapılandırılmış çıktılar sağlarken, Chat Completions API çok daha basit olan Pydantic modellerini kullanan alternatif bir yaklaşım sunar:
from pydantic import BaseModel, Field
from typing import List, Optional
from openai import OpenAI
client = OpenAI()
class ProductDetails(BaseModel):
product_name: str
category: str = Field(default=None)
features: List[str]
specifications: Optional[dict] = None
colors: List[str]
pricing: dict
# With Chat Completions API
completion = client.beta.chat.completions.parse(
model="gpt-4o",
messages=[
{"role": "system", "content": "Extract structured product information."},
{"role": "user", "content": product_description}
],
response_format=ProductDetails
)
pydantic_product = completion.choices[0].message.parsed
Her yaklaşımın faydaları vardır:
- Responses API, standart JSON Schema’yı doğrudan API çağrısında kullanır
- Chat Completions API, Python’un tür sistemiyle Pydantic üzerinden bütünleşir
Bana sorarsanız, ham JSON şemaları yazmaktan kaçınmak için Chat Completions API’yi kullanırdım. Tabii OpenAI, Pydantic model desteğini Responses API’ye ekleyene kadar.
Daha fazla bilgi için bkz. Yapılandırılmış Çıktılar için Responses API dokümantasyonu.
Sonuç
OpenAI Responses API, önceki API’lerin güçlü yönlerini daha az kod ve karmaşıklık gerektiren birleşik bir arabirimde birleştirerek geliştiricilerin dil modelleriyle etkileşimini kolaylaştırır. Metin üretimi, görsel analizi, işlev çağırma ve yapılandırılmış çıktıları destekleyerek yapay zekâ yeteneklerini daha erişilebilir hale getirir; geliştiricilerin entegrasyon zorlukları yerine iş sorunlarını çözmeye odaklanmalarını sağlar.
Responses API ile yolculuğunuza devam ederken, anlayışınızı derinleştirip uygulama becerilerinizi genişletmek için şu ek kaynaklardan yararlanabilirsiniz:
OpenAI Responses API SSS
Responses API nedir ve diğer OpenAI API’lerinden nasıl farklıdır?
Responses API, OpenAI'nin Chat Completions ve Assistants API'lerinden özellikleri birleştiren birleşik arabirimidir. Orkestrasyon mantığını yöneterek ve web araması ile dosya araması için yerleşik araçları özel bir uygulama gerektirmeden entegre ederek geliştirmeyi basitleştirir.
Responses API ile işlev çağırmayı nasıl uygularım?
Parametreleri ve türleriyle işlevler tanımlayarak, modelin bunları ne zaman çağıracağına karar vermesine izin vererek, modeli sağladığı parametrelerle işlevleri çalıştırarak ve sonuçları modele geri döndürüp yanıtlara dahil etmesini sağlayarak işlev çağırmayı uygulayın.
Yapılandırılmış çıktılar nedir ve neden kullanışlıdır?
Yapılandırılmış çıktılar, serbest metin yerine iyi tanımlanmış formatlarda (ör. JSON) veri almanızı sağlar. Belirli bilgileri çıkarmak, tutarlı yanıt formatları sağlamak ve yapay zeka çıktıları doğrudan veritabanlarına veya API’lere entegre etmek için kullanışlıdırlar.
Responses API’de hangi yerleşik araçlar mevcut?
Responses API, gerçek zamanlı bilgiye erişim için web araması, belgelerden bilgi çıkarmak için dosya araması ve arayüz etkileşimi için bilgisayar kullanımı gibi yerleşik araçlar içerir; bu da karmaşık entegrasyonlara olan ihtiyacı ortadan kaldırır.
Responses API’yi farklı programlama dilleriyle kullanabilir miyim?
Evet, Responses API, Python, Node.js ve diğer dillerde mevcut OpenAI'nin resmi SDK'ları üzerinden erişilebilir. RESTful API tasarımı, HTTP isteği yapabilen herhangi bir dille entegrasyona da olanak tanır.
