使用LangChain调用Azure OpenAI GPT-4遇Completion操作不支持错误
问题解决方法
错误的核心原因是:GPT-4(包括Azure部署的GPT-4)属于聊天模型,仅支持Chat Completions接口;而你代码中使用的AzureOpenAI类是调用Completions接口,因此触发「该模型不支持completion操作」的报错。
具体修改步骤如下:
1. 替换LLM实例类
将GPT-4的实例从AzureOpenAI改为AzureChatOpenAI,这是LangChain专门为聊天模型设计的类。
首先导入所需类:
from langchain.chat_models import AzureChatOpenAI
然后重构GPT-4的实例代码:
llm_4 = AzureChatOpenAI( temperature=0, # 根据需求调整温度参数 api_version=os.environ['OPENAI_API_VERSION_4'], openai_api_key=os.environ['AZURE_OPENAI_API_KEY_4'], deployment_name="gpt4-deploy", azure_endpoint=os.environ['AZURE_OPENAI_ENDPOINT_4'] )
2. 适配QA链与聊天模型
确保get_answer函数中的load_qa_chain能正确适配聊天模型。LangChain的load_qa_chain已支持聊天模型,保持原有逻辑即可,若默认分支也需适配聊天模型,建议同步修改:
def get_answer(docs, user_input, llm=None): from langchain.chains.question_answering import load_qa_chain if llm: chain = load_qa_chain(llm, chain_type="stuff") else: # 默认使用ChatOpenAI而非OpenAI(适配聊天模型接口) from langchain.chat_models import ChatOpenAI chain = load_qa_chain(ChatOpenAI(), chain_type="stuff") with get_openai_callback() as cb: response = chain.run(input_documents=docs, question=user_input) return response
3. 验证Azure部署与API版本
- 确认Azure中
gpt4-deploy部署的模型是聊天类型(如gpt-4、gpt-4o等),而非completion模型。 - 检查环境变量
OPENAI_API_VERSION_4的值,GPT-4需要的API版本至少为2023-03-15-preview或更高版本。
补充说明
你之前调用GPT-3能正常运行,是因为部署的GPT-3模型属于completion类型(如text-davinci-003),这类模型可兼容AzureOpenAI类的Completions接口;而GPT-4仅支持聊天接口,因此必须使用AzureChatOpenAI类。
内容的提问来源于stack exchange,提问作者zbeedatm
相关产品推荐
相关产品推荐

