Guías de SDK
LangChain
Usa los modelos de api14 en LangChain para Python y JavaScript: URL base, streaming, herramientas, salida estructurada, embeddings y parámetros de la pasarela.
La integración de LangChain con OpenAI funciona con api14 sin cambios: establece la URL base y la clave, y usa cualquier id de modelo (por ejemplo openai/gpt-5-mini). Los ejemplos se muestran para Python (langchain-openai) y JavaScript (@langchain/openai).
Instalación
pip install langchain-openai
# o
npm install @langchain/openai @langchain/core
export API14_API_KEY="sk-api14-..."
Configuración (Python)
import os
from langchain_openai import ChatOpenAI
llm = ChatOpenAI(
model="anthropic/claude-sonnet-4.5",
base_url="https://api14.com/api/v1",
api_key=os.environ["API14_API_KEY"],
)
print(llm.invoke("Explain vector databases in two sentences.").content)
Configuración (JavaScript)
import { ChatOpenAI } from "@langchain/openai";
const llm = new ChatOpenAI({
model: "openai/gpt-5-mini",
apiKey: process.env.API14_API_KEY,
configuration: { baseURL: "https://api14.com/api/v1" },
});
const res = await llm.invoke("Explain vector databases in two sentences.");
console.log(res.content);
Streaming
for chunk in llm.stream("Write a haiku about APIs."):
print(chunk.content, end="", flush=True)
for await (const chunk of await llm.stream("Write a haiku about APIs.")) {
process.stdout.write(String(chunk.content));
}
Herramientas y salida estructurada
from pydantic import BaseModel
from langchain_core.tools import tool
@tool
def get_weather(city: str) -> str:
"""Get the current weather for a city."""
return f"21°C in {city}"
msg = llm.bind_tools([get_weather]).invoke("What is the weather in Istanbul?")
print(msg.tool_calls)
class Place(BaseModel):
city: str
country: str
place = llm.with_structured_output(Place).invoke('I live in Lisbon, Portugal.')
print(place)
Embeddings
La mayoría de los modelos de embeddings de api14 no son de OpenAI, así que desactiva la comprobación de longitud con tiktoken en el cliente:
from langchain_openai import OpenAIEmbeddings
embeddings = OpenAIEmbeddings(
model="openai/text-embedding-3-small",
base_url="https://api14.com/api/v1",
api_key=os.environ["API14_API_KEY"],
check_embedding_ctx_length=False,
)
vectors = embeddings.embed_documents(["The quick brown fox", "Lorem ipsum"])
Parámetros de la pasarela
Pasa los campos específicos de la pasarela mediante extra_body (Python) o modelKwargs (JS):
llm = ChatOpenAI(
model="openai/gpt-5-mini",
base_url="https://api14.com/api/v1",
api_key=os.environ["API14_API_KEY"],
extra_body={"models": ["anthropic/claude-sonnet-4.5"], "provider": {"sort": "price"}},
)
Errores
LangChain expone las excepciones del SDK de OpenAI. Un 402 insufficient_balance lanza openai.APIStatusError; un 429 rate_limited lanza openai.RateLimitError tras los reintentos integrados (max_retries= en ChatOpenAI). Consulta Errores.