Ruby on Rails製の個人のWebサービスにOpen APIのChat GPTを使った機能を盛り込んだ時にruby-openai
を使うと簡単にリクエス部分を実装できたので、ほとんど公式READMEの通りですがメモ📝
API KEYの取得方法等は以下の記事を参考にしてください。
使い方は簡単で以下の通りに実装すればいい感じにOpenAIのChat GPTのレスポンスを受け取ることができます。
client = OpenAI::Client.new(access_token: "access_token_goes_here") response = client.chat( parameters: { model: "gpt-3.5-turbo", # Required. messages: [{ role: "user", content: "Hello!"}], # Required. }) puts response.dig("choices", 0, "message", "content") # => Hello! How can I assist you today?
以下にサンプルとして適当な文字列の分かりやすい要約を生成するclassを作ってみました。
# frozen_string_literal: true class SummaryText def initialize(text: nil) @original = text end def summary @summary ||= summarize! end attr_reader :original private def summarize! fetch_summary! end def fetch_summary! fetch_from_open_ai_chat( '渡された文字列を小学生でも理解できるように150文字で説明した文章を出力してください。', original ) end def fetch_from_open_ai_chat(system_prompt, text) response = client.chat( parameters: { model: 'gpt-3.5-turbo', messages: [ { role: 'system', content: system_prompt }, { role: 'user', content: text } ] } ) response.dig('choices', 0, 'message', 'content') end def client @client ||= OpenAI::Client.new(access_token: open_ai_token) end def open_ai_token Rails.configuration.settings.open_ai[:secret] end end
以下のような感じで結果を取得できます🙌
SummaryText.new(text: "検索(けんさく、英: search)とは、データの集合の中から目的とするデータを探し出すことである。古くは図書館の所蔵物を探し出したり、辞書の項目を引いたりといった人手で行うのが主だったが、コンピューターの発達により、テキスト文字列の検索(文書検索、文字列探索)、画像データの検索(画像検索)、音声データの検索(音声検索)など、大規模かつマルチメディアの情報に関する検索技術が発展した。さらにデータベースの発展とインターネットの普及に伴い、分散保管されているデータに対する検索技術が研究されている。ファイルの内容に対して文字列探索を行う機能も検索と呼ばれる。").summary => "「検索」とは、目的のデータを見つけることです。昔は本を探したり辞書を引くなど、人が手で行っていました。しかし、コンピューターが発達し、文章や画像、音声など、大量の情報を探すことができるようになりました。また、データが分散保管されている場合でも検索できるようになっています。ファイルの中から特定の文字列を探す機能も「検索」と呼びます。"