[{"data":1,"prerenderedAt":-1},["ShallowReactive",2],{"skill:01M699JY4N11DB63CA7SZMES0B":3,"skill-same:01M699JY4N11DB63CA7SZMES0B":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},"01M699JY4N11DB63CA7SZMES0B","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\u002Fkn\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# ಅಜೂರ್ ಓಪನ್‌ಎಐ ಚಾಟ್ ಪೂರ್ಣಗೊಳಿಸುವಿಕೆಗಳಿಂದ ಪ್ರತಿಕ್ರಿಯೆಗಳ API ಗೆ પાયથોન ಅಪ್ಲಿಕೇಶನ್ಗಳನ್ನು ವರ್ಗಾಯಿಸಿ\n\n> **ಅಧಿಕೃತ ಮಾರ್ಗದರ್ಶನ — ನಿಖರವಾಗಿ ಅನುಸರಿಸಿ**\n>\n> ಈ ಕೌಶಲ್ಯವು ಪೈಥಾನ್ ಕೋಡ್‌ಬೇಸ್‌ಗಳನ್ನು ಅಜೂರ್ ಓಪನ್‌ಎಐ ಚಾಟ್ ಪೂರ್ಣಗೊಳಿಸುವಿಕೆಗಳಿಂದ\n> ಏಕೀಕೃತ ಪ್ರತಿಕ್ರಿಯೆಗಳ API ಗೆ ವರ್ಗಾಯಿಸುತ್ತದೆ. ಈ ಸೂಚನೆಗಳನ್ನು ಸ್ಪಷ್ಟವಾಗಿ ಅನುಸರಿಸಿ.\n> ನಿಯಮಾವಳಿ ಮಾನದಂಡಗಳನ್ನು ಅಥವಾ API ರೂಪಗಳನ್ನು ಉಂಟುಮಾಡಬೇಡಿ.\n\n---\n\n## ಪ್ರೇರಕಗಳು\n\nಬಳಕೆದಾರರು ಈ ಕೆಳಗಿನ ಕಾರ್ಯಗಳನ್ನು ಆಚರಿಸಲು ಆಕಾಂಕ್ಷಿಸುವಾಗ ಈ ಕೌಶಲ್ಯ ಸಕ್ರಿಯಗೊಳ್ಳುತ್ತದೆ:\n- ಅಜೂರ್ ಓಪನ್‌ಎಐ ಚಾಟ್ ಪೂರ್ಣಗೊಳಿಸುವಿಕೆಗಳಿಂದ ಪ್ರತಿಕ್ರಿಯೆಗಳ API ಗೆ ಪೈಥಾನ್ ಅಪ್ಲಿಕೇಶನ್ ಅನ್ನು ವರ್ಗಾಯಿಸುವುದು\n- ಅಜೂರ್ ಓಪನ್‌ಎಐ ವಿರುದ್ಧ ಇತ್ತೀಚಿನ API ರೂಪಕ್ಕೆ ಪೈಥಾನ್ ಓಪನ್‌ಎಐ SDK ಬಳಕೆಯನ್ನು ನವೀಕರಿಸುವುದು\n- ಅಜೂರ್‌ನಲ್ಲಿ ಪ್ರತಿಕ್ರಿಯೆಗಳು ಬೇಕಾದ GPT-5 ಅಥವಾ ಹೊಸ ಮಾದರಿಗಾಗಿ ಪೈಥಾನ್ ಕೋಡ್ ತಯಾರಿಸುವುದು\n- `AzureOpenAI`\u002F`AsyncAzureOpenAI` ನಿಂದ ಸಾಂಪ್ರದಾಯಿಕ `OpenAI`\u002F`AsyncOpenAI` ಕ್ಲೈಂಟ್ ಮತ್ತು v1 ಎಂಡ್ಪಾಯಿಂಟ್‌ಗೆ ಪರಿವರ್ತಿಸುವುದು\n- `AzureOpenAI` ಕಾನ್ಸ್‌ಟ್ರಕ್ಟರ್‌ಗಳು ಅಥವಾ `api_version` ಗೆ ಸಂಬಂಧಿಸಿದ ಹಳೇ ಎಚ್ಚರಿಕೆಗಳನ್ನು ಸರಿಪಡಿಸುವುದು\n\n---\n\n## ⚠️ ಮಾದರಿ ಹೊಂದಾಣಿಕೆ — ಮೊದಲು ಪರಿಶೀಲಿಸಿ\n\n> **ವರ್ಗಾವಣೆ ಮಾಡಲು ಮೊದಲು, ನಿಮ್ಮ ಅಜೂರ್ ಓಪನ್‌ಎಐ ನಿಯೋಜನೆ ಪ್ರತಿಕ್ರಿಯೆಗಳ 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> **ಸೂಚನೆ**: ಅಜೂರ್ ಓಪನ್‌ಎಐನಲ್ಲಿ `max_output_tokens` ಗೆ ಕನಿಷ್ಠ ಮೌಲ್ಯ 16 ಇರುತ್ತದೆ. 16 ಕ್ಕಿಂತ ಕಡಿಮೆ ಮೌಲ್ಯಗಳು 400 ದೋಷವನ್ನು ಕೊಡುವವು. ಸ್ಮೋಕ್ ಟೆಸ್ಟ್‌ಗಾಗಿ 50+ ಬಳಸಿ.\n\nಇದು 404 ವಾಪಸಿ ನೀಡಿದರೆ, ನಿಯೋಜನೆಯ ಮಾದರಿ ಇನ್ನೂ ಪ್ರತಿಕ್ರಿಯೆಗಳನ್ನು ಬೆಂಬಲಿಸುವುದಿಲ್ಲ — ಕೆಳಗಿನ ಉಲ್ಲೇಖವನ್ನು ಪರಿಶೀಲಿಸಿ ಅಥವಾ ಬೆಂಬಲಿತ ಮಾದರಿಯೊಂದಿಗೆ ಮರುನಿಯೋಜಿಸಿ.\n\n### 2. ನಿಮ್ಮ ಪ್ರದೇಶದಲ್ಲಿ ಲಭ್ಯವಿರುವ ಮಾದರಿಗಳನ್ನು ಪರಿಶೀಲಿಸಿ (ಶಿಫಾರಸು)\n\nನಿಮ್ಮ ನಿರ್ದಿಷ್ಟ ಪ್ರದೇಶದಲ್ಲಿ ಪ್ರತಿಕ್ರಿಯೆಗಳ API ಬೆಂಬಲ ಇರುವುದನ್ನು ನೋಡಲು ಒಳನಿರ್ಮಿತ ಮಾದರಿ ಹೊಂದಾಣಿಕೆ ಉಪಕರಣವನ್ನು ಚಾಲನೆ ಮಾಡಿ:\n\n```bash\npython migrate.py models --subscription YOUR_SUB_ID --location YOUR_REGION\n```\n\nಇದು ಅಜೂರ್ ARM ಸಜೀವ ಪ್ರಶ್ನೆಯನ್ನು ನಡೆಸುತ್ತದೆ ಮತ್ತು ಹೊಂದಾಣಿಕೆ ಮ್ಯಾಟ್ರಿಕ್ಸ್ ಅನ್ನು ತೋರಿಸುತ್ತದೆ — ಯಾವ ಮಾದರಿಗಳು ಪ್ರತಿಕ್ರಿಯೆಗಳನ್ನು, ರಚನೆಗೊಂಡ ಔಟ್‌ಪುಟ್, ಸರಂಜಾಮುಗಳು ಇತ್ಯಾದಿಗಳನ್ನು ಬೆಂಬಲಿಸುವುದನ್ನು. ಫಲಿತಾಂಶಗಳನ್ನು ಸೀಮಿತಗೊಳಿಸಲು `--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` ಕ್ಕೆ ಮುಂಚಿತ) ಪ್ರತಿಕ್ರಿಯೆಗಳ API ಯ ಎಲ್ಲಾ ವೈಶಿಷ್ಟ್ಯಗಳನ್ನು ಸಂಪೂರ್ಣವಾಗಿ ಬೆಂಬಲಿಸದಿರಬಹುದು.\n>\n> ಹಳೆಯ ಮಾದರಿಗಳಲ್ಲಿನ ತಿಳಿದಿರುವ ನಿರ್ಬಂಧಗಳು:\n> - **`reasoning` ನಿಯಮಾವಳಿ**: ಬಹುತೇಕ ನಿರ್ಧಾರಾತ್ಮಕ ಮಾದರಿಗಳಲ್ಲಿ ಬೆಂಬಲಿಸುವುದಿಲ್ಲ. ಮೂಲ ಕೋಡಿನಲ್ಲಿ ಇದಿದ್ದರೆ ಮಾತ್ರ ವರ್ಗಾಯಿಸಿ.\n> - **`seed` ನಿಯಮಾವಳಿ**: ಪ್ರತಿಕ್ರಿಯೆಗಳ API ನಲ್ಲಿ ಯಾವುದೇ ಬೆಂಬಲವಿಲ್ಲ — ಎಲ್ಲಾ ವಿನಂತಿಗಳಿಂದ ತೆಗೆದುಹಾಕಿ.\n> - **`text.format` ಮುಖಾಂತರ ರಚನೆಗೊಂಡ ಔಟ್‌ಪುಟ್**: ಹಳೆಯ ಮಾದರಿಗಳು `strict: true` JSON ಸ್ಕೀಮಾಗಳನ್ನು ನಿಖರವಾಗಿ ಅನುಸರಿಸದಿರಬಹುದು.\n> - **ಸರಂಜಾಮು ಸಂಯೋಜನೆ**: GPT-5+ ಆಂತರಿಕ ನಿರ್ಧಾರದ ಭಾಗವಾಗಿ ಸರಂಜಾಮು ಕರೆಗಳನ್ನು ನಿಯಂತ್ರಿಸುತ್ತದೆ. ಹಳೆಯ ಮಾದರಿಗಳು ಪ್ರತಿಕ್ರಿಯೆಗಳಲ್ಲಿ ಕಾರ್ಯನಿರ್ವಹಿಸುತ್ತವೆ, ಆದರೆ ಆಳವಾದ ಸಂಯೋಜನೆ ಇಲ್ಲ.\n> - **ತೆಂಪರೆಚರ್ ನಿರ್ಬಂಧಗಳು**: `gpt-5` ಗೆ ವರ್ಗಾಯಿಸುವಾಗ ತೆಂಪರೆಚರ್ ತೆಗೆದುಹಾಕಬೇಕು ಅಥವಾ `1` ಕ್ಕೆ ಹೊಂದಿಸಬೇಕು. ಹಳೆಯ ಮಾದರಿಗಳಲ್ಲಿ ಈ ನಿರ್ಬಂಧ ಇಲ್ಲ.\n\n### ಓ-ಸೀರೀಸ್ ನಿರ್ಧಾರಾತ್ಮಕ ಮಾದರಿಗಳು (o1, o3-mini, o3, o4-mini)\n\nಓ-ಸೀರೀಸ್ ಮಾದರಿಗಳಿಗೆ ವಿಶಿಷ್ಟ ನಿಯಮಾವಳಿಗಳಿವೆ. ಓ-ಸೀರೀಸ್ ಮಾದರಿಗಳನ್ನು ಗುರಿಯಾಗಿಟ್ಟಿರುವ ಅಪ್ಲಿಕೇಶನ್‌ಗಳನ್ನು ವರ್ಗಾಯಿಸುವಾಗ:\n\n- **`temperature`**: `1` ಇರಬೇಕು (ಅಥವಾ ಕೈಗೆಡದಿರಬೇಕು). ಓ-ಸೀರೀಸ್ ಮಾದರಿಗಳು ಇತರ ಮೌಲ್ಯಗಳನ್ನು ಸ್ವೀಕರಿಸುವುದಿಲ್ಲ.\n- **`max_completion_tokens` → `max_output_tokens`**: ಅಜೂರ್-ನಿರ್ದಿಷ್ಟ `max_completion_tokens` ಬಳಕೆದಾರರು `max_output_tokens` ಗೆ ಬಿಡಬೇಕು. reasoning tokens ಲಿಮಿಟ್‌ಗೆ ಸೇರಿಸಬೇಕು ಆದ್ದರಿಂದ ಹೆಚ್ಚಿನ ಮೌಲ್ಯಗಳನ್ನು (4096+) ನಿಗದಿಪಡಿಸಿ.\n- **`reasoning_effort`**: ಅಪ್ಲಿಕೇಶನಿನಲ್ಲಿ `reasoning_effort` (low\u002Fmedium\u002Fhigh) ಇದ್ದರೆ ಅದನ್ನು ಕಾಯ್ದುಕೊಳ್ಳಿ — ಪ್ರತಿಕ್ರಿಯೆಗಳ API ಓ-ಸೀರೀಸ್ ಮಾದರಿಗಳಿಗೆ ಈ ನಿಯಮಾವಳಿಯನ್ನು ಬೆಂಬಲಿಸುತ್ತದೆ.\n- **ಸ್ಟ್ರೀಮಿಂಗ್ ವರ್ತನೆ**: ಓ-ಸೀರೀಸ್ ಮಾದರಿಗಳು ಪೂರ್ಣ reasoning ನಂತ್ರ ಆ.utput ಅನ್ನು ಬಫರ್ ಮಾಡಿ ನಂತರ ಪಠ್ಯ ಡೆಲ್ಟಾ ಘಟನೆಗಳನ್ನು ಹರಡುತ್ತವೆ. ಸ್ಟ್ರೀಮಿಂಗ್ ಸರಿ ಕಾರ್ಯನಿರ್ವಹಿಸುವುದು, ಆದರೆ ಮೊದಲ `response.output_text.delta` ಗರಿಷ್ಟ ವಿಳಂಬೊಂದಿಗೆ ಬರಬಹುದು.\n- **`top_p`**: ಓ-ಸೀರೀಸ್‌ನಲ್ಲಿ ಬೆಂಬಲಿಸುವುದಿಲ್ಲ — ಇದ್ದರೆ ತೆಗೆದು ಹಾಕಿ.\n- **ಸರಂಜಾಮು ಬಳಕೆ**: ಓ-ಸೀರೀಸ್ ಮಾದರಿಗಳು ಪ್ರತಿಕ್ರಿಯೆಗಳ API ಮೂಲಕ ಸರಂಜಾಮುಗಳನ್ನು GPT ಮಾದರಿಗಳಂತೆ ಬೆಂಬಲಿಸುತ್ತವೆ, ಆದರೆ ಸರಂಜಾಮು ಕರೆ ನಿರ್ವಹಣೆಯ ಗುಣಮಟ್ಟ ಮಾದರಿ ಪ್ರಕಾರ ವ್ಯತ್ಯಾಸವಿದೆ.\n\n**ಕ್ರಿಯೆ — ಸಕ್ರಿಯ ಮಾದರಿ ಸಲಹೆ**: ಸ್ಕ್ಯಾನ್ ಹಂತದಲ್ಲಿ ಅಪ್ಲಿಕೇಶನ್ ಗುರಿಯಾಗಿರುವ ಮಾದರಿಯನ್ನು (ನಿಯೋಜನೆ ಹೆಸರುಗಳು, ಪರಿಸರ ಚರ, ವಿನ್ಯಾಸ) ಪರಿಶೀಲಿಸಿ. ಮಾದರಿ `gpt-4.1` ಕ್ಕಿಂತ ಹಳೆಯದಾಗಿದ್ದರೆ (gpt-4.1+ ಅಲ್ಲ) ಬಳಕೆದಾರನಿಗೆ ಮುಂಚಿತವಾಗಿ ತಿಳಿಸಿ:\n- ವರ್ಗಾಯಿಸುವಿಕೆ ಮೂಲ ಪಠ್ಯ, ಚಾಟ್, ಸ್ಟ್ರೀಮಿಂಗ್ ಮತ್ತು ಸರಂಜಾಮುಗಳಿಗಾಗಿ ಕಾರ್ಯನಿರ್ವಹಿಸುತ್ತದೆ.\n- ಹೊಸ ಮಾದರಿಗಳು (`gpt-5.1`, `gpt-5.2`) ಉತ್ತಮ ಸರಂಜಾಮು ನಿರ್ವಹಣೆ, ರಚನಾತ್ಮಕ ಔಟ್‌ಪುಟ್ ಜಾರಿ, ನಿರ್ಧಾರಶೀಲತೆ, ಮತ್ತು ಪ್ರದೇಶಾಂತರ ಲಭ್ಯತೆ ನೀಡುತ್ತವೆ.\n- ತಯಾರಾದಾಗ ತಮ್ಮ ನಿಯೋಜನೆಯನ್ನು ನವೀಕರಿಸುವ ಬಗ್ಗೆ ಯೋಚಿಸಬೇಕು — ಇದು ವರ್ಗಾಯಿಯನ್ನು ತಡೆ ಹಾಕುವುದಕ್ಕೆ ಕಾರಣವಲ್ಲ.\n\nಮಾದರಿ ಆವೃತ್ತಿಯ ಆಧಾರದ ಮೇಲೆ ವರ್ಗಾಯಿಸುವಿಕೆಯನ್ನು ತಡೆಯಬೇಡಿ ಅಥವಾ ನಿರಾಕರಿಸಬೇಡಿ. ಸಲಹೆ ಮಾಹಿತಿ ಮಾತ್ರ.\n\n### GitHub ಮಾದರಿಗಳು ಪ್ರತಿಕ್ರಿಯೆಗಳ API ಅನ್ನು ಬೆಂಬಲಿಸುವುದಿಲ್ಲ\n\n> **GitHub ಮಾದರಿಗಳು (`models.github.ai`, `models.inference.ai.azure.com`) ಪ್ರತಿಕ್ರಿಯೆಗಳ API ಅನ್ನು ಬೆಂಬಲಿಸುವುದಿಲ್ಲ.**\n\nಕೋಡ್‌ಬೇಸಿನಲ್ಲಿ GitHub ಮಾದರಿಗಳ ಕೋಡ್ ಮಾರ್ಗಗಳಿದ್ದರೆ (`base_url` ಅನ್ನು `models.github.ai` ಅಥವಾ `models.inference.ai.azure.com` ತಿರುವಾಗ), ವರ್ಗಾಯಿಸುವಾಗ ಅದನ್ನು **ಸಂಪೂರ್ಣವಾಗಿ ತೆಗೆದುಹಾಕಿ**. ಪ್ರತಿಕ್ರಿಯೆಗಳ API ಅಜೂರ್ ಓಪನ್‌ಎಐ, ಓಪನ್‌ಎಐ, ಅಥವಾ ಸಮಾನ ಅವಕಾಶ ಇರುವ ಸ್ಥಳೀಯ ಎಂಡ್ಪಾಯಿಂಟ್ (ಉದಾ: Ollama ಪ್ರತಿಕ್ರಿಯೆಗಳ ಬೆಂಬಲದೊಂದಿಗೆ) ಅಗತ್ಯವಿದೆ.\n\nಸ್ಕ್ಯಾನ್ ಹಂತದಲ್ಲಿ ಕಾರ್ಯ:\n- ಯಾವುದೇ GitHub ಮಾದರಿ ಕೋಡ್ ಮಾರ್ಗಗಳನ್ನು ತೆಗೆದುಹಾಕಲು ಧ್ವಜಿಸಿ.\n\n---\n\n## ಫ್ರೇಮ್ವರ್ಕ್ ವರ್ಗಾವಣೆ\n\nಅನೇಕ ಅಪ್ಲಿಕೇಶನ್‌ಗಳು OpenAI ಮೇಲೆ ಮೇಲ್ಮಟ್ಟದ ಫ್ರೇಮ್ವರ್ಕ್‌ಗಳನ್ನು ಬಳಸುತ್ತವೆ. ಅವುಗಳನ್ನು ವರ್ಗಾಯಿಸುವಾಗ, ಫ್ರೇಮ್ವರ್ಕ್‌ನ ಸ್ವಂತ API ಬದಲಾವಣೆ—ಕೆಲವೊಮ್ಮೆ ಮಾತ್ರ ಮೂಲ OpenAI ಕರೆಗಳು ಅಲ್ಲ.\n\n### ಮೈಕ್ರೋಸಾಫ್ಟ್ ಏಜೆಂಟ್ ಫ್ರೇಮ್ವರ್ಕ್ (MAF)\n\n**ನೀವು MAF ಆವೃತ್ತಿಯನ್ನು ಮೊದಲು ಪರಿಶೀಲಿಸಿ** — ವರ್ಗಾವಣೆ ನಿಮ್ಮ MAF 1.0.0+ ಅಥವಾ ಪೀಠಿಕೆಯ ಮುನ್ನ.beta\u002Frc ಆವೃತ್ತಿ ಮೇಲೆ ಅವಲಂಬಿತವಾಗಿದೆ.\n\n#### MAF 1.0.0+ (agent-framework-openai >= 1.0.0)\n\n`OpenAIChatClient` **ಪ್ರತಿಕ್ರಿಯೆಗಳ 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 (beta\u002Frc ಬಿಡುಗಡೆಯಾಗಿರುವ ಆವೃತ್ತಿಗಳು)\n\npre-1.0.0 MAF ನಲ್ಲಿ, `OpenAIChatClient` ಚಾಟ್ ಪೂರ್ಣಗೊಳಿಸುವಿಕೆಗಳನ್ನು ಬಳಸುತ್ತಿತ್ತು. `agent-framework-openai>=1.0.0` ಗೆ ನವೀಕರಿಸಿ, ಅಲ್ಲಿ `OpenAIChatClient` ಸ್ವತಃ ಪ್ರತಿಕ್ರಿಯೆಗಳ API ಅನ್ನು ಬಳಸುತ್ತದೆ.\n\nಬೇರೆ ಬದಲಾವಣೆಗಳು ಅಗತ್ಯವಿಲ್ಲ — `Agent` ಮತ್ತು ಸರಂಜಾಮು API ಗಳು ಅಷ್ಟೇ ಹಾಗೆಯೇ ಇರುತ್ತವೆ.\n\n### ಲಾಂಗ್‌ಚೈನ್ (`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> **ಪ್ರತಿಕ್ರಿಯೆಗಳ API ಒಂದು ಸರ್ವರ್-ಬದಿಯ ವಿಷಯ.** ನಿಮ್ಮ ಪೈಥಾನ್ ಬ್ಯಾಕೆಂಡ್ ಅನ್ನು ವರ್ಗಾಯಿಸಿ; ಮುಂಭಾಗದ HTTP ಒಪ್ಪಂದ ಬದಲಿಸಬೇಡಿ, ಬೇರೆ ಇಲ್ಲದಿದ್ದಲ್ಲಿ, ಪ್ರತಿಕ್ರಿಯೆಗಳ ವಿನಂತಿ ರೂಪವನ್ನು ಅಳವಡಿಸುವುದನ್ನು ಪರಿಗಣಿಸಿ. ಮುಂಭಾಗದಲ್ಲಿ ಒಬ್ಬ ಗ್ರಾಹಕ-ಪಕ್ಷೀಯ ಕೀಲಿಯನ್ನು ಬಳಸಿಕೊಂಡು 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- ಅಜೂರ್ ಓಪನ್‌ಎಐ ವಿರುದ್ಧ ಚಾಟ್ ಪೂರ್ಣಗೊಳಿಸುವಿಕೆಗಳು ಅಥವಾ ಹಳೆಯ ಪೂರ್ಣಗೊಳಿಸುವಿಕೆಗಳು ಬಳಸಿದ ಎಲ್ಲಾ ಪೈಥಾನ್ ಕಾಲ್ ಸೈಟ್ ಅನ್ನು ಗುರುತಿಸಿ.\n- ಪೈಥಾನ್ ಕೋಡ್‌ಬೇಸ್‌ಗೆ ವರ್ಗಾವಣೆ ಯೋಜನೆ ಮತ್ತು ಕ್ರಮವನ್ನು đề proposta ಮಾಡಿ.\n- ಪ್ರತಿಕ್ರಿಯೆಗಳ API ಗೆ ಬದಲಾಯಿಸಲು ಸುರಕ್ಷಿತ, ಕನಿಷ್ಠ ಸಂಪಾದನೆಗಳು ಅನ್ವಯಿಸಿ.\n- ಕರೆ ಮಾಡಿದವರು ಪ್ರತಿಕ್ರಿಯೆಗಳ ಔಟ್‌ಪುಟ್ ಸ್ಕೀಮಾ ಬಳಕೆ ಮಾಡಿಕೊಳ್ಳುವಂತೆ ನವೀಕರಿಸಿ; ಹಿಂದೆಗಿನ ಹೊಂದಾಣಿಕೆಯ ರಾಪರ್ಸ್ ಬೇಡ.\n- ಪರೀಕ್ಷಾ\u002Fಲಿಂಟ್ ಗಳನ್ನ ನಡಿಸಿ; ವರ್ಗಾವಣೆಯಿಂದ ಉಂಟಾದ ಸಣ್ಣ ಬ್ರೇಕ್‌ವೈಸ್‌ಗಳನ್ನು ಸರಿಪಡಿಸಿ.\n- ಸಣ್ಣ, ಪರಿಶೀಲಿಸಲು সহজ ಬದಲಾವಣೆಗಳ ಸೆಟ್ ತಯಾರಿಸಿ ಮತ್ತು ಕೊನೆಯಲ್ಲಿ ವ್ಯತ್ಯಾಸಗಳೊಂದಿಗೆ ಸಾರಾಂಶ ನೀಡಿ (ಕಮಿಟ್ ಮಾಡಬೇಡಿ).\n\n---\n\n## ಗೇರ್ಡ್ರೈಲುಗಳು\n\n- ಗಿಟ್ ಕಾರ್ಯಕ್ಷೇತ್ರದೊಳಗಿನ ಫೈಲ್‌ಗಳನ್ನು ಮಾತ್ರ ಬದಲಾಯಿಸಿ. ಹೊರಗಿನವುಗಳನ್ನು ಬರೆಯಬೇಡಿ.\n- ಹಿಂದಿನ ಹೊಂದಾಣಿಕೆಯ ಶಿಮ್‌ಗಳನ್ನು ಉಳಿಸಬೇಡಿ; ಹೊಸ API ರೂಪಕ್ಕೆ ಕೋಡ್ ಅನ್ನು ವರ್ಗಾಯಿಸಿ.\n- ಶವಸ್ಮರಣೆ\u002Fಉಪಕ್ರಮ ಕಾಮೆಂಟ್‌ಗಳು ಅಥವಾ ಬ್ಯಾಕಪ್ ಫೈಲ್‌ಗಳನ್ನು ಉಳಿಸಬೇಡಿ.\n- ಹಿಂದಿನಂತೆ ಸ್ಟ್ರೀಮಿಂಗ್ ಬಳಕೆಯಿದ್ದರೆ ಅದು ಉಳಿಸಬೇಕು; ಇಲ್ಲದಿದ್ದಲ್ಲಿ ಸ್ಟ್ರೀಮಿಂಗ್ ಇಲ್ಲದ ವಿಧಾನ ಬಳಸಿರಿ.\n- ಅನುಮೋದನಾ ಮೋಡ್‍ನಲ್ಲಿ ಇರುವಾಗ ಆಜ್ಞೆಗಳು ಅಥವಾ ಜಾಲ ಸಂವಾದಗಳಿಗೆ ಅನುಮೋದನೆ ಕೇಳಿ.\n- `git add`\u002F`git commit`\u002F`git push` ನಡಿಸಲು ಬಿಡಬೇಡಿ; ಕಾರ್ಯನಿರ್ವಹಿಸುವ ಮರೆಯನ್ನು ಮಾತ್ರ ತಯಾರಿಸಿ.\n\n---\n\n## ಹಂತ 0: ಅಜೂರ್ ಓಪನ್‌ಎಐ ಕ್ಲೈಂಟ್ ವರ್ಗಾವಣೆ (ಮುನ್ಸೂಚನೆ)\n\nಕೋಡ್‌ಬೇಸ್ `AzureOpenAI` ಅಥವಾ `AsyncAzureOpenAI` ನಿರ್ಮಾಪಕರನ್ನು ಬಳಸಿದರೆ, ಮೊದಲು ಸಾಂಪ್ರದಾಯಿಕ `OpenAI` \u002F `AsyncOpenAI` ಕಾನ್ಸ್‌ಟ್ರಕ್ಟರ್‌ಗಳಿಗೆ ವರ್ಗಾಯಿಸಿ. ಅಜೂರ್-ನಿರ್ದಿಷ್ಟ ನಿರ್ಮಾಪಕರು `openai>=1.108.1` ನಲ್ಲಿ ನಿಷ್ಕ್ರಿಯಗೊಳಿಸಲಾಗಿದೆ.\n\n### ಏಕೆ v1 API ಮಾರ್ಗ?\n\nಹೊಸ `\u002Fopenai\u002Fv1` ಎಂಡ್ಪಾಯಿಂಟ್ ಸಾಂಪ್ರದಾಯಿಕ `OpenAI()` ಕ್ಲೈಂಟ್ ಅನ್ನು ಬಳಸುತ್ತದೆ, `AzureOpenAI()` ಅಲ್ಲ, `api_version` ನಿಯಮಾವಳಿ ಅಗತ್ಯವಿಲ್ಲ ಮತ್ತು ಇದು 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`, ಅಪ್ಲಿಕೇಶನ್ ಸೆಟ್ಟಿಂಗ್ಸ್, ಮತ್ತು ಬಿಸೆಪ\u002Fಇನ್‌ಫ್ರಾ ಫೈಲ್‌ಗಳಿಂದ `AZURE_OPENAI_VERSION` \u002F `AZURE_OPENAI_API_VERSION` ಪರಿಸರ ಚರಗಳನ್ನು ತೆಗೆದುಹಾಕಿ.\n- `.env`, ಅಪ್ಲಿಕೇಶನ್ ಸೆಟ್ಟಿಂಗ್ಸ್, ಬಿಸೆಪ\u002Fಇನ್‌ಫ್ರಾ, ಮತ್ತು ಪರೀಕ್ಷಾ ಫಿಕ್ಸ್ಚರ್‍ಗಳಲ್ಲಿ `AZURE_OPENAI_CLIENT_ID` ಅನ್ನು `AZURE_CLIENT_ID` ಗೆ ಮರುನಾಮಕರಣ ಮಾಡಿ (ಪ್ರಮಾಣಿತ ಅಜೂರ್ ಗುರುತಿನ SDK ಸಂಪ್ರದಾಯ).\n- `requirements.txt` ಅಥವಾ `pyproject.toml` ನಲ್ಲಿ `openai>=1.108.1` ಇದೆ ಎಂದು ಖಚಿತಪಡಿಸಿ.\n\n### ಪರಿಸರ ಚರ ವರ್ಗಾವಣೆ\n\n| ಹಳೆಯ ಪರಿಸರ ಚರ | ಕ್ರಿಯೆ | ಟಿಪ್ಪಣಿಗಳು |\n|-------------|--------|-------|\n| `AZURE_OPENAI_VERSION` | **ತೆಗೆದುಹಾಕಿ** | v1 ಎಂಡ್ಪಾಯಿಂಟ್‌ಗೆ `api_version` ಅಗತ್ಯವಿಲ್ಲ |\n| `AZURE_OPENAI_API_VERSION` | **ತೆಗೆದುಹಾಕಿ** | ಮೇಲಿನಂತೇ |\n| `AZURE_OPENAI_CLIENT_ID` | **ಮರುನಾಮಕರಿಸಿ** → `AZURE_CLIENT_ID` | `ManagedIdentityCredential(client_id=...)`ಗೆ ಪ್ರಾಮಾಣಿಕ ಅಜೂರ್ ಗುರುತಿನ SDK ಸಂಪ್ರದಾಯ |\n| `AZURE_OPENAI_ENDPOINT` | **ಉಳಿಸಿ** | `base_url` ರಚನೆಗೆ ಇನ್ನೂ ಅಗತ್ಯವಿದೆ |\n| `AZURE_OPENAI_CHAT_DEPLOYMENT` | **ಉಳಿಸಿ** | `responses.create` ನಲ್ಲಿ ಮಾದರಿ ಪ್ಯಾರಾಮ್ ಆಗಿ ಬಳಕೆ |\n| `AZURE_OPENAI_API_KEY` | **ಉಳಿಸಿ** | ಕೀ ಆಧಾರಿತ ಪ್ರಮಾಣೀಕರಣಕ್ಕೆ `api_key` ಆಗಿ ಬಳಕೆ |\n\nಗ್ರಾಹಕ ಸೆಟ್‌ಅಪ್ ಕೋಡ್ ಉದಾಹರಣೆಗಳಿಗಾಗಿ (ಸಿಂಕ್, ಅಸಿಂಕ್, ಎಂಟ್ರಾID, 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# ಹಳೆಯದು ಆದ.azure ಕ್ಲೈಂಟ್ ನಿರ್ಮಾಪಕರು (ಬದಲಾಯಿಸಬೇಕು)\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# ಹಳೇ ಪರಿಸರ ಚರಗಳು (ವೆಚ್ಚ ಕಡಿಮೆ ಮಾಡು)\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_filter_results (ಬಹುವಚನ) content_filters ಸರಣಿಯಲ್ಲಿ ಇದೆ\n\n# Chat Completions ಎಂಡ್ಪಾಯಿಂಟ್ ಗೆ ನೇರ HTTP ಕಾಲ್‌ಗಳು (URL ನವೀಕರಿಸಬೇಕು)\nrg \"\u002Fopenai\u002Fdeployments\u002F.*\u002Fchat\u002Fcompletions\"\nrg \"api-version=\"\n```\n\n### ನಿಯಮಾವಳಿಗಳು (ಪತ್ತೆ ಮತ್ತು ಮರುಬರಹ)\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- **ಕಂಟೆಂಟ್ ಐಟಮ್‌ಗಳು**: Chats ನಲ್ಲಿ `content[].type: \"text\"` ಅನ್ನು Responses ನಲ್ಲಿ `content[].type: \"input_text\"` ಗೆ ಬದಲಾಯಿಸಿ (ಬಳಕೆದಾರ\u002Fಸಿಸ್ಟಮ್ ಟರ್ನ್ಗಳಿಗಾಗಿ).\n- **ಇಮೇಜ್ ಕಂಟೆಂಟ್ ಐಟಂಗಳು**: Chats ನಲ್ಲಿ `content[].type: \"image_url\"` ಅನ್ನು Responses ನಲ್ಲಿ `content[].type: \"input_image\"` ಗೆ ಬದಲಾಯಿಸಿ. `image_url` ಫೀಲ್ಡ್ ನೆಸ್ಟೆಡ್ ಆಬ್ಜೆಕ್ಟ್ `{\"url\": \"...\"}` ನಿಂದ ಫ್ಲಾಟ್ ಸ್ಟ್ರಿಂಗ್ ಆಗಿದೆ. ಮೇ್ಲಿ\u002Fಕೀಳಿಗೆ ಉದಾಹರಣೆಗಳಿಗೆ ಚೀಟ್ ಶೀಟ್ ನೋಡಿ.\n- **ಕಾರಣ ಮಾಡಲು ಪ್ರಯತ್ನ**: **ಇದು ಮೂಲ ಕೋಡ್‌ನಲ್ಲಿ ಈಗಾಗಲೇ ಇದ್ದರೆ ಮಾತ್ರ `reasoning` ಅನ್ನು ಸ್ಥಳಾಂತರಿಸಿ**.\n- **ಕಂಟೆಂಟ್ ಫಿಲ್ಟರ್ ದೋಷ ನಿರ್ವಹಣೆ**: ದೋಷ ಬಾಡಿ ರಚನೆ ಬದಲಾಗಿದೆ. Chat Completions `error.body[\"innererror\"][\"content_filter_result\"]` (ಏಕವಚನ) ಬಳಸುತಿದ್ದ; Responses API `error.body[\"content_filters\"][0][\"content_filter_results\"]` (ಬಹುವಚನ, ಅರೇಯ್ ಒಳಗೆ) ಬಳಸುತ್ತದೆ. `innererror`ಗೆ ಪ್ರವೇಶಿಸುವ ಕೋಡ್ `KeyError` ಉಂಟುಮಾಡುತ್ತದೆ. ಹೊಸ ಹಾದಿಯನ್ನು ಬಳಸಿ ಮರುಬರೆಯಿರಿ.\n- **ರಾ HTTP ಕಾಲ್‌ಗಳು**: ಅಪ್ಲಿಕೇಶನ್ ನೇರವಾಗಿ `\u002Fopenai\u002Fdeployments\u002F{name}\u002Fchat\u002Fcompletions?api-version=...` ಮೂಲಕ ಏಜರ್ OpenAI REST API-ಯನ್ನು ಕರೆ ಮಾಡುವಲ್ಲಿ (requests, httpx ಇತ್ಯಾದಿ ಬಳಸಿಕೊಂಡು), ಇದನ್ನು `\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 ಆಗಿದ್ದು; Chat Completions ಹಳೆಯದು. 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- **ಕಂಟೆಂಟ್ ಐಟಂಗಳು**: ಚಾಟ್‌ನ `content[].type: \"text\"` ಅನ್ನು Responses ನಲ್ಲಿ `content[].type: \"input_text\"` ಗೆ ಬದಲಾಯಿಸಿ (ಸಿಸ್ಟಮ್\u002Fಬಳಕೆದಾರ ಟರ್ನ್ಗಳಿಗಾಗಿ).\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- ಹಿಂದಿನ ಸಂದೇಶ IDಗಳು ಅಥವಾ ಸರ್ವರ್-ಸಂಗ್ರಹಿತ ಪರಿಸರಕ್ಕೆ ನಂಬಿಕೆ ಇಡಬೇಡಿ; ಸ್ಥಿತಿಯನ್ನು ಕ್ಲೈಂಟ್ ನಿರ್ವಹಿಸಬೇಕು ಮತ್ತು ಮೆಟಾಡೇಟಾವನ್ನು ಕನಿಷ್ಠಗೊಳಿಸಬೇಕು.\n\n---\n\n## ಸ್ವೀಕೃತಿ ಮಾನದಂಡಗಳು\n\n### ಕೋಡ್-ಮಟ್ಟದ ಗೇಟ್‌ಗಳು (ಎಲ್ಲಾ ಉಲ್ಲೇಖಗಳು ಪಾಸಾಗಬೇಕು)\n\n- [ ] ಸ್ಥಳಾಂತರಿಸಿದ ಕಡತಗಳಲ್ಲಿ `rg \"chat\\.completions\\.create|ChatCompletion\\.create|Completion\\.create\"` ಗೆ ಶೂನ್ಯ ಹೊಂದಾಣಿಕೆ.\n- [ ] `rg \"AzureOpenAI\\(|AsyncAzureOpenAI\\(\"` ಗೆ ಶೂನ್ಯ ಹೊಂದಾಣಿಕೆ — ಎಲ್ಲಾ ಕನಸ್ಟ್ರಕ್ಟರ್ಸ್ v1 ಎಂಡ್‌ಪಾಯಿಂಟ್‌ggಳನ್ನು ಬಳಸುತ್ತಿವೆ `OpenAI`\u002F`AsyncOpenAI`.\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 output schema ನ್ನು ಬಳಸುತ್ತದೆ.\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- [ ] **Async ಸಮಾನತೆ**: `AsyncAzureOpenAI` ಬಳಸಿತಾದರೆ, `AsyncOpenAI` ಸಮಾನವಾದುದು `await` ಜೊತೆ ಕೆಲಸ ಮಾಡುತ್ತದೆ.\n- [ ] **ದೋಷ ದರ**: ಸ್ಥಳಾಂತರಕ್ಕೂ ಮುಂಚಿನ ಮೂಲ ಕಡೆಗಾಣಿಕೆಯ ಹೋಲಿಕೆಯಲ್ಲಿ ಯಾವುದೇ ಹೊಸ 400\u002F401\u002F404 ದೋಷಗಳಿಲ್ಲ.\n\n### ವಿತರಣೆಗಳು\n\n- ಸಂಕ್ಷೇಪದಲ್ಲಿ ಸಂಪಾದಿತ ಕಡತಗಳು, ಹಳೆಯ ಮತ್ತು ಹೊಸ legacy ಕால் ಸೈಟ್‌‌ಗಳ ಎಣಿಕೆ, ಮತ್ತು ಮುಂದಿನ ಹಂತಗಳು ಸೇರಿರುತ್ತವೆ.\n- ಬದಲಾವಣೆಗಳು ಕಾರ್ಯದ ವೃಕ್ಷ ಸಂಪಾದನೆಗಳಾಗಿವೆ (ಕಮಿಟ್‌ಗಳಲ್ಲ).\n\n---\n\n## SDK ಆವೃತ್ತಿ ಅಗತ್ಯಗಳು\n\n| ಪ್ಯಾಕೇಜ್ | ಕನಿಷ್ಠ ಆವೃತ್ತಿ |\n|---------|----------------|\n| `openai` | `>=1.108.1` |\n| `azure-identity` | ಇತ್ತೀಚಿನ (EntraID ಪ್ರಮಾಣೀಕರಣಕ್ಕಾಗಿ) |\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 -->","# ಅಜೂರ್ ಓಪನ್‌ಎಐ ಚಾಟ್ ಪೂರ್ಣಗೊಳಿಸುವಿಕೆಗಳಿಂದ ಪ್ರತಿಕ್ರಿಯೆಗಳ API ಗೆ પાયથોન ಅಪ್ಲಿಕೇಶನ್ಗಳನ್ನು ವರ್ಗಾಯಿಸಿ\n\n> **ಅಧಿಕೃತ ಮಾರ್ಗದರ್ಶನ — ನಿಖರವಾಗಿ ಅನುಸರಿಸಿ**\n>\n> ಈ ಕೌಶಲ್ಯವು ಪೈಥಾನ್ ಕೋಡ್‌ಬೇಸ್‌ಗಳನ್ನು ಅಜೂರ್ ಓಪನ್‌ಎಐ ಚಾಟ್ ಪೂರ್ಣಗೊಳಿಸುವಿಕೆಗಳಿಂದ\n> ಏಕೀಕೃತ ಪ್ರತಿಕ್ರಿಯೆಗಳ API ಗೆ ವರ್ಗಾಯಿಸುತ್ತದೆ. ಈ ಸೂಚನೆಗಳನ್ನು ಸ್ಪಷ್ಟವಾಗಿ ಅನುಸರಿಸಿ.\n> ನಿಯಮಾವಳಿ ಮಾನದಂಡಗಳನ್ನು ಅಥವಾ API ರೂಪಗಳನ್ನು ಉಂಟುಮಾಡಬೇಡಿ.\n\n---\n\n## ಪ್ರೇರಕಗಳು\n\nಬಳಕೆದಾರರು ಈ ಕೆಳಗಿನ ಕಾರ್ಯಗಳನ್ನು ಆಚರಿಸಲು ಆಕಾಂಕ್ಷಿಸುವಾಗ ಈ ಕೌಶಲ್ಯ ಸಕ್ರಿಯಗೊಳ್ಳುತ್ತದೆ:\n- ಅಜೂರ್ ಓಪನ್‌ಎಐ ಚಾಟ್ ಪೂರ್ಣಗೊಳಿಸುವಿಕೆಗಳಿಂದ ಪ್ರತಿಕ್ರಿಯೆಗಳ API ಗೆ ಪೈಥಾನ್ ಅಪ್ಲಿಕೇಶನ್ ಅನ್ನು ವರ್ಗಾಯಿಸುವುದು\n- ಅಜೂರ್ ಓಪನ್‌ಎಐ ವಿರುದ್ಧ ಇತ್ತೀಚಿನ API ರೂಪಕ್ಕೆ ಪೈಥಾನ್ ಓಪನ್‌ಎಐ SDK ಬಳಕೆಯನ್ನು ನವೀಕರಿಸುವುದು\n- ಅಜೂರ್‌ನಲ್ಲಿ ಪ್ರತಿಕ್ರಿಯೆಗಳು ಬೇಕಾದ GPT-5 ಅಥವಾ ಹೊಸ ಮಾದರಿಗಾಗಿ ಪೈಥಾನ್ ಕೋಡ್ ತಯಾರಿಸುವುದು\n- `AzureOpenAI`\u002F`AsyncAzureOpenAI` ನಿಂದ ಸಾಂಪ್ರದಾಯಿಕ `OpenAI`\u002F`AsyncOpenAI` ಕ್ಲೈಂಟ್ ಮತ್ತು v1 ಎಂಡ್ಪಾಯಿಂಟ್‌ಗೆ ಪರಿವರ್ತಿಸುವುದು\n- `AzureOpenAI` ಕಾನ್ಸ್‌ಟ್ರಕ್ಟರ್‌ಗಳು ಅಥವಾ `api_version` ಗೆ ಸಂಬಂಧಿಸಿದ ಹಳೇ ಎಚ್ಚರಿಕೆಗಳನ್ನು ಸರಿಪಡಿಸುವುದು\n\n---\n\n## ⚠️ ಮಾದರಿ ಹೊಂದಾಣಿಕೆ — ಮೊದಲು ಪರಿಶೀಲಿಸಿ\n\n> **ವರ್ಗಾವಣೆ ಮಾಡಲು ಮೊದಲು, ನಿಮ್ಮ ಅಜೂರ್ ಓಪನ್‌ಎಐ ನಿಯೋಜನೆ ಪ್ರತಿಕ್ರಿಯೆಗಳ 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> **ಸೂಚನೆ**: ಅಜೂರ್ ಓಪನ್‌ಎಐನಲ್ಲಿ `max_output_tokens` ಗೆ ಕನಿಷ್ಠ ಮೌಲ್ಯ 16 ಇರುತ್ತದೆ. 16 ಕ್ಕಿಂತ ಕಡಿಮೆ ಮೌಲ್ಯಗಳು 400 ದೋಷವನ್ನು ಕೊಡುವವು. ಸ್ಮೋಕ್ ಟೆಸ್ಟ್‌ಗಾಗಿ 50+ ಬಳಸಿ.\n\nಇದು 404 ವಾಪಸಿ ನೀಡಿದರೆ, ನಿಯೋಜನೆಯ ಮಾದರಿ ಇನ್ನೂ ಪ್ರತಿಕ್ರಿಯೆಗಳನ್ನು ಬೆಂಬಲಿಸುವುದಿಲ್ಲ — ಕೆಳಗಿನ ಉಲ್ಲೇಖವನ್ನು ಪರಿಶೀಲಿಸಿ ಅಥವಾ ಬೆಂಬಲಿತ ಮಾದರಿಯೊಂದಿಗೆ ಮರುನಿಯೋಜಿಸಿ.\n\n### 2. ನಿಮ್ಮ ಪ್ರದೇಶದಲ್ಲಿ ಲಭ್ಯವಿರುವ ಮಾದರಿಗಳನ್ನು ಪರಿಶೀಲಿಸಿ (ಶಿಫಾರಸು)\n\nನಿಮ್ಮ ನಿರ್ದಿಷ್ಟ ಪ್ರದೇಶದಲ್ಲಿ ಪ್ರತಿಕ್ರಿಯೆಗಳ API ಬೆಂಬಲ ಇರುವುದನ್ನು ನೋಡಲು ಒಳನಿರ್ಮಿತ ಮಾದರಿ ಹೊಂದಾಣಿಕೆ ಉಪಕರಣವನ್ನು ಚಾಲನೆ ಮಾಡಿ:\n\n```bash\npython migrate.py models --subscription YOUR_SUB_ID --location YOUR_REGION\n```\n\nಇದು ಅಜೂರ್ ARM ಸಜೀವ ಪ್ರಶ್ನೆಯನ್ನು ನಡೆಸುತ್ತದೆ ಮತ್ತು ಹೊಂದಾಣಿಕೆ ಮ್ಯಾಟ್ರಿಕ್ಸ್ ಅನ್ನು ತೋರಿಸುತ್ತದೆ — ಯಾವ ಮಾದರಿಗಳು ಪ್ರತಿಕ್ರಿಯೆಗಳನ್ನು, ರಚನೆಗೊಂಡ ಔಟ್‌ಪುಟ್, ಸರಂಜಾಮುಗಳು ಇತ್ಯಾದಿಗಳನ್ನು ಬೆಂಬಲಿಸುವುದನ್ನು. ಫಲಿತಾಂಶಗಳನ್ನು ಸೀಮಿತಗೊಳಿಸಲು `--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` ಕ್ಕೆ ಮುಂಚಿತ) ಪ್ರತಿಕ್ರಿಯೆಗಳ API ಯ ಎಲ್ಲಾ ವೈಶಿಷ್ಟ್ಯಗಳನ್ನು ಸಂಪೂರ್ಣವಾಗಿ ಬೆಂಬಲಿಸದಿರಬಹುದು.\n>\n> ಹಳೆಯ ಮಾದರಿಗಳಲ್ಲಿನ ತಿಳಿದಿರುವ ನಿರ್ಬಂಧಗಳು:\n> - **`reasoning` ನಿಯಮಾವಳಿ**: ಬಹುತೇಕ ನಿರ್ಧಾರಾತ್ಮಕ ಮಾದರಿಗಳಲ್ಲಿ ಬೆಂಬಲಿಸುವುದಿಲ್ಲ. ಮೂಲ ಕೋಡಿನಲ್ಲಿ ಇದಿದ್ದರೆ ಮಾತ್ರ ವರ್ಗಾಯಿಸಿ.\n> - **`seed` ನಿಯಮಾವಳಿ**: ಪ್ರತಿಕ್ರಿಯೆಗಳ API ನಲ್ಲಿ ಯಾವುದೇ ಬೆಂಬಲವಿಲ್ಲ — ಎಲ್ಲಾ ವಿನಂತಿಗಳಿಂದ ತೆಗೆದುಹಾಕಿ.\n> - **`text.format` ಮುಖಾಂತರ ರಚನೆಗೊಂಡ ಔಟ್‌ಪುಟ್**: ಹಳೆಯ ಮಾದರಿಗಳು `strict: true` JSON ಸ್ಕೀಮಾಗಳನ್ನು ನಿಖರವಾಗಿ ಅನುಸರಿಸದಿರಬಹುದು.\n> - **ಸರಂಜಾಮು ಸಂಯೋಜನೆ**: GPT-5+ ಆಂತರಿಕ ನಿರ್ಧಾರದ ಭಾಗವಾಗಿ ಸರಂಜಾಮು ಕರೆಗಳನ್ನು ನಿಯಂತ್ರಿಸುತ್ತದೆ. ಹಳೆಯ ಮಾದರಿಗಳು ಪ್ರತಿಕ್ರಿಯೆಗಳಲ್ಲಿ ಕಾರ್ಯನಿರ್ವಹಿಸುತ್ತವೆ, ಆದರೆ ಆಳವಾದ ಸಂಯೋಜನೆ ಇಲ್ಲ.\n> - **ತೆಂಪರೆಚರ್ ನಿರ್ಬಂಧಗಳು**: `gpt-5` ಗೆ ವರ್ಗಾಯಿಸುವಾಗ ತೆಂಪರೆಚರ್ ತೆಗೆದುಹಾಕಬೇಕು ಅಥವಾ `1` ಕ್ಕೆ ಹೊಂದಿಸಬೇಕು. ಹಳೆಯ ಮಾದರಿಗಳಲ್ಲಿ ಈ ನಿರ್ಬಂಧ ಇಲ್ಲ.\n\n### ಓ-ಸೀರೀಸ್ ನಿರ್ಧಾರಾತ್ಮಕ ಮಾದರಿಗಳು (o1, o3-mini, o3, o4-mini)\n\nಓ-ಸೀರೀಸ್ ಮಾದರಿಗಳಿಗೆ ವಿಶಿಷ್ಟ ನಿಯಮಾವಳಿಗಳಿವೆ. ಓ-ಸೀರೀಸ್ ಮಾದರಿಗಳನ್ನು ಗುರಿಯಾಗಿಟ್ಟಿರುವ ಅಪ್ಲಿಕೇಶನ್‌ಗಳನ್ನು ವರ್ಗಾಯಿಸುವಾಗ:\n\n- **`temperature`**: `1` ಇರಬೇಕು (ಅಥವಾ ಕೈಗೆಡದಿರಬೇಕು). ಓ-ಸೀರೀಸ್ ಮಾದರಿಗಳು ಇತರ ಮೌಲ್ಯಗಳನ್ನು ಸ್ವೀಕರಿಸುವುದಿಲ್ಲ.\n- **`max_completion_tokens` → `max_output_tokens`**: ಅಜೂರ್-ನಿರ್ದಿಷ್ಟ `max_completion_tokens` ಬಳಕೆದಾರರು `max_output_tokens` ಗೆ ಬಿಡಬೇಕು. reasoning tokens ಲಿಮಿಟ್‌ಗೆ ಸೇರಿಸಬೇಕು ಆದ್ದರಿಂದ ಹೆಚ್ಚಿನ ಮೌಲ್ಯಗಳನ್ನು (4096+) ನಿಗದಿಪಡಿಸಿ.\n- **`reasoning_effort`**: ಅಪ್ಲಿಕೇಶನಿನಲ್ಲಿ `reasoning_effort` (low\u002Fmedium\u002Fhigh) ಇದ್ದರೆ ಅದನ್ನು ಕಾಯ್ದುಕೊಳ್ಳಿ — ಪ್ರತಿಕ್ರಿಯೆಗಳ API ಓ-ಸೀರೀಸ್ ಮಾದರಿಗಳಿಗೆ ಈ ನಿಯಮಾವಳಿಯನ್ನು ಬೆಂಬಲಿಸುತ್ತದೆ.\n- **ಸ್ಟ್ರೀಮಿಂಗ್ ವರ್ತನೆ**: ಓ-ಸೀರೀಸ್ ಮಾದರಿಗಳು ಪೂರ್ಣ reasoning ನಂತ್ರ ಆ.utput ಅನ್ನು ಬಫರ್ ಮಾಡಿ ನಂತರ ಪಠ್ಯ ಡೆಲ್ಟಾ ಘಟನೆಗಳನ್ನು ಹರಡುತ್ತವೆ. ಸ್ಟ್ರೀಮಿಂಗ್ ಸರಿ ಕಾರ್ಯನಿರ್ವಹಿಸುವುದು, ಆದರೆ ಮೊದಲ `response.output_text.delta` ಗರಿಷ್ಟ ವಿಳಂಬೊಂದಿಗೆ ಬರಬಹುದು.\n- **`top_p`**: ಓ-ಸೀರೀಸ್‌ನಲ್ಲಿ ಬೆಂಬಲಿಸುವುದಿಲ್ಲ — ಇದ್ದರೆ ತೆಗೆದು ಹಾಕಿ.\n- **ಸರಂಜಾಮು ಬಳಕೆ**: ಓ-ಸೀರೀಸ್ ಮಾದರಿಗಳು ಪ್ರತಿಕ್ರಿಯೆಗಳ API ಮೂಲಕ ಸರಂಜಾಮುಗಳನ್ನು GPT ಮಾದರಿಗಳಂತೆ ಬೆಂಬಲಿಸುತ್ತವೆ, ಆದರೆ ಸರಂಜಾಮು ಕರೆ ನಿರ್ವಹಣೆಯ ಗುಣಮಟ್ಟ ಮಾದರಿ ಪ್ರಕಾರ ವ್ಯತ್ಯಾಸವಿದೆ.\n\n**ಕ್ರಿಯೆ — ಸಕ್ರಿಯ ಮಾದರಿ ಸಲಹೆ**: ಸ್ಕ್ಯಾನ್ ಹಂತದಲ್ಲಿ ಅಪ್ಲಿಕೇಶನ್ ಗುರಿಯಾಗಿರುವ ಮಾದರಿಯನ್ನು (ನಿಯೋಜನೆ ಹೆಸರುಗಳು, ಪರಿಸರ ಚರ, ವಿನ್ಯಾಸ) ಪರಿಶೀಲಿಸಿ. ಮಾದರಿ `gpt-4.1` ಕ್ಕಿಂತ ಹಳೆಯದಾಗಿದ್ದರೆ (gpt-4.1+ ಅಲ್ಲ) ಬಳಕೆದಾರನಿಗೆ ಮುಂಚಿತವಾಗಿ ತಿಳಿಸಿ:\n- ವರ್ಗಾಯಿಸುವಿಕೆ ಮೂಲ ಪಠ್ಯ, ಚಾಟ್, ಸ್ಟ್ರೀಮಿಂಗ್ ಮತ್ತು ಸರಂಜಾಮುಗಳಿಗಾಗಿ ಕಾರ್ಯನಿರ್ವಹಿಸುತ್ತದೆ.\n- ಹೊಸ ಮಾದರಿಗಳು (`gpt-5.1`, `gpt-5.2`) ಉತ್ತಮ ಸರಂಜಾಮು ನಿರ್ವಹಣೆ, ರಚನಾತ್ಮಕ ಔಟ್‌ಪುಟ್ ಜಾರಿ, ನಿರ್ಧಾರಶೀಲತೆ, ಮತ್ತು ಪ್ರದೇಶಾಂತರ ಲಭ್ಯತೆ ನೀಡುತ್ತವೆ.\n- ತಯಾರಾದಾಗ ತಮ್ಮ ನಿಯೋಜನೆಯನ್ನು ನವೀಕರಿಸುವ ಬಗ್ಗೆ ಯೋಚಿಸಬೇಕು — ಇದು ವರ್ಗಾಯಿಯನ್ನು ತಡೆ ಹಾಕುವುದಕ್ಕೆ ಕಾರಣವಲ್ಲ.\n\nಮಾದರಿ ಆವೃತ್ತಿಯ ಆಧಾರದ ಮೇಲೆ ವರ್ಗಾಯಿಸುವಿಕೆಯನ್ನು ತಡೆಯಬೇಡಿ ಅಥವಾ ನಿರಾಕರಿಸಬೇಡಿ. ಸಲಹೆ ಮಾಹಿತಿ ಮಾತ್ರ.\n\n### GitHub ಮಾದರಿಗಳು ಪ್ರತಿಕ್ರಿಯೆಗಳ API ಅನ್ನು ಬೆಂಬಲಿಸುವುದಿಲ್ಲ\n\n> **GitHub ಮಾದರಿಗಳು (`models.github.ai`, `models.inference.ai.azure.com`) ಪ್ರತಿಕ್ರಿಯೆಗಳ API ಅನ್ನು ಬೆಂಬಲಿಸುವುದಿಲ್ಲ.**\n\nಕೋಡ್‌ಬೇಸಿನಲ್ಲಿ GitHub ಮಾದರಿಗಳ ಕೋಡ್ ಮಾರ್ಗಗಳಿದ್ದರೆ (`base_url` ಅನ್ನು `models.github.ai` ಅಥವಾ `models.inference.ai.azure.com` ತಿರುವಾಗ), ವರ್ಗಾಯಿಸುವಾಗ ಅದನ್ನು **ಸಂಪೂರ್ಣವಾಗಿ ತೆಗೆದುಹಾಕಿ**. ಪ್ರತಿಕ್ರಿಯೆಗಳ API ಅಜೂರ್ ಓಪನ್‌ಎಐ, ಓಪನ್‌ಎಐ, ಅಥವಾ ಸಮಾನ ಅವಕಾಶ ಇರುವ ಸ್ಥಳೀಯ ಎಂಡ್ಪಾಯಿಂಟ್ (ಉದಾ: Ollama ಪ್ರತಿಕ್ರಿಯೆಗಳ ಬೆಂಬಲದೊಂದಿಗೆ) ಅಗತ್ಯವಿದೆ.\n\nಸ್ಕ್ಯಾನ್ ಹಂತದಲ್ಲಿ ಕಾರ್ಯ:\n- ಯಾವುದೇ GitHub ಮಾದರಿ ಕೋಡ್ ಮಾರ್ಗಗಳನ್ನು ತೆಗೆದುಹಾಕಲು ಧ್ವಜಿಸಿ.\n\n---\n\n## ಫ್ರೇಮ್ವರ್ಕ್ ವರ್ಗಾವಣೆ\n\nಅನೇಕ ಅಪ್ಲಿಕೇಶನ್‌ಗಳು OpenAI ಮೇಲೆ ಮೇಲ್ಮಟ್ಟದ ಫ್ರೇಮ್ವರ್ಕ್‌ಗಳನ್ನು ಬಳಸುತ್ತವೆ. ಅವುಗಳನ್ನು ವರ್ಗಾಯಿಸುವಾಗ, ಫ್ರೇಮ್ವರ್ಕ್‌ನ ಸ್ವಂತ API ಬದಲಾವಣೆ—ಕೆಲವೊಮ್ಮೆ ಮಾತ್ರ ಮೂಲ OpenAI ಕರೆಗಳು ಅಲ್ಲ.\n\n### ಮೈಕ್ರೋಸಾಫ್ಟ್ ಏಜೆಂಟ್ ಫ್ರೇಮ್ವರ್ಕ್ (MAF)\n\n**ನೀವು MAF ಆವೃತ್ತಿಯನ್ನು ಮೊದಲು ಪರಿಶೀಲಿಸಿ** — ವರ್ಗಾವಣೆ ನಿಮ್ಮ MAF 1.0.0+ ಅಥವಾ ಪೀಠಿಕೆಯ ಮುನ್ನ.beta\u002Frc ಆವೃತ್ತಿ ಮೇಲೆ ಅವಲಂಬಿತವಾಗಿದೆ.\n\n#### MAF 1.0.0+ (agent-framework-openai >= 1.0.0)\n\n`OpenAIChatClient` **ಪ್ರತಿಕ್ರಿಯೆಗಳ 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 (beta\u002Frc ಬಿಡುಗಡೆಯಾಗಿರುವ ಆವೃತ್ತಿಗಳು)\n\npre-1.0.0 MAF ನಲ್ಲಿ, `OpenAIChatClient` ಚಾಟ್ ಪೂರ್ಣಗೊಳಿಸುವಿಕೆಗಳನ್ನು ಬಳಸುತ್ತಿತ್ತು. `agent-framework-openai>=1.0.0` ಗೆ ನವೀಕರಿಸಿ, ಅಲ್ಲಿ `OpenAIChatClient` ಸ್ವತಃ ಪ್ರತಿಕ್ರಿಯೆಗಳ API ಅನ್ನು ಬಳಸುತ್ತದೆ.\n\nಬೇರೆ ಬದಲಾವಣೆಗಳು ಅಗತ್ಯವಿಲ್ಲ — `Agent` ಮತ್ತು ಸರಂಜಾಮು API ಗಳು ಅಷ್ಟೇ ಹಾಗೆಯೇ ಇರುತ್ತವೆ.\n\n### ಲಾಂಗ್‌ಚೈನ್ (`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> **ಪ್ರತಿಕ್ರಿಯೆಗಳ API ಒಂದು ಸರ್ವರ್-ಬದಿಯ ವಿಷಯ.** ನಿಮ್ಮ ಪೈಥಾನ್ ಬ್ಯಾಕೆಂಡ್ ಅನ್ನು ವರ್ಗಾಯಿಸಿ; ಮುಂಭಾಗದ HTTP ಒಪ್ಪಂದ ಬದಲಿಸಬೇಡಿ, ಬೇರೆ ಇಲ್ಲದಿದ್ದಲ್ಲಿ, ಪ್ರತಿಕ್ರಿಯೆಗಳ ವಿನಂತಿ ರೂಪವನ್ನು ಅಳವಡಿಸುವುದನ್ನು ಪರಿಗಣಿಸಿ. ಮುಂಭಾಗದಲ್ಲಿ ಒಬ್ಬ ಗ್ರಾಹಕ-ಪಕ್ಷೀಯ ಕೀಲಿಯನ್ನು ಬಳಸಿಕೊಂಡು 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- ಅಜೂರ್ ಓಪನ್‌ಎಐ ವಿರುದ್ಧ ಚಾಟ್ ಪೂರ್ಣಗೊಳಿಸುವಿಕೆಗಳು ಅಥವಾ ಹಳೆಯ ಪೂರ್ಣಗೊಳಿಸುವಿಕೆಗಳು ಬಳಸಿದ ಎಲ್ಲಾ ಪೈಥಾನ್ ಕಾಲ್ ಸೈಟ್ ಅನ್ನು ಗುರುತಿಸಿ.\n- ಪೈಥಾನ್ ಕೋಡ್‌ಬೇಸ್‌ಗೆ ವರ್ಗಾವಣೆ ಯೋಜನೆ ಮತ್ತು ಕ್ರಮವನ್ನು đề proposta ಮಾಡಿ.\n- ಪ್ರತಿಕ್ರಿಯೆಗಳ API ಗೆ ಬದಲಾಯಿಸಲು ಸುರಕ್ಷಿತ, ಕನಿಷ್ಠ ಸಂಪಾದನೆಗಳು ಅನ್ವಯಿಸಿ.\n- ಕರೆ ಮಾಡಿದವರು ಪ್ರತಿಕ್ರಿಯೆಗಳ ಔಟ್‌ಪುಟ್ ಸ್ಕೀಮಾ ಬಳಕೆ ಮಾಡಿಕೊಳ್ಳುವಂತೆ ನವೀಕರಿಸಿ; ಹಿಂದೆಗಿನ ಹೊಂದಾಣಿಕೆಯ ರಾಪರ್ಸ್ ಬೇಡ.\n- ಪರೀಕ್ಷಾ\u002Fಲಿಂಟ್ ಗಳನ್ನ ನಡಿಸಿ; ವರ್ಗಾವಣೆಯಿಂದ ಉಂಟಾದ ಸಣ್ಣ ಬ್ರೇಕ್‌ವೈಸ್‌ಗಳನ್ನು ಸರಿಪಡಿಸಿ.\n- ಸಣ್ಣ, ಪರಿಶೀಲಿಸಲು সহজ ಬದಲಾವಣೆಗಳ ಸೆಟ್ ತಯಾರಿಸಿ ಮತ್ತು ಕೊನೆಯಲ್ಲಿ ವ್ಯತ್ಯಾಸಗಳೊಂದಿಗೆ ಸಾರಾಂಶ ನೀಡಿ (ಕಮಿಟ್ ಮಾಡಬೇಡಿ).\n\n---\n\n## ಗೇರ್ಡ್ರೈಲುಗಳು\n\n- ಗಿಟ್ ಕಾರ್ಯಕ್ಷೇತ್ರದೊಳಗಿನ ಫೈಲ್‌ಗಳನ್ನು ಮಾತ್ರ ಬದಲಾಯಿಸಿ. ಹೊರಗಿನವುಗಳನ್ನು ಬರೆಯಬೇಡಿ.\n- ಹಿಂದಿನ ಹೊಂದಾಣಿಕೆಯ ಶಿಮ್‌ಗಳನ್ನು ಉಳಿಸಬೇಡಿ; ಹೊಸ API ರೂಪಕ್ಕೆ ಕೋಡ್ ಅನ್ನು ವರ್ಗಾಯಿಸಿ.\n- ಶವಸ್ಮರಣೆ\u002Fಉಪಕ್ರಮ ಕಾಮೆಂಟ್‌ಗಳು ಅಥವಾ ಬ್ಯಾಕಪ್ ಫೈಲ್‌ಗಳನ್ನು ಉಳಿಸಬೇಡಿ.\n- ಹಿಂದಿನಂತೆ ಸ್ಟ್ರೀಮಿಂಗ್ ಬಳಕೆಯಿದ್ದರೆ ಅದು ಉಳಿಸಬೇಕು; ಇಲ್ಲದಿದ್ದಲ್ಲಿ ಸ್ಟ್ರೀಮಿಂಗ್ ಇಲ್ಲದ ವಿಧಾನ ಬಳಸಿರಿ.\n- ಅನುಮೋದನಾ ಮೋಡ್‍ನಲ್ಲಿ ಇರುವಾಗ ಆಜ್ಞೆಗಳು ಅಥವಾ ಜಾಲ ಸಂವಾದಗಳಿಗೆ ಅನುಮೋದನೆ ಕೇಳಿ.\n- `git add`\u002F`git commit`\u002F`git push` ನಡಿಸಲು ಬಿಡಬೇಡಿ; ಕಾರ್ಯನಿರ್ವಹಿಸುವ ಮರೆಯನ್ನು ಮಾತ್ರ ತಯಾರಿಸಿ.\n\n---\n\n## ಹಂತ 0: ಅಜೂರ್ ಓಪನ್‌ಎಐ ಕ್ಲೈಂಟ್ ವರ್ಗಾವಣೆ (ಮುನ್ಸೂಚನೆ)\n\nಕೋಡ್‌ಬೇಸ್ `AzureOpenAI` ಅಥವಾ `AsyncAzureOpenAI` ನಿರ್ಮಾಪಕರನ್ನು ಬಳಸಿದರೆ, ಮೊದಲು ಸಾಂಪ್ರದಾಯಿಕ `OpenAI` \u002F `AsyncOpenAI` ಕಾನ್ಸ್‌ಟ್ರಕ್ಟರ್‌ಗಳಿಗೆ ವರ್ಗಾಯಿಸಿ. ಅಜೂರ್-ನಿರ್ದಿಷ್ಟ ನಿರ್ಮಾಪಕರು `openai>=1.108.1` ನಲ್ಲಿ ನಿಷ್ಕ್ರಿಯಗೊಳಿಸಲಾಗಿದೆ.\n\n### ಏಕೆ v1 API ಮಾರ್ಗ?\n\nಹೊಸ `\u002Fopenai\u002Fv1` ಎಂಡ್ಪಾಯಿಂಟ್ ಸಾಂಪ್ರದಾಯಿಕ `OpenAI()` ಕ್ಲೈಂಟ್ ಅನ್ನು ಬಳಸುತ್ತದೆ, `AzureOpenAI()` ಅಲ್ಲ, `api_version` ನಿಯಮಾವಳಿ ಅಗತ್ಯವಿಲ್ಲ ಮತ್ತು ಇದು 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`, ಅಪ್ಲಿಕೇಶನ್ ಸೆಟ್ಟಿಂಗ್ಸ್, ಮತ್ತು ಬಿಸೆಪ\u002Fಇನ್‌ಫ್ರಾ ಫೈಲ್‌ಗಳಿಂದ `AZURE_OPENAI_VERSION` \u002F `AZURE_OPENAI_API_VERSION` ಪರಿಸರ ಚರಗಳನ್ನು ತೆಗೆದುಹಾಕಿ.\n- `.env`, ಅಪ್ಲಿಕೇಶನ್ ಸೆಟ್ಟಿಂಗ್ಸ್, ಬಿಸೆಪ\u002Fಇನ್‌ಫ್ರಾ, ಮತ್ತು ಪರೀಕ್ಷಾ ಫಿಕ್ಸ್ಚರ್‍ಗಳಲ್ಲಿ `AZURE_OPENAI_CLIENT_ID` ಅನ್ನು `AZURE_CLIENT_ID` ಗೆ ಮರುನಾಮಕರಣ ಮಾಡಿ (ಪ್ರಮಾಣಿತ ಅಜೂರ್ ಗುರುತಿನ SDK ಸಂಪ್ರದಾಯ).\n- `requirements.txt` ಅಥವಾ `pyproject.toml` ನಲ್ಲಿ `openai>=1.108.1` ಇದೆ ಎಂದು ಖಚಿತಪಡಿಸಿ.\n\n### ಪರಿಸರ ಚರ ವರ್ಗಾವಣೆ\n\n| ಹಳೆಯ ಪರಿಸರ ಚರ | ಕ್ರಿಯೆ | ಟಿಪ್ಪಣಿಗಳು |\n|-------------|--------|-------|\n| `AZURE_OPENAI_VERSION` | **ತೆಗೆದುಹಾಕಿ** | v1 ಎಂಡ್ಪಾಯಿಂಟ್‌ಗೆ `api_version` ಅಗತ್ಯವಿಲ್ಲ |\n| `AZURE_OPENAI_API_VERSION` | **ತೆಗೆದುಹಾಕಿ** | ಮೇಲಿನಂತೇ |\n| `AZURE_OPENAI_CLIENT_ID` | **ಮರುನಾಮಕರಿಸಿ** → `AZURE_CLIENT_ID` | `ManagedIdentityCredential(client_id=...)`ಗೆ ಪ್ರಾಮಾಣಿಕ ಅಜೂರ್ ಗುರುತಿನ SDK ಸಂಪ್ರದಾಯ |\n| `AZURE_OPENAI_ENDPOINT` | **ಉಳಿಸಿ** | `base_url` ರಚನೆಗೆ ಇನ್ನೂ ಅಗತ್ಯವಿದೆ |\n| `AZURE_OPENAI_CHAT_DEPLOYMENT` | **ಉಳಿಸಿ** | `responses.create` ನಲ್ಲಿ ಮಾದರಿ ಪ್ಯಾರಾಮ್ ಆಗಿ ಬಳಕೆ |\n| `AZURE_OPENAI_API_KEY` | **ಉಳಿಸಿ** | ಕೀ ಆಧಾರಿತ ಪ್ರಮಾಣೀಕರಣಕ್ಕೆ `api_key` ಆಗಿ ಬಳಕೆ |\n\nಗ್ರಾಹಕ ಸೆಟ್‌ಅಪ್ ಕೋಡ್ ಉದಾಹರಣೆಗಳಿಗಾಗಿ (ಸಿಂಕ್, ಅಸಿಂಕ್, ಎಂಟ್ರಾID, 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# ಹಳೆಯದು ಆದ.azure ಕ್ಲೈಂಟ್ ನಿರ್ಮಾಪಕರು (ಬದಲಾಯಿಸಬೇಕು)\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# ಹಳೇ ಪರಿಸರ ಚರಗಳು (ವೆಚ್ಚ ಕಡಿಮೆ ಮಾಡು)\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_filter_results (ಬಹುವಚನ) content_filters ಸರಣಿಯಲ್ಲಿ ಇದೆ\n\n# Chat Completions ಎಂಡ್ಪಾಯಿಂಟ್ ಗೆ ನೇರ HTTP ಕಾಲ್‌ಗಳು (URL ನವೀಕರಿಸಬೇಕು)\nrg \"\u002Fopenai\u002Fdeployments\u002F.*\u002Fchat\u002Fcompletions\"\nrg \"api-version=\"\n```\n\n### ನಿಯಮಾವಳಿಗಳು (ಪತ್ತೆ ಮತ್ತು ಮರುಬರಹ)\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- **ಕಂಟೆಂಟ್ ಐಟಮ್‌ಗಳು**: Chats ನಲ್ಲಿ `content[].type: \"text\"` ಅನ್ನು Responses ನಲ್ಲಿ `content[].type: \"input_text\"` ಗೆ ಬದಲಾಯಿಸಿ (ಬಳಕೆದಾರ\u002Fಸಿಸ್ಟಮ್ ಟರ್ನ್ಗಳಿಗಾಗಿ).\n- **ಇಮೇಜ್ ಕಂಟೆಂಟ್ ಐಟಂಗಳು**: Chats ನಲ್ಲಿ `content[].type: \"image_url\"` ಅನ್ನು Responses ನಲ್ಲಿ `content[].type: \"input_image\"` ಗೆ ಬದಲಾಯಿಸಿ. `image_url` ಫೀಲ್ಡ್ ನೆಸ್ಟೆಡ್ ಆಬ್ಜೆಕ್ಟ್ `{\"url\": \"...\"}` ನಿಂದ ಫ್ಲಾಟ್ ಸ್ಟ್ರಿಂಗ್ ಆಗಿದೆ. ಮೇ್ಲಿ\u002Fಕೀಳಿಗೆ ಉದಾಹರಣೆಗಳಿಗೆ ಚೀಟ್ ಶೀಟ್ ನೋಡಿ.\n- **ಕಾರಣ ಮಾಡಲು ಪ್ರಯತ್ನ**: **ಇದು ಮೂಲ ಕೋಡ್‌ನಲ್ಲಿ ಈಗಾಗಲೇ ಇದ್ದರೆ ಮಾತ್ರ `reasoning` ಅನ್ನು ಸ್ಥಳಾಂತರಿಸಿ**.\n- **ಕಂಟೆಂಟ್ ಫಿಲ್ಟರ್ ದೋಷ ನಿರ್ವಹಣೆ**: ದೋಷ ಬಾಡಿ ರಚನೆ ಬದಲಾಗಿದೆ. Chat Completions `error.body[\"innererror\"][\"content_filter_result\"]` (ಏಕವಚನ) ಬಳಸುತಿದ್ದ; Responses API `error.body[\"content_filters\"][0][\"content_filter_results\"]` (ಬಹುವಚನ, ಅರೇಯ್ ಒಳಗೆ) ಬಳಸುತ್ತದೆ. `innererror`ಗೆ ಪ್ರವೇಶಿಸುವ ಕೋಡ್ `KeyError` ಉಂಟುಮಾಡುತ್ತದೆ. ಹೊಸ ಹಾದಿಯನ್ನು ಬಳಸಿ ಮರುಬರೆಯಿರಿ.\n- **ರಾ HTTP ಕಾಲ್‌ಗಳು**: ಅಪ್ಲಿಕೇಶನ್ ನೇರವಾಗಿ `\u002Fopenai\u002Fdeployments\u002F{name}\u002Fchat\u002Fcompletions?api-version=...` ಮೂಲಕ ಏಜರ್ OpenAI REST API-ಯನ್ನು ಕರೆ ಮಾಡುವಲ್ಲಿ (requests, httpx ಇತ್ಯಾದಿ ಬಳಸಿಕೊಂಡು), ಇದನ್ನು `\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 ಆಗಿದ್ದು; Chat Completions ಹಳೆಯದು. 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- **ಕಂಟೆಂಟ್ ಐಟಂಗಳು**: ಚಾಟ್‌ನ `content[].type: \"text\"` ಅನ್ನು Responses ನಲ್ಲಿ `content[].type: \"input_text\"` ಗೆ ಬದಲಾಯಿಸಿ (ಸಿಸ್ಟಮ್\u002Fಬಳಕೆದಾರ ಟರ್ನ್ಗಳಿಗಾಗಿ).\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- ಹಿಂದಿನ ಸಂದೇಶ IDಗಳು ಅಥವಾ ಸರ್ವರ್-ಸಂಗ್ರಹಿತ ಪರಿಸರಕ್ಕೆ ನಂಬಿಕೆ ಇಡಬೇಡಿ; ಸ್ಥಿತಿಯನ್ನು ಕ್ಲೈಂಟ್ ನಿರ್ವಹಿಸಬೇಕು ಮತ್ತು ಮೆಟಾಡೇಟಾವನ್ನು ಕನಿಷ್ಠಗೊಳಿಸಬೇಕು.\n\n---\n\n## ಸ್ವೀಕೃತಿ ಮಾನದಂಡಗಳು\n\n### ಕೋಡ್-ಮಟ್ಟದ ಗೇಟ್‌ಗಳು (ಎಲ್ಲಾ ಉಲ್ಲೇಖಗಳು ಪಾಸಾಗಬೇಕು)\n\n- [ ] ಸ್ಥಳಾಂತರಿಸಿದ ಕಡತಗಳಲ್ಲಿ `rg \"chat\\.completions\\.create|ChatCompletion\\.create|Completion\\.create\"` ಗೆ ಶೂನ್ಯ ಹೊಂದಾಣಿಕೆ.\n- [ ] `rg \"AzureOpenAI\\(|AsyncAzureOpenAI\\(\"` ಗೆ ಶೂನ್ಯ ಹೊಂದಾಣಿಕೆ — ಎಲ್ಲಾ ಕನಸ್ಟ್ರಕ್ಟರ್ಸ್ v1 ಎಂಡ್‌ಪಾಯಿಂಟ್‌ggಳನ್ನು ಬಳಸುತ್ತಿವೆ `OpenAI`\u002F`AsyncOpenAI`.\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 output schema ನ್ನು ಬಳಸುತ್ತದೆ.\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- [ ] **Async ಸಮಾನತೆ**: `AsyncAzureOpenAI` ಬಳಸಿತಾದರೆ, `AsyncOpenAI` ಸಮಾನವಾದುದು `await` ಜೊತೆ ಕೆಲಸ ಮಾಡುತ್ತದೆ.\n- [ ] **ದೋಷ ದರ**: ಸ್ಥಳಾಂತರಕ್ಕೂ ಮುಂಚಿನ ಮೂಲ ಕಡೆಗಾಣಿಕೆಯ ಹೋಲಿಕೆಯಲ್ಲಿ ಯಾವುದೇ ಹೊಸ 400\u002F401\u002F404 ದೋಷಗಳಿಲ್ಲ.\n\n### ವಿತರಣೆಗಳು\n\n- ಸಂಕ್ಷೇಪದಲ್ಲಿ ಸಂಪಾದಿತ ಕಡತಗಳು, ಹಳೆಯ ಮತ್ತು ಹೊಸ legacy ಕால் ಸೈಟ್‌‌ಗಳ ಎಣಿಕೆ, ಮತ್ತು ಮುಂದಿನ ಹಂತಗಳು ಸೇರಿರುತ್ತವೆ.\n- ಬದಲಾವಣೆಗಳು ಕಾರ್ಯದ ವೃಕ್ಷ ಸಂಪಾದನೆಗಳಾಗಿವೆ (ಕಮಿಟ್‌ಗಳಲ್ಲ).\n\n---\n\n## SDK ಆವೃತ್ತಿ ಅಗತ್ಯಗಳು\n\n| ಪ್ಯಾಕೇಜ್ | ಕನಿಷ್ಠ ಆವೃತ್ತಿ |\n|---------|----------------|\n| `openai` | `>=1.108.1` |\n| `azure-identity` | ಇತ್ತೀಚಿನ (EntraID ಪ್ರಮಾಣೀಕರಣಕ್ಕಾಗಿ) |\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\u002Fkn\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\u002Fkn\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","参考文档",43078,"https:\u002F\u002Fgithub.com\u002Fmicrosoft\u002Fai-agents-for-beginners\u002Fblob\u002Fmain\u002Ftranslations\u002Fkn\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",11161,"https:\u002F\u002Fgithub.com\u002Fmicrosoft\u002Fai-agents-for-beginners\u002Fblob\u002Fmain\u002Ftranslations\u002Fkn\u002F.agents\u002Fskills\u002Fazure-openai-to-responses\u002Freferences\u002Ftest-migration.md",{"path":59,"resourceType":50,"resourceTypeDesc":51,"sizeBytes":60,"sourceHtmlUrl":61},"references\u002Ftroubleshooting.md",30076,"https:\u002F\u002Fgithub.com\u002Fmicrosoft\u002Fai-agents-for-beginners\u002Fblob\u002Fmain\u002Ftranslations\u002Fkn\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]]