
ChatAnthropic en LangChain: importación, base_url, streaming, herramientas y errores
ChatAnthropic del langchain-anthropic paquete es el modelo de chat de Claude de LangChain. Encapsula el SDK oficial de Anthropic para Python, por lo que basta con un argumento para conectarlo a una pasarela, base_url, establecido en la raíz del host. Todo lo demás en tus cadenas, agentes y herramientas permanece igual.
Instalación e importación
pip install -U langchain-anthropicfrom langchain_anthropic import ChatAnthropic
llm = ChatAnthropic(
model="claude-sonnet-5",
base_url="https://aiprimetech.io", # host root: the SDK adds /v1/messages
api_key="your_gateway_key", # or set ANTHROPIC_API_KEY
)
print(llm.invoke("Say hello in one word.").text)/v1 en base_url aquí. El SDK de Anthropic subyacente añade /v1/messages por sí mismo; añadir /v1 produce /v1/v1/messages y un 404 page not found.Configúralo desde el entorno
base_url es un alias de anthropic_api_urly api_key un alias de anthropic_api_key. Cuando no los pasas, ChatAnthropic lee ANTHROPIC_API_URL primero, después ANTHROPIC_BASE_URL, y la clave de ANTHROPIC_API_KEY. Los argumentos explícitos siempre tienen prioridad.
export ANTHROPIC_API_KEY=your_gateway_key
export ANTHROPIC_API_URL=https://aiprimetech.iofrom langchain_anthropic import ChatAnthropic
llm = ChatAnthropic(model="claude-sonnet-5") # picks up the gateway from the environmentTransmisión en tiempo real
for chunk in llm.stream("Explain backpressure in two sentences."):
print(chunk.text, end="", flush=True).text recopila solo los bloques de texto de cada fragmento, por lo que el resultado se mantiene limpio cuando el modelo también emite bloques de razonamiento o de uso de herramientas. Utiliza streaming para respuestas largas: una solicitud larga sin streaming es la causa habitual de que se agote el tiempo de espera.
Herramientas y salida estructurada
from langchain_core.tools import tool
@tool
def get_time(city: str) -> str:
"""Return the current local time in a city."""
return "12:00"
msg = llm.bind_tools([get_time]).invoke("What time is it in Tokyo?")
print(msg.tool_calls)from pydantic import BaseModel
class Weather(BaseModel):
city: str
temperature_c: float
print(llm.with_structured_output(Weather).invoke("It is 21 degrees in Lisbon today."))Reintentos, tiempos de espera y max_tokens
max_retries tiene como valor predeterminado 2, igual que el SDK de Anthropic, que reintenta los errores de conexión, 429 y las respuestas 5xx. timeout (alias de default_request_timeout) se expresa en segundos. Si dejas max_tokens sin definir, se toma del perfil del modelo.
llm = ChatAnthropic(
model="claude-sonnet-5",
base_url="https://aiprimetech.io",
max_retries=4,
timeout=120,
max_tokens=8000,
)Para los lotes, limita el paralelismo para respetar el límite de concurrencia de tu clave: llm.batch(inputs, config={"max_concurrency": 3}).
La alternativa con ChatOpenAI
Si tu código está estandarizado en ChatOpenAI, el endpoint compatible con OpenAI de la pasarela también ofrece Claude. Esta vía requiere /v1 al final, al contrario que ChatAnthropic.
from langchain_openai import ChatOpenAI
llm = ChatOpenAI(model="claude-sonnet-5", base_url="https://aiprimetech.io/v1", api_key="your_gateway_key")Es preferible usar ChatAnthropic para Claude: conserva funciones nativas como la caché de prompts y los bloques de razonamiento.
Resolución de problemas
| Lo que ves | Causa | Solución |
|---|---|---|
404 page not found | /v1 en el campo de ChatAnthropic base_url | Usa la raíz del host, https://aiprimetech.io |
Model "..." is not supported | Un ID que el grupo de tu clave no ofrece, o un nombre antiguo con fecha | Usa un ID actual de la tabla siguiente |
AuthenticationError | ANTHROPIC_API_KEY vacío en el proceso en ejecución, o una clave para otro endpoint | Pasa api_key= explícitamente para probar |
RateLimitError: Concurrency limit exceeded | Demasiadas llamadas en paralelo (batch, gather asíncrono) | max_concurrency en la configuración del lote |
APITimeoutError | Generaciones largas sin streaming | Usa streaming o aumenta timeout |
| ID del modelo | Úsalo para |
|---|---|
claude-sonnet-5 | Opción predeterminada para programación y trabajo con agentes: rápida, potente y de precio intermedio. |
claude-opus-5-5 | Razonamiento más complejo, refactorizaciones grandes y ejecuciones largas de agentes. |
claude-fable-5-1 | El más capaz y el más caro; resérvalo para las tareas más difíciles. |
claude-haiku-4-5 | Económico y rápido: títulos, resúmenes, clasificación y pasos pequeños. |
Preguntas frecuentes
¿Cómo importo ChatAnthropic?
¿Necesita /v1 el base_url de ChatAnthropic?
¿Qué variables de entorno lee ChatAnthropic?
¿Es base_url lo mismo que anthropic_api_url?
Obtén una clave de API: no necesitas una cuenta de Anthropic ni estar en una lista de espera.
Obtén tu clave de APIAI Prime Tech es una pasarela de API independiente. No está afiliada a Anthropic, no cuenta con su respaldo ni es un distribuidor de Anthropic. Claude y los nombres de los modelos relacionados son marcas comerciales de sus respectivos propietarios.