如何获取Python调用Azure OpenAI的API请求详情以排查部署错误?
查看Python调用Azure OpenAI的API请求详情及部署错误排查
一、获取API请求详情的方法
1. 启用OpenAI库调试日志
通过开启Python日志的DEBUG级别,直接查看OpenAI库发送的完整请求信息(包括端点、headers、请求体等)。示例代码:
import openai import logging # 配置日志输出DEBUG级别的内容 logging.basicConfig(level=logging.DEBUG) openai.api_type = "azure" openai.api_base = "<your endpoint>" openai.api_version = "2022-12-01" openai.api_key = "<your token>" engine = "test-code" codex_query = "What is OpenAI?" response = openai.Completion.create(engine=engine, prompt=codex_query, stop="#") print(response['choices'][0]['text'])
运行后日志会输出:
- 完整请求URL(包含部署名、API版本)
- 请求headers(含API密钥、Content-Type等)
- 请求体参数(prompt、stop等)
2. 自定义请求钩子记录详情
通过修改OpenAI的请求会话,添加钩子函数单独记录请求关键信息,避免过多日志干扰:
import openai import requests import logging logging.basicConfig(level=logging.INFO) def log_request_details(request): logging.info(f"请求端点: {request.url}") logging.info(f"请求Headers: {dict(request.headers)}") logging.info(f"请求参数: {request.body}") return request # 给OpenAI的请求会话添加钩子 openai.requestssession.hooks["request"].append(log_request_details) # 后续配置与调用代码不变 openai.api_type = "azure" openai.api_base = "<your endpoint>" openai.api_version = "2022-12-01" openai.api_key = "<your token>" engine = "test-code" codex_query = "What is OpenAI?" response = openai.Completion.create(engine=engine, prompt=codex_query, stop="#")
二、排查「部署不存在」错误的关键点
对比独立脚本与开源项目的请求详情,重点核对以下内容:
- 部署名称完全匹配:
engine参数值必须和Azure OpenAI门户中创建的部署名称完全一致(区分大小写,例如部署名是Test-Code不能写成test-code) - 端点格式正确:
api_base必须是https://<资源名称>.openai.azure.com/格式,末尾斜杠不能省略 - API版本兼容:确认
api_version与部署的模型版本兼容,部分新模型需要使用更高版本(如2023-05-15) - 环境变量覆盖问题:开源项目可能优先读取环境变量(如
AZURE_OPENAI_DEPLOYMENT_NAME、AZURE_OPENAI_ENDPOINT),需检查这些环境变量是否覆盖了代码中的配置值 - 资源权限验证:通过Azure门户或CLI命令
az cognitiveservices account deployment show --name <资源名> --resource-group <资源组名> --deployment-name <部署名>,确认API密钥对应的资源确实包含该部署
内容的提问来源于stack exchange,提问作者Sameer Mahajan
相关产品推荐
相关产品推荐

