在Cloud Functions中调用Azure OpenAI遇多类错误,请求排查
问题排查与解决方案
1. 旧版本API错误openai.lib._old_api.APIRemovedInV1
该错误是因为使用了OpenAI Python SDK v1.0之前的废弃写法,全局配置openai.api_type、openai.api_base等方式已被移除,必须切换到v1版本的AzureOpenAI客户端初始化方式,你当前的方向是正确的。
2. 凭证缺失与Endpoint配置错误
你遇到的Missing credentials和Must provide base_url or azure_endpoint错误,核心问题集中在环境变量配置和代码细节上:
核心修复点:
- 导入
os模块:代码中使用了os.getenv()但未导入os,会直接引发报错,必须在代码开头添加:import os - 确认GCP Cloud Functions环境变量配置:
登录GCP控制台进入你的Cloud Functions详情页,在“环境变量”标签下添加AZURE_OPENAI_API_KEY和AZURE_OPENAI_ENDPOINT,确保值与Azure OpenAI控制台一致(AZURE_OPENAI_ENDPOINT需填完整URL,比如https://your-resource.openai.azure.com/)。
禁止直接将环境变量名作为字符串传入(如api_key="AZURE_OPENAI_API_KEY"),必须用os.getenv("AZURE_OPENAI_API_KEY")读取云端配置的环境变量。 - 验证环境变量有效性:可临时添加打印语句测试(上线前删除),查看GCP函数日志确认值正确输出:
print(os.getenv("AZURE_OPENAI_API_KEY")) print(os.getenv("AZURE_OPENAI_ENDPOINT"))
3. 其他代码细节问题
- 空
prompt_:空字符串会导致Azure OpenAI返回无效结果,需填充符合需求的提示词,示例:prompt_ = f"针对{country}地区{year}年{month}月的{column_name}数据,当前值{current_value},上月值{previous_value},生成一段分析评论。" - 旧版本返回值错误:旧代码中
response['choices'][0]['message']['content']写法错误,Completion接口返回无message字段,正确写法应为response['choices'][0]['text'];新版本用response.choices[0].text是正确的。
修复后的完整示例代码
import os from azure_openai import AzureOpenAI def generate_comment(month, year, country, column_name, current_value, previous_value): prompt_ = f"分析{country}地区{year}年{month}月的{column_name}数据:当前值{current_value},上月值{previous_value},生成一段简洁的评论。" client = AzureOpenAI( api_key=os.getenv("AZURE_OPENAI_API_KEY"), api_version="2023-09-15-preview", azure_endpoint=os.getenv("AZURE_OPENAI_ENDPOINT") ) response = client.completions.create( model="MODEL_NAME", # 替换为你的Azure OpenAI部署名称 prompt=prompt_, max_tokens=50, temperature=0.35 ) return response.choices[0].text.strip()
内容的提问来源于stack exchange,提问作者Badia Alfathi
相关产品推荐
相关产品推荐

