
LangChainのChatAnthropic:インポート、base_url、ストリーミング、ツール、エラー
ChatAnthropic 次のパッケージの langchain-anthropic パッケージに含まれる、LangChain の Claude チャットモデルです。公式の Anthropic Python SDK をラップしているため、ゲートウェイに接続するには、引数をひとつ指定するだけです。その引数は base_urlで、ホストのルートに設定します。チェーン、エージェント、ツールのその他の部分はすべてそのまま使えます。
インストールとインポート
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 の提供先: base_url をここで指定します。内部の Anthropic SDK が末尾に追加するのは /v1/messages です。これは自動で追加されるため、さらに追加すると /v1 結果は /v1/v1/messages および 404 page not found.環境変数から設定する
base_url は次の別名です: anthropic_api_url、および api_key は次の別名です: anthropic_api_key。これらを渡さない場合、ChatAnthropic が最初に読み取るのは ANTHROPIC_API_URL で、次に ANTHROPIC_BASE_URLを読み取り、キーの読み取り元は ANTHROPIC_API_KEYです。明示的に指定した引数が常に優先されます。
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 environmentストリーミング
for chunk in llm.stream("Explain backpressure in two sentences."):
print(chunk.text, end="", flush=True).text は各チャンクのテキストブロックだけを収集するため、モデルが思考ブロックやツール使用ブロックも出力する場合でも、出力を整理された状態に保てます。長い回答にはストリーミングを使ってください。長時間の非ストリーミングリクエストは、タイムアウトの一般的な原因です。
ツールと構造化出力
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."))再試行、タイムアウト、max_tokens
max_retries デフォルトは2で、Anthropic SDKと同じです。接続エラー、429、5xxレスポンスを再試行します。 timeout (別名: default_request_timeout)の単位は秒です。 max_tokens を未設定にすると、モデルのプロファイルから取得されます。
llm = ChatAnthropic(
model="claude-sonnet-5",
base_url="https://aiprimetech.io",
max_retries=4,
timeout=120,
max_tokens=8000,
)バッチ処理では、キーの同時実行数の制限を超えないように並列実行数を制限してください。 llm.batch(inputs, config={"max_concurrency": 3}).
ChatOpenAIを使う代替方法
コードを ChatOpenAIに統一している場合、ゲートウェイのOpenAI互換エンドポイントでClaudeも利用できます。この経路では /v1 を末尾に付ける必要があり、ChatAnthropicとは逆です。
from langchain_openai import ChatOpenAI
llm = ChatOpenAI(model="claude-sonnet-5", base_url="https://aiprimetech.io/v1", api_key="your_gateway_key")ClaudeにはChatAnthropicを推奨します。プロンプトキャッシュや思考ブロックなどのネイティブ機能を維持できます。
トラブルシューティング
| 表示される内容 | 原因 | 対処方法 |
|---|---|---|
404 page not found | /v1 ChatAnthropicの次の設定内: base_url | ホストのルートを使用してください。 https://aiprimetech.io |
Model "..." is not supported | キーのグループで提供されていないID、または日付付きの古い名前 | 下の表にある現行のIDを使用してください |
AuthenticationError | ANTHROPIC_API_KEY 実行中のプロセスで空になっている、または別のエンドポイント用のキーである | 次の値を渡してください: api_key= を明示的に指定してテストしてください |
RateLimitError: Concurrency limit exceeded | 並列呼び出しが多すぎる(batch、async gather) | max_concurrency をバッチ設定内で指定 |
APITimeoutError | ストリーミングを使わない長時間の生成 | ストリーミングを使うか、次の値を増やす: timeout |
| モデルID | 用途 |
|---|---|
claude-sonnet-5 | コーディングとエージェント作業の標準モデル:高速、高性能、中程度の価格。 |
claude-opus-5-5 | より難しい推論、大規模なリファクタリング、長時間のエージェント実行。 |
claude-fable-5-1 | 最も高性能で最も高価。最も難しいタスクに絞って使いましょう。 |
claude-haiku-4-5 | 低価格で高速:タイトル、要約、分類、小さな処理。 |
よくある質問
ChatAnthropicをインポートするにはどうすればよいですか?
ChatAnthropicのbase_urlには/v1が必要ですか?
ChatAnthropicはどの環境変数を読み取りますか?
base_urlはanthropic_api_urlと同じですか?
APIキーを取得 — Anthropicアカウントもウェイトリストへの登録も不要です。
APIキーを取得AI Prime Techは独立したAPIゲートウェイです。Anthropicとの提携関係はなく、同社の承認を受けておらず、同社の再販業者でもありません。Claudeおよび関連するモデル名は、それぞれの所有者の商標です。