Yanıtlar API'siyle yanıt oluşturma
Tip
Daha fazla ayrıntı için Metin ve resimler sekmesine bakın!
OpenAI Yanıtları API'si, birleştirilmiş bir deneyimde daha önce ayrı olan iki API'den (ChatCompletions ve Assistants) özellikleri bir araya getirir. Durumlu, çok aşamalı yanıt oluşturma özelliği ile konuşma tabanlı yapay zeka uygulamaları için idealdir. Yanıtlar API'sine, Foundry SDK'sını veya OpenAI SDK'sını kullanarak OpenAI uyumlu bir istemci aracılığıyla erişebilirsiniz.
Yanıtlar API'sini anlama
Yanıtlar API'si, geleneksel sohbet tamamlamalarına göre çeşitli avantajlar sunar:
- Durumlu görüşmeler: Birden çok etkileşim boyunca görüşme bağlamını korur
- Birleşik deneyim: Sohbet tamamlamalarını ve Yardımcılar API desenlerini birleştirir
- Foundry doğrudan modelleri: Yalnızca Azure OpenAI modelleriyle değil doğrudan Microsoft Foundry'de barındırılan modellerle çalışır
- Simple tümleştirmesi: OpenAI uyumlu istemci aracılığıyla Access
Uyarı
Responses API'si, Microsoft Foundry uygulamalarında yapay zeka yanıtları oluşturmak için önerilen yaklaşımdır. Çoğu senaryo için eski ChatCompletions API'sinin yerini alır.
Basit bir yanıt oluşturma
OpenAI uyumlu bir istemciyle, responses.create() yöntemini kullanarak yanıt oluşturabilirsiniz:
# Generate a response using the OpenAI-compatible client
response = openai_client.responses.create(
model="gpt-4.1", # Your model deployment name
input="What is Microsoft Foundry?"
)
# Display the response
print(response.output_text)
Giriş parametresi, isteminizi içeren bir metin dizesini kabul eder. Model, bu girişi temel alan bir yanıt oluşturur.
Yanıt yapısını anlama
Yanıt nesnesi birkaç yararlı özellik içerir:
- output_text: Oluşturulan metin yanıtı
- kimlik: Bu yanıt için benzersiz tanımlayıcı
- status: Yanıt durumu (örneğin, "tamamlandı")
- kullanım: Belirteç kullanım bilgileri (giriş, çıkış ve toplam belirteçler)
- model: Yanıtı oluşturmak için kullanılan model
Yanıtları etkili bir şekilde işlemek için bu özelliklere erişebilirsiniz:
response = openai_client.responses.create(
model="gpt-4.1",
input="Explain machine learning in simple terms."
)
print(f"Response: {response.output_text}")
print(f"Response ID: {response.id}")
print(f"Tokens used: {response.usage.total_tokens}")
print(f"Status: {response.status}")
Yönergeler ekleme
Kullanıcı girişine ek olarak, modelin davranışına yol gösterecek yönergeler (genellikle sistem istemi olarak adlandırılır) sağlayabilirsiniz:
response = client.responses.create(
model="gpt-4.1",
instructions="You are a helpful AI assistant that answers questions clearly and concisely.",
input="Explain neural networks."
)
print(response.output_text)
Yanıt oluşturmayı denetleme
Yanıt oluşturmayı ek parametrelerle denetleyebilirsiniz:
response = openai_client.responses.create(
model="gpt-4.1",
instructions="You are a helpful AI assistant that answers questions clearly and concisely.",
input="Write a creative story about AI.",
temperature=0.8, # Higher temperature for more creativity
max_output_tokens=200 # Limit response length
)
print(response.output_text)
- sıcaklık: Rastgeleliği (0,0-2,0) denetler. Yüksek değerler çıkışı daha yaratıcı ve çeşitli hale getirir
- max_output_tokens: Yanıttaki en fazla belirteç sayısını sınırlar
- top_p: Rastgeleliği kontrol etmek için sıcaklığa alternatif
Foundry'nin doğrudan modelleriyle çalışma
project uç noktasına bağlanmak için FoundrySDK veya AzureOpenAI istemcisini kullanırken, Yanıtlar API'si hem Azure OpenAI modelleriyle hem de Foundry doğrudan modelleriyle (Microsoft Phi, DeepSeek veya doğrudan Microsoft Foundry'de barındırılan diğer modellerle) çalışır:
# Using a Foundry direct model
response = openai_client.responses.create(
model="microsoft-phi-4", # Example Foundry direct model
instructions="You are a helpful AI assistant that answers questions clearly and concisely.",
input="What are the benefits of small language models?"
)
print(response.output_text)
Konuşma deneyimleri oluşturma
Daha karmaşık konuşma senaryoları için sistem yönergeleri sağlayabilir ve çok aşamalı konuşmalar oluşturabilirsiniz:
# First turn in the conversation
response1 = openai_client.responses.create(
model="gpt-4.1",
instructions="You are a helpful AI assistant that explains technology concepts clearly.",
input="What is machine learning?"
)
print("Assistant:", response1.output_text)
# Continue the conversation
response2 = openai_client.responses.create(
model="gpt-4.1",
instructions="You are a helpful AI assistant that explains technology concepts clearly.",
input="Can you give me an example?",
previous_response_id=response1.id
)
print("Assistant:", response2.output_text)
Gerçekte, uygulama büyük olasılıkla bir kullanıcının modelden alınan her yanıta göre etkileşimli olarak ileti girebileceği bir döngü olarak oluşturulmalıdır:
# Track responses
last_response_id = None
# Loop until the user wants to quit
print("Assistant: Enter a prompt (or type 'quit' to exit)")
while True:
input_text = input('\nYou: ')
if input_text.lower() == "quit":
print("Assistant: Goodbye!")
break
# Get a response
response = openai_client.responses.create(
model=model_name,
instructions="You are a helpful AI assistant that explains technology concepts clearly.",
input=input_text,
previous_response_id=last_response_id
)
assistant_text = response.output_text
print("\nAssistant:", assistant_text)
last_response_id = response.id
Bu örnekteki çıkış şuna benzer:
Assistant: Enter a prompt (or type 'quit' to exit)
You: What is machine learning?
Assistant: Machine learning is a type of artificial intelligence (AI) that enables computers to learn from data and improve their performance over time without being explicitly programmed. It involves training algorithms on large datasets to recognize patterns, make predictions, or take actions based on those patterns. This allows machines to become more accurate and efficient in their tasks as they are exposed to more data.
You: Can you give me an example?
Assistant: Certainly! Let's look at a simple example of supervised learning—predicting house prices based on features like size, location, and number of rooms.
Imagine you want to build a machine learning model that can predict the price of a house based on various factors.
...
{ the example provided in the model response may be extensive}
...
You: quit
Assistant: Goodbye!
Kullanıcı her dönüşte yeni giriş girerken modele gönderilen veriler Yönergeler sistem iletisini, kullanıcıdan gelen girişi ve modelden alınan önceki yanıtı içerir. Bu şekilde yeni giriş, modelin önceki giriş için oluşturduğu yanıt tarafından sağlanan bağlamda temellendirilir.
Alternatif: El ile konuşma zincirleme
İleti geçmişini kendiniz oluşturarak konuşmaları el ile yönetebilirsiniz. Bu yaklaşım, hangi bağlamın dahil olduğu üzerinde daha fazla denetim sağlar:
try:
# Start with initial message
conversation_history = [
{
"type": "message",
"role": "user",
"content": "What is machine learning?"
}
]
# First response
response1 = openai_client.responses.create(
model="gpt-4.1",
input=conversation_history
)
print("Assistant:", response1.output_text)
# Add assistant response to history
conversation_history += response1.output
# Add new user message
conversation_history.append({
"type": "message",
"role": "user",
"content": "Can you give me an example?"
})
# Second response with full history
response2 = openai_client.responses.create(
model="gpt-4.1",
input=conversation_history
)
print("Assistant:", response2.output_text)
except Exception as ex:
print(f"Error: {ex}")
Bu el ile yaklaşım, aşağıdaki durumlarda kullanışlıdır:
- Hangi iletilerin bağlama dahil edileceğini özelleştirin
- Belirteç sınırlarını yönetmek için sohbet temizleme işlemini gerçekleştirme.
- Veritabanından konuşma geçmişini depolama ve geri yükleme
Belirli önceki yanıtları alma
Yanıtlar API'sinde yanıt geçmişi korunur ve önceki yanıtları alabilirsiniz:
try:
# Retrieve a previous response
response_id = "resp_67cb61fa3a448190bcf2c42d96f0d1a8" # Example ID
previous_response = openai_client.responses.retrieve(response_id)
print(f"Previous response: {previous_response.output_text}")
except Exception as ex:
print(f"Error: {ex}")
Bağlam penceresiyle ilgili dikkat edilmesi gerekenler
previous_response_id parametresi yanıtları birbirine bağlayarak birden çok API çağrısında konuşma bağlamını korur.
Konuşma geçmişini tutmanın belirteç kullanımını artırabileceğini unutmayın. Tek bir çalıştırma için etkin bağlam penceresi şunları içerebilir:
- Sistem yönergeleri (yönergeler, güvenlik kuralları)
- Geçerli isteminiz
- Konuşma geçmişi (önceki kullanıcı + yardımcı iletileri)
- Araç şemaları (işlevler, OpenAPI özellikleri, MCP araçları vb.)
- Araç çıkışları (arama sonuçları, kod yorumlayıcı çıkışı, dosyalar)
- Alınan bellek veya belgeler (bellek depolarından, RAG, dosya arama)
Bunların tümü birleştirilir, belirteçlendirilir ve her istekte modele birlikte gönderilir. SDK, durumu yönetmenize yardımcı olur, ancak belirteç kullanımını otomatik olarak daha ucuz hale getirmez.
Duyarlı sohbet uygulamaları oluşturma
Bir modelden gelen yanıtların oluşturulması, kullanılan modele, bağlam penceresi boyutuna ve istemin boyutuna bağlı olarak biraz zaman alabilir. Uygulama yanıt beklerken "donuyor" gibi görünüyorsa kullanıcı hayal kırıklığına uğrayabilir, bu nedenle uygulamanızda uygulama yanıt hızını göz önünde bulundurmanız önemlidir.
Akış yanıtları
Uzun yanıtlar için, çıkışı artımlı olarak almak için akışı kullanabilirsiniz; böylece çıkış kullanılabilir hale geldikçe kullanıcı kısmen tamamlanmış yanıtları görür:
stream = openai_client.responses.create(
model="gpt-4.1",
input="Write a short story about a robot learning to paint.",
stream=True
)
for event in stream:
print(event, end="", flush=True)
Akış sırasında konuşma geçmişini izliyorsanız, akış sona erdiğinde yanıt kimliğini şu şekilde alabilirsiniz:
stream = openai_client.responses.create(
model="gpt-4.1",
input="Write a short story about a robot learning to paint.",
stream=True
)
for event in stream:
if event.type == "response.output_text.delta":
print(event.delta, end="")
elif event.type == "response.completed":
response_id = event.response.id
Asenkron kullanım
Yüksek performanslı uygulamalar için engelleyici olmayan API çağrıları yapmanıza olanak tanıyan zaman uyumsuz bir istemci kullanabilirsiniz. Zaman uyumsuz kullanım, uzun süre çalışan istekler veya uygulamanızı engellemeden birden çok isteği eşzamanlı olarak işlemek istediğinizde idealdir. Bunu kullanmak için AsyncOpenAI yerine OpenAI içeri aktarın ve her API çağrısında await kullanın.
import asyncio
from openai import AsyncOpenAI
client = AsyncOpenAI(
base_url="https://<resource-name>.openai.azure.com/openai/v1/",
api_key=token_provider,
)
async def main():
response = await client.responses.create(
model="gpt-4.1",
input="Explain quantum computing briefly."
)
print(response.output_text)
asyncio.run(main())
Asenkron akış aynı şekilde çalışır:
async def stream_response():
stream = await client.responses.create(
model="gpt-4.1",
input="Write a haiku about coding.",
stream=True
)
async for event in stream:
print(event, end="", flush=True)
asyncio.run(stream_response())
Microsoft Döküm SDK'sı aracılığıyla Responses API'sini kullanarak bağlamı koruyan, birden çok model türünü destekleyen ve duyarlı bir kullanıcı deneyimi sağlayan gelişmiş konuşma yapay zeka uygulamaları oluşturabilirsiniz.