【ソースコード付き】RubyでOpenAI ChatGPT (API) に質問する方法

当サイトでは一部リンクに広告が含まれています

この記事では、Rubyプログラムを使ってOpenAIのChatGPTに質問する方法を手順としてソースコード付きで詳しく解説します。

なお、APIキーを取得済みであることを前提としていますので、まだの方は以下の記事を参考に取得してください。

https://musclecoding.com/chatgpt-openai-api-key

    目次

    はじめに

    ChatGPTはOpenAIが開発した自然言語処理モデルで、質問に回答したり、会話を行ったりすることができます。

    この記事では、Rubyを使ってChatGPTと対話する方法を学びます。
    手順に従って進めていくことで、ChatGPTを利用した自動応答アプリケーションや質問応答システムを実装するための下準備ができます。

    必要なライブラリ

    RubyでOpenAI APIを使用するには、以下の2つのライブラリが必要です。

    1. net/http: HTTPリクエストを送信するために使用します。
    2. 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ドキュメントを参照してください。

    目次