---
title: LangChain
description: Conecte Clipia AI Gateway a LangChain mediante ChatOpenAI con el base_url de Clipia — chat, llamadas a herramientas, agentes y salida estructurada sobre Claude, GPT y Gemini.
icon: Link
---

Clipia AI Gateway es compatible con el contrato de OpenAI, por lo que se integra en LangChain mediante la clase estándar `ChatOpenAI`: basta con apuntarla a nuestro `base_url` con una clave de Clipia. A partir de ahí, funcionan todas las funciones habituales de LangChain: chat, herramientas, agentes y salida estructurada.

## Inicialización

<Tabs items={['Python', 'Node.js']}>
<Tab value="Python">

```bash
pip install langchain-openai
```

```python
import os
from langchain_openai import ChatOpenAI

llm = ChatOpenAI(
    model="claude-opus-5-5",
    base_url="https://api.clipia.ai/v1",
    api_key=os.environ["CLIPIA_KEY"],
)

print(llm.invoke("Tell me three facts about Mars.").content)
```

</Tab>
<Tab value="Node.js">

```bash
npm install @langchain/openai @langchain/core
```

```ts
import { ChatOpenAI } from "@langchain/openai";

const llm = new ChatOpenAI({
  model: "claude-opus-5-5",
  apiKey: process.env.CLIPIA_KEY,
  configuration: { baseURL: "https://api.clipia.ai/v1" },
});

const res = await llm.invoke("Tell me three facts about Mars.");
console.log(res.content);
```

</Tab>
</Tabs>

<Callout type="info" title="Si su código ya usa ChatOpenAI">
Si ya tiene código con `ChatOpenAI`, para cambiar basta con establecer `base_url` (`configuration.baseURL` en Node.js) y una clave de Clipia. El campo `model` es una cadena del [catálogo](/es/docs/llm-gateway/models).
</Callout>

## Agente con herramientas

Vincule herramientas con `bind_tools` o monte un agente ReAct listo para usar con `langgraph`. Ejemplo con una sola herramienta de función:

```python
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 the current weather in a city."""
    return f"In {city}: 14°C, cloudy"

llm = ChatOpenAI(
    model="claude-opus-5-5",
    base_url="https://api.clipia.ai/v1",
    api_key=os.environ["CLIPIA_KEY"],
)

agent = create_react_agent(llm, tools=[get_weather])

result = agent.invoke(
    {"messages": [{"role": "user", "content": "What's the weather in Moscow?"}]}
)
print(result["messages"][-1].content)
```

El agente ejecuta el ciclo completo por sí solo: solicita una llamada a la herramienta, obtiene el resultado y genera la respuesta final.

## Salida estructurada

Para obtener una salida que cumpla estrictamente un esquema, elija un modelo que admita `response_format`, como GPT-6.1 Sol, y llame a `with_structured_output` con `method="json_schema"`. Valide el resultado antes de usarlo:

```python
from pydantic import BaseModel

class Person(BaseModel):
    name: str
    age: int

structured_llm = ChatOpenAI(
    model="gpt-6.1-sol",
    base_url="https://api.clipia.ai/v1",
    api_key=os.environ["CLIPIA_KEY"],
)
structured = structured_llm.with_structured_output(Person, method="json_schema", strict=True)
person = structured.invoke("Extract name and age: Anna is 30.")
print(person.name, person.age)  # Anna 30
```

<Callout type="info" title="Streaming">
El streaming está disponible mediante `llm.stream(...)` (Python) y `await llm.stream(...)` (Node.js): el gateway emite fragmentos SSE en formato OpenAI. Encontrará más información sobre streaming y herramientas en la página [Chat Completions](/es/docs/llm-gateway/chat-completions).
</Callout>
