OllamaのAPI
Ollama with API
Ollama をローカル環境で API 経由で使用する方法について説明します。チャット形式やプロンプト形式でのリクエスト、Ruby によるプログラム例、レスポンスからコードブロックだけを抽出する方法などを紹介します。
環境
- ホスト:
localhost - ポート:
11434 - 使用モデル:
gemma3
1. チャット形式でのAPI呼び出し
エンドポイント: /api/chat
ユーザーとアシスタントのメッセージを messages 配列で送信します。
curl http://localhost:11434/api/chat \
-H "Content-Type: application/json" \
-d '{
"model": "gemma3",
"messages": [
{ "role": "user", "content": "write a simple sample code with ruby." }
],
"stream": false
}' | jq
2. 会話履歴付きチャット
会話履歴を保持して文脈のある応答を得る方法です。
curl http://localhost:11434/api/chat \
-H "Content-Type: application/json" \
-d '{
"model": "gemma3",
"messages": [
{"role": "system", "content": "あなたは旅行や季節の行事に詳しい、親切で穏やかなアシスタントです。"},
{"role": "user", "content": "そろそろ春だね〜、お花見行きたいなあ。"},
{"role": "assistant", "content": "いいですね!桜の季節は本当にわくわくしますよね。"},
{"role": "user", "content": "おすすめの桜の名所ってある?できれば日本国内で!"}
],
"stream": false
}' | jq
3. プロンプト形式でのAPI呼び出し
エンドポイント: /api/generate
プロンプトのみで応答を生成します。
curl http://localhost:11434/api/generate \
-H "Content-Type: application/json" \
-d '{
"model": "gemma3",
"prompt": "write a simple sample code with ruby.",
"stream": false
}' | jq
4. RubyでのAPI呼び出し
Ruby を使って /api/chat にPOSTリクエストを送る例です。
require 'net/http'
require 'uri'
require 'json'
url = URI.parse('http://localhost:11434/api/generate')
data = {
model: "gemma3",
prompt: "write a simple sample code with ruby.",
stream: false
}
http = Net::HTTP.new(url.host, url.port)
request = Net::HTTP::Post.new(url.path, { 'Content-Type' => 'application/json' })
request.body = data.to_json
response = http.request(request)
puts "Status: #{response.code}"
puts "Body: #{response.body}"
5. コードブロックの抽出
生成結果からMarkdownのコードブロック(```で囲まれた部分)だけを取り出すには、以下のような awk コマンドを使います。
awk '/^```/{in_block = !in_block; next} in_block' file.md
このスクリプトは、コードブロックの開始と終了を検出し、その間の行のみを出力します。
◀︎ Ollamaのインストール | 簡単なRAG ▶︎