# LangChain (/es/docs/guides/langchain)

Usa los modelos de cheapaimodel en LangChain a través de la API compatible con OpenAI.



LangChain se conecta a servicios compatibles con OpenAI mediante su integración de OpenAI: `ChatOpenAI`, de `langchain-openai` en Python y de `@langchain/openai` en TypeScript. Apúntalo a nuestra Base URL y pasa tu clave de API de cheapaimodel.

|               | Parámetro de LangChain | Valor                                                                                                 |
| ------------- | ---------------------- | ----------------------------------------------------------------------------------------------------- |
| Base URL      | `base_url`             | `https://api.cheapaimodel.ai/v1`                                                                      |
| Clave de API  | `api_key`              | La clave que creaste en la página [Claves de API](https://console.cheapaimodel.ai/keys) de la consola |
| ID del modelo | `model`                | `deepseek-v4-1-flash` o cualquier ID del [catálogo](/es/models)                                       |

## Configuración [#set-it-up]

La tabla usa los nombres de Python. En TypeScript son `configuration.baseURL`, `apiKey` y `model`: la Base URL va dentro de `configuration`.

<Tabs items="[&#x22;Python&#x22;, &#x22;TypeScript&#x22;]">
  <Tab value="Python">
    La versión actual de `langchain-openai` requiere Python 3.10 o posterior.

    ```bash title="Terminal"
    pip install -U langchain-openai
    ```

    ```python title="main.py"
    import os
    from langchain_openai import ChatOpenAI

    llm = ChatOpenAI(
        model="deepseek-v4-1-flash",
        base_url="https://api.cheapaimodel.ai/v1",
        api_key=os.environ["CHEAPAIMODEL_API_KEY"],
    )

    response = llm.invoke("Explain recursion in one sentence.")
    print(response.text)

    # Streaming
    for chunk in llm.stream("Write a haiku about the sea."):
        print(chunk.text, end="", flush=True)
    ```
  </Tab>

  <Tab value="TypeScript">
    ```bash title="Terminal"
    npm install @langchain/openai @langchain/core
    ```

    ```ts title="main.ts"
    import { ChatOpenAI } from "@langchain/openai";

    const llm = new ChatOpenAI({
      model: "deepseek-v4-1-flash",
      apiKey: process.env.CHEAPAIMODEL_API_KEY,
      configuration: {
        baseURL: "https://api.cheapaimodel.ai/v1",
      },
    });

    const response = await llm.invoke("Explain recursion in one sentence.");
    console.log(response.text);

    // Streaming
    const stream = await llm.stream("Write a haiku about the sea.");
    for await (const chunk of stream) {
      process.stdout.write(chunk.text);
    }
    ```
  </Tab>
</Tabs>

`ChatOpenAI` envía las solicitudes a `/v1/chat/completions`. Cualquier modelo del [catálogo](/es/models) que incluya ese endpoint funciona en lugar de `deepseek-v4-1-flash`.

## Con init\_chat\_model [#with-init_chat_model]

En Python, `init_chat_model` del paquete `langchain` acepta los mismos parámetros. Pasa `model_provider="openai"`: sin él, LangChain adivina el proveedor a partir del ID del modelo y elige la integración equivocada, o ninguna.

```python title="main.py"
import os
from langchain.chat_models import init_chat_model

llm = init_chat_model(
    "deepseek-v4-1-flash",
    model_provider="openai",
    base_url="https://api.cheapaimodel.ai/v1",
    api_key=os.environ["CHEAPAIMODEL_API_KEY"],
)
```

## Embeddings [#embeddings]

cheapaimodel todavía no tiene modelos de embeddings. Deja `OpenAIEmbeddings`, o la clase de embeddings que use tu retriever, con su propio proveedor, y no la apuntes a nuestra Base URL.

## Errores comunes [#common-mistakes]

* **`'baseURL' does not exist in type 'ChatOpenAIFields'`** (TypeScript). `baseURL` va dentro de `configuration`. En JavaScript puro, el campo de nivel superior se ignora sin mostrar ningún error, y la solicitud se va a OpenAI con tu clave de cheapaimodel.
* **`init_chat_model` devuelve `requires the langchain-deepseek package` o `Unable to infer model provider`.** Agrega `model_provider="openai"`.
* **`503` con `model_not_found` en `/v1/embeddings`.** Exportaste `OPENAI_BASE_URL` u `OPENAI_API_BASE` con nuestra Base URL. `ChatOpenAI` la lee, pero `OpenAIEmbeddings` también, y entonces nos pide un modelo de embeddings. Pasa `base_url` en el código en lugar de exportarla.
* **Se imprime `<bound method BaseMessage.text ...>`.** Tu versión de Python es anterior a la 3.10, así que pip instaló la línea 0.3, donde `text` es un método. Actualiza Python y vuelve a instalar.
* **`503` con `model_not_found` en `/v1/chat/completions`.** Falta `model`, así que LangChain envía su valor predeterminado de OpenAI, `gpt-3.5-turbo`, o el ID no está en el catálogo. Define `model` con un ID del [catálogo](/es/models).

Para errores de Base URL, como olvidar `/v1`, consulta [Base URL](/es/docs/api/base-url#common-mistakes).
