2
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

💎【Ruby】AnthropicのClaude3をRubyから呼び出す

Last updated at Posted at 2024-05-11

環境

macOS Ventura 13.5.2
Ruby 2.6.10p210

やりたいこと

RubyをAnthropicのClaude3を呼び出したい
日本語記事を検索するとAmazon Bedrockを使った方法しかないので記事にしてみた

やったこと

@alexrudall氏のanthropicのライブラリを使用します


Gemfileに下記を追加

source 'https://rubygems.org'
gem "anthropic"

ライブラリをインストール

ターミナルにて現在の作業ディレクトリに移動しbundle installを実行

bundle install
Fetching gem metadata from https://rubygems.org/.........
Resolving dependencies...
Using base64 0.2.0
Following files may not be writable, so sudo is needed:
  /Library/Ruby/Gems/2.6.0
  /Library/Ruby/Gems/2.6.0/build_info
  /Library/Ruby/Gems/2.6.0/cache
  /Library/Ruby/Gems/2.6.0/doc
  /Library/Ruby/Gems/2.6.0/extensions
  /Library/Ruby/Gems/2.6.0/gems
  /Library/Ruby/Gems/2.6.0/specifications
Using faraday-net_http 3.0.2
Using ruby2_keywords 0.0.5
Using faraday 2.8.1
Using multipart-post 2.4.1
Using faraday-multipart 1.0.4
Fetching anthropic 0.2.0


Your user account isn't allowed to install to the system RubyGems.
  You can cancel this installation and run:

      bundle install --path vendor/bundle

  to install the gems into ./vendor/bundle/, or you can enter your password
  and install the bundled gems to RubyGems using sudo.

  Password:
Installing anthropic 0.2.0
Using bundler 2.1.4
Bundle complete! 1 Gemfile dependency, 8 gems now installed.
Use `bundle info [gemname]` to see where a bundled gem is installed.

Rubyコードを記述

claude3.rb
require "anthropic"

client = Anthropic::Client.new(access_token: "{自分のAPIキーを記述}")

response = client.messages(
  parameters: {
    model: "claude-3-haiku-20240307", # もしくは claude-3-opus-20240229 もしくは claude-3-sonnet-20240229
    system: "Respond only in Japanese.", # オプション
    messages: [
      {"role": "user", "content": "Hello! What is the most famous mountain in Japan?"},
    ],
    max_tokens: 1000
  }
)

# responseの中身からtextを取り出す
message_text = response["content"].first["text"]
puts message_text

AnthropicのAPIキーを取得しセット

Anthropic ConsoleのAPIキーのページにて自分のAPIを取得

Create keyボタンを押下し、出てきたダイアログに任意のAPIキーの名前を入力
その後表示されるAPIキーのダイアログのCopy keyをクリックで取得できます
スクリーンショット 2024-05-11 19.10.05.png

このAPIキーがバレると不特定多数に勝手に使われてしまうので絶対に共有はしないでください
(※このままGit push等するとバレてしまいます)
(本来であればこのAPIキーをハードコーディングするのでなくdotenvのようなものを使用して、キーを環境に安全に渡すか、Railsプロジェクトで使用している場合はRails認証情報を渡すべきです)

尚、アカウントを持っていない場合は新規登録すると$5の無料枠があるのでそれだけでも結構遊べますよ!!

上記で取得したAPIキーをRubyコードの{自分のAPIキーを記述}内に記述

client = Anthropic::Client.new(access_token: "{自分のAPIキーを記述}")

ターミナルで実行

ruby claude3.rb
日本で最も有名な山は、富士山(ふじさん)です。富士山は日本を代表する3,776mの高峰で、伝統的な象徴として日本文化の中で重要な位置を占めています。富士山は美しい雪頂を持ち、春夏秋冬を通して絶景を見せてくれます。観光地としても人気が高く、多くの日本人や外国人観光客が訪れます。富士山は日本の代名詞ともいえる国民的な山なのです。
ターミナルから質問する方法

下記の様に変更することでターミナルから直接質問できます

clade3.rb
require "anthropic"

client = Anthropic::Client.new(access_token: "{自分のAPIキーを記述}")

# ターミナルからの入力を受け取る
puts "Please enter a message:"
user_message = gets.chomp

response = client.messages(
  parameters: {
    model: "claude-3-haiku-20240307", # もしくは claude-3-opus-20240229 もしくは claude-3-sonnet-20240229
    system: "Respond only in Japanese.", # オプション
    messages: [
      {"role": "user", "content": user_message},
    ],
    max_tokens: 1000
  }
)

# responseの中身からtextを取り出す
message_text = response["content"].first["text"]
puts message_text

ruby claude3.rb
Please enter a message:
日本はどのような国ですか?
はい、日本は非常に興味深い国です。以下のようなことが特徴的です:

- 古くから独特の文化や伝統を持っており、それが現代にも受け継がれています。例えば、茶道、武道、盆栽など。
- 自然環境も豊かで、四季の変化を感じられる美しい国です。富士山や桜、紅葉など、自然の素晴らしい景色が多数あります。
- 最新のテクノロジーや先端技術の発展も目覚ましく、ものづくりが得意な国として知られています。
- 人々の礼儀正しさや丁寧さ、そして旅行者に対する優しさなどから、世界中から観光客を引き付けています。
- 日本食文化の多様性と繊細さは世界的に高く評価されています。寿司、らーめん、天ぷらなど、非常に魅力的な料理が多数あります。

このように、日本は伝統と革新が両立した、非常に魅力的な国だと言えるでしょう。訪れる価値の高い国だと思います。
2
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
2
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?