LangChain
Подключите Clipia AI Gateway к LangChain через ChatOpenAI с base_url Clipia — чат, инструменты и tool-агенты на Claude, GPT и Gemini.
Clipia AI Gateway совместим с OpenAI-контрактом, поэтому подключается к LangChain через стандартный класс ChatOpenAI — достаточно указать наш base_url и ключ Clipia. Дальше работают все привычные возможности LangChain: чат, инструменты, агенты и структурированный вывод.
Инициализация
pip install langchain-openaiimport os
from langchain_openai import ChatOpenAI
llm = ChatOpenAI(
model="claude-opus-4-8",
base_url="https://api.clipia.ai/v1",
api_key=os.environ["CLIPIA_API_KEY"],
temperature=0.7,
)
print(llm.invoke("Назови три факта о Марсе.").content)npm install @langchain/openai @langchain/coreimport { ChatOpenAI } from "@langchain/openai";
const llm = new ChatOpenAI({
model: "claude-opus-4-8",
apiKey: process.env.CLIPIA_API_KEY,
configuration: { baseURL: "https://api.clipia.ai/v1" },
temperature: 0.7,
});
const res = await llm.invoke("Назови три факта о Марсе.");
console.log(res.content);Один параметр на смену провайдера
Если у вас уже есть код на ChatOpenAI, для перехода достаточно задать base_url (configuration.baseURL в Node.js) и подставить ключ Clipia. Поле model — строка из каталога.
Tool-агент
Привяжите инструменты через bind_tools или соберите готового ReAct-агента из langgraph. Пример с одной функцией-инструментом:
import os
from langchain_openai import ChatOpenAI
from langchain_core.tools import tool
from langgraph.prebuilt import create_react_agent
@tool
def get_weather(city: str) -> str:
"""Вернуть текущую погоду в городе."""
return f"В городе {city}: 14°C, облачно"
llm = ChatOpenAI(
model="claude-opus-4-8",
base_url="https://api.clipia.ai/v1",
api_key=os.environ["CLIPIA_API_KEY"],
)
agent = create_react_agent(llm, tools=[get_weather])
result = agent.invoke(
{"messages": [{"role": "user", "content": "Какая погода в Москве?"}]}
)
print(result["messages"][-1].content)Агент сам пройдёт полный цикл: запросит вызов инструмента, получит результат и сформирует финальный ответ.
Структурированный вывод
with_structured_output использует response_format под капотом — модель вернёт данные строго по схеме (Pydantic-модель или JSON-схема):
from pydantic import BaseModel
class Person(BaseModel):
name: str
age: int
structured = llm.with_structured_output(Person)
person = structured.invoke("Извлеки имя и возраст: Анне 30 лет.")
print(person.name, person.age) # Анна 30Стриминг
Потоковый ответ доступен через llm.stream(...) (Python) и await llm.stream(...) (Node.js) — gateway отдаёт SSE-чанки в OpenAI-формате. Подробнее о стриминге и инструментах — на странице Chat Completions.