[{"data":1,"prerenderedAt":-1},["ShallowReactive",2],{"skill:01M699X3WD8G46R5WXVJ45QAX7":3,"skill-same:01M699X3WD8G46R5WXVJ45QAX7":62},{"skillNo":4,"name":5,"nameZh":6,"description":6,"descriptionZh":6,"repositoryFullName":7,"ownerLogin":8,"ownerAvatarUrl":9,"ownerAccountNo":10,"ownerDisplayName":11,"repositoryNo":12,"starsCount":13,"licenseSpdxId":14,"licenseFileUrl":6,"sourceHtmlUrl":15,"categories":16,"keywords":17,"publishedAt":19,"linkOnly":20,"markdownContent":21,"markdownBody":22,"frontMatter":23,"refName":24,"commitSha":25,"skillDirectory":26,"forksCount":27,"repositoryHtmlUrl":28,"repositoryHomepageUrl":29,"ownerHtmlUrl":30,"ownerBlogUrl":31,"ownerDescription":32,"updatedAt":33,"install":34,"resources":47},"01M699X3WD8G46R5WXVJ45QAX7","azure-openai-to-responses",null,"microsoft\u002Fai-agents-for-beginners","microsoft","https:\u002F\u002Favatars.githubusercontent.com\u002Fu\u002F6154722?v=4","01M698VYDXZ6JW5WH3CRV650R8","Microsoft","01M6998ZK2275KMJE6Y5SEA2X2",79423,"MIT","https:\u002F\u002Fgithub.com\u002Fmicrosoft\u002Fai-agents-for-beginners\u002Fblob\u002Fmain\u002Ftranslations\u002Fte\u002F.agents\u002Fskills\u002Fazure-openai-to-responses\u002FSKILL.md",[],[18],"azure openai to responses","2026-11-10 10:12:30",false,"---\nname: azure-openai-to-responses\nlicense: MIT\n---\n# Azure OpenAI చాట్ కంఫ్లిషన్స్ నుండి Responses API కి Python యాప్స్ ను మార్పిడి చేయండి\n\n> **అధికారిక మార్గదర్శనం — ఖచ్చితంగా అనుసరించండి**\n>\n> ఈ నైపుణ్యం Azure OpenAI చాట్ కంఫ్లిషన్స్ వాడే Python కోడ్‌బేస్‌లను\n> ఏకీకృత Responses API కి మార్చుతుంది. ఈ సూచనలను ఖచ్చితంగా అనుసరించండి.\n> పారామితి మ్యాపింగ్స్ ని ఊహించ వద్దు లేదా API ఆకారాలను ఆవిష్కరించ వద్దు.\n\n---\n\n## ట్రిగ్గర్స్\n\nవాడుకరి క్రింది చర్యలు కోరినప్పుడు ఈ నైపుణ్యాన్ని ప్రారంభించండి:\n- Azure OpenAI చాట్ కంఫ్లిషన్స్ నుండి Responses APIకి Python యాప్ మార్చడం\n- Azure OpenAI కి వ్యతిరేకంగా Python OpenAI SDK వాడకాన్ని తాజాగా API ఆకారానికి అభివృద్ధి చేయడం\n- Responses అవసరమయ్యే GPT-5 లేదా కొత్త మోడల్స్ కి Python కోడ్ సిద్ధం చేయడం\n- `AzureOpenAI`\u002F`AsyncAzureOpenAI` నుండి సాంప్రదాయ `OpenAI`\u002F`AsyncOpenAI` క్లయింట్ కి v1 ఎండ్పాయింట్ తో మారడం\n- `AzureOpenAI` నిర్మాణాలు లేదా `api_version` కి సంబంధించి డిప్రికేషన్ హెచ్చరికలను సవరణ చేయడం\n\n---\n\n## ⚠️ మోడల్ అనుకూలత — ముందుగా తనిఖీ చేయండి\n\n> **మార్పిడి చేసేముందు, మీ Azure OpenAI డిప్లాయ్‌మెంట్ Responses APIని మద్దతు ఇస్తుందో లేదో ధృవీకరించండి.**\n\n### 1. మీ డిప్లాయ్‌మెంట్‌ను స్మోక్స్-టెస్ట్ చేయండి (అత్యంత వేగవంతమైనది)\n\n```python\nimport os\nfrom openai import OpenAI\n\nclient = OpenAI(\n    api_key=os.environ[\"AZURE_OPENAI_API_KEY\"],\n    base_url=f\"{os.environ['AZURE_OPENAI_ENDPOINT'].rstrip('\u002F')}\u002Fopenai\u002Fv1\u002F\",\n)\n\ntry:\n    resp = client.responses.create(\n        model=os.environ[\"AZURE_OPENAI_DEPLOYMENT\"],\n        input=\"ping\",\n        max_output_tokens=50,\n        store=False,\n    )\n    print(f\"✅ Deployment supports Responses API: {resp.output_text}\")\nexcept Exception as e:\n    print(f\"❌ Deployment does NOT support Responses API: {e}\")\n```\n\n> **గమనిక**: Azure OpenAIలో `max_output_tokens`కి **కనీసం 16** ఉంటుంది. 16 కంటే తక్కువ విలువలు 400 ఎర్రర్ ఇస్తాయి. స్మోక్స్ టెస్ట్ కోసం 50+ వాడండి.\n\nఇది 404 ఇస్తే, డిప్లాయ్‌మెంట్ మోడల్ ఇంకా Responses మద్దతు ఇవ్వట్లేదు — క్రింది సూచనలను తనిఖీ చేయండి లేదా మద్దతు ఇచ్చే మోడల్‌తో మళ్లీ డిప్లాయ్ చేయండి.\n\n### 2. మీ ప్రాంతంలో అందుబాటులో ఉన్న మోడల్స్ తనిఖీ చేయండి (భలే సూచన)\n\nResponses API మద్దతుతో మీ నిర్దిష్ట ప్రాంతంలో ఏ మోడల్స్ అందుబాటులో ఉన్నాయో చూడటానికి బిల్ట్-ఇన్ మోడల్ అనుకూలత టూల్ ను రన్ చేయండి:\n\n```bash\npython migrate.py models --subscription YOUR_SUB_ID --location YOUR_REGION\n```\n\nఇది Azure ARM లైవ్‌ను క్వెరీ చేసి అనుకూలత మేట్రిక్స్ చూపిస్తుంది — ఏ మోడల్స్ Responses, నిర్మిత అవుట్‌పుట్, టూల్స్ మద్దతు ఇస్తాయి. ఫలితాలను మాత్రం `--filter gpt-5.1,gpt-5.2` తో ఎలా తగ్గించుకునాలో లేదా స్క్రిప్టింగ్ కోసం `--json` ఉపయోగించండి.\n\n### 3. పూర్తి మోడల్ మద్దతు సూచిక\n\n- **లైవ్ క్వెరీ**: `python migrate.py models` (పైన చూడండి — ప్రాంత పరీక్షిత, ఎప్పుడూ నవీకరణలు)\n- **దహించిన సవరించు**: [మోడల్ సారాంశ పట్టిక మరియు ప్రాంత అందుబాటు](https:\u002F\u002Flearn.microsoft.com\u002Fen-us\u002Fazure\u002Ffoundry\u002Ffoundry-models\u002Fconcepts\u002Fmodels-sold-directly-by-azure?tabs=global-standard-aoai%2Cglobal-standard&pivots=azure-openai#model-summary-table-and-region-availability)\n- **త్వరిత ప్రారంభం & మార్గదర్శనం**: **https:\u002F\u002Faka.ms\u002Fopenai\u002Fstart**\n\n### ⚠️ పాత మోడల్ పరిమితులు\n\n> **హెచ్చరిక**: పాత మోడల్స్ (`gpt-4.1` కి ముందు) Responses API యొక్క అన్ని సവിശేషాలు పూర్తిగా మద్దతు ఇవ్వకపోవచ్చును.\n>\n> పాత మోడల్స్ కు తెలిసిన పరిమితులు:\n> - **`reasoning` పారామితి**: చాలా non-reasoning మోడల్స్ మద్దతు ఇవ్వవు. అసలైన కోడ్‌లో ఉండకపోతే `reasoning`ని మార్చవద్దు.\n> - **`seed` పారామితి**: Responses APIలో మద్దతు లేదు — అన్ని అభ్యర్థనల నుంచి తీసివేయండి.\n> - **`text.format` ద్వారా నిర్మిత అవుట్‌పుట్**: పాత మోడల్స్ `strict: true` JSON స్కీమాస్‌ను విశ్వసనీయంగా అమలు చేయకపోవచ్చు.\n> - **టూల్ నిర్వహణ**: GPT-5+ అంతర్గత reasoningలో టూల్ కాల్స్ నిర్వహణ చేస్తుంది. Responses పై పాత మోడల్స్ ఇంకా పనిచేస్తాయి కానీ దీర్ఘ అనుసంధానం ఉండదు.\n> - **ఉష్ణోగ్రత పరిమితులు**: `gpt-5`కి మార్పిడి చేస్తే ఉష్ణోగ్రత వదిలివేయాలి లేదా `1` కు సెట్ చేయాలి. పాత మోడల్స్ కు ఇలాంటి పరిమితి లేదు.\n\n### O-శ్రేణి reasoning మోడల్స్ (o1, o3-mini, o3, o4-mini)\n\nO-శ్రేణి మోడల్స్ కి ప్రత్యేక పారామితి పరిమితులు ఉంటాయి. o-శ్రేణి మోడల్స్ ఉపయోగించే యాప్స్ మార్చేటప్పుడు:\n\n- **`temperature`**: `1` (లేదా వదిలివేయాలి). O-శ్రేణి మోడల్స్ ఇతర విలువలను స్వీకరించవు.\n- **`max_completion_tokens` → `max_output_tokens`**: Azure ప్రత్యేక `max_completion_tokens` వాడుతూ యాప్స్ `max_output_tokens` కి మారాలి. reasoning టోకెన్స్ పరిమితి మీద నీడ పడుతాయి కాబట్టి ఎక్కువ విలువ (4096+) సెట్ చేయండి.\n- **`reasoning_effort`**: యాప్ `reasoning_effort` (తక్కువ\u002Fమధ్య\u002Fఅధిక) వాడితే కొనసాగించండి — Responses API ఇది o-శ్రేణి మోడల్స్ కి మద్దతు ఇస్తుంది.\n- **స్ట్రీమింగ్ ప్రవర్తన**: O-శ్రేణి మోడల్స్ reasoning పూర్తయ్యేవరకు అవుట్‌పుట్‌ను బఫర్ చేసి టెక్స్ట్ డెల్టా ఈవెంట్స్ విడుదల చేస్తాయి. స్ట్రీమింగ్ పనిచేస్తుంది, కానీ మొదటి `response.output_text.delta` GPT మోడల్స్ కంటే ఎక్కువ ఆలస్యం తో వచ్చుకోవచ్చు.\n- **`top_p`**: O-శ్రేణి మీద మద్దతు లేదు — ఉన్నా తీసివేయండి.\n- **టూల్ వాడకం**: O-శ్రేణి మోడల్స్ Responses API ద్వారా టూల్స్ ను GPT మోడల్స్ లాగా మద్దతు ఇస్తాయి, కానీ టూల్ కాల్ నిర్వహణ నాణ్యత మోడల్ పై ఆధారపడి ఉంటుంది.\n\n**చర్య — ముందస్తు మోడల్ సలహా**: స్కాన్ దశలో యాప్ ఏ మోడల్ లక్ష్యంగా పెట్టుకొన్నదో (డిప్లాయ్‌ನామాలు, env వేరియబుల్స్, కాన్ఫిగ్) తనిఖీ చేయండి. మోడల్ `gpt-4.1` కంటే ముందు వుంటే (gpt-4.1+ కాదంటే) వాడుకరికి ముందస్తుగా చెప్పండి:\n- ప్రస్తుతం ఉపయోగిస్తున్న మోడల్ మీద సాధారణ టెక్స్ట్, చాట్, స్ట్రీమింగ్ మరియు టూల్స్ కోసం మైగ్రేషన్ పనిచేస్తుంది.\n- కొత్త మోడల్స్ (`gpt-5.1`, `gpt-5.2`) మెరుగైన టూల్ నిర్వహణ, నిర్మిత అవుట్‌పుట్ అమల, reasoning మరియు ప్రాంతాల మధ్య అందుబాటును అందిస్తాయి.\n- వారు సిద్ధంగా ఉన్నప్పుడు డిప్లాయ్‌మెంట్ ని అభివృద్ధి చేయాలని పరిగణించాలి — ఇది మైగ్రేషన్ ని అడ్డుకోవడం కాదు.\n\nమోడల్ వెర్షన్ ఆధారంగా మైగ్రేషన్ ని ఆపివేయొద్దు లేదా నిరాకరించొద్దు. సలహా సమాచారకరకమైంది.\n\n### GitHub Models Responses APIని మద్దతు ఇవ్వలేదు\n\n> **GitHub Models (`models.github.ai`, `models.inference.ai.azure.com`) Responses APIని మద్దతు ఇవ్వవు.**\n\nకోడ్‌బేస్‌లో GitHub Models కోడ్ పాథ్ ఉన్నట్లయితే (`base_url` `models.github.ai` లేదా `models.inference.ai.azure.com`కి సూచిస్తుంటే), మైగ్రేషన్ సమయంలో **మొత్తం తీసివేయండి**. Responses APIకి Azure OpenAI, OpenAI లేదా సారూప్య లోకల్ ఎండ్పాయింట్ (ఉదా: Ollama Responses మద్దతుతో) అవసరం.\n\nస్కాన్ సమయంలో చర్య:\n- GitHub Models కోడ్ పాథ్‌లను తీసివేం చేయడానికి గుర్తించండి.\n\n---\n\n## ఫ్రేమ్‌వర్క్ మైగ్రేషన్\n\nచాల యాప్స్ OpenAI పై ఉన్న ఉన్నత స్థాయి ఫ్రేమ్‌వర్క్లు వాడతారు. ఇవి మార్చేటప్పుడు కేవలం OpenAI కాల్స్ కాదు, ఫ్రేమ్‌వర్క్ యొక్క స్వంత API మార్పులు తప్పనిసరి.\n\n### Microsoft Agent Framework (MAF)\n\n**మీలాంటి MAF వెర్షన్ ముందు తనిఖీ చేయండి** — మైగ్రేషన్ మీరు MAF 1.0.0+ లో ఉన్నారా లేదా పూర్వ 1.0.0 బీటా\u002Fఆర్‌సి లో అన్నది ఆధారపడి ఉంటుంది.\n\n#### MAF 1.0.0+ (agent-framework-openai >= 1.0.0)\n\n`OpenAIChatClient` **ఇప్పటికే Responses API వాడుతుంది** — మార్పులు అవసరం లేదు. కోడ్‌బేస్ లెగసీ `OpenAIChatCompletionClient` (`chat.completions.create` వాడుతుంది) వాడుతుంటే దానిని `OpenAIChatClient`తో మార్చండి.\n\n| మునుపటి | తర్వాత |\n|---------|--------|\n| `from agent_framework.openai import OpenAIChatCompletionClient` | `from agent_framework.openai import OpenAIChatClient` |\n| `OpenAIChatCompletionClient(...)` | `OpenAIChatClient(...)` |\n\nమీ వెర్షన్ తనిఖీకి: `python -c \"import agent_framework_openai; print(agent_framework_openai.__version__)\"`\n\n#### MAF pre-1.0.0 (బీటా\u002Fఆర్‌సి విడుదలలు)\n\npre-1.0.0 MAFలో, `OpenAIChatClient` Chat Completions వాడింది. `agent-framework-openai>=1.0.0`కు నవీకరించండి, ఇక్కడ `OpenAIChatClient` డిఫాల్ట్ గా Responses API వాడుతుంది.\n\nఇంకొన్ని మార్పులు అవసరం లేదు — `Agent` మరియు టూల్ APIలు అలాగే ఉంటాయి.\n\n### LangChain (`langchain-openai`)\n\n`ChatOpenAI()`కు `use_responses_api=True` జత చేయండి. అదే సమయంలో ప్రతిస్పందన యాక్సెస్ `.content` నుండి `.text` కి మార్చండి.\n\n| మునుపటి | తర్వాత |\n|---------|--------|\n| `ChatOpenAI(model=..., base_url=..., api_key=...)` | `ChatOpenAI(model=..., base_url=..., api_key=..., use_responses_api=True)` |\n| `result['messages'][-1].content` | `result['messages'][-1].text` |\n\nపూర్తి మునుపటి\u002Fతర్వాత కోడ్ ఉదాహరణల కోసం [cheat-sheet.md](.\u002Freferences\u002Fcheat-sheet.md) చూడండి.\n\n---\n\n## ఫ్రంట్‌ఎండ్ మార్పిడి మార్గదర్శనం\n\n> **Responses API సర్వర్-సైడ్ విషయం.** మీ Python బ్యాకెండ్ మార్చండి; ఫ్రంట్‌ఎండ్ HTTP ఒప్పందం మారకూడదు, మీ బ్యాకెండ్ తేలికపాటి పాస్-త్రూ అయితే మాత్రమే Responses అభ్యర్థన ఆకారాన్ని స్వీకరించడం పరిశీలించండి. ఫ్రంట్‌ఎండ్ నుండి క్లీంట్-సైడ్ కీతో నేరుగా OpenAIకి సంభాషిస్తే, మొదట ఆ కాల్స్ బ్యాకెండ్‌కు మార్చండి.\n\n### `@microsoft\u002Fai-chat-protocol` డిప్రికేషన్\n\n`@microsoft\u002Fai-chat-protocol` npm ప్యాకేజీ డిప్రికేట్ అయింది, దాన్ని [`ndjson-readablestream`](https:\u002F\u002Fwww.npmjs.com\u002Fpackage\u002Fndjson-readablestream)తో మార్చాలి. ఫ్రంట్‌ఎండ్‌లో దాన్ని చూసినట్లయితే:\n\n1. CDN స్క్రిప్ట్ ట్యాగ్ మార్చండి:\n   ```html\n   \u003C!-- Before -->\n   \u003Cscript src=\"https:\u002F\u002Fcdn.jsdelivr.net\u002Fnpm\u002F@microsoft\u002Fai-chat-protocol@...\u002Fdist\u002Fiife\u002Findex.js\">\u003C\u002Fscript>\n   \u003C!-- After -->\n   \u003Cscript src=\"https:\u002F\u002Fcdn.jsdelivr.net\u002Fnpm\u002Fndjson-readablestream@1.0.7\u002Fdist\u002Fndjson-readablestream.umd.js\">\u003C\u002Fscript>\n   ```\n2. `AIChatProtocolClient` యొక్క ఇనిస్టాన్షియేషన్ (`new ChatProtocol.AIChatProtocolClient(\"\u002Fchat\")`) తీసివేయండి.\n3. `client.getStreamedCompletion(messages)`ని ప్రత్యక్ష `fetch()` బ్యాకెండ్ స్ట్రీమింగ్ ఎండ్పాయింట్ కాల్‌తో మార్చండి.\n4. `for await (const response of result)` ని `for await (const chunk of readNDJSONStream(response.body))` తో మార్చండి.\n5. ప్రాపర్టీ యాక్సెస్‌ను `response.delta.content` \u002F `response.error` నుండి `chunk.delta.content` \u002F `chunk.error` కు సవరించండి.\n\n---\n\n## లక్ష్యాలు\n\n- Azure OpenAIపై చాట్ కంఫ్లిషన్స్ లేదా లెగసీ కంఫ్లిషన్స్ వాడే అన్ని Python కాల్ సైట్లను లిస్ట్ చేయండి.\n- Python కోడ్‌బేస్ కోసం మైగ్రేషన్ ప్రణాళిక మరియు సన్నాహాలను ప్రతిపాదించండి.\n- Responses APIకి మార్పిడికి భద్రంగా, కనిష్ట మార్పులను వర్తించండి.\n- కాలర్స్ Responses అవుట్‌పుట్ స్కీమాను వినియోగించేందుకు అప్డేట్ చేయండి; బ్యాక్‌కంపాటిబిలిటీ ర్యాపర్లు అవసరం లేదు.\n- పరీక్షలు \u002F లింట్స్ నడపండి; మైగ్రేషన్ వల్ల ఏర్పడిన చిన్న బగ్స్ ని సరి చేయండి.\n- చిన్న, సమీక్షించదగిన చేంజ్ సెట్‌లను సిద్ధం చేసి చివరి సారాంశాన్ని డిఫ్స్ తో ఇవ్వండి (కమిట్ వద్దు).\n\n---\n\n## గార్డ్రెయిల్స్\n\n- గిట్ వర్క్ స్పేస్ లోని ఫైళ్ళను మాత్రమే మార్చండి. బైటకు ఎక్కడైనా రాయకండి.\n- వెనుకకు అనుకూలత కోసం షిమ్స్ పోషించకండి; కోడ్ ను కొత్త API ఆకారానికి మార్చండి.\n- టంబ్‌స్టోన్\u002Fట్రాన్సిషన్ కామెంట్లు లేదా బ్యాకప్ ఫైళ్ళను వదలవద్దు.\n- ముందుగా స్ట్రీమింగ్ వాడితే ఆ semantics ని నిలుపుకోండి; లేకపోతే non-streaming వాడండి.\n- అంగీకార మోడ్ లో ఉంటే కమాండ్లు లేదా నెట్‌వర్క్ కాల్స్ నీడ నడపేముందు ఆమోదం కోరండి.\n- `git add`\u002F`git commit`\u002F`git push` నడపకండి; వర్కింగ్-ట్రీ ఎడిట్స్ మాత్రమే ఉత్పత్తి చేయండి.\n\n---\n\n## అడుగు 0: Azure OpenAI క్లయింట్ మైగ్రేషన్ (ముందస్తు అవసరం)\n\nకోడ్‌బేస్ `AzureOpenAI` లేదా `AsyncAzureOpenAI` నిర్మాణాలు వాడుతుంటే, ముందుగా స్టాండర్డ్ `OpenAI` \u002F `AsyncOpenAI` కాంట్రాక్టర్లు కి మార్చండి. Azure-ప్రత్యేక కాంట్రాక్టర్లు `openai>=1.108.1` లో డిప్రికేట్ అయ్యాయి.\n\n### ఎందుకు v1 API మార్గం?\n\nకొత్త `\u002Fopenai\u002Fv1` ఎండ్పాయింట్ `AzureOpenAI()` కాకుండా సాదారణ `OpenAI()` క్లయింట్ ఉపయోగిస్తుంది, `api_version` పారామితి అవసరం లేదు, OpenAI మరియు Azure OpenAIలో ఒకే విధంగా పనిచేస్తుంది. ఒకే క్లయింట్ కోడ్ భవిష్యత్ సుస్థిరం — వెర్షన్ నిర్వహణ అవసరం లేదు.\n\n### ముఖ్యమైన మార్పులు\n\n| మునుపటి | తర్వాత |\n|--------|-------|\n| `AzureOpenAI` | `OpenAI` |\n| `AsyncAzureOpenAI` | `AsyncOpenAI` |\n| `azure_endpoint` | `base_url` |\n| `azure_ad_token_provider` | `api_key` |\n| `api_version=...` | పూర్తిగా తీసివేయండి |\n\n### శుభ్రపరిచే జాబితా\n\n- క్లయింట్ నిర్మాణం నుంచి `api_version` ఆర్గ్యూమెంటును తీసివేయండి.\n- `.env`, యాప్ సెట్టింగ్స్, Bicep\u002Fఇన్‌ఫ్రా ఫైళ్ల నుండి `AZURE_OPENAI_VERSION` \u002F `AZURE_OPENAI_API_VERSION` వాతావరణ వేరియబుల్స్ తొలగించండి.\n- `.env`, యాప్ సెట్టింగ్స్, Bicep\u002Fఇన్‌ఫ్రా, టెస్ట్ ఫిక్స్చర్లలో `AZURE_OPENAI_CLIENT_ID`ను `AZURE_CLIENT_ID`గా పేరు మార్చండి (స్టాండర్డ్ Azure Identity SDK సాంప్రదాయం).\n- `requirements.txt` లేదా `pyproject.toml` లో `openai>=1.108.1` ని నిర్ధారించండి.\n\n### వాతావరణ వేరియబుల్ మైగ్రేషన్\n\n| పాత env var | చర్య | గమనికలు |\n|-------------|--------|-------|\n| `AZURE_OPENAI_VERSION` | **తీసివేయండి** | v1 ఎండ్పాయింట్‌తో `api_version` అవసరం లేదు |\n| `AZURE_OPENAI_API_VERSION` | **తీసివేయండి** | పై విధంగా |\n| `AZURE_OPENAI_CLIENT_ID` | **పేరు మార్చండి** → `AZURE_CLIENT_ID` | `ManagedIdentityCredential(client_id=...)` కు స్టాండర్డ్ Azure Identity SDK సాంప్రదాయం |\n| `AZURE_OPENAI_ENDPOINT` | **పొడుపు** | ఇంకా `base_url` నిర్మాణానికి అవసరం |\n| `AZURE_OPENAI_CHAT_DEPLOYMENT` | **పొడుపు** | `responses.create`లో `model` పారామితిగా ఉపయోగం |\n| `AZURE_OPENAI_API_KEY` | **పొడుపు** | కీ ఆధారిత ధృవీకరణ కోసం `api_key`గా ఉపయోగం |\n\nక్లయింట్ సెటప్ కోడ్ ఉదాహరణల కోసం (సింక్, అసింక్, EntraID, API కీ, బహుళ-టెనెంట్), [cheat-sheet.md](.\u002Freferences\u002Fcheat-sheet.md) చూడండి.\n\n---\n\n## అడుగు 1: లెగసీ కాల్ సైట్లను గుర్తించండి\n\nమార్చాల్సిన అన్ని కాల్ సైట్లను కనుగొనడానికి [detect_legacy.py](..\u002F..\u002F..\u002F..\u002F..\u002F.agents\u002Fskills\u002Fazure-openai-to-responses\u002Fscripts\u002Fdetect_legacy.py) స్క్రిప్ట్ నడిపించండి:\n\n```bash\npython skills\u002Fazure-openai-to-responses\u002Fscripts\u002Fdetect_legacy.py .\n```\n\nలేకపోతే ఈ సెర్చ్‌లు మాన వాయిగా నిర్వహించండి — ప్రతి మ్యాచ్ మైగ్రేషన్ టార్గెట్.\n\n```bash\n# వారసత్వ API కాల్స్ (మళ్ళీ రాయాలి)\nrg \"chat\\.completions\\.create\"\nrg \"ChatCompletion\\.create\"\nrg \"Completion\\.create\"\n\n# డిప్రికేటెడ్ అజ్యూర్ క్లయింట్ కనిస్ట్రక్టర్స్ (మార్చాలి)\nrg \"AzureOpenAI\\(\"\nrg \"AsyncAzureOpenAI\\(\"\n\n# స్పందన ఆకృతి యాక్సెస్ నమూనాలు (అప్డేట్ చేయాలి)\nrg \"choices\\[0\\]\\.message\\.content\"\nrg \"choices\\[0\\]\\.delta\\.content\"\nrg \"choices\\[0\\]\\.message\\.function_call\"\nrg \"choices\\[0\\]\\.message\\.tool_calls\"\n\n# పాత నెస్టెడ్ ఫార్మాట్‌లో టూల్ నిర్వచనలు (ఫ్లాటెన్ చేయాలి)\nrg '\"function\":\\s*{\\s*\"name\"'\nrg \"pydantic_function_tool\"\n\n# పాత ఫార్మాట్‌లో టూల్ ఫలితాలు (function_call_output కు మార్చాలి)\nrg '\"role\":\\s*\"tool\"'\nrg '\"tool_call_id\"'\n\n# డిప్రికేటెడ్ పారామీటర్లు (తొలగించాలి లేదా పేరును మార్పు చేయాలి)\nrg \"response_format\"\nrg \"max_tokens\\b\"        # max_output_tokens అనే పేరుతో మార్చండి\nrg \"['\\\"]seed['\\\"]\"      # remove entirely\n\n# డిప్రికేటెడ్ env వేరియబుల్స్ (శుభ్రపరచండి)\nrg \"AZURE_OPENAI_API_VERSION|AZURE_OPENAI_VERSION\"\nrg \"AZURE_OPENAI_CLIENT_ID\"  # AZURE_CLIENT_ID కావాలి\n\n# GitHub మోడల్స్ ఎండ్పాయింట్లు (తొలగించాలి — Responses API మద్దతు లేదు)\nrg \"models\\.github\\.ai|models\\.inference\\.ai\\.azure\"\n\n# ఫ్రేమ్‌వర్క్ స్థాయి వారసత్వ నమూనాలు (అప్డేట్ చేయాలి)\nrg \"OpenAIChatCompletionClient\"  # MAF 1.0.0+: OpenAIChatClient తో మార్చండి\nrg \"ChatOpenAI\\(\" | grep -v \"use_responses_api\"  # LangChain: use_responses_api=True కావాలి\n\n# టెస్ట్ ఇన్‌ఫ్రాస్ట్రక్చర్ (అప్డేట్ చేయాలి)\nrg \"ChatCompletionChunk|AsyncCompletions\\.create\" tests\u002F\nrg \"_azure_ad_token_provider\" tests\u002F\nrg \"prompt_filter_results|content_filter_results\" tests\u002F\nrg \"choices\\[0\\]\" tests\u002F\n\n# కంటెంట్ ఫిల్టర్ లోపం బాడీ యాక్సెస్ (అప్డేట్ చేయాలి — నిర్మాణం మారింది)\nrg 'innererror.*content_filter_result|error\\.body\\[\"innererror\"\\]'\nrg \"content_filter_result\\[\" # పాత ఏకవచనం — ఇప్పుడు content_filters అర్రేలో content_filter_results (బహువచనం)\n\n# Chat Completions ఎండ్పాయింట్‌కి రా HTTP కాల్స్ (URL అప్డేట్ చేయాలి)\nrg \"\u002Fopenai\u002Fdeployments\u002F.*\u002Fchat\u002Fcompletions\"\nrg \"api-version=\"\n```\n\n### heuristics (గుర్తించి, పునఃరాయింపు చేయండి)\n\n- **చాట్ కంఫ్లిషన్స్ క్లయింట్**: `client.chat.completions.create` → `client.responses.create(...)`.\n\n- **ఆజ్యూర్ క్లయింట్ కన్స్ట్రక్టర్లు**: `AzureOpenAI(...)` → `OpenAI(base_url=..., api_key=...)`.\n- **సాధనాలు**: ఫంక్షన్-కాలింగ్ టూల్ నిర్వచనాలను నెస్ట్格式్ నుండి (`{\"type\": \"function\", \"function\": {\"name\": ...}}`) ఫ్లాట్ Responses ఫార్మాట్ కు మార్చండి (`{\"type\": \"function\", \"name\": ...}`); `tool_choice` ఉపయోగించండి; టూల్ ఫలితాలను `{\"type\": \"function_call_output\", \"call_id\": ..., \"output\": ...}` ఐటెమ్స్ (కాదు `{\"role\": \"tool\", ...}`) గా రిటర్న్ చేయండి.\n- **టూల్ రౌండ్-ట్రిప్స్**: మోడల్ ఫంక్షన్ కాల్స్ ఇచ్చినపుడు, `response.output` ఐటెమ్స్ ను సంభాషణకు జోడించండి (మాన్యువల్ `{\"role\": \"assistant\", \"tool_calls\": [...]}` డిక్ట్ కాదు), తరువాత ప్రతి ఫలితానికీ `function_call_output` ఐటెమ్స్ ను జోడించండి.\n- **ఫ్యూ-షాట్ టూల్ ఉదాహరణలు**: సంభాషణలో హార్డ్‌కోడ్ చేసిన టూల్ కాల్ ఉదాహరణలు ఉంటే, వాటిని `{\"type\": \"function_call\", \"id\": \"fc_...\", \"call_id\": \"fc_...\", ...}` + `{\"type\": \"function_call_output\", ...}` ఐటెమ్స్ గా మార్పులు చేయండి. IDs తప్పనిసరిగా `fc_` తో మొదలవ్వాలి.\n- **`pydantic_function_tool()`**: ఈ హెల్పర్ ఇంకా పాత నెస్ట్格式్ ను ఉత్పత్తి చేస్తుంది మరియు `responses.create()` కు **అనుకూలం కాదు**. దానిని మాన్యువల్ టూల్ నిర్వచనలతో లేదా ఫ్లాటెనింగ్ ర్యాపర్ తో మార్చండి.\n- **మల్టీ-టర్న్**: అప్లో సంభాషణ చరිතాన్ని ఉంచండి; గత టర్న్లను `input` ఐటెమ్స్ ద్వారా పంపండి.\n- **ఫార్మాటింగ్**: చాట్లో ఉన్న టాప్-లెవెల్ `response_format` ను Responses లో `text.format` తో మార్చండి. సాధారణ ఆకారము: `text={\"format\": {\"type\": \"json_schema\", \"name\": \"Output\", \"strict\": True, \"schema\": {...}}}`.\n- **కంటెంట్ ఐటెమ్స్**: చాట్ `content[].type: \"text\"` ను Responses లో యూజర్\u002Fసిస్టమ్ టర్న్ల కోసం `content[].type: \"input_text\"` గా మార్చండి.\n- **చిత్రం కంటెంట్ ఐటెమ్స్**: చాట్ `content[].type: \"image_url\"` ను Responses లో `content[].type: \"input_image\"` గా మార్చండి. `image_url` ఫీల్డ్ గల నెస్ట్ అబ్జెక్ట్ `{\"url\": \"...\"}` ను ఫ్లాట్ స్ట్రింగ్ గా మార్చండి. ముందు \u002F తరువాత ఉదాహరణలు కోసం చిట్ షీట్ చూడండి.\n- **ఆలోచనా శ్రమ**: **అసలు కోడులో `reasoning` ఇప్పటికే ఉంటేనే మాత్రమే మైగ్రేట్ చేయండి**.\n- **కంటెంట్ ఫిల్టర్ ఎర్రర్ హ్యాండ్లింగ్**: లోపపు బాడీ నిర్మాణం మార్చబడింది. చాట్ కంప్లీషన్స్ `error.body[\"innererror\"][\"content_filter_result\"]` (ఏకవచనం) ఉపయోగించగా; Responses API `error.body[\"content_filters\"][0][\"content_filter_results\"]` (బహువచనం, ఒక అర్రే లో) ఉపయోగిస్తుంది. `innererror` ను యాక్సెస్ చేసే కోడ్ `KeyError` ని తేపుతుంది. కొత్త పాథ్ ఉపయోగించి రచయిత చేయండి.\n- **అనరూప రా HTTP కాల్స్**: అప్లికేషన్ Azure OpenAI REST API ని నేరుగా (\u002Fopenai\u002Fdeployments\u002F{name}\u002Fchat\u002Fcompletions?api-version=...) ద్వారా పిలిచితే, `\u002Fopenai\u002Fv1\u002Fresponses` కి రీసెటప్ చేయండి. రిక్వెస్ట్ బాడీ మార్పులు: `messages` → `input`, `max_output_tokens` మరియు `store: false` జతచేయండి, `api-version` క్వెరీ ప్యారామీ తీసేయండి. రిస్పాన్స్ బాడీ మార్పులు: `choices[0].message.content` → `output[0].content[0].text` (గమనిక: `output_text` అనేది SDK సౌకర్యం, రా REST JSON లో లేదు).\n\n---\n\n## దశ 2: మైగ్రేషన్ అప్లై చేయండి\n\n### మైగ్రేషన్ గమనికలు (చాట్ కంప్లీషన్స్ → Responses)\n\n- **ఎందుకు మైగ్రేట్ చేయాలి**: Responses టెక్స్ట్, టూల్స్, మరియు స్ట్రీమింగ్ కి యూనిఫైడ్ API; చాట్ కంప్లీషన్స్ పాతది. GPT-5 తో Responses మంచి పనితీరు కోసం అవసరము.\n- **HTTP**: ఆజ్యూర్ ఎండ్‌పాయింట్ `\u002Fopenai\u002Fdeployments\u002F{name}\u002Fchat\u002Fcompletions` నుండి `\u002Fopenai\u002Fv1\u002Fresponses` కి మారింది.\n- **ఫీల్డ్స్**: `messages` → `input`, `max_tokens` → `max_output_tokens`. `temperature` ఒకటే.\n- **ఫార్మాటింగ్**: `response_format` → సరైన ఆబ్జెక్టుతో `text.format`.\n- **కంటెంట్ ఐటెమ్స్**: సిస్టమ్\u002Fయూజర్ టర్న్ల కోసం చాట్ `content[].type: \"text\"` ని Responses లో `content[].type: \"input_text\"`కి మార్చండి.\n- **చిత్రం కంటెంట్ ఐటెమ్స్**: చాట్ `content[].type: \"image_url\"` ను Responses లో `content[].type: \"input_image\"`గా మార్చండి. `image_url` ఫీల్డ్-ను `{\"image_url\": {\"url\": \"...\"}}` నుండి `{\"image_url\": \"...\"}` (ప్లెయిన్ స్ట్రింగ్ — HTTPS URL లేకపోతే `data:image\u002F...;base64,...` డేటా URI)గా ఫ్లాటెన్ చేయండి.\n\n### పారామీటరు మ్యాపింగ్ సూచిక\n\n| చాట్ కంప్లీషన్స్ | Responses API |\n|-----------------|---------------|\n| `prompt` | `input` |\n| `messages` | `input` (ఐటమ్‌ల అర్రే) |\n| `max_tokens` | `max_output_tokens` |\n| `response_format` | `text.format` (ఆబ్జెక్ట్) |\n| `temperature` | `temperature` (అనుకూలంగా) |\n| `stop` | `stop` (అనుకూలంగా) |\n| `frequency_penalty` | `frequency_penalty` (అనుకూలంగా) |\n| `presence_penalty` | `presence_penalty` (అనుకూలంగా) |\n| `tools` \u002F function-calling | `tools` (అన్‌ఛేంజ్) |\n| `seed` | **తీసేయండి** (మద్దతు లేదు) |\n| `store` | `store` (పరిమితి: `false`) |\n| `content[].type: \"text\"` | `content[].type: \"input_text\"` |\n| `content[].type: \"image_url\"` | `content[].type: \"input_image\"` |\n| `\"image_url\": {\"url\": \"...\"}` | `\"image_url\": \"...\"` (ఫ్లాట్ స్ట్రింగ్) |\n\nపూర్తి ముందు\u002Fతరువాత కోడ్ ఉదాహరణల కోసం, [cheat-sheet.md](.\u002Freferences\u002Fcheat-sheet.md) చూడండి.\n\nపరీక్షా మౌలిక సదుపాయ మైగ్రేషన్ (మోక్స్, స్నాప్షాట్స్, ధృవీకరణలు) కోసం, [test-migration.md](.\u002Freferences\u002Ftest-migration.md) చూడండి.\n\nలోపాలు మరియు సమస్యలు పరిష్కారానికి, [troubleshooting.md](.\u002Freferences\u002Ftroubleshooting.md) చూడండి.\n\n---\n\n## డేటా రిటెన్షన్ & స్టేట్\n\n- అన్ని Responses అభ్యర్థనలపై `store: false` సెట్ చేయండి.\n- గత సందేశ IDs లేదా సర్వర్-సంగ్రహిత సందర్భంపై ఆధారపడకండి; స్టేట్ క్లయింట్-నియంత్రణలో ఉంచండి మరియు మెటాడేటా తగ్గించండి.\n\n---\n\n## ఆమోదం ప్రమాణాలు\n\n### కోడ్-స్థాయి గేట్లు (అన్నీ పూర్తి కావాలి)\n\n- [ ] మార్చిన ఫైళ్లలో `rg \"chat\\.completions\\.create|ChatCompletion\\.create|Completion\\.create\"` కోసం ఏ మ్యాచ్‌లు ఉండకూడదు.\n- [ ] `rg \"AzureOpenAI\\(|AsyncAzureOpenAI\\(\"` కోసం ఏ మ్యాచ్‌లు ఉండకూడదు — అన్ని కన్స్ట్రక్టర్లు `OpenAI`\u002F`AsyncOpenAI` v1 ఎండ్‌పాయింట్ తో ఉపయోగించాలి.\n- [ ] `rg \"models\\.github\\.ai|models\\.inference\\.ai\\.azure\"` కోసం ఏ మ్యాచ్‌లు ఉండకూడదు — GitHub మోడల్స్ కోడ్ మార్గాలు తీసేయబడ్డాయి.\n- [ ] `rg \"OpenAIChatCompletionClient\"` కోసం ఏ మ్యాచ్‌లు ఉండకూడదు — MAF 1.0.0+ కోడ్ `OpenAIChatClient` (Responses API వాడుతుంది) ఉపయోగిస్తుంది. 1.0.0 ముందు ఉండితే `agent-framework-openai>=1.0.0` కు నవీకరించండి.\n- [ ] అన్ని `ChatOpenAI(...)` పిలుపుల్లో `use_responses_api=True` ఉంటుంది.\n- [ ] `rg \"choices\\[0\\]\"` కోసం ఏ మ్యాచ్‌లు ఉండకూడదు — అన్ని ప్రతిస్పందన యాక్సెస్ `resp.output_text` లేదా Responses అవుట్పుట్ స్కీమాను ఉపయోగిస్తుంది.\n- [ ] టాప్-లెవెల్‌లో `response_format` ఉండకూడదు; అన్ని సాంరాచనాత్మక అవుట్పుట్లకు `text={\"format\": {...}}` ఉపయోగించాలి.\n- [ ] `requirements.txt` లేదా `pyproject.toml` లో `openai>=1.108.1` మరియు `azure-identity` ఉండాలి; డిపెండెన్సిస్ మళ్ళీ ఇన్స్టాల్ చేయబడాలి.\n- [ ] ప్రతి `responses.create` పిలుపులో `store=False` సెట్ చేయాలి.\n- [ ] క్లయింట్ కన్స్ట్రక్షన్‌లో `api_version` ఉండరాదు; `AZURE_OPENAI_API_VERSION` ను ఎన్వ్ ఫైల్స్ మరియు ఇన్‌ఫ్రా నుండి తీసేయాలి.\n\n### టెస్ట్ మౌలిక సదుపాయ గేట్లు (అన్నీ పూర్తి కావాలి)\n\n- [ ] `rg \"ChatCompletionChunk|AsyncCompletions\\.create|chat\\.completions\" tests\u002F` కోసం ఏ మ్యాచ్‌లు ఉండకూడదు.\n- [ ] `rg \"_azure_ad_token_provider\" tests\u002F` కోసం ఏ మ్యాచ్‌లు ఉండకూడదు — అసर्शन‌లు `isinstance(client, AsyncOpenAI)` లేదా `base_url` ను పరీక్షించాలి.\n- [ ] `rg \"prompt_filter_results|content_filter_results\" tests\u002F` కోసం ఏ మ్యాచ్‌లు ఉండకూడదు — ఆజ్యూర్ ప్రత్యేక ఫిల్టర్ మోక్స్ తీసేయబడ్డాయి.\n- [ ] మాక్ ఫిక్చర్స్ `kwargs.get(\"input\")` ఉపయోగిస్తాయి, `kwargs.get(\"messages\")` కాకుండా.\n- [ ] స్నాప్షాట్ \u002F గోల్డెన్ ఫైళ్లను Responses స్ట్రీమింగ్ ఆకారానికి అనుగుణంగా నవీకరించండి (`choices[0]`, `function_call`, `logprobs` లేవు).\n- [ ] అన్ని టెస్ట్ నవీకరణల తర్వాత `pytest` లో ఎలాంటి వైఫల్యాలు ఉండకూడదు.\n\n### ప్రవర్తనా గేట్లు (మాన్యువల్ లేదా టెస్ట్ హార్నెస్ ద్వారా ధృవీకరించాలి)\n\n- [ ] **బేసిక్ కంప్లీషన్**: నాన్-స్ట్రీమింగ్ `responses.create` ఖాళీ కాని `output_text` ను రిటర్న్ చేయాలి.\n- [ ] **స్ట్రీమ్ సమానత్వం**: అసలు కోడులో స్ట్రీమింగ్ వాడితే, మార్చిన కోడ్ కూడా స్ట్రీమ్ చేసి, ఖాళీ కాని డెల్టాలతో `response.output_text.delta` ఈవెంట్లు ఇస్తుంది.\n- [ ] **స్ట్రక్చర్డ్ అవుట్పుట్**: `text.format` తో `json_schema` ఉపయోగిస్తే, `json.loads(resp.output_text)` విజయవంతం అవుతుంది మరియు స్కీమాకు సరిపోతుంది.\n- [ ] **టూల్-కాల్స్ లూపు**: టూల్స్ ఉపయోగించినప్పుడు, మోడల్ టూల్ కాల్స్ చేస్తుంది, యాప్ అవి అమలు చేస్తుంది, తదుపరి అభ్యర్థన తుది `output_text` ను ఇస్తుంది (అనంత లూప్ కాదు).\n- [ ] **అసింక్ సమానత్వం**: `AsyncAzureOpenAI` వాడితే, `AsyncOpenAI` సమానం `await` తో పనిచేస్తుంది.\n- [ ] **లోపాల రేటు**: మైగ్రేషన్ ముందు స్థాయి తో పోల్చితే కొత్త 400\u002F401\u002F404 లోపాలు ఉండకూడదు.\n\n### డెలివరబుల్స్\n\n- సారాంశంలో మార్చిన ఫైళ్ళు, పాత\u002Fకొత్త లిగసీ కాల్ సైట్లు గణాంకాలు, తదుపరి చర్యలు ఉంటాయి.\n- మార్పులు వర్కింగ్-ట్రీ ఎడిట్స్ మాత్రమే (కామిట్ లేవు).\n\n---\n\n## SDK సంస్కరణ అవసరాలు\n\n| ప్యాకేజ్ | కనిష్ఠ సంస్కరణ |\n|---------|----------------|\n| `openai` | `>=1.108.1` |\n| `azure-identity` | తాజా (ఎంట్రాID ఆథ్ కోసం) |\n\n---\n\n## సూచనలు\n\n- [చిట్ షీట్ — అన్ని కోడ్ స్నిపెట్లు](.\u002Freferences\u002Fcheat-sheet.md)\n- [టెస్ట్ మైగ్రేషన్ — మోక్స్, స్నాప్షాట్లు, ధృవీకరణలు](.\u002Freferences\u002Ftest-migration.md)\n- [ట్రబుల్షూటింగ్ — లోపాలు, ప్రమాద పట్టిక, గోచర్లు](.\u002Freferences\u002Ftroubleshooting.md)\n- [detect_legacy.py — ఆటోమేటెడ్ స్కానర్](..\u002F..\u002F..\u002F..\u002F..\u002F.agents\u002Fskills\u002Fazure-openai-to-responses\u002Fscripts\u002Fdetect_legacy.py)\n- [ఆజ్యూర్ OpenAI ప్రారంభ కిట్](https:\u002F\u002Faka.ms\u002Fopenai\u002Fstart)\n- [ఆజ్యూర్ OpenAI Responses API డాక్స్](https:\u002F\u002Flearn.microsoft.com\u002Fen-us\u002Fazure\u002Fai-foundry\u002Fopenai\u002Fhow-to\u002Fresponses)\n- [ఆజ్యూర్ OpenAI API వెర్షన్ జీవన చక్రం](https:\u002F\u002Flearn.microsoft.com\u002Fen-us\u002Fazure\u002Fai-foundry\u002Fopenai\u002Fapi-version-lifecycle?view=foundry-classic&tabs=python#api-evolution)\n- [OpenAI Responses API సూచీ](https:\u002F\u002Fplatform.openai.com\u002Fdocs\u002Fapi-reference\u002Fresponses)\n\n---\n\n\u003C!-- CO-OP TRANSLATOR DISCLAIMER START -->\n**అస్వీకరణ**:\nఈ పత్రం AI అనువాద సేవ [Co-op Translator](https:\u002F\u002Fgithub.com\u002FAzure\u002Fco-op-translator) ఉపయోగించి అనువదించబడింది. మేము ఖచ్చితత్వానికి ప్రయత్నిస్తున్నప్పటికీ, ఆటోమేటెడ్ అనువాదాలు తప్పులు లేదా అసమగ్రతలను కలిగి ఉండవచ్చు. దాని స్వదేశ భాషలో ఉన్న అసలు పత్రాన్ని అధికారం కలిగిన మూలంగా పరిగణించాలి. కీలకమైన సమాచారం కోసం, ప్రొఫెషనల్ మానవ అనువాదాన్ని సిఫారసు చేస్తాము. ఈ అనువాదం ఉపయోగం వల్ల కలిగే ఏవైనా అపార్థాలు లేదా తప్పుదారులు కోసం మేము బాధ్యత వహించము.\n\u003C!-- CO-OP TRANSLATOR DISCLAIMER END -->","# Azure OpenAI చాట్ కంఫ్లిషన్స్ నుండి Responses API కి Python యాప్స్ ను మార్పిడి చేయండి\n\n> **అధికారిక మార్గదర్శనం — ఖచ్చితంగా అనుసరించండి**\n>\n> ఈ నైపుణ్యం Azure OpenAI చాట్ కంఫ్లిషన్స్ వాడే Python కోడ్‌బేస్‌లను\n> ఏకీకృత Responses API కి మార్చుతుంది. ఈ సూచనలను ఖచ్చితంగా అనుసరించండి.\n> పారామితి మ్యాపింగ్స్ ని ఊహించ వద్దు లేదా API ఆకారాలను ఆవిష్కరించ వద్దు.\n\n---\n\n## ట్రిగ్గర్స్\n\nవాడుకరి క్రింది చర్యలు కోరినప్పుడు ఈ నైపుణ్యాన్ని ప్రారంభించండి:\n- Azure OpenAI చాట్ కంఫ్లిషన్స్ నుండి Responses APIకి Python యాప్ మార్చడం\n- Azure OpenAI కి వ్యతిరేకంగా Python OpenAI SDK వాడకాన్ని తాజాగా API ఆకారానికి అభివృద్ధి చేయడం\n- Responses అవసరమయ్యే GPT-5 లేదా కొత్త మోడల్స్ కి Python కోడ్ సిద్ధం చేయడం\n- `AzureOpenAI`\u002F`AsyncAzureOpenAI` నుండి సాంప్రదాయ `OpenAI`\u002F`AsyncOpenAI` క్లయింట్ కి v1 ఎండ్పాయింట్ తో మారడం\n- `AzureOpenAI` నిర్మాణాలు లేదా `api_version` కి సంబంధించి డిప్రికేషన్ హెచ్చరికలను సవరణ చేయడం\n\n---\n\n## ⚠️ మోడల్ అనుకూలత — ముందుగా తనిఖీ చేయండి\n\n> **మార్పిడి చేసేముందు, మీ Azure OpenAI డిప్లాయ్‌మెంట్ Responses APIని మద్దతు ఇస్తుందో లేదో ధృవీకరించండి.**\n\n### 1. మీ డిప్లాయ్‌మెంట్‌ను స్మోక్స్-టెస్ట్ చేయండి (అత్యంత వేగవంతమైనది)\n\n```python\nimport os\nfrom openai import OpenAI\n\nclient = OpenAI(\n    api_key=os.environ[\"AZURE_OPENAI_API_KEY\"],\n    base_url=f\"{os.environ['AZURE_OPENAI_ENDPOINT'].rstrip('\u002F')}\u002Fopenai\u002Fv1\u002F\",\n)\n\ntry:\n    resp = client.responses.create(\n        model=os.environ[\"AZURE_OPENAI_DEPLOYMENT\"],\n        input=\"ping\",\n        max_output_tokens=50,\n        store=False,\n    )\n    print(f\"✅ Deployment supports Responses API: {resp.output_text}\")\nexcept Exception as e:\n    print(f\"❌ Deployment does NOT support Responses API: {e}\")\n```\n\n> **గమనిక**: Azure OpenAIలో `max_output_tokens`కి **కనీసం 16** ఉంటుంది. 16 కంటే తక్కువ విలువలు 400 ఎర్రర్ ఇస్తాయి. స్మోక్స్ టెస్ట్ కోసం 50+ వాడండి.\n\nఇది 404 ఇస్తే, డిప్లాయ్‌మెంట్ మోడల్ ఇంకా Responses మద్దతు ఇవ్వట్లేదు — క్రింది సూచనలను తనిఖీ చేయండి లేదా మద్దతు ఇచ్చే మోడల్‌తో మళ్లీ డిప్లాయ్ చేయండి.\n\n### 2. మీ ప్రాంతంలో అందుబాటులో ఉన్న మోడల్స్ తనిఖీ చేయండి (భలే సూచన)\n\nResponses API మద్దతుతో మీ నిర్దిష్ట ప్రాంతంలో ఏ మోడల్స్ అందుబాటులో ఉన్నాయో చూడటానికి బిల్ట్-ఇన్ మోడల్ అనుకూలత టూల్ ను రన్ చేయండి:\n\n```bash\npython migrate.py models --subscription YOUR_SUB_ID --location YOUR_REGION\n```\n\nఇది Azure ARM లైవ్‌ను క్వెరీ చేసి అనుకూలత మేట్రిక్స్ చూపిస్తుంది — ఏ మోడల్స్ Responses, నిర్మిత అవుట్‌పుట్, టూల్స్ మద్దతు ఇస్తాయి. ఫలితాలను మాత్రం `--filter gpt-5.1,gpt-5.2` తో ఎలా తగ్గించుకునాలో లేదా స్క్రిప్టింగ్ కోసం `--json` ఉపయోగించండి.\n\n### 3. పూర్తి మోడల్ మద్దతు సూచిక\n\n- **లైవ్ క్వెరీ**: `python migrate.py models` (పైన చూడండి — ప్రాంత పరీక్షిత, ఎప్పుడూ నవీకరణలు)\n- **దహించిన సవరించు**: [మోడల్ సారాంశ పట్టిక మరియు ప్రాంత అందుబాటు](https:\u002F\u002Flearn.microsoft.com\u002Fen-us\u002Fazure\u002Ffoundry\u002Ffoundry-models\u002Fconcepts\u002Fmodels-sold-directly-by-azure?tabs=global-standard-aoai%2Cglobal-standard&pivots=azure-openai#model-summary-table-and-region-availability)\n- **త్వరిత ప్రారంభం & మార్గదర్శనం**: **https:\u002F\u002Faka.ms\u002Fopenai\u002Fstart**\n\n### ⚠️ పాత మోడల్ పరిమితులు\n\n> **హెచ్చరిక**: పాత మోడల్స్ (`gpt-4.1` కి ముందు) Responses API యొక్క అన్ని సവിശేషాలు పూర్తిగా మద్దతు ఇవ్వకపోవచ్చును.\n>\n> పాత మోడల్స్ కు తెలిసిన పరిమితులు:\n> - **`reasoning` పారామితి**: చాలా non-reasoning మోడల్స్ మద్దతు ఇవ్వవు. అసలైన కోడ్‌లో ఉండకపోతే `reasoning`ని మార్చవద్దు.\n> - **`seed` పారామితి**: Responses APIలో మద్దతు లేదు — అన్ని అభ్యర్థనల నుంచి తీసివేయండి.\n> - **`text.format` ద్వారా నిర్మిత అవుట్‌పుట్**: పాత మోడల్స్ `strict: true` JSON స్కీమాస్‌ను విశ్వసనీయంగా అమలు చేయకపోవచ్చు.\n> - **టూల్ నిర్వహణ**: GPT-5+ అంతర్గత reasoningలో టూల్ కాల్స్ నిర్వహణ చేస్తుంది. Responses పై పాత మోడల్స్ ఇంకా పనిచేస్తాయి కానీ దీర్ఘ అనుసంధానం ఉండదు.\n> - **ఉష్ణోగ్రత పరిమితులు**: `gpt-5`కి మార్పిడి చేస్తే ఉష్ణోగ్రత వదిలివేయాలి లేదా `1` కు సెట్ చేయాలి. పాత మోడల్స్ కు ఇలాంటి పరిమితి లేదు.\n\n### O-శ్రేణి reasoning మోడల్స్ (o1, o3-mini, o3, o4-mini)\n\nO-శ్రేణి మోడల్స్ కి ప్రత్యేక పారామితి పరిమితులు ఉంటాయి. o-శ్రేణి మోడల్స్ ఉపయోగించే యాప్స్ మార్చేటప్పుడు:\n\n- **`temperature`**: `1` (లేదా వదిలివేయాలి). O-శ్రేణి మోడల్స్ ఇతర విలువలను స్వీకరించవు.\n- **`max_completion_tokens` → `max_output_tokens`**: Azure ప్రత్యేక `max_completion_tokens` వాడుతూ యాప్స్ `max_output_tokens` కి మారాలి. reasoning టోకెన్స్ పరిమితి మీద నీడ పడుతాయి కాబట్టి ఎక్కువ విలువ (4096+) సెట్ చేయండి.\n- **`reasoning_effort`**: యాప్ `reasoning_effort` (తక్కువ\u002Fమధ్య\u002Fఅధిక) వాడితే కొనసాగించండి — Responses API ఇది o-శ్రేణి మోడల్స్ కి మద్దతు ఇస్తుంది.\n- **స్ట్రీమింగ్ ప్రవర్తన**: O-శ్రేణి మోడల్స్ reasoning పూర్తయ్యేవరకు అవుట్‌పుట్‌ను బఫర్ చేసి టెక్స్ట్ డెల్టా ఈవెంట్స్ విడుదల చేస్తాయి. స్ట్రీమింగ్ పనిచేస్తుంది, కానీ మొదటి `response.output_text.delta` GPT మోడల్స్ కంటే ఎక్కువ ఆలస్యం తో వచ్చుకోవచ్చు.\n- **`top_p`**: O-శ్రేణి మీద మద్దతు లేదు — ఉన్నా తీసివేయండి.\n- **టూల్ వాడకం**: O-శ్రేణి మోడల్స్ Responses API ద్వారా టూల్స్ ను GPT మోడల్స్ లాగా మద్దతు ఇస్తాయి, కానీ టూల్ కాల్ నిర్వహణ నాణ్యత మోడల్ పై ఆధారపడి ఉంటుంది.\n\n**చర్య — ముందస్తు మోడల్ సలహా**: స్కాన్ దశలో యాప్ ఏ మోడల్ లక్ష్యంగా పెట్టుకొన్నదో (డిప్లాయ్‌ನామాలు, env వేరియబుల్స్, కాన్ఫిగ్) తనిఖీ చేయండి. మోడల్ `gpt-4.1` కంటే ముందు వుంటే (gpt-4.1+ కాదంటే) వాడుకరికి ముందస్తుగా చెప్పండి:\n- ప్రస్తుతం ఉపయోగిస్తున్న మోడల్ మీద సాధారణ టెక్స్ట్, చాట్, స్ట్రీమింగ్ మరియు టూల్స్ కోసం మైగ్రేషన్ పనిచేస్తుంది.\n- కొత్త మోడల్స్ (`gpt-5.1`, `gpt-5.2`) మెరుగైన టూల్ నిర్వహణ, నిర్మిత అవుట్‌పుట్ అమల, reasoning మరియు ప్రాంతాల మధ్య అందుబాటును అందిస్తాయి.\n- వారు సిద్ధంగా ఉన్నప్పుడు డిప్లాయ్‌మెంట్ ని అభివృద్ధి చేయాలని పరిగణించాలి — ఇది మైగ్రేషన్ ని అడ్డుకోవడం కాదు.\n\nమోడల్ వెర్షన్ ఆధారంగా మైగ్రేషన్ ని ఆపివేయొద్దు లేదా నిరాకరించొద్దు. సలహా సమాచారకరకమైంది.\n\n### GitHub Models Responses APIని మద్దతు ఇవ్వలేదు\n\n> **GitHub Models (`models.github.ai`, `models.inference.ai.azure.com`) Responses APIని మద్దతు ఇవ్వవు.**\n\nకోడ్‌బేస్‌లో GitHub Models కోడ్ పాథ్ ఉన్నట్లయితే (`base_url` `models.github.ai` లేదా `models.inference.ai.azure.com`కి సూచిస్తుంటే), మైగ్రేషన్ సమయంలో **మొత్తం తీసివేయండి**. Responses APIకి Azure OpenAI, OpenAI లేదా సారూప్య లోకల్ ఎండ్పాయింట్ (ఉదా: Ollama Responses మద్దతుతో) అవసరం.\n\nస్కాన్ సమయంలో చర్య:\n- GitHub Models కోడ్ పాథ్‌లను తీసివేం చేయడానికి గుర్తించండి.\n\n---\n\n## ఫ్రేమ్‌వర్క్ మైగ్రేషన్\n\nచాల యాప్స్ OpenAI పై ఉన్న ఉన్నత స్థాయి ఫ్రేమ్‌వర్క్లు వాడతారు. ఇవి మార్చేటప్పుడు కేవలం OpenAI కాల్స్ కాదు, ఫ్రేమ్‌వర్క్ యొక్క స్వంత API మార్పులు తప్పనిసరి.\n\n### Microsoft Agent Framework (MAF)\n\n**మీలాంటి MAF వెర్షన్ ముందు తనిఖీ చేయండి** — మైగ్రేషన్ మీరు MAF 1.0.0+ లో ఉన్నారా లేదా పూర్వ 1.0.0 బీటా\u002Fఆర్‌సి లో అన్నది ఆధారపడి ఉంటుంది.\n\n#### MAF 1.0.0+ (agent-framework-openai >= 1.0.0)\n\n`OpenAIChatClient` **ఇప్పటికే Responses API వాడుతుంది** — మార్పులు అవసరం లేదు. కోడ్‌బేస్ లెగసీ `OpenAIChatCompletionClient` (`chat.completions.create` వాడుతుంది) వాడుతుంటే దానిని `OpenAIChatClient`తో మార్చండి.\n\n| మునుపటి | తర్వాత |\n|---------|--------|\n| `from agent_framework.openai import OpenAIChatCompletionClient` | `from agent_framework.openai import OpenAIChatClient` |\n| `OpenAIChatCompletionClient(...)` | `OpenAIChatClient(...)` |\n\nమీ వెర్షన్ తనిఖీకి: `python -c \"import agent_framework_openai; print(agent_framework_openai.__version__)\"`\n\n#### MAF pre-1.0.0 (బీటా\u002Fఆర్‌సి విడుదలలు)\n\npre-1.0.0 MAFలో, `OpenAIChatClient` Chat Completions వాడింది. `agent-framework-openai>=1.0.0`కు నవీకరించండి, ఇక్కడ `OpenAIChatClient` డిఫాల్ట్ గా Responses API వాడుతుంది.\n\nఇంకొన్ని మార్పులు అవసరం లేదు — `Agent` మరియు టూల్ APIలు అలాగే ఉంటాయి.\n\n### LangChain (`langchain-openai`)\n\n`ChatOpenAI()`కు `use_responses_api=True` జత చేయండి. అదే సమయంలో ప్రతిస్పందన యాక్సెస్ `.content` నుండి `.text` కి మార్చండి.\n\n| మునుపటి | తర్వాత |\n|---------|--------|\n| `ChatOpenAI(model=..., base_url=..., api_key=...)` | `ChatOpenAI(model=..., base_url=..., api_key=..., use_responses_api=True)` |\n| `result['messages'][-1].content` | `result['messages'][-1].text` |\n\nపూర్తి మునుపటి\u002Fతర్వాత కోడ్ ఉదాహరణల కోసం [cheat-sheet.md](.\u002Freferences\u002Fcheat-sheet.md) చూడండి.\n\n---\n\n## ఫ్రంట్‌ఎండ్ మార్పిడి మార్గదర్శనం\n\n> **Responses API సర్వర్-సైడ్ విషయం.** మీ Python బ్యాకెండ్ మార్చండి; ఫ్రంట్‌ఎండ్ HTTP ఒప్పందం మారకూడదు, మీ బ్యాకెండ్ తేలికపాటి పాస్-త్రూ అయితే మాత్రమే Responses అభ్యర్థన ఆకారాన్ని స్వీకరించడం పరిశీలించండి. ఫ్రంట్‌ఎండ్ నుండి క్లీంట్-సైడ్ కీతో నేరుగా OpenAIకి సంభాషిస్తే, మొదట ఆ కాల్స్ బ్యాకెండ్‌కు మార్చండి.\n\n### `@microsoft\u002Fai-chat-protocol` డిప్రికేషన్\n\n`@microsoft\u002Fai-chat-protocol` npm ప్యాకేజీ డిప్రికేట్ అయింది, దాన్ని [`ndjson-readablestream`](https:\u002F\u002Fwww.npmjs.com\u002Fpackage\u002Fndjson-readablestream)తో మార్చాలి. ఫ్రంట్‌ఎండ్‌లో దాన్ని చూసినట్లయితే:\n\n1. CDN స్క్రిప్ట్ ట్యాగ్ మార్చండి:\n   ```html\n   \u003C!-- Before -->\n   \u003Cscript src=\"https:\u002F\u002Fcdn.jsdelivr.net\u002Fnpm\u002F@microsoft\u002Fai-chat-protocol@...\u002Fdist\u002Fiife\u002Findex.js\">\u003C\u002Fscript>\n   \u003C!-- After -->\n   \u003Cscript src=\"https:\u002F\u002Fcdn.jsdelivr.net\u002Fnpm\u002Fndjson-readablestream@1.0.7\u002Fdist\u002Fndjson-readablestream.umd.js\">\u003C\u002Fscript>\n   ```\n2. `AIChatProtocolClient` యొక్క ఇనిస్టాన్షియేషన్ (`new ChatProtocol.AIChatProtocolClient(\"\u002Fchat\")`) తీసివేయండి.\n3. `client.getStreamedCompletion(messages)`ని ప్రత్యక్ష `fetch()` బ్యాకెండ్ స్ట్రీమింగ్ ఎండ్పాయింట్ కాల్‌తో మార్చండి.\n4. `for await (const response of result)` ని `for await (const chunk of readNDJSONStream(response.body))` తో మార్చండి.\n5. ప్రాపర్టీ యాక్సెస్‌ను `response.delta.content` \u002F `response.error` నుండి `chunk.delta.content` \u002F `chunk.error` కు సవరించండి.\n\n---\n\n## లక్ష్యాలు\n\n- Azure OpenAIపై చాట్ కంఫ్లిషన్స్ లేదా లెగసీ కంఫ్లిషన్స్ వాడే అన్ని Python కాల్ సైట్లను లిస్ట్ చేయండి.\n- Python కోడ్‌బేస్ కోసం మైగ్రేషన్ ప్రణాళిక మరియు సన్నాహాలను ప్రతిపాదించండి.\n- Responses APIకి మార్పిడికి భద్రంగా, కనిష్ట మార్పులను వర్తించండి.\n- కాలర్స్ Responses అవుట్‌పుట్ స్కీమాను వినియోగించేందుకు అప్డేట్ చేయండి; బ్యాక్‌కంపాటిబిలిటీ ర్యాపర్లు అవసరం లేదు.\n- పరీక్షలు \u002F లింట్స్ నడపండి; మైగ్రేషన్ వల్ల ఏర్పడిన చిన్న బగ్స్ ని సరి చేయండి.\n- చిన్న, సమీక్షించదగిన చేంజ్ సెట్‌లను సిద్ధం చేసి చివరి సారాంశాన్ని డిఫ్స్ తో ఇవ్వండి (కమిట్ వద్దు).\n\n---\n\n## గార్డ్రెయిల్స్\n\n- గిట్ వర్క్ స్పేస్ లోని ఫైళ్ళను మాత్రమే మార్చండి. బైటకు ఎక్కడైనా రాయకండి.\n- వెనుకకు అనుకూలత కోసం షిమ్స్ పోషించకండి; కోడ్ ను కొత్త API ఆకారానికి మార్చండి.\n- టంబ్‌స్టోన్\u002Fట్రాన్సిషన్ కామెంట్లు లేదా బ్యాకప్ ఫైళ్ళను వదలవద్దు.\n- ముందుగా స్ట్రీమింగ్ వాడితే ఆ semantics ని నిలుపుకోండి; లేకపోతే non-streaming వాడండి.\n- అంగీకార మోడ్ లో ఉంటే కమాండ్లు లేదా నెట్‌వర్క్ కాల్స్ నీడ నడపేముందు ఆమోదం కోరండి.\n- `git add`\u002F`git commit`\u002F`git push` నడపకండి; వర్కింగ్-ట్రీ ఎడిట్స్ మాత్రమే ఉత్పత్తి చేయండి.\n\n---\n\n## అడుగు 0: Azure OpenAI క్లయింట్ మైగ్రేషన్ (ముందస్తు అవసరం)\n\nకోడ్‌బేస్ `AzureOpenAI` లేదా `AsyncAzureOpenAI` నిర్మాణాలు వాడుతుంటే, ముందుగా స్టాండర్డ్ `OpenAI` \u002F `AsyncOpenAI` కాంట్రాక్టర్లు కి మార్చండి. Azure-ప్రత్యేక కాంట్రాక్టర్లు `openai>=1.108.1` లో డిప్రికేట్ అయ్యాయి.\n\n### ఎందుకు v1 API మార్గం?\n\nకొత్త `\u002Fopenai\u002Fv1` ఎండ్పాయింట్ `AzureOpenAI()` కాకుండా సాదారణ `OpenAI()` క్లయింట్ ఉపయోగిస్తుంది, `api_version` పారామితి అవసరం లేదు, OpenAI మరియు Azure OpenAIలో ఒకే విధంగా పనిచేస్తుంది. ఒకే క్లయింట్ కోడ్ భవిష్యత్ సుస్థిరం — వెర్షన్ నిర్వహణ అవసరం లేదు.\n\n### ముఖ్యమైన మార్పులు\n\n| మునుపటి | తర్వాత |\n|--------|-------|\n| `AzureOpenAI` | `OpenAI` |\n| `AsyncAzureOpenAI` | `AsyncOpenAI` |\n| `azure_endpoint` | `base_url` |\n| `azure_ad_token_provider` | `api_key` |\n| `api_version=...` | పూర్తిగా తీసివేయండి |\n\n### శుభ్రపరిచే జాబితా\n\n- క్లయింట్ నిర్మాణం నుంచి `api_version` ఆర్గ్యూమెంటును తీసివేయండి.\n- `.env`, యాప్ సెట్టింగ్స్, Bicep\u002Fఇన్‌ఫ్రా ఫైళ్ల నుండి `AZURE_OPENAI_VERSION` \u002F `AZURE_OPENAI_API_VERSION` వాతావరణ వేరియబుల్స్ తొలగించండి.\n- `.env`, యాప్ సెట్టింగ్స్, Bicep\u002Fఇన్‌ఫ్రా, టెస్ట్ ఫిక్స్చర్లలో `AZURE_OPENAI_CLIENT_ID`ను `AZURE_CLIENT_ID`గా పేరు మార్చండి (స్టాండర్డ్ Azure Identity SDK సాంప్రదాయం).\n- `requirements.txt` లేదా `pyproject.toml` లో `openai>=1.108.1` ని నిర్ధారించండి.\n\n### వాతావరణ వేరియబుల్ మైగ్రేషన్\n\n| పాత env var | చర్య | గమనికలు |\n|-------------|--------|-------|\n| `AZURE_OPENAI_VERSION` | **తీసివేయండి** | v1 ఎండ్పాయింట్‌తో `api_version` అవసరం లేదు |\n| `AZURE_OPENAI_API_VERSION` | **తీసివేయండి** | పై విధంగా |\n| `AZURE_OPENAI_CLIENT_ID` | **పేరు మార్చండి** → `AZURE_CLIENT_ID` | `ManagedIdentityCredential(client_id=...)` కు స్టాండర్డ్ Azure Identity SDK సాంప్రదాయం |\n| `AZURE_OPENAI_ENDPOINT` | **పొడుపు** | ఇంకా `base_url` నిర్మాణానికి అవసరం |\n| `AZURE_OPENAI_CHAT_DEPLOYMENT` | **పొడుపు** | `responses.create`లో `model` పారామితిగా ఉపయోగం |\n| `AZURE_OPENAI_API_KEY` | **పొడుపు** | కీ ఆధారిత ధృవీకరణ కోసం `api_key`గా ఉపయోగం |\n\nక్లయింట్ సెటప్ కోడ్ ఉదాహరణల కోసం (సింక్, అసింక్, EntraID, API కీ, బహుళ-టెనెంట్), [cheat-sheet.md](.\u002Freferences\u002Fcheat-sheet.md) చూడండి.\n\n---\n\n## అడుగు 1: లెగసీ కాల్ సైట్లను గుర్తించండి\n\nమార్చాల్సిన అన్ని కాల్ సైట్లను కనుగొనడానికి [detect_legacy.py](..\u002F..\u002F..\u002F..\u002F..\u002F.agents\u002Fskills\u002Fazure-openai-to-responses\u002Fscripts\u002Fdetect_legacy.py) స్క్రిప్ట్ నడిపించండి:\n\n```bash\npython skills\u002Fazure-openai-to-responses\u002Fscripts\u002Fdetect_legacy.py .\n```\n\nలేకపోతే ఈ సెర్చ్‌లు మాన వాయిగా నిర్వహించండి — ప్రతి మ్యాచ్ మైగ్రేషన్ టార్గెట్.\n\n```bash\n# వారసత్వ API కాల్స్ (మళ్ళీ రాయాలి)\nrg \"chat\\.completions\\.create\"\nrg \"ChatCompletion\\.create\"\nrg \"Completion\\.create\"\n\n# డిప్రికేటెడ్ అజ్యూర్ క్లయింట్ కనిస్ట్రక్టర్స్ (మార్చాలి)\nrg \"AzureOpenAI\\(\"\nrg \"AsyncAzureOpenAI\\(\"\n\n# స్పందన ఆకృతి యాక్సెస్ నమూనాలు (అప్డేట్ చేయాలి)\nrg \"choices\\[0\\]\\.message\\.content\"\nrg \"choices\\[0\\]\\.delta\\.content\"\nrg \"choices\\[0\\]\\.message\\.function_call\"\nrg \"choices\\[0\\]\\.message\\.tool_calls\"\n\n# పాత నెస్టెడ్ ఫార్మాట్‌లో టూల్ నిర్వచనలు (ఫ్లాటెన్ చేయాలి)\nrg '\"function\":\\s*{\\s*\"name\"'\nrg \"pydantic_function_tool\"\n\n# పాత ఫార్మాట్‌లో టూల్ ఫలితాలు (function_call_output కు మార్చాలి)\nrg '\"role\":\\s*\"tool\"'\nrg '\"tool_call_id\"'\n\n# డిప్రికేటెడ్ పారామీటర్లు (తొలగించాలి లేదా పేరును మార్పు చేయాలి)\nrg \"response_format\"\nrg \"max_tokens\\b\"        # max_output_tokens అనే పేరుతో మార్చండి\nrg \"['\\\"]seed['\\\"]\"      # remove entirely\n\n# డిప్రికేటెడ్ env వేరియబుల్స్ (శుభ్రపరచండి)\nrg \"AZURE_OPENAI_API_VERSION|AZURE_OPENAI_VERSION\"\nrg \"AZURE_OPENAI_CLIENT_ID\"  # AZURE_CLIENT_ID కావాలి\n\n# GitHub మోడల్స్ ఎండ్పాయింట్లు (తొలగించాలి — Responses API మద్దతు లేదు)\nrg \"models\\.github\\.ai|models\\.inference\\.ai\\.azure\"\n\n# ఫ్రేమ్‌వర్క్ స్థాయి వారసత్వ నమూనాలు (అప్డేట్ చేయాలి)\nrg \"OpenAIChatCompletionClient\"  # MAF 1.0.0+: OpenAIChatClient తో మార్చండి\nrg \"ChatOpenAI\\(\" | grep -v \"use_responses_api\"  # LangChain: use_responses_api=True కావాలి\n\n# టెస్ట్ ఇన్‌ఫ్రాస్ట్రక్చర్ (అప్డేట్ చేయాలి)\nrg \"ChatCompletionChunk|AsyncCompletions\\.create\" tests\u002F\nrg \"_azure_ad_token_provider\" tests\u002F\nrg \"prompt_filter_results|content_filter_results\" tests\u002F\nrg \"choices\\[0\\]\" tests\u002F\n\n# కంటెంట్ ఫిల్టర్ లోపం బాడీ యాక్సెస్ (అప్డేట్ చేయాలి — నిర్మాణం మారింది)\nrg 'innererror.*content_filter_result|error\\.body\\[\"innererror\"\\]'\nrg \"content_filter_result\\[\" # పాత ఏకవచనం — ఇప్పుడు content_filters అర్రేలో content_filter_results (బహువచనం)\n\n# Chat Completions ఎండ్పాయింట్‌కి రా HTTP కాల్స్ (URL అప్డేట్ చేయాలి)\nrg \"\u002Fopenai\u002Fdeployments\u002F.*\u002Fchat\u002Fcompletions\"\nrg \"api-version=\"\n```\n\n### heuristics (గుర్తించి, పునఃరాయింపు చేయండి)\n\n- **చాట్ కంఫ్లిషన్స్ క్లయింట్**: `client.chat.completions.create` → `client.responses.create(...)`.\n\n- **ఆజ్యూర్ క్లయింట్ కన్స్ట్రక్టర్లు**: `AzureOpenAI(...)` → `OpenAI(base_url=..., api_key=...)`.\n- **సాధనాలు**: ఫంక్షన్-కాలింగ్ టూల్ నిర్వచనాలను నెస్ట్格式్ నుండి (`{\"type\": \"function\", \"function\": {\"name\": ...}}`) ఫ్లాట్ Responses ఫార్మాట్ కు మార్చండి (`{\"type\": \"function\", \"name\": ...}`); `tool_choice` ఉపయోగించండి; టూల్ ఫలితాలను `{\"type\": \"function_call_output\", \"call_id\": ..., \"output\": ...}` ఐటెమ్స్ (కాదు `{\"role\": \"tool\", ...}`) గా రిటర్న్ చేయండి.\n- **టూల్ రౌండ్-ట్రిప్స్**: మోడల్ ఫంక్షన్ కాల్స్ ఇచ్చినపుడు, `response.output` ఐటెమ్స్ ను సంభాషణకు జోడించండి (మాన్యువల్ `{\"role\": \"assistant\", \"tool_calls\": [...]}` డిక్ట్ కాదు), తరువాత ప్రతి ఫలితానికీ `function_call_output` ఐటెమ్స్ ను జోడించండి.\n- **ఫ్యూ-షాట్ టూల్ ఉదాహరణలు**: సంభాషణలో హార్డ్‌కోడ్ చేసిన టూల్ కాల్ ఉదాహరణలు ఉంటే, వాటిని `{\"type\": \"function_call\", \"id\": \"fc_...\", \"call_id\": \"fc_...\", ...}` + `{\"type\": \"function_call_output\", ...}` ఐటెమ్స్ గా మార్పులు చేయండి. IDs తప్పనిసరిగా `fc_` తో మొదలవ్వాలి.\n- **`pydantic_function_tool()`**: ఈ హెల్పర్ ఇంకా పాత నెస్ట్格式్ ను ఉత్పత్తి చేస్తుంది మరియు `responses.create()` కు **అనుకూలం కాదు**. దానిని మాన్యువల్ టూల్ నిర్వచనలతో లేదా ఫ్లాటెనింగ్ ర్యాపర్ తో మార్చండి.\n- **మల్టీ-టర్న్**: అప్లో సంభాషణ చరිතాన్ని ఉంచండి; గత టర్న్లను `input` ఐటెమ్స్ ద్వారా పంపండి.\n- **ఫార్మాటింగ్**: చాట్లో ఉన్న టాప్-లెవెల్ `response_format` ను Responses లో `text.format` తో మార్చండి. సాధారణ ఆకారము: `text={\"format\": {\"type\": \"json_schema\", \"name\": \"Output\", \"strict\": True, \"schema\": {...}}}`.\n- **కంటెంట్ ఐటెమ్స్**: చాట్ `content[].type: \"text\"` ను Responses లో యూజర్\u002Fసిస్టమ్ టర్న్ల కోసం `content[].type: \"input_text\"` గా మార్చండి.\n- **చిత్రం కంటెంట్ ఐటెమ్స్**: చాట్ `content[].type: \"image_url\"` ను Responses లో `content[].type: \"input_image\"` గా మార్చండి. `image_url` ఫీల్డ్ గల నెస్ట్ అబ్జెక్ట్ `{\"url\": \"...\"}` ను ఫ్లాట్ స్ట్రింగ్ గా మార్చండి. ముందు \u002F తరువాత ఉదాహరణలు కోసం చిట్ షీట్ చూడండి.\n- **ఆలోచనా శ్రమ**: **అసలు కోడులో `reasoning` ఇప్పటికే ఉంటేనే మాత్రమే మైగ్రేట్ చేయండి**.\n- **కంటెంట్ ఫిల్టర్ ఎర్రర్ హ్యాండ్లింగ్**: లోపపు బాడీ నిర్మాణం మార్చబడింది. చాట్ కంప్లీషన్స్ `error.body[\"innererror\"][\"content_filter_result\"]` (ఏకవచనం) ఉపయోగించగా; Responses API `error.body[\"content_filters\"][0][\"content_filter_results\"]` (బహువచనం, ఒక అర్రే లో) ఉపయోగిస్తుంది. `innererror` ను యాక్సెస్ చేసే కోడ్ `KeyError` ని తేపుతుంది. కొత్త పాథ్ ఉపయోగించి రచయిత చేయండి.\n- **అనరూప రా HTTP కాల్స్**: అప్లికేషన్ Azure OpenAI REST API ని నేరుగా (\u002Fopenai\u002Fdeployments\u002F{name}\u002Fchat\u002Fcompletions?api-version=...) ద్వారా పిలిచితే, `\u002Fopenai\u002Fv1\u002Fresponses` కి రీసెటప్ చేయండి. రిక్వెస్ట్ బాడీ మార్పులు: `messages` → `input`, `max_output_tokens` మరియు `store: false` జతచేయండి, `api-version` క్వెరీ ప్యారామీ తీసేయండి. రిస్పాన్స్ బాడీ మార్పులు: `choices[0].message.content` → `output[0].content[0].text` (గమనిక: `output_text` అనేది SDK సౌకర్యం, రా REST JSON లో లేదు).\n\n---\n\n## దశ 2: మైగ్రేషన్ అప్లై చేయండి\n\n### మైగ్రేషన్ గమనికలు (చాట్ కంప్లీషన్స్ → Responses)\n\n- **ఎందుకు మైగ్రేట్ చేయాలి**: Responses టెక్స్ట్, టూల్స్, మరియు స్ట్రీమింగ్ కి యూనిఫైడ్ API; చాట్ కంప్లీషన్స్ పాతది. GPT-5 తో Responses మంచి పనితీరు కోసం అవసరము.\n- **HTTP**: ఆజ్యూర్ ఎండ్‌పాయింట్ `\u002Fopenai\u002Fdeployments\u002F{name}\u002Fchat\u002Fcompletions` నుండి `\u002Fopenai\u002Fv1\u002Fresponses` కి మారింది.\n- **ఫీల్డ్స్**: `messages` → `input`, `max_tokens` → `max_output_tokens`. `temperature` ఒకటే.\n- **ఫార్మాటింగ్**: `response_format` → సరైన ఆబ్జెక్టుతో `text.format`.\n- **కంటెంట్ ఐటెమ్స్**: సిస్టమ్\u002Fయూజర్ టర్న్ల కోసం చాట్ `content[].type: \"text\"` ని Responses లో `content[].type: \"input_text\"`కి మార్చండి.\n- **చిత్రం కంటెంట్ ఐటెమ్స్**: చాట్ `content[].type: \"image_url\"` ను Responses లో `content[].type: \"input_image\"`గా మార్చండి. `image_url` ఫీల్డ్-ను `{\"image_url\": {\"url\": \"...\"}}` నుండి `{\"image_url\": \"...\"}` (ప్లెయిన్ స్ట్రింగ్ — HTTPS URL లేకపోతే `data:image\u002F...;base64,...` డేటా URI)గా ఫ్లాటెన్ చేయండి.\n\n### పారామీటరు మ్యాపింగ్ సూచిక\n\n| చాట్ కంప్లీషన్స్ | Responses API |\n|-----------------|---------------|\n| `prompt` | `input` |\n| `messages` | `input` (ఐటమ్‌ల అర్రే) |\n| `max_tokens` | `max_output_tokens` |\n| `response_format` | `text.format` (ఆబ్జెక్ట్) |\n| `temperature` | `temperature` (అనుకూలంగా) |\n| `stop` | `stop` (అనుకూలంగా) |\n| `frequency_penalty` | `frequency_penalty` (అనుకూలంగా) |\n| `presence_penalty` | `presence_penalty` (అనుకూలంగా) |\n| `tools` \u002F function-calling | `tools` (అన్‌ఛేంజ్) |\n| `seed` | **తీసేయండి** (మద్దతు లేదు) |\n| `store` | `store` (పరిమితి: `false`) |\n| `content[].type: \"text\"` | `content[].type: \"input_text\"` |\n| `content[].type: \"image_url\"` | `content[].type: \"input_image\"` |\n| `\"image_url\": {\"url\": \"...\"}` | `\"image_url\": \"...\"` (ఫ్లాట్ స్ట్రింగ్) |\n\nపూర్తి ముందు\u002Fతరువాత కోడ్ ఉదాహరణల కోసం, [cheat-sheet.md](.\u002Freferences\u002Fcheat-sheet.md) చూడండి.\n\nపరీక్షా మౌలిక సదుపాయ మైగ్రేషన్ (మోక్స్, స్నాప్షాట్స్, ధృవీకరణలు) కోసం, [test-migration.md](.\u002Freferences\u002Ftest-migration.md) చూడండి.\n\nలోపాలు మరియు సమస్యలు పరిష్కారానికి, [troubleshooting.md](.\u002Freferences\u002Ftroubleshooting.md) చూడండి.\n\n---\n\n## డేటా రిటెన్షన్ & స్టేట్\n\n- అన్ని Responses అభ్యర్థనలపై `store: false` సెట్ చేయండి.\n- గత సందేశ IDs లేదా సర్వర్-సంగ్రహిత సందర్భంపై ఆధారపడకండి; స్టేట్ క్లయింట్-నియంత్రణలో ఉంచండి మరియు మెటాడేటా తగ్గించండి.\n\n---\n\n## ఆమోదం ప్రమాణాలు\n\n### కోడ్-స్థాయి గేట్లు (అన్నీ పూర్తి కావాలి)\n\n- [ ] మార్చిన ఫైళ్లలో `rg \"chat\\.completions\\.create|ChatCompletion\\.create|Completion\\.create\"` కోసం ఏ మ్యాచ్‌లు ఉండకూడదు.\n- [ ] `rg \"AzureOpenAI\\(|AsyncAzureOpenAI\\(\"` కోసం ఏ మ్యాచ్‌లు ఉండకూడదు — అన్ని కన్స్ట్రక్టర్లు `OpenAI`\u002F`AsyncOpenAI` v1 ఎండ్‌పాయింట్ తో ఉపయోగించాలి.\n- [ ] `rg \"models\\.github\\.ai|models\\.inference\\.ai\\.azure\"` కోసం ఏ మ్యాచ్‌లు ఉండకూడదు — GitHub మోడల్స్ కోడ్ మార్గాలు తీసేయబడ్డాయి.\n- [ ] `rg \"OpenAIChatCompletionClient\"` కోసం ఏ మ్యాచ్‌లు ఉండకూడదు — MAF 1.0.0+ కోడ్ `OpenAIChatClient` (Responses API వాడుతుంది) ఉపయోగిస్తుంది. 1.0.0 ముందు ఉండితే `agent-framework-openai>=1.0.0` కు నవీకరించండి.\n- [ ] అన్ని `ChatOpenAI(...)` పిలుపుల్లో `use_responses_api=True` ఉంటుంది.\n- [ ] `rg \"choices\\[0\\]\"` కోసం ఏ మ్యాచ్‌లు ఉండకూడదు — అన్ని ప్రతిస్పందన యాక్సెస్ `resp.output_text` లేదా Responses అవుట్పుట్ స్కీమాను ఉపయోగిస్తుంది.\n- [ ] టాప్-లెవెల్‌లో `response_format` ఉండకూడదు; అన్ని సాంరాచనాత్మక అవుట్పుట్లకు `text={\"format\": {...}}` ఉపయోగించాలి.\n- [ ] `requirements.txt` లేదా `pyproject.toml` లో `openai>=1.108.1` మరియు `azure-identity` ఉండాలి; డిపెండెన్సిస్ మళ్ళీ ఇన్స్టాల్ చేయబడాలి.\n- [ ] ప్రతి `responses.create` పిలుపులో `store=False` సెట్ చేయాలి.\n- [ ] క్లయింట్ కన్స్ట్రక్షన్‌లో `api_version` ఉండరాదు; `AZURE_OPENAI_API_VERSION` ను ఎన్వ్ ఫైల్స్ మరియు ఇన్‌ఫ్రా నుండి తీసేయాలి.\n\n### టెస్ట్ మౌలిక సదుపాయ గేట్లు (అన్నీ పూర్తి కావాలి)\n\n- [ ] `rg \"ChatCompletionChunk|AsyncCompletions\\.create|chat\\.completions\" tests\u002F` కోసం ఏ మ్యాచ్‌లు ఉండకూడదు.\n- [ ] `rg \"_azure_ad_token_provider\" tests\u002F` కోసం ఏ మ్యాచ్‌లు ఉండకూడదు — అసर्शन‌లు `isinstance(client, AsyncOpenAI)` లేదా `base_url` ను పరీక్షించాలి.\n- [ ] `rg \"prompt_filter_results|content_filter_results\" tests\u002F` కోసం ఏ మ్యాచ్‌లు ఉండకూడదు — ఆజ్యూర్ ప్రత్యేక ఫిల్టర్ మోక్స్ తీసేయబడ్డాయి.\n- [ ] మాక్ ఫిక్చర్స్ `kwargs.get(\"input\")` ఉపయోగిస్తాయి, `kwargs.get(\"messages\")` కాకుండా.\n- [ ] స్నాప్షాట్ \u002F గోల్డెన్ ఫైళ్లను Responses స్ట్రీమింగ్ ఆకారానికి అనుగుణంగా నవీకరించండి (`choices[0]`, `function_call`, `logprobs` లేవు).\n- [ ] అన్ని టెస్ట్ నవీకరణల తర్వాత `pytest` లో ఎలాంటి వైఫల్యాలు ఉండకూడదు.\n\n### ప్రవర్తనా గేట్లు (మాన్యువల్ లేదా టెస్ట్ హార్నెస్ ద్వారా ధృవీకరించాలి)\n\n- [ ] **బేసిక్ కంప్లీషన్**: నాన్-స్ట్రీమింగ్ `responses.create` ఖాళీ కాని `output_text` ను రిటర్న్ చేయాలి.\n- [ ] **స్ట్రీమ్ సమానత్వం**: అసలు కోడులో స్ట్రీమింగ్ వాడితే, మార్చిన కోడ్ కూడా స్ట్రీమ్ చేసి, ఖాళీ కాని డెల్టాలతో `response.output_text.delta` ఈవెంట్లు ఇస్తుంది.\n- [ ] **స్ట్రక్చర్డ్ అవుట్పుట్**: `text.format` తో `json_schema` ఉపయోగిస్తే, `json.loads(resp.output_text)` విజయవంతం అవుతుంది మరియు స్కీమాకు సరిపోతుంది.\n- [ ] **టూల్-కాల్స్ లూపు**: టూల్స్ ఉపయోగించినప్పుడు, మోడల్ టూల్ కాల్స్ చేస్తుంది, యాప్ అవి అమలు చేస్తుంది, తదుపరి అభ్యర్థన తుది `output_text` ను ఇస్తుంది (అనంత లూప్ కాదు).\n- [ ] **అసింక్ సమానత్వం**: `AsyncAzureOpenAI` వాడితే, `AsyncOpenAI` సమానం `await` తో పనిచేస్తుంది.\n- [ ] **లోపాల రేటు**: మైగ్రేషన్ ముందు స్థాయి తో పోల్చితే కొత్త 400\u002F401\u002F404 లోపాలు ఉండకూడదు.\n\n### డెలివరబుల్స్\n\n- సారాంశంలో మార్చిన ఫైళ్ళు, పాత\u002Fకొత్త లిగసీ కాల్ సైట్లు గణాంకాలు, తదుపరి చర్యలు ఉంటాయి.\n- మార్పులు వర్కింగ్-ట్రీ ఎడిట్స్ మాత్రమే (కామిట్ లేవు).\n\n---\n\n## SDK సంస్కరణ అవసరాలు\n\n| ప్యాకేజ్ | కనిష్ఠ సంస్కరణ |\n|---------|----------------|\n| `openai` | `>=1.108.1` |\n| `azure-identity` | తాజా (ఎంట్రాID ఆథ్ కోసం) |\n\n---\n\n## సూచనలు\n\n- [చిట్ షీట్ — అన్ని కోడ్ స్నిపెట్లు](.\u002Freferences\u002Fcheat-sheet.md)\n- [టెస్ట్ మైగ్రేషన్ — మోక్స్, స్నాప్షాట్లు, ధృవీకరణలు](.\u002Freferences\u002Ftest-migration.md)\n- [ట్రబుల్షూటింగ్ — లోపాలు, ప్రమాద పట్టిక, గోచర్లు](.\u002Freferences\u002Ftroubleshooting.md)\n- [detect_legacy.py — ఆటోమేటెడ్ స్కానర్](..\u002F..\u002F..\u002F..\u002F..\u002F.agents\u002Fskills\u002Fazure-openai-to-responses\u002Fscripts\u002Fdetect_legacy.py)\n- [ఆజ్యూర్ OpenAI ప్రారంభ కిట్](https:\u002F\u002Faka.ms\u002Fopenai\u002Fstart)\n- [ఆజ్యూర్ OpenAI Responses API డాక్స్](https:\u002F\u002Flearn.microsoft.com\u002Fen-us\u002Fazure\u002Fai-foundry\u002Fopenai\u002Fhow-to\u002Fresponses)\n- [ఆజ్యూర్ OpenAI API వెర్షన్ జీవన చక్రం](https:\u002F\u002Flearn.microsoft.com\u002Fen-us\u002Fazure\u002Fai-foundry\u002Fopenai\u002Fapi-version-lifecycle?view=foundry-classic&tabs=python#api-evolution)\n- [OpenAI Responses API సూచీ](https:\u002F\u002Fplatform.openai.com\u002Fdocs\u002Fapi-reference\u002Fresponses)\n\n---\n\n\u003C!-- CO-OP TRANSLATOR DISCLAIMER START -->\n**అస్వీకరణ**:\nఈ పత్రం AI అనువాద సేవ [Co-op Translator](https:\u002F\u002Fgithub.com\u002FAzure\u002Fco-op-translator) ఉపయోగించి అనువదించబడింది. మేము ఖచ్చితత్వానికి ప్రయత్నిస్తున్నప్పటికీ, ఆటోమేటెడ్ అనువాదాలు తప్పులు లేదా అసమగ్రతలను కలిగి ఉండవచ్చు. దాని స్వదేశ భాషలో ఉన్న అసలు పత్రాన్ని అధికారం కలిగిన మూలంగా పరిగణించాలి. కీలకమైన సమాచారం కోసం, ప్రొఫెషనల్ మానవ అనువాదాన్ని సిఫారసు చేస్తాము. ఈ అనువాదం ఉపయోగం వల్ల కలిగే ఏవైనా అపార్థాలు లేదా తప్పుదారులు కోసం మేము బాధ్యత వహించము.\n\u003C!-- CO-OP TRANSLATOR DISCLAIMER END -->",{"name":5,"license":14},"main","f09e94ffe170f8af6d3db7c42987bbe4db227723","translations\u002Fte\u002F.agents\u002Fskills\u002Fazure-openai-to-responses",26019,"https:\u002F\u002Fgithub.com\u002Fmicrosoft\u002Fai-agents-for-beginners","https:\u002F\u002Faka.ms\u002Fai-agents-beginners","https:\u002F\u002Fgithub.com\u002Fmicrosoft","https:\u002F\u002Fopensource.microsoft.com","Open source projects and samples from Microsoft","2026-11-07 12:51:12",{"source":7,"skillName":5,"commands":35,"prompt":45,"zipAvailable":46},[36,39,42],{"tool":37,"command":38},"npx","npx skills add microsoft\u002Fai-agents-for-beginners --skill azure-openai-to-responses",{"tool":40,"command":41},"bunx","bunx skills add microsoft\u002Fai-agents-for-beginners --skill azure-openai-to-responses",{"tool":43,"command":44},"pnpm","pnpm dlx skills add microsoft\u002Fai-agents-for-beginners --skill azure-openai-to-responses","安装技能，技能地址：https:\u002F\u002Fgithub.com\u002Fmicrosoft\u002Fai-agents-for-beginners\u002Fblob\u002Fmain\u002Ftranslations\u002Fte\u002F.agents\u002Fskills\u002Fazure-openai-to-responses\u002FSKILL.md",true,[48,54,58],{"path":49,"resourceType":50,"resourceTypeDesc":51,"sizeBytes":52,"sourceHtmlUrl":53},"references\u002Fcheat-sheet.md","REFERENCE","参考文档",42647,"https:\u002F\u002Fgithub.com\u002Fmicrosoft\u002Fai-agents-for-beginners\u002Fblob\u002Fmain\u002Ftranslations\u002Fte\u002F.agents\u002Fskills\u002Fazure-openai-to-responses\u002Freferences\u002Fcheat-sheet.md",{"path":55,"resourceType":50,"resourceTypeDesc":51,"sizeBytes":56,"sourceHtmlUrl":57},"references\u002Ftest-migration.md",10783,"https:\u002F\u002Fgithub.com\u002Fmicrosoft\u002Fai-agents-for-beginners\u002Fblob\u002Fmain\u002Ftranslations\u002Fte\u002F.agents\u002Fskills\u002Fazure-openai-to-responses\u002Freferences\u002Ftest-migration.md",{"path":59,"resourceType":50,"resourceTypeDesc":51,"sizeBytes":60,"sourceHtmlUrl":61},"references\u002Ftroubleshooting.md",27835,"https:\u002F\u002Fgithub.com\u002Fmicrosoft\u002Fai-agents-for-beginners\u002Fblob\u002Fmain\u002Ftranslations\u002Fte\u002F.agents\u002Fskills\u002Fazure-openai-to-responses\u002Freferences\u002Ftroubleshooting.md",[63,81,92,100,108,115],{"skillNo":64,"name":65,"nameZh":6,"description":6,"descriptionZh":6,"repositoryFullName":7,"ownerLogin":8,"ownerAvatarUrl":9,"ownerAccountNo":10,"ownerDisplayName":11,"repositoryNo":12,"starsCount":13,"licenseSpdxId":14,"licenseFileUrl":6,"sourceHtmlUrl":66,"categories":67,"keywords":78,"publishedAt":19},"01M69A206TRZ8KK0CW0HYJF5V5","testing-course-samples","https:\u002F\u002Fgithub.com\u002Fmicrosoft\u002Fai-agents-for-beginners\u002Fblob\u002Fmain\u002Ftranslations\u002Fzh-TW\u002F.agents\u002Fskills\u002Ftesting-course-samples\u002FSKILL.md",[68,73],{"categoryNo":69,"categoryName":70,"taxonomyType":71,"taxonomyTypeDesc":72},"01JBSEEDCAT000000000000008","测试与质量","SCENARIO","使用场景",{"categoryNo":74,"categoryName":75,"taxonomyType":76,"taxonomyTypeDesc":77},"01JBSEEDCAT000000000000039","教师与教育","PROFESSION","适用职业",[79,80],"testing","testing course samples",{"skillNo":82,"name":83,"nameZh":6,"description":6,"descriptionZh":6,"repositoryFullName":7,"ownerLogin":8,"ownerAvatarUrl":9,"ownerAccountNo":10,"ownerDisplayName":11,"repositoryNo":12,"starsCount":13,"licenseSpdxId":14,"licenseFileUrl":6,"sourceHtmlUrl":84,"categories":85,"keywords":89,"publishedAt":19},"01M69A1XRB2SFHYRMEH0K08EKZ","microsoft-docs","https:\u002F\u002Fgithub.com\u002Fmicrosoft\u002Fai-agents-for-beginners\u002Fblob\u002Fmain\u002Ftranslations\u002Fzh-TW\u002F.agents\u002Fskills\u002Fmicrosoft-docs\u002FSKILL.md",[86],{"categoryNo":87,"categoryName":88,"taxonomyType":71,"taxonomyTypeDesc":72},"01JBSEEDCAT000000000000023","Skill与智能体开发",[90,8,91],"docs","microsoft docs",{"skillNo":93,"name":94,"nameZh":6,"description":6,"descriptionZh":6,"repositoryFullName":7,"ownerLogin":8,"ownerAvatarUrl":9,"ownerAccountNo":10,"ownerDisplayName":11,"repositoryNo":12,"starsCount":13,"licenseSpdxId":14,"licenseFileUrl":6,"sourceHtmlUrl":95,"categories":96,"keywords":97,"publishedAt":19},"01M69A1VPZFJQ1HNGTZQ5P3WSC","local-ai-agents","https:\u002F\u002Fgithub.com\u002Fmicrosoft\u002Fai-agents-for-beginners\u002Fblob\u002Fmain\u002Ftranslations\u002Fzh-TW\u002F.agents\u002Fskills\u002Flocal-ai-agents\u002FSKILL.md",[],[98,99],"ai agents","local ai agents",{"skillNo":101,"name":102,"nameZh":6,"description":103,"descriptionZh":6,"repositoryFullName":7,"ownerLogin":8,"ownerAvatarUrl":9,"ownerAccountNo":10,"ownerDisplayName":11,"repositoryNo":12,"starsCount":13,"licenseSpdxId":14,"licenseFileUrl":6,"sourceHtmlUrl":104,"categories":105,"keywords":106,"publishedAt":19},"01M69A1S947N7MM6V9JF85S2E7","jupyter-notebook","當使用者要求建立、搭建或編輯 Jupyter 筆記本（`.ipynb`）用於實驗、探索或教學時使用；優先使用隨附範本並執行輔助腳本 `new_notebook.py` 來產生一個乾淨的起始筆記本。","https:\u002F\u002Fgithub.com\u002Fmicrosoft\u002Fai-agents-for-beginners\u002Fblob\u002Fmain\u002Ftranslations\u002Fzh-TW\u002F.agents\u002Fskills\u002Fjupyter-notebook\u002FSKILL.md",[],[107],"jupyter notebook",{"skillNo":109,"name":110,"nameZh":6,"description":6,"descriptionZh":6,"repositoryFullName":7,"ownerLogin":8,"ownerAvatarUrl":9,"ownerAccountNo":10,"ownerDisplayName":11,"repositoryNo":12,"starsCount":13,"licenseSpdxId":14,"licenseFileUrl":6,"sourceHtmlUrl":111,"categories":112,"keywords":113,"publishedAt":19},"01M69A1Q8EXPWKZSQK69V6WF22","deploying-scalable-agents","https:\u002F\u002Fgithub.com\u002Fmicrosoft\u002Fai-agents-for-beginners\u002Fblob\u002Fmain\u002Ftranslations\u002Fzh-TW\u002F.agents\u002Fskills\u002Fdeploying-scalable-agents\u002FSKILL.md",[],[114],"deploying scalable agents",{"skillNo":116,"name":5,"nameZh":6,"description":6,"descriptionZh":6,"repositoryFullName":7,"ownerLogin":8,"ownerAvatarUrl":9,"ownerAccountNo":10,"ownerDisplayName":11,"repositoryNo":12,"starsCount":13,"licenseSpdxId":14,"licenseFileUrl":6,"sourceHtmlUrl":117,"categories":118,"keywords":119,"publishedAt":19},"01M69A1MHZTH3RH9N8VYSYG74X","https:\u002F\u002Fgithub.com\u002Fmicrosoft\u002Fai-agents-for-beginners\u002Fblob\u002Fmain\u002Ftranslations\u002Fzh-TW\u002F.agents\u002Fskills\u002Fazure-openai-to-responses\u002FSKILL.md",[],[18]]