この記事では、Rubyプログラムを使ってOpenAIのChatGPTに質問する方法を手順としてソースコード付きで詳しく解説します。
なお、APIキーを取得済みであることを前提としていますので、まだの方は以下の記事を参考に取得してください。
https://musclecoding.com/chatgpt-openai-api-key
はじめに
ChatGPTはOpenAIが開発した自然言語処理モデルで、質問に回答したり、会話を行ったりすることができます。
この記事では、Rubyを使ってChatGPTと対話する方法を学びます。
手順に従って進めていくことで、ChatGPTを利用した自動応答アプリケーションや質問応答システムを実装するための下準備ができます。
必要なライブラリ
RubyでOpenAI APIを使用するには、以下の2つのライブラリが必要です。
net/http
: HTTPリクエストを送信するために使用します。json
: JSON形式のデータを扱うために使用します。
これらのライブラリはRubyの標準ライブラリに含まれているため、追加でインストールする必要はありません。
スクリプトの作成
まず、新しいRubyスクリプトファイルを作成しましょう。
例えば、chat_gpt_ruby.rb
という名前でファイルを作成してください。
スクリプトに必要なライブラリを読み込む
スクリプトの先頭に以下のコードを追加して、必要なライブラリを読み込みます。
require 'net/http'
require 'uri'
require 'json'
ChatGPTに質問する関数を定義する
次に、ChatGPTに質問する関数を定義します。
この関数は、APIキーと質問を引数に取り、OpenAI APIにPOSTリクエストを送信してChatGPTと対話を行います。
具体的なソースコードは以下のようになります。
def chat_gpt(api_key, question)
# APIのエンドポイントを指定
uri = URI.parse('https://api.openai.com/v1/engines/davinci-codex/completions')
# POSTリクエストを作成
request = Net::HTTP::Post.new(uri)
request.content_type = 'application/json'
request['Authorization'] = "Bearer #{api_key}"
request.body = JSON.dump({
'model' => 'gpt-3.5-turbo',
'messages' => [
{
'role' => 'system',
'content' => 'You are a helpful assistant.'
},
{
'role' => 'user',
'content' => question
}
]
})
# リクエストを送信し、レスポンスを受け取る
response = Net::HTTP.start(uri.hostname, uri.port, use_ssl: uri.scheme == 'https') do |http|
http.request(request)
end
# レスポンスのJSONデータをパースして返す
JSON.parse(response.body)
end
スクリプトの実行部分を作成
最後に、スクリプトの実行部分を作成します。
以下のコードをchat_gpt_ruby.rb
ファイルの末尾に追加してください。
api_key = 'YOUR_API_KEY'
question = 'YOUR_QUESTION'
response = chat_gpt(api_key, question)
response_message = response['choices'][0]['message']['content']
puts response_message
YOUR_API_KEY
を取得したAPIキーに置き換え、YOUR_QUESTION
を実際の質問に置き換えてください。
例えば「プログラミング言語 Ruby の特徴は?」のように、自由に書き換えてください。
スクリプトの実行
スクリプトを実行するには、ターミナルで次のコマンドを入力します。
ruby chat_gpt.rb
スクリプトが正常に実行されると、ChatGPTからの回答が標準出力に表示されます。
例えば「プログラミング言語 Ruby の特徴は?」と聞いたときは、以下のように返ってきました。
$ ruby chat_gpt_ruby.rb
Rubyの特徴は以下の通りです。
1. オブジェクト指向プログラミング言語であること
2. 簡潔な文法により読みやすく書きやすいこと
3. ダイナミック言語であり、静的型付けを必要としないこと
4. 高級関数やラムダ式をサポートすることにより、関数型プログラミングが可能であること
5. 変数やメソッド名、クラス名に日本語などの非ASCII文字を使用できること
6. 大規模なフレームワーク(Ruby on Railsなど)が存在していること
7. RubyGemsというパッケージ管理システムが存在し、多数のライブラリが利用できること
8. インタプリタ型言語であることにより、実行環境をインストールする必要がないこと
対話式で質問をする場合
ChatGPT への質問をターミナルで入力したい場合は、question = の部分を以下のように書き換えてあげればOKです。
puts "質問を入力してください:"
question = gets.chomp
このように書くと、以下のように質問文を受け付ける状態で止まります。
あとは質問を入力して Enter を押せば、API から答えが返ってきます。
$ ruby chat_gpt_ruby.rb
質問を入力してください:
参考:オプションについて
この記事で紹介したスクリプトは、基本的なChatGPTとの対話を行うためのものですが、OpenAI APIにはさまざまなオプションが用意されています。
例えば、回答の長さや詳細度を制御したり、テンプレートを使って回答の形式を指定したりすることができます。
詳細については、OpenAI APIドキュメントを参照してください。