LangChain

Подключение ChatOpenAI из LangChain к шлюзу через пользовательский baseURL.

Интеграции

ChatOpenAI в LangChain принимает параметр configuration.baseURL. Настройте шлюз один раз и используйте объект в любых цепочках.

Настройка

ts
import { ChatOpenAI } from "@langchain/openai";const llm = new ChatOpenAI({modelName: "gpt-5.5",configuration: { baseURL: "https://api.toygate.store/v1" },apiKey: process.env.GATEWAY_KEY,});

Использование в цепочке

import { ChatPromptTemplate } from "@langchain/core/prompts";

const prompt = ChatPromptTemplate.fromMessages([
  ["system", "You are a helpful assistant."],
  ["human", "{question}"],
]);

const chain = prompt.pipe(llm);
const answer = await chain.invoke({ question: "What is RAG?" });
console.log(answer.content);

Потоковая передача

Стандартный потоковый API LangChain напрямую передаёт SSE-ответ шлюза:

const stream = await chain.stream({ question: "Stream a sentence." });
for await (const chunk of stream) {
  process.stdout.write(chunk.content as string);
}

Инструменты

ChatOpenAI.bindTools() работает, если у модели в каталоге указано capabilities.tools = true. Шлюз переводит определения инструментов в формат upstream, а затем преобразует ответ обратно.

Решение проблем

  • Invalid request to OpenAI в журнале LangChain — LangChain оборачивает ответ шлюза 400 собственным сообщением. Причину ищите во вложенном error.code, например upstream_bad_request.
  • OpenAIChat is deprecated — используйте ChatOpenAI из @langchain/openai, а не устаревший OpenAIChat из прежних версий.

URL шлюза: https://api.toygate.store