Open8
RubyでもChatGPTのAPIを利用してみる
この辺のエコシステムはPythonが圧倒的な印象を受けるけど、rubyはどうなんだろ、というわけで試してみる。
これを使う。
Gemfileを用意。ruby-openaiを入れる。
Gemfile
# frozen_string_literal: true
source "https://rubygems.org"
# gem "rails"
gem "ruby-openai"
そしてインストール。
bundle install
OpenAIのサイトから取得したAPIキーを環境変数に入れておく。
export OPENAI_API_KEY=●●●●●●●●●●●●●●●
あとは単純、以下のように書くだけ。
main.rb
require "openai"
prompt = <<'EOS'
あなたは俳句で喜怒哀楽や季節感を表現する詩人です。
俳句とは、5・7・5という音節数の文章を作ることを指します。
文節は「 」で分割します。
俳句の例として以下のようなものがあります。
* 古池や 蛙飛びこむ 水の音
* 若草や つわものどもが 夢の跡
* 柿食えば 鐘が鳴るなり 法隆寺
* 梅一輪 一輪ほどの あたたかさ
* 静かさや 岩にしみ入る 蝉の声
それでは猫をテーマにして俳句を表示してください。
EOS
client = OpenAI::Client.new(access_token: ENV['OPENAI_API_KEY'])
response = client.chat(
parameters: {
model: "gpt-3.5-turbo",
messages: [{ role: "user", content: prompt}],
temperature: 0.7,
})
puts response.dig("choices", 0, "message", "content")
補足
クライアント初期化時に環境変数OPENAI_API_KEY
からAPIキーを取得している。
client = OpenAI::Client.new(access_token: ENV['OPENAI_API_KEY'])
あとはchatメソッドを呼ぶだけ。
response = client.chat(
parameters: {
model: "gpt-3.5-turbo",
messages: [{ role: "user", content: prompt}],
temperature: 0.7,
})
model: "gpt-3.5-turbo",
モデルにgpt-3.5-turbo
(今公開されてるやつで一番賢いやつ)を指定。
messages: [{ role: "user", content: prompt}],
メッセージにはuser(AIと会話する人間役)としてテキストを渡してる。
temperature: 0.7
温度?を設定してる。これは0だと毎回同じ答えを返す。
1だとバラバラになる。あんまりランダム度が高いと適当なことを言いやすくなる気がする。
実行結果
なかなか風情がある。
$ ruby openai.rb
猫の目に 静かなる月の 光かな
黒猫の影 跳ねる秋風に 焦がれる
夏猫の寝床 鼾の音に 涼みけり
他
このライブラリ、単純に結果を返すだけでなくEmbeddingsやFine-tuning、音声認識にも対応してるらしい。
Llama-indexやLangChainがあるPythonほどエコシステムは充実してはいなさそうだけど、Open AIのAPIをそのまま利用するぶんにはあまり不自由しないかもしれない。