使用SpaCy-LLM调用企业Azure OpenAI API遇403错误求助
解决方案:SpaCy-LLM对接Azure OpenAI时传递自定义认证头
1. 规范.env环境变量配置
将所有敏感信息存入.env文件,示例如下:
AZURE_OPENAI_ENDPOINT="你的Azure OpenAI服务端点" AZURE_OPENAI_API_KEY="你的Azure OpenAI API密钥" AZURE_OPENAI_DEPLOYMENT="你的模型部署名称" ENTERPRISE_AUTH_TOKEN="企业要求的认证令牌"
2. 修改config.cfg配置文件
在LLM模型配置中添加headers参数,直接传入所需的认证头字典(支持读取环境变量):
[paths] train = null dev = null vectors = null init_tok2vec = null [system] gpu_allocator = null seed = 0 [nlp] lang = "zh" pipeline = ["llm"] batch_size = 128 [components] [components.llm] factory = "llm" [components.llm.model] @llm_models = "spacy.AzureOpenAI.v2" name = "gpt-35-turbo" endpoint = ${env:AZURE_OPENAI_ENDPOINT} api_key = ${env:AZURE_OPENAI_API_KEY} deployment_name = ${env:AZURE_OPENAI_DEPLOYMENT} # 这里传入自定义认证头,替换为企业要求的键值对 headers = {"Authorization": "Bearer ${env:ENTERPRISE_AUTH_TOKEN}", "X-Enterprise-Id": "你的企业ID"} [components.llm.task] @llm_tasks = "spacy.TextCat.v3" labels = ["正面", "负面"]
3. 调整运行代码确保环境变量加载
使用python-dotenv加载.env文件,保证配置能读取到环境变量:
import spacy from dotenv import load_dotenv # 加载.env中的环境变量 load_dotenv() # 加载配置文件初始化nlp对象 nlp = spacy.load("config.cfg") # 测试调用 doc = nlp("这款产品使用体验很差") print(doc.cats)
4. 错误排查要点
如果仍出现403错误,检查以下内容:
- 环境变量是否拼写正确,无多余空格或引号
headers中的键值对是否完全匹配企业API的认证要求- Azure OpenAI的端点、API密钥、部署名称是否与后台配置一致
内容的提问来源于stack exchange,提问作者Virad Gupta
相关产品推荐
相关产品推荐

