> ## Documentation Index
> Fetch the complete documentation index at: https://docs.ruapi.ai/llms.txt
> Use this file to discover all available pages before exploring further.

# LangChain

> Как подключить LangChain к RuAPI через ChatOpenAI с base_url — модели и эмбеддинги в Python и JS

[LangChain](https://www.langchain.com) — фреймворк для приложений на LLM: цепочки, агенты, RAG. Поскольку RuAPI OpenAI-совместим, подключение сводится к классу **`ChatOpenAI`** с изменённым `base_url` — отдельная интеграция не нужна.

## Предварительные требования

<Steps>
  <Step title="Аккаунт RuAPI и API-ключ">
    Консоль → **Токены** → создайте ключ `sk-...`. Баланс пополняется в USDT — см. [Пополнение](/ru/topup).
  </Step>
</Steps>

## Python

```bash theme={null}
pip install langchain langchain-openai
```

```python theme={null}
from langchain_openai import ChatOpenAI

llm = ChatOpenAI(
    model="claude-opus-4-8",                  # точное имя — на странице цен
    api_key="sk-ВАШ_КЛЮЧ",
    base_url="https://www.ruapi.ai/v1",  # с /v1
)

print(llm.invoke("Привет! Ответь одним предложением.").content)
```

Дальше `llm` подставляется в любые цепочки, агентов и LCEL-конструкции как обычная модель.

## JavaScript / TypeScript

```bash theme={null}
npm install @langchain/openai @langchain/core
```

```javascript theme={null}
import { ChatOpenAI } from "@langchain/openai";

const llm = new ChatOpenAI({
  model: "claude-opus-4-8",
  apiKey: "sk-ВАШ_КЛЮЧ",
  configuration: { baseURL: "https://www.ruapi.ai/v1" },
});

const res = await llm.invoke("Привет! Ответь одним предложением.");
console.log(res.content);
```

<Tip>
  Сменить модель — поменять поле `model`. Тем же ключом доступны Claude, GPT, Gemini, DeepSeek и другие.
</Tip>

## Эмбеддинги (RAG)

```python theme={null}
from langchain_openai import OpenAIEmbeddings

embeddings = OpenAIEmbeddings(
    model="text-embedding-3-small",       # или другая embedding-модель из каталога
    api_key="sk-ВАШ_КЛЮЧ",
    base_url="https://www.ruapi.ai/v1",
)
```

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

<AccordionGroup>
  <Accordion title="401 / Unauthorized">
    `api_key` должен быть токеном RuAPI (`sk-...`). Проверьте отсутствие лишних пробелов.
  </Accordion>

  <Accordion title="404 / модель не найдена">
    Имя в `model` должно совпадать с RuAPI дословно — см. [страницу цен](https://www.ruapi.ai/pricing).
  </Accordion>

  <Accordion title="Нужен ли ChatAnthropic для Claude?">
    Нет. Claude вызывается через `ChatOpenAI` по тому же `base_url` — достаточно указать ID модели Claude в поле `model`.
  </Accordion>
</AccordionGroup>
