יצר תגובות באמצעות ממשק ה-API של תגובות
ממשק OoenAI Responses מאחד יכולות משני ממשקי API נפרדים בעבר (ChatPletionsו-Assistants) בחוויה מאוחדת. הוא מספק יצירת תגובה מצבנית, מרובת תורות, מה שהופך אותו לאידיאלי ליישומי בינה מלאכותית שיחתית. ניתן לגשת ל-Responses API דרך לקוח תואם OpenAI באמצעות Foundry SDK או OpenAI.
הבנת ממשק ה-API של התגובות
ממשק ה-Responses מציע מספר יתרונות על פני השלמות צ'אט מסורתיות:
- שיחות מצביות: שומר על הקשר השיחה במספר תורות
- חוויה מאוחדת: משלבת השלמות צ'אט ודפוסי API של עוזרים
- Foundry direct models: עובד עם מודלים המאוחסנים ישירות ב-Microsoft Foundry, לא רק Azure מודלים של OpenAI
- Simple integration: Access דרך לקוח תואם OpenAI
הערה
ממשק התגובות הוא הגישה המומלצת ליצירת תגובות בינה מלאכותית ביישומי Microsoft Foundry. הוא מחליף את ה-API הישן ChatCompletions ברוב התרחישים.
יצירת תגובה פשוטה
עם לקוח תואם OpenAI, ניתן לייצר תגובות באמצעות שיטת responses.create():
# 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)
פרמטר הקלט מקבל מחרוזת טקסט שמכילה את ההודעה שלך. המודל מייצר תגובה המבוססת על קלט זה.
הבנת מבנה התגובה
אובייקט תגובה מכיל מספר תכונות שימושיות:
- output_text: תגובת הטקסט שנוצרה
- מזהה: מזהה ייחודי לתגובה זו
- סטטוס: סטטוס תגובה (לדוגמה, "הושלם")
- שימוש: מידע על שימוש בטוקנים (קלט, פלט וסך הטוקנים)
- מודל: המודל ששימש ליצירת התגובה
ניתן access לתכונות אלו כדי לטפל בתגובות בצורה יעילה:
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}")
הוספת הוראות
בנוסף לקלט המשתמש, ניתן לספק הוראות (שלעיתים נקראות הנחיית מערכת) כדי להנחות את התנהגות המודל:
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)
שליטה ביצירת תגובה
אתה יכול לשלוט ביצירת תגובה עם פרמטרים נוספים:
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)
- טמפרטורה: שולטת באקראיות (0.0-2.0). ערכים גבוהים הופכים את התוצאה ליצירתית ומגוונת יותר
- max_output_tokens: מגביל את מספר הטוקנים המקסימלי בתגובה
- top_p: חלופה לטמפרטורה לשליטה באקראיות
עבודה עם מודלים ישירים של Foundry
כאשר משתמשים בלקוח FoundrySDK או AzureOpenAI כדי להתחבר לנקודת קצה של פרויקט , ממשק התגובות עובד הן עם מודלים של Azure OpenAI והן עם מודלים ישירים של Foundry (כגון Microsoft Phi, DeepSeek, או מודלים אחרים המתארחים ישירות ב-Microsoft Foundry):
# 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)
יצירת חוויות שיחה
לתרחישי שיחה מורכבים יותר, תוכל לספק הוראות מערכת ולבנות שיחות מרובות תורות:
# 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)
בפועל, היישום צפוי להיבנות כלולאה שבה המשתמש יכול להכניס הודעות באופן אינטראקטיבי בהתאם לכל תגובה שמתקבלת מהמודל:
# 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
הפלט מהדוגמה הזו נראה דומה לזה:
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!
כאשר המשתמש מזין קלט חדש בכל תור, הנתונים שנשלחים למודל כוללים את הודעת מערכת ההוראות , הקלט מהמשתמש והתשובה הקודמת שהתקבלה מהמודל. כך, הקלט החדש מבוסס על ההקשר שמספק המודל עבור הקלט הקודם.
חלופה: שרשור שיחה ידני
אתה יכול לנהל שיחות ידנית על ידי בניית היסטוריית ההודעות בעצמך. גישה זו נותנת לך שליטה רבה יותר על ההקשר שנכלל:
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}")
הגישה הידנית הזו שימושית כאשר צריך:
- התאם אישית אילו הודעות כלולות בהקשר
- יישום גיזום שיחות לניהול מגבלות אסימונים
- אחסון ושחזור היסטוריית שיחות ממסד נתונים
שליפת תגובות קודמות ספציפיות
ממשק ה-API של תגובות שומר היסטוריית תגובות, ומאפשר לך לשלוף תגובות קודמות:
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}")
שיקולי חלון הקשר
הפרמטר previous_response_id מקשר את התגובות יחד, ושומר על הקשר השיחה בין קריאות API מרובות.
חשוב לציין ששמירת היסטוריית שיחות יכולה להגדיל את השימוש בטוקנים. עבור ריצה אחת, חלון ההקשר הפעיל יכול לכלול:
- הוראות מערכת (הוראות, כללי בטיחות)
- ההנחיה הנוכחית שלך
- היסטוריית שיחה (הודעות משתמש + עוזר קודמות)
- סכימות כלים (פונקציות, מפרטי OpenAPI, כלי MCP וכו')
- פלטי כלי (תוצאות חיפוש, פלט מפרש קוד, קבצים)
- זיכרון או מסמכים שנשלפו (מאגרי זיכרון, RAG, חיפוש קבצים)
כל אלה מחוברים, מסומנים, ונשלחים יחד למודל בכל בקשה. ה-SDK עוזר לך לנהל את המצב, אבל הוא לא הופך אוטומטית את השימוש בטוקנים לזול יותר.
יצירת אפליקציות צ'אט רספונסיביות
תגובות ממודל יכולות לקחת זמן להיווצר בהתאם לגורמים כמו המודל הספציפי שבו משתמשים, גודל חלון ההקשר, וגודל ההנחיה. משתמשים עלולים להתעצבן אם האפליקציה נראית "קופאת" בזמן ההמתנה לתגובה, לכן חשוב לקחת בחשבון את התגובה של האפליקציה ביישום שלך.
תגובות סטרימינג
לתגובות ארוכות, אפשר להשתמש בסטרימינג לקבלת פלט בהדרגה - כך שהמשתמש יראה תגובות חלקית שלמות כשהפלט זמין:
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)
אם אתה עוקב אחרי היסטוריית השיחות בזמן השידור, תוכל לקבל את מזהה התגובה כשהשידור מסתיים, כמו זה:
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
שימוש אסינכרוני
ליישומים בעלי ביצועים גבוהים, אפשר להשתמש בלקוח אסינכרוני שמאפשר לבצע קריאות API שאינן חוסמות. שימוש אסינכרוני אידיאלי לבקשות ארוכות טווח או כאשר רוצים לטפל במספר בקשות בו-זמנית מבלי לחסום את היישום שלך. כדי להשתמש בו, ייבא AsyncOpenAI במקום והשתמש OpenAIawait עם כל קריאת API:
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())
סטרימינג אסינכרוני עובד באותו אופן:
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())
באמצעות API Responses דרך Microsoft Foundry SDK, תוכל לבנות יישומי AI שיחתי מתקדמים ששומרים על הקשר, תומכים במספר סוגי מודלים ומספקים חוויית משתמש מגיבה.