Anthropic の Claude は長文理解・コード生成・日本語能力の高さが特徴の LLM です。
Rails から Claude を使うには anthropic-sdk-ruby(旧 anthropic gem)を使います。
本記事では基本的な呼び出しからストリーミング・ツール使用・Vision まで解説します。
インストール
# Gemfile
gem 'anthropic'bundle installconfig/initializers/anthropic.rb に API キーを設定します。
Anthropic.configure do |config|
config.api_key = ENV['ANTHROPIC_API_KEY']
end基本的な呼び出し
client = Anthropic::Client.new
response = client.messages(
model: 'claude-sonnet-4-6',
max_tokens: 1024,
messages: [
{ role: 'user', content: 'Rubyの魅力を3つ教えてください' }
]
)
puts response['content'].first['text']システムプロンプトの設定
Claude はシステムプロンプトを system パラメーターで渡します。
response = client.messages(
model: 'claude-sonnet-4-6',
max_tokens: 2048,
system: 'あなたは経験豊富なRailsエンジニアです。初心者にわかりやすく説明してください。',
messages: [
{ role: 'user', content: 'Active Recordとは何ですか?' }
]
)ストリーミング
client.messages(
model: 'claude-sonnet-4-6',
max_tokens: 2048,
stream: true,
messages: [{ role: 'user', content: '詳しく説明してください' }]
) do |event|
if event['type'] == 'content_block_delta'
print event.dig('delta', 'text')
end
endツール使用(Function Calling)
Claude に外部ツールを呼ばせる実装です。
response = client.messages(
model: 'claude-sonnet-4-6',
max_tokens: 1024,
tools: [{
name: 'get_stock_price',
description: '指定した銘柄の株価を取得する',
input_schema: {
type: 'object',
properties: {
ticker: { type: 'string', description: '銘柄コード(例: AAPL)' }
},
required: ['ticker']
}
}],
messages: [{ role: 'user', content: 'Appleの株価を教えて' }]
)
# ツール呼び出しが返ってきた場合
if response['stop_reason'] == 'tool_use'
tool_call = response['content'].find { |c| c['type'] == 'tool_use' }
puts "ツール: #{tool_call['name']}, 入力: #{tool_call['input']}"
end画像理解(Vision)
Claude は画像を Base64 で渡すことで内容を解析できます。
image_data = Base64.strict_encode64(File.read('screenshot.png'))
response = client.messages(
model: 'claude-sonnet-4-6',
max_tokens: 1024,
messages: [{
role: 'user',
content: [
{
type: 'image',
source: { type: 'base64', media_type: 'image/png', data: image_data }
},
{ type: 'text', text: 'この画像に何が写っていますか?' }
]
}]
)
puts response['content'].first['text']プロンプトキャッシュ(コスト削減)
長いシステムプロンプトは cache_control でキャッシュするとコストが最大90%削減できます。
response = client.messages(
model: 'claude-sonnet-4-6',
max_tokens: 1024,
system: [
{
type: 'text',
text: '(長い仕様書やドキュメントをここに置く)',
cache_control: { type: 'ephemeral' }
}
],
messages: [{ role: 'user', content: '仕様書についての質問' }]
)まとめ
anthropic-sdk-ruby は薄いラッパーで Anthropic の公式ドキュメントと対応が取りやすく、Claude の機能をフルに活用できます。
長文処理・日本語・Vision・ツール使用を組み合わせると、Rails アプリに強力な AI 機能を追加できます。