使用OpenAI密钥与LangChain构建RAG时遇AzureOpenAI无Completion属性错误
RAG系统GPT接口调用错误修复
错误原因
报错'AzureOpenAI' object has no attribute 'Completion'的核心原因:
- 你使用的是OpenAI Python SDK v1.x版本,该版本已移除旧版
Completion类接口,改用小写的completions(适配文本补全模型)或chat.completions(适配聊天模型) - 你指定的
gpt-3.5-turbo-1102-westus属于聊天模型,不能用completions.create调用,必须使用chat.completions.create接口 - 代码中存在笔误:
generate_embeddings函数里的openai_client未定义,应替换为你创建的openai_gpt_client
修正后的代码
1. 修复嵌入向量生成函数
def generate_embeddings(text, model="text-embedding-ada-002"): # 替换未定义的openai_client为已创建的openai_gpt_client response = openai_gpt_client.embeddings.create(input=[text], model=model) return response.data[0].embedding
2. 修复GPT响应生成函数
def generate_response(context, question): # 聊天模型需传入messages参数,而非prompt messages = [ {"role": "system", "content": "严格基于给定上下文回答问题,不编造额外信息。"}, {"role": "user", "content": f"基于以下上下文回答问题:\n\n{context}\n\n问题:{question}"} ] response = openai_gpt_client.chat.completions.create( model="gpt-3.5-turbo-1102-westus", messages=messages, max_tokens=150 ) return response.choices[0].message.content.strip()
3. 调整调用逻辑
原来的调用需传入问题参数,修改为:
# 调用GPT生成响应 response = generate_response(combined_context, question) print(response)
额外注意事项
- 确认Azure OpenAI资源中已部署
gpt-3.5-turbo-1102-westus模型,且模型名称与代码中完全一致 - 检查环境变量
OPENAI_API_KEY_GPT和AZURE_OPENAI_ENDPOINT_GPT是否正确加载
内容的提问来源于stack exchange,提问作者Smrithi Agrawal
相关产品推荐
相关产品推荐

