You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

使用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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.21 22:03:14