
ChatAnthropic in LangChain: importazione, base_url, streaming, strumenti ed errori
ChatAnthropic dal langchain-anthropic pacchetto è il modello di chat Claude di LangChain. Incapsula l'SDK Python ufficiale di Anthropic, quindi per indirizzarlo a un gateway basta un argomento, base_url, impostato sulla radice dell'host. Tutto il resto nelle tue catene, nei tuoi agenti e nei tuoi strumenti rimane invariato.
Installazione e importazione
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 in base_url qui. L'SDK Anthropic sottostante aggiunge /v1/messages automaticamente; aggiungere /v1 produce /v1/v1/messages e un 404 page not found.Configurazione tramite l'ambiente
base_url è un alias di anthropic_api_urle api_key un alias di anthropic_api_key. Quando non li passi, ChatAnthropic legge ANTHROPIC_API_URL prima, poi ANTHROPIC_BASE_URL, e la chiave da ANTHROPIC_API_KEY. Gli argomenti espliciti hanno sempre la precedenza.
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 environmentStreaming
for chunk in llm.stream("Explain backpressure in two sentences."):
print(chunk.text, end="", flush=True).text raccoglie solo i blocchi di testo di ogni frammento, quindi il risultato rimane pulito anche quando il modello emette blocchi di ragionamento o di uso degli strumenti. Usa lo streaming per le risposte lunghe: una richiesta lunga senza streaming è la causa più comune dei timeout.
Strumenti e output strutturato
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."))Tentativi, timeout e max_tokens
max_retries il valore predefinito è 2, come nell'SDK di Anthropic, che ritenta in caso di errori di connessione, 429 e risposte 5xx. timeout (alias di default_request_timeout) è espresso in secondi. Se lasci max_tokens non impostato, viene ricavato dal profilo del modello.
llm = ChatAnthropic(
model="claude-sonnet-5",
base_url="https://aiprimetech.io",
max_retries=4,
timeout=120,
max_tokens=8000,
)Per i batch, limita il parallelismo per rispettare il limite di concorrenza della tua chiave: llm.batch(inputs, config={"max_concurrency": 3}).
L'alternativa ChatOpenAI
Se il tuo codice è standardizzato su ChatOpenAI, l'endpoint del gateway compatibile con OpenAI supporta anche Claude. Questa modalità richiede /v1 alla fine, al contrario di ChatAnthropic.
from langchain_openai import ChatOpenAI
llm = ChatOpenAI(model="claude-sonnet-5", base_url="https://aiprimetech.io/v1", api_key="your_gateway_key")Preferisci ChatAnthropic per Claude: mantiene le funzionalità native, come la memorizzazione dei prompt nella cache e i blocchi di ragionamento.
Risoluzione dei problemi
| Che cosa vedi | Causa | Soluzione |
|---|---|---|
404 page not found | /v1 nel campo di ChatAnthropic base_url | Usa l'URL radice dell'host, https://aiprimetech.io |
Model "..." is not supported | Un ID non supportato dal gruppo della tua chiave, oppure un vecchio nome con data | Usa un ID attuale dalla tabella qui sotto |
AuthenticationError | ANTHROPIC_API_KEY vuoto nel processo in esecuzione, oppure una chiave per un altro endpoint | Passa api_key= esplicitamente per fare una prova |
RateLimitError: Concurrency limit exceeded | Troppe chiamate parallele (batch, gather asincrono) | max_concurrency nella configurazione del batch |
APITimeoutError | Generazioni lunghe senza streaming | Usa lo streaming o aumenta timeout |
| ID del modello | Usalo per |
|---|---|
claude-sonnet-5 | Scelta predefinita per programmazione e attività degli agenti: veloce, potente, di fascia media. |
claude-opus-5-5 | Ragionamenti più complessi, refactoring estesi, esecuzioni prolungate degli agenti. |
claude-fable-5-1 | Il più capace e il più costoso; riservalo alle attività più difficili. |
claude-haiku-4-5 | Economico e rapido: titoli, riepiloghi, classificazione, piccoli passaggi. |
Domande frequenti
Come si importa ChatAnthropic?
Il base_url di ChatAnthropic deve includere /v1?
Quali variabili d'ambiente legge ChatAnthropic?
base_url è equivalente ad anthropic_api_url?
Ottieni una chiave API: non servono un account Anthropic né una lista d'attesa.
Ottieni la tua chiave APIAI Prime Tech è un gateway API indipendente. Non è affiliato ad Anthropic, non è approvato da Anthropic e non è un suo rivenditore. Claude e i nomi dei modelli correlati sono marchi dei rispettivi proprietari.