LangChain中AzureOpenAI无法找到AzureChatOpenAI可访问模型的问题求助
LangChain中AzureOpenAI无法找到AzureChatOpenAI可访问模型的问题求助
我来帮你捋清楚这个问题——核心原因是LangChain里的AzureOpenAI和AzureChatOpenAI类对应着完全不同的OpenAI API类型,你用错了工具去访问对应的模型。
问题根源
gpt-4o是一个纯聊天类模型,它只支持Azure OpenAI的聊天完成(Chat Completions)API;而你用的AzureOpenAI类,是专门用来对接Azure OpenAI的文本补全(Completions)API的,这类API只支持像text-davinci-003这类传统的文本补全模型。
所以当你用AzureOpenAI去调用gpt-4o时,相当于找一个不存在的接口,自然会返回404“找不到资源”的错误。而AzureChatOpenAI是专门为聊天模型设计的,能正确对接聊天完成API,所以你的第一段代码能正常运行。
解决方案
根据你的需求,有两种处理方式:
继续使用聊天模型(推荐)
如果你就是要调用gpt-4o这类聊天模型,那就老老实实用AzureChatOpenAI类,你的第一段代码已经验证了它能正常工作,不需要做改动。改用支持补全的模型(如果必须用AzureOpenAI)
要是你非得用AzureOpenAI类,那得换成Azure上支持补全API的模型,比如text-davinci-003,同时注意返回值的处理——AzureOpenAI的invoke直接返回字符串,不用加.content:import os from dotenv import load_dotenv from langchain_openai import AzureOpenAI load_dotenv() llm = AzureOpenAI( azure_endpoint=os.getenv("AZURE_ENDPOINT"), api_key=os.getenv("TOOL_KEY"), api_version=os.getenv("API_VERSION"), model="text-davinci-003" # 替换为已部署的补全模型 ) response = llm.invoke("what is 2+3?") print(response) # 直接打印返回的字符串即可
额外注意事项
- 确认你的Azure OpenAI资源中已经部署了对应类型的模型:用
AzureChatOpenAI就部署聊天模型,用AzureOpenAI就部署补全模型,部署名称要和代码里的model参数一致。 - 两种类的返回格式不同:
AzureChatOpenAI返回AIMessage对象,需通过.content获取文本;AzureOpenAI直接返回字符串,不要画蛇添足加.content。
内容来源于stack exchange
相关产品推荐
相关产品推荐

