Ollamaは、Claude Codeなどの既存アプリケーションをOllamaに接続できるように、Anthropic Messages APIとの互換性を提供します。
使用方法
環境変数
Anthropic API(Claude Codeなど)を想定したツールでOllamaを使用するには、以下の環境変数を設定してください:
shell
export ANTHROPIC_AUTH_TOKEN=ollama # 必須だが無視される
export ANTHROPIC_BASE_URL=http://localhost:11434シンプルな /v1/messages の例
python
client = anthropic.Anthropic(
base_url='http://localhost:11434',
api_key='ollama', # 必須だが無視される
)
message = client.messages.create(
model='qwen3-coder',
max_tokens=1024,
messages=[
{'role': 'user', 'content': 'Hello, how are you?'}
]
)
print(message.content[0].text)javascript
const anthropic = new Anthropic({
baseURL: "http://localhost:11434",
apiKey: "ollama", // 必須だが無視される
});
const message = await anthropic.messages.create({
model: "qwen3-coder",
max_tokens: 1024,
messages: [{ role: "user", content: "Hello, how are you?" }],
});
console.log(message.content[0].text);shell
curl -X POST http://localhost:11434/v1/messages \
-H "Content-Type: application/json" \
-H "x-api-key: ollama" \
-H "anthropic-version: 2023-06-01" \
-d '{
"model": "qwen3-coder",
"max_tokens": 1024,
"messages": [{ "role": "user", "content": "Hello, how are you?" }]
}'ストリーミングの例
python
client = anthropic.Anthropic(
base_url='http://localhost:11434',
api_key='ollama',
)
with client.messages.stream(
model='qwen3-coder',
max_tokens=1024,
messages=[{'role': 'user', 'content': 'Count from 1 to 10'}]
) as stream:
for text in stream.text_stream:
print(text, end='', flush=True)javascript
const anthropic = new Anthropic({
baseURL: "http://localhost:11434",
apiKey: "ollama",
});
const stream = await anthropic.messages.stream({
model: "qwen3-coder",
max_tokens: 1024,
messages: [{ role: "user", content: "Count from 1 to 10" }],
});
for await (const event of stream) {
if (
event.type === "content_block_delta" &&
event.delta.type === "text_delta"
) {
process.stdout.write(event.delta.text);
}
}shell
curl -X POST http://localhost:11434/v1/messages \
-H "Content-Type: application/json" \
-d '{
"model": "qwen3-coder",
"max_tokens": 1024,
"stream": true,
"messages": [{ "role": "user", "content": "Count from 1 to 10" }]
}'ツール呼び出しの例
python
client = anthropic.Anthropic(
base_url='http://localhost:11434',
api_key='ollama',
)
message = client.messages.create(
model='qwen3-coder',
max_tokens=1024,
tools=[
{
'name': 'get_weather',
'description': 'Get the current weather in a location',
'input_schema': {
'type': 'object',
'properties': {
'location': {
'type': 'string',
'description': 'The city and state, e.g. San Francisco, CA'
}
},
'required': ['location']
}
}
],
messages=[{'role': 'user', 'content': "What's the weather in San Francisco?"}]
)
for block in message.content:
if block.type == 'tool_use':
print(f'Tool: {block.name}')
print(f'Input: {block.input}')javascript
const anthropic = new Anthropic({
baseURL: "http://localhost:11434",
apiKey: "ollama",
});
const message = await anthropic.messages.create({
model: "qwen3-coder",
max_tokens: 1024,
tools: [
{
name: "get_weather",
description: "Get the current weather in a location",
input_schema: {
type: "object",
properties: {
location: {
type: "string",
description: "The city and state, e.g. San Francisco, CA",
},
},
required: ["location"],
},
},
],
messages: [{ role: "user", content: "What's the weather in San Francisco?" }],
});
for (const block of message.content) {
if (block.type === "tool_use") {
console.log("Tool:", block.name);
console.log("Input:", block.input);
}
}shell
curl -X POST http://localhost:11434/v1/messages \
-H "Content-Type: application/json" \
-d '{
"model": "qwen3-coder",
"max_tokens": 1024,
"tools": [
{
"name": "get_weather",
"description": "Get the current weather in a location",
"input_schema": {
"type": "object",
"properties": {
"location": {
"type": "string",
"description": "The city and state"
}
},
"required": ["location"]
}
}
],
"messages": [{ "role": "user", "content": "What is the weather in San Francisco?" }]
}'Claude Codeでの使用
Claude Codeは、バックエンドとしてOllamaを使用するように設定できます。
推奨モデル
コーディングのユースケースでは、glm-4.7、minimax-m2.1、qwen3-coderなどのモデルが推奨されます。
使用前にモデルをダウンロードしてください:
shell
ollama pull qwen3-coder注:Qwen 3 coderは300億パラメータのモデルで、スムーズに実行するには少なくとも24GBのVRAMが必要です。より長いコンテキスト長を使用する場合は、それ以上のVRAMが必要です。
shell
ollama pull glm-4.7:cloudクイックセットアップ
shell
ollama launch claudeこのコマンドを実行すると、モデルの選択、Claude Codeの自動設定、および起動を求められます。起動せずに設定だけ行うには:
shell
ollama launch claude --config手動セットアップ
環境変数を設定してClaude Codeを実行します:
shell
ANTHROPIC_AUTH_TOKEN=ollama ANTHROPIC_BASE_URL=http://localhost:11434 claude --model qwen3-coderまたは、シェルのプロファイルで環境変数を設定します:
shell
export ANTHROPIC_AUTH_TOKEN=ollama
export ANTHROPIC_BASE_URL=http://localhost:11434その後、任意のOllamaモデルでClaude Codeを実行できます:
shell
claude --model qwen3-coderエンドポイント
/v1/messages
サポートされている機能
- [x] メッセージ
- [x] ストリーミング
- [x] システムプロンプト
- [x] マルチターンの会話
- [x] ビジョン(画像)
- [x] ツール(関数呼び出し)
- [x] ツール結果
- [x] Thinking/拡張Thinking
サポートされているリクエストフィールド
- [x]
model - [x]
max_tokens - [x]
messages- [x] テキスト
content - [x] 画像
content(base64) - [x] コンテンツブロックの配列
- [x]
tool_useブロック - [x]
tool_resultブロック - [x]
thinkingブロック
- [x] テキスト
- [x]
system(文字列または配列) - [x]
stream - [x]
temperature - [x]
top_p - [x]
top_k - [x]
stop_sequences - [x]
tools - [x]
thinking - [ ]
tool_choice - [ ]
metadata
サポートされているレスポンスフィールド
- [x]
id - [x]
type - [x]
role - [x]
model - [x]
content(テキスト、tool_use、thinkingブロック) - [x]
stop_reason(end_turn、max_tokens、tool_use) - [x]
usage(input_tokens、output_tokens)
ストリーミングイベント
- [x]
message_start - [x]
content_block_start - [x]
content_block_delta(text_delta、input_json_delta、thinking_delta) - [x]
content_block_stop - [x]
message_delta - [x]
message_stop - [x]
ping - [x]
error
モデル
Ollamaはローカルモデルとクラウドモデルの両方をサポートしています。
ローカルモデル
使用前にローカルモデルをプルしてください:
shell
ollama pull qwen3-coder推奨ローカルモデル:
qwen3-coder- コーディングタスクに最適gpt-oss:20b- 強力な汎用モデル
クラウドモデル
クラウドモデルはプルすることなくすぐに使用できます:
glm-4.7:cloud- 高性能クラウドモデルminimax-m2.1:cloud- 高速クラウドモデル
デフォルトのモデル名
claude-3-5-sonnetなど、デフォルトのAnthropicモデル名に依存するツールの場合は、ollama cpを使用して既存のモデル名をコピーしてください:
shell
ollama cp qwen3-coder claude-3-5-sonnetその後、この新しいモデル名をmodelフィールドで指定できます:
shell
curl http://localhost:11434/v1/messages \
-H "Content-Type: application/json" \
-d '{
"model": "claude-3-5-sonnet",
"max_tokens": 1024,
"messages": [
{
"role": "user",
"content": "Hello!"
}
]
}'Anthropic APIとの違い
動作の違い
- APIキーは受け付けられるが検証されない
anthropic-versionヘッダーは受け付けられるが使用されない- トークン数は基盤となるモデルのトークナイザーに基づく概算値
サポートされていない機能
以下のAnthropic API機能は現在サポートされていません:
| 機能 | 説明 |
|---|---|
/v1/messages/count_tokens | トークン数カウントエンドポイント |
tool_choice | 特定のツール使用の強制またはツールの無効化 |
metadata | リクエストメタデータ(user_id) |
| プロンプトキャッシュ | キャッシュプレフィックスのためのcache_controlブロック |
| バッチAPI | 非同期バッチ処理のための/v1/messages/batches |
| 引用 | citationsコンテンツブロック |
| PDFサポート | PDFファイルを含むdocumentコンテンツブロック |
| サーバー送信エラー | ストリーミング中のerrorイベント(エラーはHTTPステータスで返される) |
部分的にサポートされている機能
| 機能 | ステータス |
|---|---|
| 画像コンテンツ | Base64画像はサポート;URL画像はサポートされていない |
| 拡張Thinking | 基本サポート;budget_tokensは受け付けられるが強制されない |