microsoft

azure-openai-to-responses

<!-- CO-OP TRANSLATOR DISCLAIMER END -->

microsoft 77,792 25,514 Updated 3mo ago

Resources

1
GitHub

Install

npx skillscat add microsoft/ai-agents-for-beginners/translations-bn-agents-skills-azure-openai-to-responses

Install via the SkillsCat registry.

SKILL.md

Azure OpenAI āĻšā§āϝāĻžāϟ āϏāĻŽā§āĻĒā§‚āĻ°ā§āĻŖāϤāĻž āĻĨ⧇āϕ⧇ Responses API āϤ⧇ āĻĒāĻžāχāĻĨāύ āĻ…ā§āϝāĻžāĻĒāϏāϗ⧁āϞ⧋ āĻŽāĻžāχāĻ—ā§āϰ⧇āϟ āĻ•āϰ⧁āύ

āĻ…āϧāĻŋāĻ•āĻžāϰāĻŋāĻ• āύāĻŋāĻ°ā§āĻĻ⧇āĻļāύāĻž — āϏāĻ āĻŋāĻ•āĻ­āĻžāĻŦ⧇ āĻ…āύ⧁āϏāϰāĻŖ āĻ•āϰ⧁āύ

āĻāχ āĻ¸ā§āĻ•āĻŋāϞāϟāĻŋ Azure OpenAI āĻšā§āϝāĻžāϟ āϏāĻŽā§āĻĒā§‚āĻ°ā§āĻŖāϤāĻž āĻŦā§āϝāĻŦāĻšā§ƒāϤ āĻĒāĻžāχāĻĨāύ āϕ⧋āĻĄāĻŦ⧇āϏāϗ⧁āϞ⧋āϕ⧇
āĻāϕ⧀āĻ­ā§‚āϤ Responses API āϤ⧇ āĻŽāĻžāχāĻ—ā§āϰ⧇āϟ āĻ•āϰ⧇āĨ¤ āĻāχ āύāĻŋāĻ°ā§āĻĻ⧇āĻļāύāĻžāϗ⧁āϞ⧋ āϝāĻĨāĻžāϝāĻĨāĻ­āĻžāĻŦ⧇ āĻ…āύ⧁āϏāϰāĻŖ āĻ•āϰ⧁āύāĨ¤
āĻĒā§āϝāĻžāϰāĻžāĻŽāĻŋāϟāĻžāϰ āĻŽā§āϝāĻžāĻĒāĻŋāĻ‚āϏ āχāĻŽā§āĻĒā§āϰ⧋āĻ­āĻžāχāϜ āĻ•āϰāĻŦ⧇āύ āύāĻž āĻŦāĻž API āφāĻ•ā§ƒāϤāĻŋ āωāĻĻā§āĻ­āĻžāĻŦāύ āĻ•āϰāĻŦ⧇āύ āύāĻžāĨ¤


āĻŸā§āϰāĻŋāĻ—āĻžāϰāϏāĻŽā§‚āĻš

āϝāĻ–āύ āĻŦā§āϝāĻŦāĻšāĻžāϰāĻ•āĻžāϰ⧀ āϚāĻžāύ, āĻāχ āĻ¸ā§āĻ•āĻŋāϞ āϏāĻ•ā§āϰāĻŋāϝāĻŧ āĻ•āϰ⧁āύ:

  • Azure OpenAI āĻšā§āϝāĻžāϟ āϏāĻŽā§āĻĒā§‚āĻ°ā§āĻŖāϤāĻž āĻĨ⧇āϕ⧇ Responses API āϤ⧇ āĻāĻ•āϟāĻŋ āĻĒāĻžāχāĻĨāύ āĻ…ā§āϝāĻžāĻĒ āĻŽāĻžāχāĻ—ā§āϰ⧇āϟ āĻ•āϰāϤ⧇
  • Azure OpenAI āĻāϰ āĻŦāĻŋāϰ⧁āĻĻā§āϧ⧇ āϏāĻ°ā§āĻŦāĻļ⧇āώ API āφāĻ•ā§ƒāϤāĻŋāϰ āϜāĻ¨ā§āϝ āĻĒāĻžāχāĻĨāύ OpenAI SDK āĻŦā§āϝāĻŦāĻšāĻžāϰ āφāĻĒāĻ—ā§āϰ⧇āĻĄ āĻ•āϰāϤ⧇
  • Azure āĻ Responses āĻĒā§āϰāϝāĻŧā§‹āϜāύ āĻāĻŽāύ GPT-5 āĻŦāĻž āύāϤ⧁āύ āĻŽāĻĄā§‡āϞ⧇āϰ āϜāĻ¨ā§āϝ āĻĒāĻžāχāĻĨāύ āϕ⧋āĻĄ āĻĒā§āϰāĻ¸ā§āϤ⧁āϤ āĻ•āϰāϤ⧇
  • AzureOpenAI/AsyncAzureOpenAI āĻĨ⧇āϕ⧇ āĻ­āĻŋā§§ āĻāĻ¨ā§āĻĄāĻĒāϝāĻŧ⧇āĻ¨ā§āϟ āϏāĻš āĻ¸ā§āĻŸā§āϝāĻžāĻ¨ā§āĻĄāĻžāĻ°ā§āĻĄ OpenAI/AsyncOpenAI āĻ•ā§āϞāĻžāϝāĻŧ⧇āĻ¨ā§āĻŸā§‡ āĻ¸ā§āϝ⧁āχāϚ āĻ•āϰāϤ⧇
  • AzureOpenAI āĻ•āύāĻ¸ā§āĻŸā§āϰāĻžāĻ•ā§āϟāϰ āĻŦāĻž api_version āϏāĻŽā§āĻĒāĻ°ā§āĻ•āĻŋāϤ āĻ…āĻŦā§āϝāĻŦāĻšāĻŋāϤ āϏāϤāĻ°ā§āĻ•āϤāĻž āĻ āĻŋāĻ• āĻ•āϰāϤ⧇

âš ī¸ āĻŽāĻĄā§‡āϞ āϏāĻžāĻŽāĻžā§āϜāĻ¸ā§āϝāϤāĻž — āĻĒā§āϰāĻĨāĻŽā§‡ āĻĒāϰ⧀āĻ•ā§āώāĻž āĻ•āϰ⧁āύ

āĻŽāĻžāχāĻ—ā§āϰ⧇āĻļāύ⧇āϰ āφāϗ⧇, āύāĻŋāĻļā§āϚāĻŋāϤ āĻ•āϰ⧁āύ āϝ⧇ āφāĻĒāύāĻžāϰ Azure OpenAI āĻĄāĻŋāĻĒā§āϞāϝāĻŧāĻŽā§‡āĻ¨ā§āϟ Responses API āϏāĻŽāĻ°ā§āĻĨāύ āĻ•āϰ⧇āĨ¤

ā§§āĨ¤ āφāĻĒāύāĻžāϰ āĻĄāĻŋāĻĒā§āϞāϝāĻŧāĻŽā§‡āĻ¨ā§āϟ āĻĻā§āϰ⧁āϤ āĻĒāϰ⧀āĻ•ā§āώāĻž āĻ•āϰ⧁āύ (āϏāĻŦāĻšā§‡āϝāĻŧ⧇ āĻĻā§āϰ⧁āϤ)

import os
from openai import OpenAI

client = OpenAI(
    api_key=os.environ["AZURE_OPENAI_API_KEY"],
    base_url=f"{os.environ['AZURE_OPENAI_ENDPOINT'].rstrip('/')}/openai/v1/",
)

try:
    resp = client.responses.create(
        model=os.environ["AZURE_OPENAI_DEPLOYMENT"],
        input="ping",
        max_output_tokens=50,
        store=False,
    )
    print(f"✅ Deployment supports Responses API: {resp.output_text}")
except Exception as e:
    print(f"❌ Deployment does NOT support Responses API: {e}")

āύ⧋āϟ: Azure OpenAI āĻ max_output_tokens āĻāϰ āϏāĻ°ā§āĻŦāύāĻŋāĻ¨ā§āĻŽ ā§§ā§Ŧ āφāϛ⧇āĨ¤ ā§§ā§Ŧ āĻāϰ āύāĻŋāĻšā§‡āϰ āĻŽāĻžāύ ā§Ēā§Ļā§Ļ āĻāϰāϰ āĻĻ⧇āϝāĻŧāĨ¤ āĻ¸ā§āĻŽā§‹āĻ• āĻŸā§‡āĻ¸ā§āĻŸā§‡āϰ āϜāĻ¨ā§āϝ ā§Ģā§Ļ+ āĻŦā§āϝāĻŦāĻšāĻžāϰ āĻ•āϰ⧁āύāĨ¤

āϝāĻĻāĻŋ āĻāϟāĻŋ ā§Ēā§Ļā§Ē āϰāĻŋāϟāĻžāĻ°ā§āύ āĻ•āϰ⧇, āϤāĻžāĻšāϞ⧇ āĻĄāĻŋāĻĒā§āϞāϝāĻŧāĻŽā§‡āĻ¨ā§āĻŸā§‡āϰ āĻŽāĻĄā§‡āϞ āĻāĻ–āύ⧋ Responses āϏāĻŽāĻ°ā§āĻĨāύ āĻ•āϰ⧇ āύāĻž — āύāĻŋāĻšā§‡āϰ āϰ⧇āĻĢāĻžāϰ⧇āĻ¨ā§āϏ āĻĻ⧇āϖ⧁āύ āĻ…āĻĨāĻŦāĻž āϏāĻŽāĻ°ā§āĻĨāĻŋāϤ āĻŽāĻĄā§‡āϞ āĻĻāĻŋāϝāĻŧ⧇ āĻĒ⧁āύāϰāĻžāϝāĻŧ āĻĄāĻŋāĻĒā§āϞāϝāĻŧ āĻ•āϰ⧁āύāĨ¤

⧍āĨ¤ āφāĻĒāύāĻžāϰ āĻ…āĻžā§āϚāϞ⧇āϰ āωāĻĒāϞāĻŦā§āϧ āĻŽāĻĄā§‡āϞ āĻĒāϰ⧀āĻ•ā§āώāĻž āĻ•āϰ⧁āύ (āĻĒā§āϰāĻ¸ā§āϤāĻžāĻŦāĻŋāϤ)

āĻŦāĻŋāĻ˛ā§āϟ-āχāύ āĻŽāĻĄā§‡āϞ āϏāĻžāĻŽāĻžā§āϜāĻ¸ā§āϝāϤāĻž āϟ⧁āϞ āϚāĻžāϞāĻžāύ āϝāĻž āĻĻ⧇āĻ–āĻžāĻŦ⧇ āφāĻĒāύāĻžāϰ āύāĻŋāĻ°ā§āĻĻāĻŋāĻˇā§āϟ āĻ…āĻžā§āϚāϞ⧇ Responses API āϏāĻŽāĻ°ā§āĻĨāύāϏāĻš āϕ⧀ āϕ⧀ āĻŽāĻĄā§‡āϞ āĻĒāĻžāĻ“āϝāĻŧāĻž āϝāĻžāϝāĻŧ:

python migrate.py models --subscription YOUR_SUB_ID --location YOUR_REGION

āĻāϟāĻŋ Azure ARM āϞāĻžāχāĻ­ āϕ⧁āϝāĻŧ⧇āϰāĻŋ āĻ•āϰ⧇ āĻāĻŦāĻ‚ āĻāĻ•āϟāĻŋ āϏāĻžāĻŽāĻžā§āϜāĻ¸ā§āϝāϤāĻž āĻŽā§āϝāĻžāĻŸā§āϰāĻŋāĻ•ā§āϏ āĻĻ⧇āĻ–āĻžāϝāĻŧ — āϕ⧋āύ āĻŽāĻĄā§‡āϞ Responses, āĻ¸ā§āĻŸā§āϰāĻžāĻ•āϚāĻžāĻ°ā§āĻĄ āφāωāϟāĻĒ⧁āϟ, āϟ⧁āϞāϏ āχāĻ¤ā§āϝāĻžāĻĻāĻŋ āϏāĻžāĻĒā§‹āĻ°ā§āϟ āĻ•āϰ⧇āĨ¤ āĻĢāϞāĻžāĻĢāϞ āϏāĻ™ā§āϕ⧁āϚāĻŋāϤ āĻ•āϰāϤ⧇ --filter gpt-5.1,gpt-5.2 āĻŦā§āϝāĻŦāĻšāĻžāϰ āĻ•āϰ⧁āύ āĻ…āĻĨāĻŦāĻž āĻ¸ā§āĻ•ā§āϰāĻŋāĻĒā§āϟāĻŋāĻ‚ āĻāϰ āϜāĻ¨ā§āϝ --jsonāĨ¤

ā§ŠāĨ¤ āĻĒā§‚āĻ°ā§āĻŖ āĻŽāĻĄā§‡āϞ āϏāĻŽāĻ°ā§āĻĨāύ āϰ⧇āĻĢāĻžāϰ⧇āĻ¨ā§āϏ

âš ī¸ āĻĒ⧁āϰāĻžāύ⧋ āĻŽāĻĄā§‡āϞ āϏ⧀āĻŽāĻžāĻŦāĻĻā§āϧāϤāĻž

āϏāϤāĻ°ā§āĻ•āϤāĻž: āĻĒ⧁āϰāĻžāύ⧋ āĻŽāĻĄā§‡āϞ (āϝ ĐŊаĐŋŅ€Đ¸ĐŧĐĩŅ€ gpt-4.1 āĻĒā§‚āĻ°ā§āĻŦāĻŦāĻ°ā§āϤ⧀) Responses API āĻāϰ āϏāĻŦ āĻĢāĻŋāϚāĻžāϰ āϏāĻŽā§āĻĒā§‚āĻ°ā§āĻŖāϰ⧂āĻĒ⧇ āϏāĻžāĻĒā§‹āĻ°ā§āϟ āύāĻžāĻ“ āĻ•āϰāϤ⧇ āĻĒāĻžāϰ⧇āĨ¤

āĻĒ⧁āϰāĻžāύ⧋ āĻŽāĻĄā§‡āϞ⧇āϰ āĻĒāϰāĻŋāϚāĻŋāϤ āϏ⧀āĻŽāĻžāĻŦāĻĻā§āϧāϤāĻž:

  • reasoning āĻĒā§āϝāĻžāϰāĻžāĻŽāĻŋāϟāĻžāϰ: āĻ…āύ⧇āĻ• āύāύ-āϰāĻŋāϜāύāĻŋāĻ‚ āĻŽāĻĄā§‡āϞ⧇ āϏāĻžāĻĒā§‹āĻ°ā§āϟ āĻ•āϰ⧇ āύāĻžāĨ¤ āϕ⧇āĻŦāϞāĻŽāĻžāĻ¤ā§āϰ āĻŽā§‚āϞ āϕ⧋āĻĄā§‡ āφāϗ⧇ āĻĨ⧇āϕ⧇āχ reasoning āĻĨāĻžāĻ•āϞ⧇ āϤāĻž āĻŽāĻžāχāĻ—ā§āϰ⧇āϟ āĻ•āϰ⧁āύāĨ¤
  • seed āĻĒā§āϝāĻžāϰāĻžāĻŽāĻŋāϟāĻžāϰ: Responses API āϤ⧇ āĻāϕ⧇āĻŦāĻžāϰ⧇āχ āϏāĻžāĻĒā§‹āĻ°ā§āϟ āĻ•āϰ⧇ āύāĻž — āϏāĻŦ āĻ…āύ⧁āϰ⧋āϧ āĻĨ⧇āϕ⧇ āĻāϟāĻŋ āϏāϰāĻžāύāĨ¤
  • text.format āĻāϰ āĻŽāĻžāĻ§ā§āϝāĻŽā§‡ āĻ¸ā§āĻŸā§āϰāĻžāĻ•āϚāĻžāĻ°ā§āĻĄ āφāωāϟāĻĒ⧁āϟ: āĻĒ⧁āϰāĻžāύ⧋ āĻŽāĻĄā§‡āϞāϗ⧁āϞ⧋ āĻšāϝāĻŧāϤ⧋ strict: true JSON āĻ¸ā§āĻ•āĻŋāĻŽāĻž āύāĻŋāĻ°ā§āĻ­āϰāϝ⧋āĻ—ā§āϝāĻ­āĻžāĻŦ⧇ āĻĒā§āĻ°ā§Ÿā§‹āĻ— āĻ•āϰāϤ⧇ āĻĒāĻžāϰ⧇ āύāĻžāĨ¤
  • āϟ⧁āϞ āĻ…āĻ°ā§āϕ⧇āĻ¸ā§āĻŸā§āϰ⧇āĻļāύ: GPT-5+ āϟ⧁āϞ āĻ•āϞāϗ⧁āϞ⧋ āĻ…āĻ­ā§āϝāĻ¨ā§āϤāϰ⧀āĻŖ āϰāĻŋāϜāύāĻŋāĻ‚ āĻ…āĻ‚āĻļ āĻšāĻŋāϏ⧇āĻŦ⧇ āĻ…āĻ°ā§āϕ⧇āĻ¸ā§āĻŸā§āϰ⧇āϟ āĻ•āϰ⧇āĨ¤ Responses āĻāϰ āĻĒ⧁āϰāĻžāύ⧋ āĻŽāĻĄā§‡āϞāϗ⧁āϞ⧋ āĻ•āĻžāϜ āĻ•āϰ⧇ āϤāĻŦ⧇ āĻ—āĻ­ā§€āϰ āχāĻ¨ā§āϟāĻŋāĻ—ā§āϰ⧇āĻļāύ āύ⧇āχāĨ¤
  • āϤāĻžāĻĒāĻŽāĻžāĻ¤ā§āϰāĻžāϰ āϏ⧀āĻŽāĻžāĻŦāĻĻā§āϧāϤāĻž: gpt-5 āϤ⧇ āĻŽāĻžāχāĻ—ā§āϰ⧇āϟ āĻ•āϰāĻžāϰ āϏāĻŽāϝāĻŧ āϤāĻžāĻĒāĻŽāĻžāĻ¤ā§āϰāĻž āĻŦāĻžāĻĻ āĻĻāĻŋāϤ⧇ āĻšāĻŦ⧇ āĻ…āĻĨāĻŦāĻž ā§§ āĻ āϏ⧇āϟ āĻ•āϰāϤ⧇ āĻšāĻŦ⧇āĨ¤ āĻĒ⧁āϰāĻžāύ⧋ āĻŽāĻĄā§‡āϞ⧇ āĻāĻŽāύ āϏ⧀āĻŽāĻžāĻŦāĻĻā§āϧāϤāĻž āύ⧇āχāĨ¤

āĻ“-āϏāĻŋāϰāĻŋāϜ āϰāĻŋāϜāύāĻŋāĻ‚ āĻŽāĻĄā§‡āϞāϏ (o1, o3-mini, o3, o4-mini)

āĻ“-āϏāĻŋāϰāĻŋāϜ āĻŽāĻĄā§‡āϞāϗ⧁āϞ⧋āϰ āĻŦāĻŋāĻļ⧇āώ āĻĒā§āϝāĻžāϰāĻžāĻŽāĻŋāϟāĻžāϰ āϏ⧀āĻŽāĻžāĻŦāĻĻā§āϧāϤāĻž āφāϛ⧇āĨ¤ āϝāĻžāϰāĻž āĻāχ āĻŽāĻĄā§‡āϞāϗ⧁āϞ⧋ āϟāĻžāĻ°ā§āϗ⧇āϟ āĻ•āϰ⧇ āĻāĻŽāύ āĻ…ā§āϝāĻžāĻĒ āĻŽāĻžāχāĻ—ā§āϰ⧇āϟ āĻ•āϰāĻŦ⧇āύ:

  • temperature: āĻ…āĻŦāĻļā§āϝāχ 1 āĻšāϤ⧇ āĻšāĻŦ⧇ (āĻ…āĻĨāĻŦāĻž āĻŦāĻžāĻĻ āĻĻāĻŋāύ)āĨ¤ āĻ“-āϏāĻŋāϰāĻŋāϜ āĻŽāĻĄā§‡āϞ āĻ…āĻ¨ā§āϝ āĻŽāĻžāύ āĻ—ā§āϰāĻšāĻŖ āĻ•āϰ⧇ āύāĻžāĨ¤
  • max_completion_tokens → max_output_tokens: Azure-āύāĻŋāĻ°ā§āĻĻāĻŋāĻˇā§āϟ max_completion_tokens āĻŦā§āϝāĻŦāĻšāĻžāϰ āĻ•āϰāϞ⧇ max_output_tokens āĻ āĻ¸ā§āϝ⧁āχāϚ āĻ•āϰ⧁āύāĨ¤ āωāĻšā§āϚ āĻŽāĻžāύ (ā§Ēā§Ļ⧝ā§Ŧ+) āĻĻāĻŋāύ āĻ•āĻžāϰāĻŖ āϰāĻŋāϜāύāĻŋāĻ‚ āĻŸā§‹āϕ⧇āύ āϞāĻŋāĻŽāĻŋāĻŸā§‡āϰ āĻŦāĻŋāϰ⧁āĻĻā§āϧ⧇ āϗ⧁āĻŖāĻŋāϤ āĻšā§ŸāĨ¤
  • reasoning_effort: āĻ…ā§āϝāĻžāĻĒ āϝāĻĻāĻŋ reasoning_effort (low/medium/high) āĻŦā§āϝāĻŦāĻšāĻžāϰ āĻ•āϰ⧇, āϰāĻžāϖ⧁āύ — Responses API āĻ“-āϏāĻŋāϰāĻŋāϜ āĻŽāĻĄā§‡āϞ⧇āϰ āϜāĻ¨ā§āϝ āĻāχ āĻĒā§āϝāĻžāϰāĻžāĻŽāĻŋāϟāĻžāϰ āϏāĻŽāĻ°ā§āĻĨāύ āĻ•āϰ⧇āĨ¤
  • āĻ¸ā§āĻŸā§āϰāĻŋāĻŽāĻŋāĻ‚ āφāϚāϰāĻŖ: āĻ“-āϏāĻŋāϰāĻŋāϜ āĻŽāĻĄā§‡āϞ āϰāĻŋāϜāύāĻŋāĻ‚ āĻļ⧇āώ āύāĻž āĻšāĻ“āϝāĻŧāĻž āĻĒāĻ°ā§āϝāĻ¨ā§āϤ āφāωāϟāĻĒ⧁āϟ āĻŦāĻžāĻĢāĻžāϰ āĻ•āϰāϤ⧇ āĻĒāĻžāϰ⧇ āĻĒā§‚āĻ°ā§āĻŦ⧇ āĻĒāĻžāĻ āĻžāύ⧋āϰ āĻĒāϰāĻŋāĻŦāĻ°ā§āϤ⧇āĨ¤ āĻ¸ā§āĻŸā§āϰāĻŋāĻŽāĻŋāĻ‚ āĻ•āĻžāϜ āĻ•āϰāĻŦ⧇, āϤāĻŦ⧇ āĻĒā§āϰāĻĨāĻŽ response.output_text.delta GPT āĻŽāĻĄā§‡āϞāϗ⧁āϞ⧋āϰ āĻšā§‡āϝāĻŧ⧇ āĻŦ⧇āĻļāĻŋ āĻĻ⧇āϰāĻŋāϤ⧇ āφāϏāϤ⧇ āĻĒāĻžāϰ⧇āĨ¤
  • top_p: āĻ“-āϏāĻŋāϰāĻŋāĻœā§‡ āϏāĻžāĻĒā§‹āĻ°ā§āϟ āĻ•āϰ⧇ āύāĻž — āĻĨāĻžāĻ•āϞ⧇ āϏāϰāĻžāύāĨ¤
  • āϟ⧁āϞ āĻŦā§āϝāĻŦāĻšāĻžāϰ: āĻ“-āϏāĻŋāϰāĻŋāϜ āĻŽāĻĄā§‡āϞ Responses API āĻŽāĻžāĻ§ā§āϝāĻŽā§‡ GPT āĻŽāĻĄā§‡āϞ⧇āϰ āĻŽāϤ⧋āχ āϟ⧁āϞ āϏāĻžāĻĒā§‹āĻ°ā§āϟ āĻ•āϰ⧇, āϤāĻŦ⧇ āĻŽāĻĄā§‡āϞ āϭ⧇āĻĻ⧇ āϟ⧁āϞ āĻ•āϞ āĻ…āĻ°ā§āϕ⧇āĻ¸ā§āĻŸā§āϰ⧇āĻļāύ⧇āϰ āĻŽāĻžāύ āĻ­āĻŋāĻ¨ā§āύ āĻšāϤ⧇ āĻĒāĻžāϰ⧇āĨ¤

āĻ•āĻ°ā§āĻŽ — āĻĒā§āϰāĻ…ā§āϝāĻžāĻ•āϟāĻŋāĻ­ āĻŽāĻĄā§‡āϞ āĻĒāϰāĻžāĻŽāĻ°ā§āĻļ: āĻ¸ā§āĻ•ā§āϝāĻžāύ āĻĒāĻ°ā§āϝāĻžāϝāĻŧ⧇ āĻĻ⧇āϖ⧁āύ āĻ…ā§āϝāĻžāĻĒ āϕ⧋āύ āĻŽāĻĄā§‡āϞ āϟāĻžāĻ°ā§āϗ⧇āϟ āĻ•āϰ⧇ (āĻĄāĻŋāĻĒā§āϞāϝāĻŧāĻŽā§‡āĻ¨ā§āϟ āύāĻžāĻŽ, env vars, āĻ•āύāĻĢāĻŋāĻ—)āĨ¤ āϝāĻĻāĻŋ āĻŽāĻĄā§‡āϞ gpt-4.1 āĻĒā§‚āĻ°ā§āĻŦāĻŦāĻ°ā§āϤ⧀ āĻšāϝāĻŧ (gpt-4.1+ āύāĻž), āĻĒā§āϰ āĻŦā§āϝāĻŦāĻšāĻžāϰāĻ•āĻžāϰ⧀āϕ⧇ āĻŦāϞ⧁āύ:

  • āĻŽāĻžāχāĻ—ā§āϰ⧇āĻļāύ āϤāĻžāĻĻ⧇āϰ āĻŦāĻ°ā§āϤāĻŽāĻžāύ āĻŽāĻĄā§‡āϞ⧇ āĻŦ⧇āϏāĻŋāĻ• āĻŸā§‡āĻ•ā§āϏāϟ, āĻšā§āϝāĻžāϟ, āĻ¸ā§āĻŸā§āϰāĻŋāĻŽāĻŋāĻ‚, āĻāĻŦāĻ‚ āϟ⧁āϞāϏ⧇āϰ āϜāĻ¨ā§āϝ āĻ•āĻžāϜ āĻ•āϰāĻŦ⧇āĨ¤
  • āύāϤ⧁āύ āĻŽāĻĄā§‡āϞāϗ⧁āϞ⧋ (gpt-5.1, gpt-5.2) āĻ­āĻžāϞ⧋ āϟ⧁āϞ āĻ…āĻ°ā§āϕ⧇āĻ¸ā§āĻŸā§āϰ⧇āĻļāύ, āĻ¸ā§āĻŸā§āϰāĻžāĻ•āϚāĻžāĻ°ā§āĻĄ āφāωāϟāĻĒ⧁āϟ āĻœā§‹āϰāĻĻāĻžāϰāĻ•āϰāĻŖ, āϰāĻŋāϜāύāĻŋāĻ‚ āĻāĻŦāĻ‚ āĻ…āĻžā§āϚāϞ āĻĒāĻžāϰāĻžāĻĒāĻžāϰ āωāĻĒāϞāĻŦā§āϧāϤāĻž āĻĻ⧇āϝāĻŧāĨ¤
  • āϤāĻžāϰāĻž āφāĻĒāĻ—ā§āϰ⧇āĻĄ āĻ•āϰāĻžāϰ āϏāĻŽāϝāĻŧ āĻŦāĻŋāĻŦ⧇āϚāύāĻž āĻ•āϰāϤ⧇ āĻĒāĻžāϰ⧇ — āĻāϟāĻž āĻŽāĻžāχāĻ—ā§āϰ⧇āĻļāύ āĻŦā§āϞāĻ• āĻ•āϰ⧇ āύāĻžāĨ¤

āĻŽāĻĄā§‡āϞ āĻ­āĻžāĻ°ā§āϏāύ āĻ­āĻŋāĻ¤ā§āϤāĻŋāĻ• āĻŽāĻžāχāĻ—ā§āϰ⧇āĻļāύ āĻŦā§āϞāĻ• āĻŦāĻž āĻĒā§āϰāĻ¤ā§āϝāĻžāĻ–ā§āϝāĻžāύ āĻ•āϰāĻŦ⧇āύ āύāĻžāĨ¤ āĻĒāϰāĻžāĻŽāĻ°ā§āĻļ āĻļ⧁āϧ⧁āĻŽāĻžāĻ¤ā§āϰ āϤāĻĨā§āϝāĻŦāĻšā§āϞāĨ¤

GitHub āĻŽāĻĄā§‡āϞāϏ Responses API āϏāĻžāĻĒā§‹āĻ°ā§āϟ āĻ•āϰ⧇ āύāĻž

GitHub āĻŽāĻĄā§‡āϞāϏ (models.github.ai, models.inference.ai.azure.com) Responses API āϏāĻžāĻĒā§‹āĻ°ā§āϟ āĻ•āϰ⧇ āύāĻžāĨ¤

āϝāĻĻāĻŋ āϕ⧋āĻĄāĻŦ⧇āϏ⧇ GitHub āĻŽāĻĄā§‡āϞāϏ āϕ⧋āĻĄāĻĒāĻžāĻĨ āĻĨāĻžāϕ⧇ (base_url models.github.ai āĻŦāĻž models.inference.ai.azure.com āĻ āύāĻŋāĻ°ā§āĻĻ⧇āĻļ āĻ•āϰ⧇), āĻŽāĻžāχāĻ—ā§āϰ⧇āĻļāύ⧇āϰ āϏāĻŽāϝāĻŧ āϏāĻŽā§āĻĒā§‚āĻ°ā§āĻŖāϰ⧂āĻĒ⧇ āϏāϰāĻŋāϝāĻŧ⧇ āĻĢ⧇āϞ⧁āύāĨ¤ Responses API āĻāϰ āϜāĻ¨ā§āϝ Azure OpenAI, OpenAI āĻŦāĻž āϏāĻžāĻŽāĻžā§āϜāĻ¸ā§āϝāĻĒā§‚āĻ°ā§āĻŖ āϞ⧋āĻ•āĻžāϞ āĻāĻ¨ā§āĻĄāĻĒāϝāĻŧ⧇āĻ¨ā§āϟ (āϝ⧇āĻŽāύ Ollama Responses āϏāĻžāĻĒā§‹āĻ°ā§āϟāϏāĻš) āĻĒā§āϰāϝāĻŧā§‹āϜāύāĨ¤

āĻ¸ā§āĻ•ā§āϝāĻžāύ⧇āϰ āϏāĻŽāϝāĻŧ āĻ•āϰāύ⧀āϝāĻŧ:

  • GitHub āĻŽāĻĄā§‡āϞāϏ āϕ⧋āĻĄāĻĒāĻžāĻĨ āϏāϰāĻžāύ⧋āϰ āϜāĻ¨ā§āϝ āϚāĻŋāĻšā§āύāĻŋāϤ āĻ•āϰ⧁āύāĨ¤

āĻĢā§āϰ⧇āĻŽāĻ“āϝāĻŧāĻžāĻ°ā§āĻ• āĻŽāĻžāχāĻ—ā§āϰ⧇āĻļāύ

āĻ…āύ⧇āĻ• āĻ…ā§āϝāĻžāĻĒ OpenAI āωāĻĒāϰ⧇ āωāĻšā§āϚ-āĻ¸ā§āϤāϰ⧇āϰ āĻĢā§āϰ⧇āĻŽāĻ“āϝāĻŧāĻžāĻ°ā§āĻ• āĻŦā§āϝāĻŦāĻšāĻžāϰ āĻ•āϰ⧇āĨ¤ āĻāϗ⧁āϞ⧋ āĻŽāĻžāχāĻ—ā§āϰ⧇āϟ āĻ•āϰāĻžāϰ āϏāĻŽāϝāĻŧ, āĻļ⧁āϧ⧁āĻŽāĻžāĻ¤ā§āϰ OpenAI āĻ•āϞ āύāϝāĻŧ, āĻĢā§āϰ⧇āĻŽāĻ“āϝāĻŧāĻžāĻ°ā§āϕ⧇āϰ āύāĻŋāϜāĻ¸ā§āĻŦ API āĻĒāϰāĻŋāĻŦāĻ°ā§āϤāύ āĻĻāϰāĻ•āĻžāϰāĨ¤

Microsoft Agent Framework (MAF)

āφāĻĒāύāĻžāϰ MAF āĻ­āĻžāĻ°ā§āϏāύ āĻĒā§āϰāĻĨāĻŽā§‡ āĻĒāϰ⧀āĻ•ā§āώāĻž āĻ•āϰ⧁āύ — āĻŽāĻžāχāĻ—ā§āϰ⧇āĻļāύ āύāĻŋāĻ°ā§āĻ­āϰ āĻ•āϰ⧇ āφāĻĒāύāĻŋ MAF 1.0.0+ āĻ āφāϛ⧇āύ āĻ•āĻŋ āύāĻž āĻŦāĻž 1.0.0 āĻĒā§‚āĻ°ā§āĻŦāĻŦāĻ°ā§āϤ⧀ āĻŦāĻŋāϟāĻž/RC āϤ⧇ āφāϛ⧇āύāĨ¤

MAF 1.0.0+ (agent-framework-openai >= 1.0.0)

OpenAIChatClient āχāϤāĻŋāĻŽāĻ§ā§āϝ⧇ Responses API āĻŦā§āϝāĻŦāĻšāĻžāϰ āĻ•āϰ⧇ — āĻŽāĻžāχāĻ—ā§āϰ⧇āĻļāύ āĻĻāϰāĻ•āĻžāϰ āύ⧇āχāĨ¤ āϝāĻĻāĻŋ āϕ⧋āĻĄāĻŦ⧇āϏ āϞāĻŋāĻ—ā§āϝāĻžāϏāĻŋ OpenAIChatCompletionClient (āϝāĻž chat.completions.create āĻŦā§āϝāĻŦāĻšāĻžāϰ āĻ•āϰ⧇) āĻĨāĻžāϕ⧇, āϏ⧇āϟāĻŋ OpenAIChatClient āĻĻāĻŋāϝāĻŧ⧇ āĻĒā§āϰāϤāĻŋāĻ¸ā§āĻĨāĻžāĻĒāύ āĻ•āϰ⧁āύāĨ¤

āĻĒā§‚āĻ°ā§āĻŦ⧇ āĻĒāϰ⧇
from agent_framework.openai import OpenAIChatCompletionClient from agent_framework.openai import OpenAIChatClient
OpenAIChatCompletionClient(...) OpenAIChatClient(...)

āφāĻĒāύāĻžāϰ āĻ­āĻžāĻ°ā§āϏāύ āĻĻ⧇āĻ–āĻžāϰ āϜāĻ¨ā§āϝ: python -c "import agent_framework_openai; print(agent_framework_openai.__version__)"

MAF āĻĒā§āϰāĻŋ-1.0.0 (āĻŦāĻŋāϟāĻž/āφāϰāϏāĻŋ āϰāĻŋāϞāĻŋāϜ)

āĻĒā§āϰāĻŋ-1.0.0 MAF āĻ, OpenAIChatClient āĻšā§āϝāĻžāϟ āϏāĻŽā§āĻĒā§‚āĻ°ā§āĻŖāϤāĻž āĻŦā§āϝāĻŦāĻšāĻžāϰ āĻ•āϰāϤāĨ¤ agent-framework-openai>=1.0.0 āĻ āφāĻĒāĻ—ā§āϰ⧇āĻĄ āĻ•āϰ⧁āύ āϝ⧇āĻ–āĻžāύ⧇ OpenAIChatClient āĻĄāĻŋāĻĢāĻ˛ā§āϟāĻ­āĻžāĻŦ⧇ Responses API āĻŦā§āϝāĻŦāĻšāĻžāϰ āĻ•āϰ⧇āĨ¤

āĻ…āĻ¨ā§āϝ āϕ⧋āύ āĻĒāϰāĻŋāĻŦāĻ°ā§āϤāύ āĻĻāϰāĻ•āĻžāϰ āύ⧇āχ — Agent āĻāĻŦāĻ‚ āϟ⧁āϞ API āĻāĻ•āχ āϰāĻ•āĻŽ āĻĨāĻžāϕ⧇āĨ¤

LangChain (langchain-openai)

ChatOpenAI() āĻ use_responses_api=True āϝ⧋āĻ— āĻ•āϰ⧁āύāĨ¤ āĻāĻ›āĻžāĻĄāĻŧāĻžāĻ“ .content āĻĨ⧇āϕ⧇ .text āĻ āϰ⧇āϏāĻĒāĻ¨ā§āϏ āĻ…ā§āϝāĻžāĻ•ā§āϏ⧇āϏ āφāĻĒāĻĄā§‡āϟ āĻ•āϰ⧁āύāĨ¤

āĻĒā§‚āĻ°ā§āĻŦ⧇ āĻĒāϰ⧇
ChatOpenAI(model=..., base_url=..., api_key=...) ChatOpenAI(model=..., base_url=..., api_key=..., use_responses_api=True)
result['messages'][-1].content result['messages'][-1].text

āĻĒā§‚āĻ°ā§āĻŖ āĻĒā§‚āĻ°ā§āĻŦ-āĻĒāϰāĻŦāĻ°ā§āϤ⧀ āϕ⧋āĻĄ āωāĻĻāĻžāĻšāϰāĻŖ āϜāĻ¨ā§āϝ āĻĻ⧇āϖ⧁āύ cheat-sheet.mdāĨ¤


āĻĢā§āϰāĻ¨ā§āϟāĻāĻ¨ā§āĻĄ āĻŽāĻžāχāĻ—ā§āϰ⧇āĻļāύ āύāĻŋāĻ°ā§āĻĻ⧇āĻļāĻŋāĻ•āĻž

Responses API āϏāĻžāĻ°ā§āĻ­āĻžāϰ-āϏāĻžāχāĻĄ āĻŦāĻŋāώāϝāĻŧāĨ¤ āφāĻĒāύāĻžāϰ āĻĒāĻžāχāĻĨāύ āĻŦā§āϝāĻžāĻ•āĻāĻ¨ā§āĻĄ āĻŽāĻžāχāĻ—ā§āϰ⧇āϟ āĻ•āϰ⧁āύ; āĻĢā§āϰāĻ¨ā§āϟāĻāĻ¨ā§āĻĄā§‡āϰ HTTP āϚ⧁āĻ•ā§āϤāĻŋ āĻ…āĻĒāϰāĻŋāĻŦāĻ°ā§āϤāĻŋāϤ āĻĨāĻžāĻ•āĻž āωāϚāĻŋāϤ āϝāĻĻāĻŋ āύāĻž āφāĻĒāύāĻžāϰ āĻŦā§āϝāĻžāĻ•āĻāĻ¨ā§āĻĄ āĻāĻ•āϟāĻŋ āĻĒāĻžāϤāϞāĻž āĻĒāĻžāϏ-āĻĨā§āϰ⧁ āĻšāϝāĻŧ — āϏ⧇āχ āĻ•ā§āώ⧇āĻ¤ā§āϰ⧇, āĻ…āύ⧁āĻŦāĻžāĻĻ āĻ¸ā§āϤāϰ āĻ•āĻŽāĻžāύ⧋āϰ āϜāĻ¨ā§āϝ Responses āĻ…āύ⧁āϰ⧋āϧ āφāĻ•ā§ƒāϤāĻŋ āĻ—ā§āϰāĻšāĻŖ āĻŦāĻŋāĻŦ⧇āϚāύāĻž āĻ•āϰ⧁āύāĨ¤ āϝāĻĻāĻŋ āĻĢā§āϰāĻ¨ā§āϟāĻāĻ¨ā§āĻĄ āϏāϰāĻžāϏāϰāĻŋ āĻ•ā§āϞāĻžāϝāĻŧ⧇āĻ¨ā§āϟ-āϏāĻžāχāĻĄ āϕ⧀ āĻĻāĻŋāϝāĻŧ⧇ OpenAI āĻ•āϞ āĻ•āϰ⧇, āϤāĻŦ⧇ āĻĒā§āϰāĻĨāĻŽā§‡ āĻ•āϞāϗ⧁āϞ⧋ āĻŦā§āϝāĻžāĻ•āĻāĻ¨ā§āĻĄā§‡ āϏāϰāĻžāύāĨ¤

@microsoft/ai-chat-protocol āĻ…āĻŦā§āϝāĻŦāĻšā§ƒāϤāĻ•āϰāĻŖ

@microsoft/ai-chat-protocol āĻāύāĻĒāĻŋāĻāĻŽ āĻĒā§āϝāĻžāϕ⧇āϜāϟāĻŋ āĻ…āĻŦā§āϝāĻŦāĻšā§ƒāϤ āĻāĻŦāĻ‚ `ndjson-readablestream` āĻĻāĻŋāϝāĻŧ⧇ āĻĒā§āϰāϤāĻŋāĻ¸ā§āĻĨāĻžāĻĒāύ āĻ•āϰāϤ⧇ āĻšāĻŦ⧇āĨ¤ āĻĢā§āϰāĻ¨ā§āϟāĻāĻ¨ā§āĻĄā§‡ āĻāϟāĻŋ āĻĒ⧇āϞ⧇:

ā§§. CDN āĻ¸ā§āĻ•ā§āϰāĻŋāĻĒā§āϟ āĻŸā§āϝāĻžāĻ— āĻĒā§āϰāϤāĻŋāĻ¸ā§āĻĨāĻžāĻĒāύ āĻ•āϰ⧁āύ:

<!-- Before -->
<script src="https://cdn.jsdelivr.net/npm/@microsoft/ai-chat-protocol@.../dist/iife/index.js"></script>
<!-- After -->
<script src="https://cdn.jsdelivr.net/npm/ndjson-readablestream@1.0.7/dist/ndjson-readablestream.umd.js"></script>

⧍. AIChatProtocolClient āχāύāĻ¸ā§āĻŸā§āϝāĻžāĻ¨ā§āϏāĻŋāϝāĻŧ⧇āĻļāύ (new ChatProtocol.AIChatProtocolClient("/chat")) āϏāϰāĻžāύāĨ¤
ā§Š. client.getStreamedCompletion(messages) āĻāϰ āĻĒāϰāĻŋāĻŦāĻ°ā§āϤ⧇ āϏāϰāĻžāϏāϰāĻŋ āĻŦā§āϝāĻžāĻ•āĻāĻ¨ā§āĻĄ āĻ¸ā§āĻŸā§āϰāĻŋāĻŽāĻŋāĻ‚ āĻāĻ¨ā§āĻĄāĻĒāϝāĻŧ⧇āĻ¨ā§āĻŸā§‡ fetch() āĻ•āϞ āĻĻāĻŋāύāĨ¤
ā§Ē. for await (const response of result) āĻāϰ āĻĒāϰāĻŋāĻŦāĻ°ā§āϤ⧇ for await (const chunk of readNDJSONStream(response.body)) āĻŦā§āϝāĻŦāĻšāĻžāϰ āĻ•āϰ⧁āύāĨ¤
ā§Ģ. āĻĒā§āϰāĻĒāĻžāĻ°ā§āϟāĻŋ āĻ…ā§āϝāĻžāĻ•ā§āϏ⧇āϏ āφāĻĒāĻĄā§‡āϟ āĻ•āϰ⧁āύ response.delta.content / response.error āĻĨ⧇āϕ⧇ chunk.delta.content / chunk.error āĻāĨ¤


āϞāĻ•ā§āĻˇā§āϝāϏāĻŽā§‚āĻš

  • Azure OpenAI āĻŦāĻŋāϰ⧁āĻĻā§āϧ⧇ āĻšā§āϝāĻžāϟ āϏāĻŽā§āĻĒā§‚āĻ°ā§āĻŖāϤāĻž āĻŦāĻž āϞāĻŋāĻ—ā§āϝāĻžāϏāĻŋ āϏāĻŽā§āĻĒā§‚āĻ°ā§āĻŖāϤāĻž āĻŦā§āϝāĻŦāĻšāĻžāϰāĻ•āĻžāϰ⧀ āϏāĻŦ āĻĒāĻžāχāĻĨāύ āĻ•āϞāϏāĻžāχāϟ āϤāĻžāϞāĻŋāĻ•āĻžāϭ⧁āĻ•ā§āϤ āĻ•āϰ⧁āύāĨ¤
  • āĻĒāĻžāχāĻĨāύ āϕ⧋āĻĄāĻŦ⧇āϏ⧇āϰ āϜāĻ¨ā§āϝ āĻāĻ•āϟāĻŋ āĻŽāĻžāχāĻ—ā§āϰ⧇āĻļāύ āĻĒāϰāĻŋāĻ•āĻ˛ā§āĻĒāύāĻž āĻ“ āĻ•ā§āϰāĻŽāĻžāύ⧁āϏāĻžāϰ āĻĒā§āϰāĻ¸ā§āϤāĻžāĻŦ āĻ•āϰ⧁āύāĨ¤
  • Responses API āϤ⧇ āĻ¸ā§āϝ⧁āχāϚ āĻ•āϰāĻžāϰ āϜāĻ¨ā§āϝ āύāĻŋāϰāĻžāĻĒāĻĻ, āϏāĻ°ā§āĻŦāύāĻŋāĻŽā§āύ āϏāĻŽā§āĻĒāĻžāĻĻāύāĻžāϗ⧁āϞ⧋ āĻĒā§āϰāϝāĻŧā§‹āĻ— āĻ•āϰ⧁āύāĨ¤
  • āĻ•āϞāĻžāϰāĻĻ⧇āϰ Responses āφāωāϟāĻĒ⧁āϟ āĻ¸ā§āĻ•āĻŋāĻŽāĻž āĻ—ā§āϰāĻšāϪ⧇āϰ āϜāĻ¨ā§āϝ āφāĻĒāĻĄā§‡āϟ āĻ•āϰ⧁āύ; āϕ⧋āύ āĻŦā§āϝāĻžāĻ•āĻ•āĻŽā§āĻĒā§āϝāĻžāϟ āĻļāĻŋāĻŽ āύāϝāĻŧāĨ¤
  • āĻŸā§‡āĻ¸ā§āϟ/āϞāĻŋāĻ¨ā§āϟ āϚāĻžāϞāĻžāύ; āĻŽāĻžāχāĻ—ā§āϰ⧇āĻļāύ āĻĻā§āĻŦāĻžāϰāĻž āϏ⧃āĻˇā§āϟ āϏāĻžāĻŽāĻžāĻ¨ā§āϝ āĻ­āĻžāĻ™ā§āĻ—āύ āĻ āĻŋāĻ• āĻ•āϰ⧁āύāĨ¤
  • āϛ⧋āϟ, āϰāĻŋāĻ­āĻŋāωāϝ⧋āĻ—ā§āϝ āĻĒāϰāĻŋāĻŦāĻ°ā§āϤāύ āϏ⧇āϟ āϤ⧈āϰāĻŋ āĻ•āϰ⧁āύ āĻāĻŦāĻ‚ āĻĄāĻŋāĻĢ āϏāĻš āĻāĻ•āϟāĻŋ āĻšā§‚āĻĄāĻŧāĻžāĻ¨ā§āϤ āϏāĻžāϰāĻžāĻ‚āĻļ āĻĻāĻŋāύ (āĻ•āĻŽāĻŋāϟ āĻ•āϰāĻŦ⧇āύ āύāĻž)āĨ¤

āĻ—āĻžāĻ°ā§āĻĄāϰ⧇āχāϞāϏ

  • āĻļ⧁āϧ⧁āĻŽāĻžāĻ¤ā§āϰ āĻ—āĻŋāϟ āĻ“āϝāĻŧāĻžāĻ°ā§āĻ•āĻ¸ā§āĻĒ⧇āϏ⧇āϰ āĻ­āĻŋāϤāϰ⧇āϰ āĻĢāĻžāχāϞāϗ⧁āϞ⧋ āϏāĻ‚āĻļā§‹āϧāύ āĻ•āϰ⧁āύāĨ¤ āĻŦāĻžāχāϰ⧇ āϕ⧋āύāĻ“ āϞ⧇āĻ–āĻž āĻ•āϰāĻŦ⧇āύ āύāĻžāĨ¤
  • āĻŦā§āϝāĻžāĻ•āĻ“āϝāĻŧāĻžāĻ°ā§āĻĄ-āĻ•āĻŽā§āĻĒā§āϝāĻžāϟāĻŋāĻŦāĻŋāϞāĻŋāϟāĻŋ āĻļāĻŋāĻŽ āϏāĻ‚āϰāĻ•ā§āώāĻŖ āĻ•āϰāĻŦ⧇āύ āύāĻž; āϕ⧋āĻĄ āύāϤ⧁āύ API āφāĻ•ā§ƒāϤāĻŋāϤ⧇ āĻŽāĻžāχāĻ—ā§āϰ⧇āϟ āĻ•āϰ⧁āύāĨ¤
  • āϟ⧁āĻŽā§āĻŦāĻ¸ā§āĻŸā§‹āύ/āĻŸā§āϰāĻžāύāϜāĻŋāĻļāύ āĻ•āĻŽā§‡āĻ¨ā§āϟ āĻŦāĻž āĻŦā§āϝāĻžāĻ•āφāĻĒ āĻĢāĻžāχāϞ āϰāĻžāĻ–āĻŦ⧇āύ āύāĻžāĨ¤
  • āĻĒā§‚āĻ°ā§āĻŦ⧇ āĻ¸ā§āĻŸā§āϰāĻŋāĻŽāĻŋāĻ‚ āĻŦā§āϝāĻŦāĻšāĻžāϰ āĻ•āϰāϞ⧇āχ āĻ¸ā§āĻŸā§āϰāĻŋāĻŽāĻŋāĻ‚ āĻŦāϜāĻžāϝāĻŧ āϰāĻžāϖ⧁āύ; āĻ…āĻ¨ā§āϝāĻĨāĻžāϝāĻŧ āύāύ-āĻ¸ā§āĻŸā§āϰāĻŋāĻŽāĻŋāĻ‚ āĻŦā§āϝāĻŦāĻšāĻžāϰ āĻ•āϰ⧁āύāĨ¤
  • āĻ…āύ⧁āĻŽā§‹āĻĻāύ āĻŽā§‹āĻĄā§‡ āĻĨāĻžāĻ•āϞ⧇ āĻ•āĻŽāĻžāĻ¨ā§āĻĄ āĻŦāĻž āύ⧇āϟāĻ“āϝāĻŧāĻžāĻ°ā§āĻ• āĻ•āϞ āϚāĻžāϞāĻžāύ⧋āϰ āφāϗ⧇ āĻ…āύ⧁āĻŽāϤāĻŋ āύāĻŋāύāĨ¤
  • git add/git commit/git push āϚāĻžāϞāĻžāĻŦ⧇āύ āύāĻž; āĻļ⧁āϧ⧁āĻŽāĻžāĻ¤ā§āϰ āĻ“āϝāĻŧāĻžāĻ°ā§āĻ•āĻŋāĻ‚-āĻŸā§āϰāĻŋ āϏāĻŽā§āĻĒāĻžāĻĻāύāĻž āĻĻāĻŋāύāĨ¤

āϧāĻžāĻĒ ā§Ļ: Azure OpenAI āĻ•ā§āϞāĻžāϝāĻŧ⧇āĻ¨ā§āϟ āĻŽāĻžāχāĻ—ā§āϰ⧇āĻļāύ (āĻĒā§āϰāϝāĻŧā§‹āϜāύ⧀āϝāĻŧ āĻļāĻ°ā§āϤ)

āϝāĻĻāĻŋ āϕ⧋āĻĄāĻŦ⧇āϏ AzureOpenAI āĻŦāĻž AsyncAzureOpenAI āĻ•āύāĻ¸ā§āĻŸā§āϰāĻžāĻ•ā§āϟāϰ āĻŦā§āϝāĻŦāĻšāĻžāϰ āĻ•āϰ⧇, āĻĒā§āϰāĻĨāĻŽā§‡ āĻ¸ā§āĻŸā§āϝāĻžāĻ¨ā§āĻĄāĻžāĻ°ā§āĻĄ OpenAI / AsyncOpenAI āĻ•āύāĻ¸ā§āĻŸā§āϰāĻžāĻ•ā§āϟāϰ⧇ āĻŽāĻžāχāĻ—ā§āϰ⧇āϟ āĻ•āϰ⧁āύāĨ¤ Azure-āύāĻŋāĻ°ā§āĻĻāĻŋāĻˇā§āϟ āĻ•āύāĻ¸ā§āĻŸā§āϰāĻžāĻ•ā§āϟāϰāϗ⧁āϞāĻŋ openai>=1.108.1 āĻ āĻ…āĻŦā§āϝāĻŦāĻšā§ƒāϤāĨ¤

āϕ⧇āύ v1 API āĻĒāĻžāĻĨ?

āύāϤ⧁āύ /openai/v1 āĻāĻ¨ā§āĻĄāĻĒāϝāĻŧ⧇āĻ¨ā§āϟ āĻ¸ā§āĻŸā§āϝāĻžāĻ¨ā§āĻĄāĻžāĻ°ā§āĻĄ OpenAI() āĻ•ā§āϞāĻžāϝāĻŧ⧇āĻ¨ā§āϟ āĻŦā§āϝāĻŦāĻšāĻžāϰ āĻ•āϰ⧇ AzureOpenAI() āĻāϰ āĻĒāϰāĻŋāĻŦāĻ°ā§āϤ⧇, api_version āĻĒā§āϝāĻžāϰāĻžāĻŽāĻŋāϟāĻžāϰ āϞāĻžāϗ⧇ āύāĻž, āĻāĻŦāĻ‚ OpenAI āĻ“ Azure OpenAI āϤ⧇ āĻāĻ•āχ āϰāĻ•āĻŽ āĻ•āĻžāϜ āĻ•āϰ⧇āĨ¤ āĻāĻ•āχ āĻ•ā§āϞāĻžāϝāĻŧ⧇āĻ¨ā§āϟ āϕ⧋āĻĄ āĻ­āĻŦāĻŋāĻˇā§āϝāϤ-āĻĒā§āϰāĻŽāĻžāĻŖ — āϕ⧋āύ āĻ­āĻžāĻ°ā§āϏāύ āĻŽā§āϝāĻžāύ⧇āϜāĻŽā§‡āĻ¨ā§āϟ āĻĻāϰāĻ•āĻžāϰ āύ⧇āχāĨ¤

āĻŽā§‚āϞ āĻĒāϰāĻŋāĻŦāĻ°ā§āϤāύāϏāĻŽā§‚āĻš

āĻĒā§‚āĻ°ā§āĻŦ⧇ āĻĒāϰ⧇
AzureOpenAI OpenAI
AsyncAzureOpenAI AsyncOpenAI
azure_endpoint base_url
azure_ad_token_provider api_key
api_version=... āϏāĻŽā§āĻĒā§‚āĻ°ā§āĻŖāϰ⧂āĻĒ⧇ āϏāϰāĻžāύ

āĻĒāϰāĻŋāĻˇā§āĻ•āĻžāϰ⧇āϰ āĻšā§‡āĻ•āϞāĻŋāĻ¸ā§āϟ

  • āĻ•ā§āϞāĻžāϝāĻŧ⧇āĻ¨ā§āϟ āύāĻŋāĻ°ā§āĻŽāĻžāĻŖ āĻĨ⧇āϕ⧇ api_version āφāĻ°ā§āϗ⧁āĻŽā§‡āĻ¨ā§āϟ āϏāϰāĻžāύāĨ¤
  • .env, āĻ…ā§āϝāĻžāĻĒ āϏ⧇āϟāĻŋāĻ‚āϏ, Bicep/āχāύāĻĢā§āϰāĻž āĻĢāĻžāχāϞ āĻĨ⧇āϕ⧇ AZURE_OPENAI_VERSION / AZURE_OPENAI_API_VERSION āĻĒāϰāĻŋāĻŦ⧇āĻļ āϭ⧇āϰāĻŋāϝāĻŧ⧇āĻŦāϞ āϏāϰāĻžāύāĨ¤
  • .env, āĻ…ā§āϝāĻžāĻĒ āϏ⧇āϟāĻŋāĻ‚āϏ, Bicep/āχāύāĻĢā§āϰāĻž āĻ“ āĻŸā§‡āĻ¸ā§āϟ āĻĢāĻŋāĻ•ā§āϏāϚāĻžāϰ⧇ AZURE_OPENAI_CLIENT_ID → AZURE_CLIENT_ID āĻĒ⧁āύāσāύāĻžāĻŽāĻ•āϰāĻŖ āĻ•āϰ⧁āύ (āĻ¸ā§āĻŸā§āϝāĻžāĻ¨ā§āĻĄāĻžāĻ°ā§āĻĄ Azure Identity SDK āϰ⧀āϤāĻŋ)āĨ¤
  • requirements.txt āĻŦāĻž pyproject.toml āĻ openai>=1.108.1 āύāĻŋāĻļā§āϚāĻŋāϤ āĻ•āϰ⧁āύāĨ¤

āĻĒāϰāĻŋāĻŦ⧇āĻļ āϭ⧇āϰāĻŋāϝāĻŧ⧇āĻŦāϞ āĻŽāĻžāχāĻ—ā§āϰ⧇āĻļāύ

āĻĒ⧁āϰāĻžāϤāύ env var āĻĒāĻĻāĻ•ā§āώ⧇āĻĒ āĻŸā§€āĻ•āĻž
AZURE_OPENAI_VERSION āϏāϰāĻžāύ v1 āĻāĻ¨ā§āĻĄāĻĒāϝāĻŧ⧇āĻ¨ā§āĻŸā§‡ api_version āĻĻāϰāĻ•āĻžāϰ āύ⧇āχ
AZURE_OPENAI_API_VERSION āϏāϰāĻžāύ āφāϗ⧇āϰ āĻŽāϤ āĻāĻ•āχ
AZURE_OPENAI_CLIENT_ID āĻĒ⧁āύāσāύāĻžāĻŽāĻ•āϰāĻŖ → AZURE_CLIENT_ID ManagedIdentityCredential(client_id=...) āĻāϰ āϜāĻ¨ā§āϝ āĻ¸ā§āĻŸā§āϝāĻžāĻ¨ā§āĻĄāĻžāĻ°ā§āĻĄ Azure Identity SDK āϰ⧀āϤāĻŋ
AZURE_OPENAI_ENDPOINT āϰāĻžāϖ⧁āύ āĻāĻ–āύāĻ“ base_url āύāĻŋāĻ°ā§āĻŽāĻžāϪ⧇ āĻĻāϰāĻ•āĻžāϰ
AZURE_OPENAI_CHAT_DEPLOYMENT āϰāĻžāϖ⧁āύ responses.create āϤ⧇ model āĻĒā§āϝāĻžāϰāĻžāĻŽāĻŋāϟāĻžāϰ āĻšāĻŋāϏāĻžāĻŦ⧇ āĻŦā§āϝāĻŦāĻšā§ƒāϤ
AZURE_OPENAI_API_KEY āϰāĻžāϖ⧁āύ āϕ⧀-āĻ­āĻŋāĻ¤ā§āϤāĻŋāĻ• āĻ…āύ⧁āĻŽā§‹āĻĻāύ⧇āϰ āϜāĻ¨ā§āϝ api_key āĻšāĻŋāϏ⧇āĻŦ⧇ āĻŦā§āϝāĻŦāĻšā§ƒāϤ

āĻ•ā§āϞāĻžāϝāĻŧ⧇āĻ¨ā§āϟ āϏ⧇āϟāφāĻĒ āϕ⧋āĻĄ āωāĻĻāĻžāĻšāϰāĻŖ (āϏāĻŋāĻ™ā§āĻ•, āĻ…ā§āϝāĻžāϏāĻŋāĻ™ā§āĻ•, EntraID, API āϕ⧀, āĻŽāĻžāĻ˛ā§āϟāĻŋ-āĻŸā§‡āĻ¨ā§āϝāĻžāĻ¨ā§āϟ) āϜāĻ¨ā§āϝ āĻĻ⧇āϖ⧁āύ cheat-sheet.mdāĨ¤


āϧāĻžāĻĒ ā§§: āϞāĻŋāĻ—ā§āϝāĻžāϏāĻŋ āĻ•āϞ āϏāĻžāχāϟ āĻļāύāĻžāĻ•ā§āϤāĻ•āϰāĻŖ

āĻŽāĻžāχāĻ—ā§āϰ⧇āĻļāύ āĻĻāϰāĻ•āĻžāϰ āĻāĻŽāύ āϏāĻŦ āĻ•āϞ āϏāĻžāχāϟ āϖ⧁āρāĻœā§‡ āĻĒ⧇āϤ⧇ detect_legacy.py āĻ¸ā§āĻ•ā§āϰāĻŋāĻĒā§āϟ āϚāĻžāϞāĻžāύ:

python skills/azure-openai-to-responses/scripts/detect_legacy.py .

āĻ…āĻĨāĻŦāĻž āĻŽā§āϝāĻžāύ⧁āϝāĻŧāĻžāϞāĻŋ āύāĻŋāĻšā§‡āϰ āĻ…āύ⧁āϏāĻ¨ā§āϧāĻžāύāϗ⧁āϞ⧋ āϚāĻžāϞāĻžāύ — āĻĒā§āϰāϤāĻŋāϟāĻŋ āĻŽā§āϝāĻžāϚ āĻŽāĻžāχāĻ—ā§āϰ⧇āĻļāύ āϞāĻ•ā§āĻˇā§āϝ:

# āϞāĻŋāϗ⧇āϏāĻŋ API āĻ•āϞāϏāĻŽā§‚āĻš (āφāĻŦāĻļā§āϝāĻ• āĻĒ⧁āύāσāϞāĻŋāĻ–āύ)
rg "chat\.completions\.create"
rg "ChatCompletion\.create"
rg "Completion\.create"

# āĻ…āĻŦā§āϝāĻŦāĻšā§ƒāϤ Azure āĻ•ā§āϞāĻžāϝāĻŧ⧇āĻ¨ā§āϟ āύāĻŋāĻ°ā§āĻŽāĻžāϤāĻž (āφāĻŦāĻļā§āϝāĻ• āĻĒā§āϰāϤāĻŋāĻ¸ā§āĻĨāĻžāĻĒāύ)
rg "AzureOpenAI\("
rg "AsyncAzureOpenAI\("

# āĻĒā§āϰāϤāĻŋāĻ•ā§āϰāĻŋāϝāĻŧāĻž āφāĻ•ā§ƒāϤāĻŋ āĻĒā§āϰāĻŦ⧇āĻļāĻžāϧāĻŋāĻ•āĻžāϰ āĻĒā§āϝāĻžāϟāĻžāĻ°ā§āύāϏāĻŽā§‚āĻš (āφāĻŦāĻļā§āϝāĻ• āφāĻĒāĻĄā§‡āϟ)
rg "choices\[0\]\.message\.content"
rg "choices\[0\]\.delta\.content"
rg "choices\[0\]\.message\.function_call"
rg "choices\[0\]\.message\.tool_calls"

# āĻĒ⧁āϰāύ⧋ āύ⧇āĻ¸ā§āĻŸā§‡āĻĄ āĻĢāϰāĻŽā§āϝāĻžāĻŸā§‡ āϟ⧁āϞ āĻĄā§‡āĻĢāĻŋāύāĻŋāĻļāύāϏāĻŽā§‚āĻš (āφāĻŦāĻļā§āϝāĻ• āĻĢā§āĻ˛ā§āϝāĻžāĻŸā§‡āύ)
rg '"function":\s*{\s*"name"'
rg "pydantic_function_tool"

# āĻĒ⧁āϰāύ⧋ āĻĢāϰāĻŽā§āϝāĻžāĻŸā§‡ āϟ⧁āϞ āĻĢāϞāĻžāĻĢāϞ (āφāĻŦāĻļā§āϝāĻ• function_call_output āĻ āϰ⧂āĻĒāĻžāĻ¨ā§āϤāϰ)
rg '"role":\s*"tool"'
rg '"tool_call_id"'

# āĻ…āĻŦā§āϝāĻŦāĻšā§ƒāϤ āĻĒā§āϝāĻžāϰāĻžāĻŽāĻŋāϟāĻžāϰāϏāĻŽā§‚āĻš (āφāĻŦāĻļā§āϝāĻ• āϏāϰāĻžāύ⧋ āĻŦāĻž āύāĻžāĻŽ āĻĒāϰāĻŋāĻŦāĻ°ā§āϤāύ)
rg "response_format"
rg "max_tokens\b"        # max_output_tokens āύāĻžāĻŽā§‡ āĻĒ⧁āύāσāύāĻžāĻŽāĻ•āϰāĻŖ āĻ•āϰ⧁āύ
rg "['\"]seed['\"]"      # remove entirely

# āĻ…āĻŦā§āϝāĻŦāĻšā§ƒāϤ env āϭ⧇āϰāĻŋāϝāĻŧ⧇āĻŦāϞāϏāĻŽā§‚āĻš (āĻĒāϰāĻŋāĻˇā§āĻ•āĻžāϰ āĻ•āϰ⧁āύ)
rg "AZURE_OPENAI_API_VERSION|AZURE_OPENAI_VERSION"
rg "AZURE_OPENAI_CLIENT_ID"  # āĻāϟāĻŋ AZURE_CLIENT_ID āĻšāĻ“āϝāĻŧāĻž āωāϚāĻŋāϤ

# GitHub āĻŽāĻĄā§‡āϞ āĻāĻ¨ā§āĻĄāĻĒāϝāĻŧ⧇āĻ¨ā§āϟāϏāĻŽā§‚āĻš (āφāĻŦāĻļā§āϝāĻ• āϏāϰāĻžāύ — āĻĒā§āϰāϤāĻŋāĻ•ā§āϰāĻŋāϝāĻŧāĻž API āϏāĻŽāĻ°ā§āĻĨāĻŋāϤ āύāϝāĻŧ)
rg "models\.github\.ai|models\.inference\.ai\.azure"

# āĻĢā§āϰ⧇āĻŽāĻ“āϝāĻŧāĻžāĻ°ā§āĻ•-āĻ¸ā§āϤāϰ⧇āϰ āϞāĻŋāϗ⧇āϏāĻŋ āĻĒā§āϝāĻžāϟāĻžāĻ°ā§āύāϏ (āφāĻŦāĻļā§āϝāĻ• āφāĻĒāĻĄā§‡āϟ)
rg "OpenAIChatCompletionClient"  # MAF 1.0.0+: OpenAIChatClient āĻĻāĻŋāϝāĻŧ⧇ āĻĒā§āϰāϤāĻŋāĻ¸ā§āĻĨāĻžāĻĒāύ āĻ•āϰ⧁āύ
rg "ChatOpenAI\(" | grep -v "use_responses_api"  # LangChain: use_responses_api=True āĻĒā§āϰāϝāĻŧā§‹āϜāύ

# āĻŸā§‡āĻ¸ā§āϟ āĻ…āĻŦāĻ•āĻžāĻ āĻžāĻŽā§‹ (āφāĻŦāĻļā§āϝāĻ• āφāĻĒāĻĄā§‡āϟ)
rg "ChatCompletionChunk|AsyncCompletions\.create" tests/
rg "_azure_ad_token_provider" tests/
rg "prompt_filter_results|content_filter_results" tests/
rg "choices\[0\]" tests/

# āĻ•āĻ¨ā§āĻŸā§‡āĻ¨ā§āϟ āĻĢāĻŋāĻ˛ā§āϟāĻžāϰ āĻ¤ā§āϰ⧁āϟāĻŋ āĻŦāĻĄāĻŋ āĻĒā§āϰāĻŦ⧇āĻļāĻžāϧāĻŋāĻ•āĻžāϰ (āφāĻŦāĻļā§āϝāĻ• āφāĻĒāĻĄā§‡āϟ — āĻ•āĻžāĻ āĻžāĻŽā§‹ āĻĒāϰāĻŋāĻŦāĻ°ā§āϤāĻŋāϤ)
rg 'innererror.*content_filter_result|error\.body\["innererror"\]'
rg "content_filter_result\[" # āĻĒ⧁āϰāύ⧋ āĻāĻ•āĻŦāϚāύ āĻĢāϰāĻŽ — āĻāĻ–āύ content_filter_results (āĻŦāĻšā§āĻŦāϚāύ) content_filters āĻ…ā§āϝāĻžāϰ⧇āϰ āĻ­āĻŋāϤāϰ⧇

# Chat Completions āĻāĻ¨ā§āĻĄāĻĒāϝāĻŧ⧇āĻ¨ā§āĻŸā§‡ āϰ āϞ HTTP āĻ•āϞāϏāĻŽā§‚āĻš (āφāĻŦāĻļā§āϝāĻ• URL āφāĻĒāĻĄā§‡āϟ)
rg "/openai/deployments/.*/chat/completions"
rg "api-version="

āĻšāĻŋāωāϰāĻŋāĻ¸ā§āϟāĻŋāĻ•āϏ (āϏāύāĻžāĻ•ā§āϤāĻ•āϰāĻŖ āĻ“ āĻĒ⧁āύāσāϞāĻŋāĻ–āύ)

  • āĻšā§āϝāĻžāϟ āϏāĻŽā§āĻĒā§‚āĻ°ā§āĻŖāϤāĻž āĻ•ā§āϞāĻžāϝāĻŧ⧇āĻ¨ā§āϟ: client.chat.completions.create → client.responses.create(...)āĨ¤

  • Azure āĻ•ā§āϞāĻžāϝāĻŧ⧇āĻ¨ā§āϟ āĻ•āύāĻ¸ā§āĻŸā§āϰāĻžāĻ•ā§āϟāϰ: AzureOpenAI(...) → OpenAI(base_url=..., api_key=...)āĨ¤

  • āϟ⧁āϞāϏ: āĻĢāĻžāĻ‚āĻļāύ-āĻ•āϞ⧇ āϟ⧁āϞ āϏāĻ‚āĻœā§āĻžāĻžāϗ⧁āϞ⧋ nested āĻĢāϰāĻŽā§āϝāĻžāϟ āĻĨ⧇āϕ⧇ ({"type": "function", "function": {"name": ...}}) āĻĢā§āĻ˛ā§āϝāĻžāϟ Responses āĻĢāϰāĻŽā§āϝāĻžāĻŸā§‡ āĻ•āύāĻ­āĻžāĻ°ā§āϟ āĻ•āϰ⧁āύ ({"type": "function", "name": ...}); tool_choice āĻŦā§āϝāĻŦāĻšāĻžāϰ āĻ•āϰ⧁āύ; āϟ⧁āϞ āϰ⧇āϜāĻžāĻ˛ā§āϟ {"type": "function_call_output", "call_id": ..., "output": ...} āφāχāĻŸā§‡āĻŽ āĻšāĻŋāϏ⧇āĻŦ⧇ āϰāĻŋāϟāĻžāĻ°ā§āύ āĻ•āϰ⧁āύ (āύāĻž āϝ⧇ {"role": "tool", ...})āĨ¤

  • āϟ⧁āϞ āϰāĻžāωāĻ¨ā§āĻĄ-āĻŸā§āϰāĻŋāĻĒāϏ: āϝāĻ–āύ āĻŽāĻĄā§‡āϞ āĻĢāĻžāĻ‚āĻļāύ āĻ•āϞ āϰāĻŋāϟāĻžāĻ°ā§āύ āĻ•āϰ⧇, āϤāĻ–āύ response.output āφāχāĻŸā§‡āĻŽāϗ⧁āϞ⧋ āĻ•āύāĻ­āĻžāϰāϏ⧇āĻļāύ⧇ āĻ…ā§āϝāĻžāĻĒ⧇āĻ¨ā§āĻĄ āĻ•āϰ⧁āύ (āĻŽā§āϝāĻžāύ⧁āϝāĻŧāĻžāϞ {"role": "assistant", "tool_calls": [...]} āĻĄāĻŋāĻ•ā§āϟ āύāϝāĻŧ), āϤāĻžāϰāĻĒāϰ āĻĒā§āϰāϤāĻŋāϟāĻŋ āϰ⧇āϜāĻžāĻ˛ā§āĻŸā§‡āϰ āϜāĻ¨ā§āϝ function_call_output āφāχāĻŸā§‡āĻŽ āĻ…ā§āϝāĻžāĻĒ⧇āĻ¨ā§āĻĄ āĻ•āϰ⧁āύāĨ¤

  • āĻĢāĻŋāω āĻļāϟ āϟ⧁āϞ āωāĻĻāĻžāĻšāϰāĻŖ: āϝāĻĻāĻŋ āĻ•āύāĻ­āĻžāϰāϏ⧇āĻļāύ⧇ āĻšāĻžāĻ°ā§āĻĄāϕ⧋āĻĄā§‡āĻĄ āϟ⧁āϞ āĻ•āϞ āωāĻĻāĻžāĻšāϰāĻŖ āĻĨāĻžāϕ⧇, āϏ⧇āϗ⧁āϞ⧋ {"type": "function_call", "id": "fc_...", "call_id": "fc_...", ...} + {"type": "function_call_output", ...} āφāχāĻŸā§‡āĻŽā§‡ āϰ⧂āĻĒāĻžāĻ¨ā§āϤāϰ āĻ•āϰ⧁āύāĨ¤ āφāχāĻĄāĻŋāϗ⧁āϞ⧋ āĻ…āĻŦāĻļā§āϝāχ fc_ āĻĻāĻŋāϝāĻŧ⧇ āĻļ⧁āϰ⧁ āĻšāϤ⧇ āĻšāĻŦ⧇āĨ¤

  • pydantic_function_tool(): āĻāχ āĻšā§‡āĻ˛ā§āĻĒāĻžāϰ āĻāĻ–āύāĻ“ āĻĒ⧁āϰāĻžāύ⧋ nested āĻĢāϰāĻŽā§āϝāĻžāϟ āϤ⧈āϰāĻŋ āĻ•āϰ⧇ āĻāĻŦāĻ‚ āĻāϟāĻŋ responses.create() āĻāϰ āϏāĻžāĻĨ⧇ āĻ…āϏāĻ™ā§āĻ—āϤāĨ¤ āĻŽā§āϝāĻžāύ⧁āϝāĻŧāĻžāϞ āϟ⧁āϞ āϏāĻ‚āĻœā§āĻžāĻž āĻŦāĻž āĻĢā§āĻ˛ā§āϝāĻžāĻŸā§‡āύāĻŋāĻ‚ āĻ°â€ā§āϝāĻžāĻĒāĻžāϰ āĻĻāĻŋāϝāĻŧ⧇ āĻŦāĻĻāϞāĻžāύāĨ¤

  • āĻŽāĻžāĻ˛ā§āϟāĻŋ-āϟāĻžāĻ°ā§āύ: āĻ…ā§āϝāĻžāĻĒ⧇ āĻ•āύāĻ­āĻžāϰāϏ⧇āĻļāύ āĻšāĻŋāĻ¸ā§āĻŸā§āϰāĻŋ āĻŦāϜāĻžāϝāĻŧ āϰāĻžāϖ⧁āύ; āĻĒā§‚āĻ°ā§āĻŦ⧇āϰ āϟāĻžāĻ°ā§āύāϗ⧁āϞ⧋ input āφāχāĻŸā§‡āĻŽā§‡āϰ āĻŽāĻžāĻ§ā§āϝāĻŽā§‡ āĻĒāĻžāĻ āĻžāύāĨ¤

  • āĻĢāϰāĻŽā§āϝāĻžāϟāĻŋāĻ‚: Chat āĻāϰ āϟāĻĒ-āϞ⧇āϭ⧇āϞ response_format āϕ⧇ Responses āĻāϰ text.format āĻĻāĻŋāϝāĻŧ⧇ āĻŦāĻĻāϞāĻžāύāĨ¤ canonical āĻļ⧇āĻĒ: text={"format": {"type": "json_schema", "name": "Output", "strict": True, "schema": {...}}}āĨ¤

  • āĻ•āĻ¨ā§āĻŸā§‡āĻ¨ā§āϟ āφāχāĻŸā§‡āĻŽāϏ: User/System āϟāĻžāĻ°ā§āύ⧇āϰ āϜāĻ¨ā§āϝ Chat āĻāϰ content[].type: "text" āϕ⧇ Responses āĻāϰ content[].type: "input_text" āĻĻāĻŋā§Ÿā§‡ āĻĒā§āϰāϤāĻŋāĻ¸ā§āĻĨāĻžāĻĒāύ āĻ•āϰ⧁āύāĨ¤

  • āχāĻŽā§‡āϜ āĻ•āĻ¨ā§āĻŸā§‡āĻ¨ā§āϟ āφāχāĻŸā§‡āĻŽāϏ: Chat āĻāϰ content[].type: "image_url" āϕ⧇ Responses āĻāϰ content[].type: "input_image" āĻĻāĻŋā§Ÿā§‡ āĻĒā§āϰāϤāĻŋāĻ¸ā§āĻĨāĻžāĻĒāύ āĻ•āϰ⧁āύāĨ¤ image_url āĻĢāĻŋāĻ˛ā§āĻĄ nested āĻ…āĻŦāĻœā§‡āĻ•ā§āϟ āĻĨ⧇āϕ⧇ {"url": "..."} āĻĢā§āĻ˛ā§āϝāĻžāϟ āĻ¸ā§āĻŸā§āϰāĻŋāĻ‚ āĻ āĻĒāϰāĻŋāĻŦāĻ°ā§āϤāĻŋāϤ āĻšāϝāĻŧ⧇āϛ⧇āĨ¤ āφāϗ⧇/āĻĒāϰ⧇ āωāĻĻāĻžāĻšāϰāϪ⧇āϰ āϜāĻ¨ā§āϝ āϚāĻŋāϟ āĻļā§€āϟ āĻĻ⧇āϖ⧁āύāĨ¤

  • āϰāĻŋāϜāύāĻŋāĻ‚ āĻĒā§āϰ⧟āĻžāϏ: āĻļ⧁āϧ⧁āĻŽāĻžāĻ¤ā§āϰ āϤāĻ–āύāχ reasoning āĻŽāĻžāχāĻ—ā§āϰ⧇āϟ āĻ•āϰ⧁āύ āϝāĻ–āύ āĻŽā§‚āϞ āϕ⧋āĻĄā§‡ āĻāϟāĻŋ āχāϤāĻŋāĻŽāĻ§ā§āϝ⧇ āĻŦāĻŋāĻĻā§āϝāĻŽāĻžāύ āĻĨāĻžāϕ⧇āĨ¤

  • āĻ•āĻ¨ā§āĻŸā§‡āĻ¨ā§āϟ āĻĢāĻŋāĻ˛ā§āϟāĻžāϰ āĻāϰāϰ āĻšā§āϝāĻžāĻ¨ā§āĻĄāϞāĻŋāĻ‚: āĻāϰāϰ āĻŦāĻĄāĻŋāϰ āĻ¸ā§āĻŸā§āϰāĻžāĻ•āϚāĻžāϰ āĻĒāϰāĻŋāĻŦāĻ°ā§āϤāĻŋāϤ āĻšāϝāĻŧ⧇āϛ⧇āĨ¤ Chat Completions āĻŦā§āϝāĻŦāĻšāĻžāϰ āĻ•āϰāϤ error.body["innererror"]["content_filter_result"] (āĻāĻ•āĻŦچāύ); Responses API āĻŦā§āϝāĻŦāĻšāĻžāϰ āĻ•āϰ⧇ error.body["content_filters"][0]["content_filter_results"] (āĻŦāĻšā§āĻŦāϚāύ, āĻāĻ•āϟāĻŋ āĻ…ā§āϝāĻžāϰ⧇āϰ āĻ­āĻŋāϤāϰ⧇)āĨ¤ innererror āĻ…ā§āϝāĻžāĻ•ā§āϏ⧇āϏ āĻ•āϰāϞ⧇ KeyError āωāĻ āĻŦ⧇āĨ¤ āύāϤ⧁āύ āĻĒāĻĨ āĻŦā§āϝāĻŦāĻšāĻžāϰ āĻ•āϰ⧇ āĻĒ⧁āύāĻ°ā§āϞāĻŋāĻ–āύ āĻ•āϰ⧁āύāĨ¤

  • āĻ°â€™ āĻĄ HTTP āĻ•āϞ: āϝāĻĻāĻŋ āĻ…ā§āϝāĻžāĻĒ āϏāϰāĻžāϏāϰāĻŋ Azure OpenAI REST API āĻ•āϞ āĻ•āϰ⧇ (āϝ⧇āĻŽāύ requests, httpx āχāĻ¤ā§āϝāĻžāĻĻāĻŋ āĻĻāĻŋā§Ÿā§‡) /openai/deployments/{name}/chat/completions?api-version=... āĻŦā§āϝāĻŦāĻšāĻžāϰ āĻ•āϰ⧇, āϤāĻŦ⧇ āĻāϟāĻŋ /openai/v1/responses āĻ āϰāĻŋāϰāĻžāχāϟ āĻ•āϰ⧁āύāĨ¤ āϰāĻŋāĻ•ā§‹ā§Ÿā§‡āĻ¸ā§āϟ āĻŦāĻĄāĻŋ āĻĒāϰāĻŋāĻŦāĻ°ā§āϤāĻŋāϤ āĻšā§Ÿā§‡āϛ⧇: messages → input, max_output_tokens āĻāĻŦāĻ‚ store: false āϝ⧋āĻ— āĻ•āϰ⧁āύ, api-version āϕ⧋āϝāĻŧ⧇āϰāĻŋ āĻĒā§āϝāĻžāϰāĻžāĻŽ āϰāĻŋāĻŽā§āĻ­ āĻ•āϰ⧁āύāĨ¤ āϰ⧇āϏāĻĒāĻ¨ā§āϏ āĻŦāĻĄāĻŋ āĻĒāϰāĻŋāĻŦāĻ°ā§āϤāĻŋāϤ āĻšā§Ÿā§‡āϛ⧇: choices[0].message.content → output[0].content[0].text (āϜāϰāĻŋāĻĒ: output_text āĻāĻ•āϟāĻŋ SDK āϏ⧁āĻŦāĻŋāϧāĻžāϜāύāĻ• āĻĒā§āϰāĻĒāĻžāĻ°ā§āϟāĻŋ, āĻ•āĻžāρāϚāĻž REST JSON-āĻ āύ⧇āχ)āĨ¤


āϧāĻžāĻĒ ā§¨: āĻŽāĻžāχāĻ—ā§āϰ⧇āĻļāύ āĻĒā§āϰāϝāĻŧā§‹āĻ— āĻ•āϰ⧁āύ

āĻŽāĻžāχāĻ—ā§āϰ⧇āĻļāύ āύ⧋āϟāϏ (Chat Completions → Responses)

  • āϕ⧇āύ āĻŽāĻžāχāĻ—ā§āϰ⧇āϟ āĻ•āϰāĻŦ⧇āύ: Responses API āĻšāϞ⧋ texts, tools, āĻāĻŦāĻ‚ streaming āĻāϰ āϜāĻ¨ā§āϝ āĻāϕ⧀āĻ­ā§‚āϤ API; Chat Completions āĻšāϞ⧋ āĻĒ⧁āϰāύ⧋ LegacyāĨ¤ GPT-5 āĻāϰ āϏāĻžāĻĨ⧇ Responses āϏ⧇āϰāĻž āĻĒāĻžāϰāĻĢāϰāĻŽā§āϝāĻžāĻ¨ā§āϏ⧇āϰ āϜāĻ¨ā§āϝ āĻĒā§āϰāϝāĻŧā§‹āϜāύāĨ¤
  • HTTP: Azure endpoint āĻĒāϰāĻŋāĻŦāĻ°ā§āϤāĻŋāϤ āĻšā§Ÿā§‡āϛ⧇ /openai/deployments/{name}/chat/completions āĻĨ⧇āϕ⧇ /openai/v1/responsesāĨ¤
  • āĻĢāĻŋāĻ˛ā§āĻĄāϏ: messages → input, max_tokens → max_output_tokens; temperature āĻ…āĻĒāϰāĻŋāĻŦāĻ°ā§āϤāĻŋāϤāĨ¤
  • āĻĢāϰāĻŽā§āϝāĻžāϟāĻŋāĻ‚: response_format → text.format (āϏāĻ āĻŋāĻ• āĻ…āĻŦāĻœā§‡āĻ•ā§āϟ āϏāĻš)āĨ¤
  • āĻ•āĻ¨ā§āĻŸā§‡āĻ¨ā§āϟ āφāχāĻŸā§‡āĻŽāϏ: āϏāĻŋāĻ¸ā§āĻŸā§‡āĻŽ/āχāωāϜāĻžāϰ āϟāĻžāĻ°ā§āύ⧇āϰ āϜāĻ¨ā§āϝ Chat āĻāϰ content[].type: "text" āϕ⧇ Responses āĻāϰ content[].type: "input_text" āĻĻāĻŋā§Ÿā§‡ āĻŦāĻĻāϞāĻžāύāĨ¤
  • āχāĻŽā§‡āϜ āĻ•āĻ¨ā§āĻŸā§‡āĻ¨ā§āϟ āφāχāĻŸā§‡āĻŽāϏ: Chat āĻāϰ content[].type: "image_url" āϕ⧇ Responses āĻāϰ content[].type: "input_image" āĻĻāĻŋā§Ÿā§‡ āĻŦāĻĻāϞāĻžāύāĨ¤ image_url āĻĢāĻŋāĻ˛ā§āĻĄ {"image_url": {"url": "..."}} āĻĨ⧇āϕ⧇ āĻĢā§āĻ˛ā§āϝāĻžāϟ {"image_url": "..."} (āϏāϰāĻžāϏāϰāĻŋ āĻ¸ā§āĻŸā§āϰāĻŋāĻ‚ - HTTPS URL āĻ…āĻĨāĻŦāĻž data:image/...;base64,... āĻĄāĻžāϟāĻž URI) āĻ āϰ⧂āĻĒāĻžāĻ¨ā§āϤāϰ āĻ•āϰ⧁āύāĨ¤

āĻĒā§āϝāĻžāϰāĻžāĻŽāĻŋāϟāĻžāϰ āĻŽā§āϝāĻžāĻĒāĻŋāĻ‚ āϰ⧇āĻĢāĻžāϰ⧇āĻ¨ā§āϏ

Chat Completions Responses API
prompt input
messages input (āφāχāĻŸā§‡āĻŽ āĻ…ā§āϝāĻžāϰ⧇āϰ āĻŽāĻ§ā§āϝ⧇)
max_tokens max_output_tokens
response_format text.format (āĻ…āĻŦāĻœā§‡āĻ•ā§āϟ)
temperature temperature (āĻ…āĻĒāϰāĻŋāĻŦāĻ°ā§āϤāĻŋāϤ)
stop stop (āĻ…āĻĒāϰāĻŋāĻŦāĻ°ā§āϤāĻŋāϤ)
frequency_penalty frequency_penalty (āĻ…āĻĒāϰāĻŋāĻŦāĻ°ā§āϤāĻŋāϤ)
presence_penalty presence_penalty (āĻ…āĻĒāϰāĻŋāĻŦāĻ°ā§āϤāĻŋāϤ)
tools / function-calling tools (āĻ…āĻĒāϰāĻŋāĻŦāĻ°ā§āϤāĻŋāϤ)
seed āĻ…āĻĒāϏāĻžāϰāĻŖ āĻ•āϰ⧁āύ (āϏāĻŽāĻ°ā§āĻĨāĻŋāϤ āύāϝāĻŧ)
store store (āϏ⧇āϟ āĻ•āϰ⧁āύ false)
content[].type: "text" content[].type: "input_text"
content[].type: "image_url" content[].type: "input_image"
"image_url": {"url": "..."} "image_url": "..." (āĻĢā§āĻ˛ā§āϝāĻžāϟ āĻ¸ā§āĻŸā§āϰāĻŋāĻ‚)

āϏāĻŽā§āĻĒā§‚āĻ°ā§āĻŖ āφāϗ⧇/āĻĒāϰ⧇ āϕ⧋āĻĄ āωāĻĻāĻžāĻšāϰāĻŖāϗ⧁āϞ⧋āϰ āϜāĻ¨ā§āϝ cheat-sheet.md āĻĻ⧇āϖ⧁āύāĨ¤

āĻŸā§‡āĻ¸ā§āϟ āχāύāĻĢā§āϰāĻžāĻ¸ā§āĻŸā§āϰāĻžāĻ•āϚāĻžāϰ āĻŽāĻžāχāĻ—ā§āϰ⧇āĻļāύ (āĻŽāĻ•ā§āϏ, āĻ¸ā§āĻ¨ā§āϝāĻžāĻĒāĻļāϟ, āĻ…ā§āϝāĻžāϏāĻžāϰāĻļāύ) āĻāϰ āϜāĻ¨ā§āϝ test-migration.md āĻĻ⧇āϖ⧁āύāĨ¤

āϏāĻŽāĻ¸ā§āϝāĻž āϏāĻŽāĻžāϧāĻžāύ āϜāĻ¨ā§āϝ, āĻāϰāϰ āĻ“ gotchas āĻĻ⧇āĻ–āϤ⧇ troubleshooting.md āĻĻ⧇āϖ⧁āύāĨ¤


āĻĄāĻžāϟāĻž āϰāĻŋāĻŸā§‡āύāĻļāύ āĻ“ āĻ¸ā§āĻŸā§‡āϟ

  • āϏāĻŦ Responses āϰāĻŋāĻ•ā§‹ā§Ÿā§‡āĻ¸ā§āĻŸā§‡ store: false āϏ⧇āϟ āĻ•āϰ⧁āύāĨ¤
  • āĻĒā§‚āĻ°ā§āĻŦ⧇āϰ āĻŽā§‡āϏ⧇āϜ āφāχāĻĄāĻŋ āĻŦāĻž āϏāĻžāĻ°ā§āĻ­āĻžāϰ-āĻ¸ā§āĻŸā§‹āϰāĻĄ āĻ•āύāĻŸā§‡āĻ•ā§āϏāĻŸā§‡āϰ āωāĻĒāϰ āύāĻŋāĻ°ā§āĻ­āϰ āĻ•āϰāĻŦ⧇āύ āύāĻž; āĻ¸ā§āĻŸā§‡āϟ āĻ•ā§āϞāĻžāϝāĻŧ⧇āĻ¨ā§āϟ-āĻŦā§āϝāĻŦāĻ¸ā§āĻĨāĻžāĻĒāĻŋāϤ āϰāĻžāϖ⧁āύ āĻāĻŦāĻ‚ āĻŽā§‡āϟāĻžāĻĄā§‡āϟāĻž āĻ•āĻŽāĻŋā§Ÿā§‡ āφāύ⧁āύāĨ¤

āĻ—ā§āϰāĻšāĻŖāϝ⧋āĻ—ā§āϝāϤāĻžāϰ āĻŽāĻžāύāĻĻāĻŖā§āĻĄ

āϕ⧋āĻĄ-āϞ⧇āϭ⧇āϞ āϗ⧇āϟāϏāĻŽā§‚āĻš (āϏāĻŦ āĻĒāĻžāϏ āĻ•āϰāϤ⧇ āĻšāĻŦ⧇)

  • āĻŽāĻžāχāĻ—ā§āϰ⧇āϟ āĻ•āϰāĻž āĻĢāĻžāχāϞāϗ⧁āϞāĻŋāϤ⧇ rg "chat\.completions\.create|ChatCompletion\.create|Completion\.create" āϜāĻ¨ā§āϝ ā§ĻāϟāĻŋ āĻŽā§āϝāĻžāϚāĨ¤
  • āϏāĻŦ āĻ•āύāĻ¸ā§āĻŸā§āϰāĻžāĻ•ā§āϟāϰ AzureOpenAI\(|AsyncAzureOpenAI\( āϖ⧁āρāĻœā§‡ āĻĒāĻžāĻ“āϝāĻŧāĻž āϝāĻžāĻŦ⧇ āύāĻž — āϏāĻŦ āĻ•āύāĻ¸ā§āĻŸā§āϰāĻžāĻ•ā§āϟāϰ v1 endpoint āϏāĻš OpenAI/AsyncOpenAI āĻŦā§āϝāĻŦāĻšāĻžāϰ āĻ•āϰ⧇āĨ¤
  • rg "models\.github\.ai|models\.inference\.ai\.azure" āĻāϰ āϜāĻ¨ā§āϝ ā§ĻāϟāĻŋ āĻŽā§āϝāĻžāϚ — GitHub Models āϕ⧋āĻĄāĻĒāĻžāĻĨ āĻŽā§āϛ⧇ āĻĢ⧇āϞāĻž āĻšāϝāĻŧ⧇āϛ⧇āĨ¤
  • rg "OpenAIChatCompletionClient" āĻāϰ āϜāĻ¨ā§āϝ ā§ĻāϟāĻŋ āĻŽā§āϝāĻžāϚ — MAF 1.0.0+ āϕ⧋āĻĄā§‡ OpenAIChatClient āĻŦā§āϝāĻŦāĻšāĻžāϰ āĻšā§Ÿ (āϝāĻž Responses API āĻŦā§āϝāĻŦāĻšāĻžāϰ āĻ•āϰ⧇)āĨ¤ pre-1.0.0 āĻ agent-framework-openai>=1.0.0 āĻ āφāĻĒāĻ—ā§āϰ⧇āĻĄ āĻ•āϰ⧁āύāĨ¤
  • āϏāĻŦ ChatOpenAI(...) āĻ•āϞ use_responses_api=True āĻ…āĻ¨ā§āϤāĻ°ā§āϭ⧁āĻ•ā§āϤ āĻ•āϰ⧇āĨ¤
  • rg "choices\[0\]" āĻāϰ āϜāĻ¨ā§āϝ ā§ĻāϟāĻŋ āĻŽā§āϝāĻžāϚ — āϏāĻŦ āϰ⧇āϏāĻĒāĻ¨ā§āϏ āĻ…ā§āϝāĻžāĻ•ā§āϏ⧇āϏ resp.output_text āĻ…āĻĨāĻŦāĻž Responses āφāωāϟāĻĒ⧁āϟ āĻ¸ā§āĻ•āĻŋāĻŽāĻž āĻŦā§āϝāĻŦāĻšāĻžāϰ āĻ•āϰ⧇āĨ¤
  • āϟāĻĒ-āϞ⧇āϭ⧇āϞ⧇ āϕ⧋āύ⧋ response_format āύ⧇āχ; āϏāĻŦ āĻ¸ā§āĻŸā§āϰāĻžāĻ•āϚāĻžāĻ°ā§āĻĄ āφāωāϟāĻĒ⧁āϟ text={"format": {...}} āĻŦā§āϝāĻŦāĻšāĻžāϰ āĻ•āϰ⧇āĨ¤
  • requirements.txt āĻŦāĻž pyproject.toml āĻ openai>=1.108.1 āĻāĻŦāĻ‚ azure-identity āφāϛ⧇; āĻĄāĻŋāĻĒ⧇āĻ¨ā§āĻĄā§‡āĻ¨ā§āϏāĻŋ āĻĒ⧁āύāϰāĻžāϝāĻŧ āχāύāĻ¸ā§āϟāϞ āĻ•āϰāĻž āĻšāϝāĻŧ⧇āϛ⧇āĨ¤
  • āϏāĻŦ responses.create āĻ•āϞ āĻ store=False āϏ⧇āϟ āĻ•āϰāĻž āĻšāϝāĻŧ⧇āϛ⧇āĨ¤
  • āĻ•ā§āϞāĻžāϝāĻŧ⧇āĻ¨ā§āϟ āύāĻŋāĻ°ā§āĻŽāĻžāϪ⧇ āϕ⧋āύ⧋ api_version āύ⧇āχ; env āĻĢāĻžāχāϞ āĻ“ āχāύāĻĢā§āϰāĻž āĻĨ⧇āϕ⧇ AZURE_OPENAI_API_VERSION āϏāϰāĻžāύ⧋ āĻšāϝāĻŧ⧇āϛ⧇āĨ¤

āĻŸā§‡āĻ¸ā§āϟ āχāύāĻĢā§āϰāĻžāĻ¸ā§āĻŸā§āϰāĻžāĻ•āϚāĻžāϰ āϗ⧇āϟ (āϏāĻŦ āĻĒāĻžāϏ āĻ•āϰāϤ⧇ āĻšāĻŦ⧇)

  • rg "ChatCompletionChunk|AsyncCompletions\.create|chat\.completions" tests/ āĻāϰ āϜāĻ¨ā§āϝ ā§ĻāϟāĻŋ āĻŽā§āϝāĻžāϚāĨ¤
  • rg "_azure_ad_token_provider" tests/ āĻāϰ āϜāĻ¨ā§āϝ ā§ĻāϟāĻŋ āĻŽā§āϝāĻžāϚ — āĻ…ā§āϝāĻžāϏāĻžāϰāĻļāύāϗ⧁āϞ⧋ āφāĻĒāĻĄā§‡āϟ āĻšāϝāĻŧ⧇āϛ⧇ isinstance(client, AsyncOpenAI) āĻ…āĻĨāĻŦāĻž base_url āĻšā§‡āĻ• āĻ•āϰāĻžāϰ āϜāĻ¨ā§āϝāĨ¤
  • rg "prompt_filter_results|content_filter_results" tests/ āĻāϰ āϜāĻ¨ā§āϝ ā§ĻāϟāĻŋ āĻŽā§āϝāĻžāϚ — āĻ…ā§āϝāĻžāϜ⧁āϰ-āĻ¸ā§āĻĒ⧇āϏāĻŋāĻĢāĻŋāĻ• āĻĢāĻŋāĻ˛ā§āϟāĻžāϰ āĻŽāĻ•āϏ āϰāĻŋāĻŽā§āĻ­ āĻ•āϰāĻž āĻšāϝāĻŧ⧇āϛ⧇āĨ¤
  • āĻŽāĻ• āĻĢāĻŋāĻ•ā§āϏāϚāĻžāϰāϗ⧁āϞ⧋ kwargs.get("input") āĻŦā§āϝāĻŦāĻšāĻžāϰ āĻ•āϰ⧇, kwargs.get("messages") āύāϝāĻŧāĨ¤
  • āĻ¸ā§āĻ¨ā§āϝāĻžāĻĒāĻļāϟ / āĻ—ā§‹āĻ˛ā§āĻĄā§‡āύ āĻĢāĻžāχāϞāϗ⧁āϞ⧋ Responses āĻ¸ā§āĻŸā§āϰāĻŋāĻŽāĻŋāĻ‚ āĻļ⧇āĻĒ āĻ…āύ⧁āϏāĻžāϰ⧇ āφāĻĒāĻĄā§‡āϟ āĻšāϝāĻŧ⧇āϛ⧇ (āϕ⧋āύ⧋ choices[0], function_call, logprobs āχāĻ¤ā§āϝāĻžāĻĻāĻŋ āύ⧇āχ)āĨ¤
  • āϏāĻŦ āĻŸā§‡āĻ¸ā§āϟ pytest āĻĻāĻŋāϝāĻŧ⧇ āϜāĻŋāϰ⧋ āĻĢ⧇āχāϞāĻŋāωāϰ⧇ āĻĒāĻžāϏ āĻšāϝāĻŧ⧇āϛ⧇āĨ¤

āφāϚāϰāĻŖāĻ—āϤ āϗ⧇āϟ (āĻŽā§āϝāĻžāύ⧁āϝāĻŧāĻžāϞāĻŋ āĻŦāĻž āĻŸā§‡āĻ¸ā§āϟ āĻšāĻžāϰāύ⧇āϏ āĻĻāĻŋā§Ÿā§‡ āϝāĻžāϚāĻžāχ āĻ•āϰ⧁āύ)

  • āĻŽā§ŒāϞāĻŋāĻ• āĻ•āĻŽāĻĒā§āϞāĻŋāĻļāύ: āύāύ-āĻ¸ā§āĻŸā§āϰāĻŋāĻŽāĻŋāĻ‚ responses.create āύāύ-āĻāĻŽā§āĻĒāϟāĻŋ output_text āϰāĻŋāϟāĻžāĻ°ā§āύ āĻ•āϰ⧇āĨ¤
  • āĻ¸ā§āĻŸā§āϰāĻŋāĻŽ āĻĒā§āϝāĻžāϰāĻŋāϟāĻŋ: āϝāĻĻāĻŋ āĻĒā§‚āĻ°ā§āĻŦ⧇āϰ āϕ⧋āĻĄ āĻ¸ā§āĻŸā§āϰāĻŋāĻŽāĻŋāĻ‚ āĻŦā§āϝāĻŦāĻšāĻžāϰ āĻ•āϰ⧇, āĻŽāĻžāχāĻ—ā§āϰ⧇āĻŸā§‡āĻĄ āϕ⧋āĻĄ āĻ¸ā§āĻŸā§āϰāĻŋāĻŽ āĻ•āϰ⧇ āĻāĻŦāĻ‚ āύāύ-āĻāĻŽā§āĻĒāϟāĻŋ āĻĄā§‡āĻ˛ā§āϟāĻžāϏ āϏāĻš response.output_text.delta āχāϭ⧇āĻ¨ā§āϟ āϤ⧈āϰāĻŋ āĻ•āϰ⧇āĨ¤
  • āĻ¸ā§āĻŸā§āϰāĻžāĻ•āϚāĻžāĻ°ā§āĻĄ āφāωāϟāĻĒ⧁āϟ: text.format (json_schema āϏāĻš) āĻŦā§āϝāĻŦāĻšā§ƒāϤ āĻšāϞ⧇, json.loads(resp.output_text) āϏāĻĢāϞ āĻšāϝāĻŧ āĻāĻŦāĻ‚ āĻ¸ā§āĻ•āĻŋāĻŽāĻžāϰ āϏāĻžāĻĨ⧇ āĻŽā§‡āϞ⧇āĨ¤
  • āϟ⧁āϞ-āĻ•āϞ āϞ⧁āĻĒ: āϝāĻĻāĻŋ āϟ⧁āϞ āĻŦā§āϝāĻŦāĻšā§ƒāϤ āĻšāϝāĻŧ, āĻŽāĻĄā§‡āϞ āϟ⧁āϞ āĻ•āϞ āχāĻ¸ā§āϝ⧁ āĻ•āϰ⧇, āĻ…ā§āϝāĻžāĻĒ āĻāϗ⧁āϞ⧋ āĻāĻ•ā§āϏāĻŋāĻ•āĻŋāωāϟ āĻ•āϰ⧇, āĻāĻŦāĻ‚ āĻĒāϰāĻŦāĻ°ā§āϤ⧀ āϰāĻŋāĻ•ā§‹ā§Ÿā§‡āĻ¸ā§āϟ āĻāĻ•āϟāĻŋ āĻšā§‚āĻĄāĻŧāĻžāĻ¨ā§āϤ output_text āϰāĻŋāϟāĻžāĻ°ā§āύ āĻ•āϰ⧇ (āĻ…āϏ⧀āĻŽ āϞ⧁āĻĒ āύāϝāĻŧ)āĨ¤
  • āĻ…ā§āϝāĻžāϏāĻŋāĻ™ā§āĻ• āĻĒā§āϝāĻžāϰāĻŋāϟāĻŋ: āϝāĻĻāĻŋ AsyncAzureOpenAI āĻŦā§āϝāĻŦāĻšāĻžāϰ āĻ•āϰāĻž āĻšāϝāĻŧ, AsyncOpenAI āĻāϰ āϏāĻŽāϤ⧁āĻ˛ā§āϝ await āϏāĻš āĻ•āĻžāϜ āĻ•āϰ⧇āĨ¤
  • āĻāϰāϰ āϰ⧇āϟ: āĻĒā§āϰāĻŋ-āĻŽāĻžāχāĻ—ā§āϰ⧇āĻļāύ āĻŦ⧇āϏāϞāĻžāχāύ āĻĨ⧇āϕ⧇ āϕ⧋āύ⧋ āύāϤ⧁āύ 400/401/404 āĻāϰāϰ āύ⧇āχāĨ¤

āĻĄā§‡āϞāĻŋāĻ­āĻžāϰ⧇āĻŦāϞāϏ

  • āϏāĻžāϰāϏāĻ‚āĻ•ā§āώ⧇āĻĒ⧇ āĻāĻĄāĻŋāϟ āĻ•āϰāĻž āĻĢāĻžāχāϞ, āφāϗ⧇/āĻĒāϰ⧇ āϞ⧇āĻ—ā§āϝāĻžāϏāĻŋ āĻ•āϞ āϏāĻžāχāϟ āĻ—āĻŖāύāĻž, āĻāĻŦāĻ‚ āĻĒāϰāĻŦāĻ°ā§āϤ⧀ āϧāĻžāĻĒ āϝ⧁āĻ•ā§āϤ āĻĨāĻžāĻ•āϤ⧇ āĻšāĻŦ⧇āĨ¤
  • āĻĒāϰāĻŋāĻŦāĻ°ā§āϤāύ āϗ⧁āϞ⧋ āĻ“āϝāĻŧāĻžāĻ°ā§āĻ•āĻŋāĻ‚-āĻŸā§āϰāĻŋ āĻāĻĄāĻŋāϟ āĻļ⧁āϧ⧁ (āĻ•āĻŽāĻŋāϟ āύāϝāĻŧ)āĨ¤

SDK āϏāĻ‚āĻ¸ā§āĻ•āϰāĻŖ āĻĒā§āĻ°ā§Ÿā§‹āϜāύ⧀āϝāĻŧāϤāĻž

āĻĒā§āϝāĻžāϕ⧇āϜ āϏāĻ°ā§āĻŦāύāĻŋāĻŽā§āύ āϏāĻ‚āĻ¸ā§āĻ•āϰāĻŖ
openai >=1.108.1
azure-identity āϏāĻ°ā§āĻŦāĻļ⧇āώ (EntraID āĻ…āĻĨ⧇āĻ¨ā§āϟāĻŋāϕ⧇āĻļāύ⧇āϰ āϜāĻ¨ā§āϝ)

āϰ⧇āĻĢāĻžāϰ⧇āĻ¨ā§āϏāϏāĻŽā§‚āĻš


āĻ…āĻ¸ā§āĻŦā§€āĻ•ā§ƒāϤāĻŋ:
āĻāχ āύāĻĨāĻŋāϟāĻŋ AI āĻ…āύ⧁āĻŦāĻžāĻĻ āĻĒāϰāĻŋāώ⧇āĻŦāĻž Co-op Translator āĻŦā§āϝāĻŦāĻšāĻžāϰ āĻ•āϰ⧇ āĻ…āύ⧂āĻĻāĻŋāϤ āĻšāϝāĻŧ⧇āϛ⧇āĨ¤ āϝāĻĻāĻŋāĻ“ āφāĻŽāϰāĻž āĻļ⧁āĻĻā§āϧāϤāĻžāϰ āϜāĻ¨ā§āϝ āĻšā§‡āĻˇā§āϟāĻž āĻ•āϰāĻŋ, āĻ…āύ⧁āĻ—ā§āϰāĻš āĻ•āϰ⧇ āĻŽāύ⧇ āϰāĻžāĻ–āĻŦ⧇āύ āϝ⧇ āĻ¸ā§āĻŦāϝāĻŧāĻ‚āĻ•ā§āϰāĻŋāϝāĻŧ āĻ…āύ⧁āĻŦāĻžāĻĻ⧇ āĻ¤ā§āϰ⧁āϟāĻŋ āĻŦāĻž āĻ…āϏāĻ™ā§āĻ—āϤāĻŋ āĻĨāĻžāĻ•āϤ⧇ āĻĒāĻžāϰ⧇āĨ¤ āĻŽā§‚āϞ āύāĻĨāĻŋāϟāĻŋ āϤāĻžāϰ āĻ¸ā§āĻŦāĻ­āĻžāώāĻžāϝāĻŧ āĻ•āĻ°ā§āϤ⧃āĻ¤ā§āĻŦāĻĒā§‚āĻ°ā§āĻŖ āĻ‰ā§ŽāϏ āĻšāĻŋāϏ⧇āĻŦ⧇ āĻŦāĻŋāĻŦ⧇āϚāĻŋāϤ āĻšāĻ“āϝāĻŧāĻž āωāϚāĻŋāϤāĨ¤ āϗ⧁āϰ⧁āĻ¤ā§āĻŦāĻĒā§‚āĻ°ā§āĻŖ āϤāĻĨā§āϝ⧇āϰ āϜāĻ¨ā§āϝ āĻĒ⧇āĻļāĻžāĻĻāĻžāϰ āĻŽāĻžāύāĻŦ āĻ…āύ⧁āĻŦāĻžāĻĻ āϏ⧁āĻĒāĻžāϰāĻŋāĻļ āĻ•āϰāĻž āĻšāϝāĻŧāĨ¤ āĻāχ āĻ…āύ⧁āĻŦāĻžāĻĻ⧇āϰ āĻŦā§āϝāĻŦāĻšāĻžāϰ⧇ āĻĒā§āϰāϝāĻŧā§‹āϜāύ⧀āϝāĻŧ āϭ⧁āϞ āĻŦā§‹āĻāĻžāĻŦ⧁āĻāĻŋ āĻŦāĻž āϭ⧁āϞ āĻŦā§āϝāĻžāĻ–ā§āϝāĻžāϰ āϜāĻ¨ā§āϝ āφāĻŽāϰāĻž āĻĻāĻžāϝāĻŧāĻŦāĻĻā§āϧ āύāχāĨ¤