2025, Nov 28 00:02
Почему AzureOpenAI в LangChain даёт 404 с gpt‑4o и что делать
Ошибка 404 Not Found в LangChain при вызове gpt‑4o через AzureOpenAI: причина — неверный клиент. Решение: использовать AzureChatOpenAI и верную конфигурацию.
Работать с LangChain и Azure OpenAI кажется обманчиво простым — пока небольшое несоответствие между клиентом и семейством моделей не превращается в головоломку. Типичный случай: одна и та же конфигурация исправно работает с AzureChatOpenAI, но даёт сбой с AzureOpenAI, даже если вы лишь переключаете класс. Ошибка чаще всего проявляется как 404 Not Found при вызове современной чат‑модели вроде gpt-4o-2024-08-06.
Постановка проблемы
Ниже показан сценарий с ошибкой: вызов через AzureOpenAI с моделью класса gpt‑4. Переменные окружения содержат ваш endpoint, ключ и версию API.
import os
from dotenv import load_dotenv
from langchain_openai import AzureOpenAI
load_dotenv()
endpoint_url = os.getenv("AZURE_ENDPOINT")
access_token = os.getenv("TOOL_KEY")
api_ver = os.getenv("API_VERSION")
text_client = AzureOpenAI(
azure_endpoint=endpoint_url,
api_key=access_token,
api_version=api_ver,
model="gpt-4o-2024-08-06"
)
result = text_client.invoke("what is 2+3?")
print(result.content)
В ответ приходит 404, и библиотека сообщает об этом так:
openai.NotFoundError: Error code: 404 - {'detail': 'Not Found'}
Почему так происходит
Корень проблемы — несоответствие клиента и типа модели. AzureChatOpenAI предназначен для моделей chat completion, включая новые варианты вроде gpt-4o-2024-08-06. AzureOpenAI ориентирован на модели text completion и не поддерживает chat completion. Поэтому одно и то же имя модели работает с AzureChatOpenAI, но падает с AzureOpenAI.
AzureChatOpenAI поддерживает модели chat completion, включая новые модели, такие как gpt-4o-2024-08-06. AzureOpenAI поддерживает модели text completion, но НЕ поддерживает chat completion (например, новые модели gpt-4).
Справка: документация LangChain по Azure OpenAI.
Решение
Используйте «чат‑клиент» при обращении к моделям класса gpt‑4. С AzureChatOpenAI тот же запрос выполняется успешно.
import os
from dotenv import load_dotenv
from langchain_openai import AzureChatOpenAI
load_dotenv()
endpoint_url = os.getenv("AZURE_ENDPOINT")
access_token = os.getenv("TOOL_KEY")
api_ver = os.getenv("API_VERSION")
chat_client = AzureChatOpenAI(
azure_endpoint=endpoint_url,
api_key=access_token,
api_version=api_ver,
model="gpt-4o-2024-08-06"
)
reply = chat_client.invoke("what is 2+3?")
print(reply.content)
Ответ приходит как и ожидалось, например: 2 + 3 равно 5.
Почему это важно
Правильный выбор интеграции LangChain экономит время и избавляет от непонятных HTTP‑ошибок. Современные модели семейства gpt‑4 — это чат‑модели, им нужен ориентированный на чат клиент. Если подключить их к клиенту для text completion, вы получите Not Found, даже когда endpoint и учётные данные верные.
Выводы
Соотносите модели с подходящим клиентом: используйте AzureChatOpenAI для чат‑моделей класса gpt‑4, таких как gpt-4o-2024-08-06, а AzureOpenAI оставьте для text completion. Если видите 404 от AzureOpenAI при вызове gpt‑4, переключайтесь на AzureChatOpenAI. В случае сомнений загляните в документацию по интеграциям LangChain, чтобы уточнить, какие семейства моделей поддерживает конкретный клиент.