2
1

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でOpenAI APIを使うとき、ruby-openai と openai の違いで混乱した話

2
Posted at

はじめに

Ruby on Railsの卒業制作でOpenAI APIを使おうとした際、gem "ruby-openai" と gem "openai" の違いが分からずかなり混乱しました。検索すると両方の情報が出てきて、どちらが公式なのか、何が違うのかがすぐに判断しづらかったためです。本記事では、自分の整理も兼ねて、この2つのgemの違いと混乱しやすいポイントをまとめます。

結論

先に結論を書くと、

  • openai → OpenAI公式のRuby SDK
  • ruby-openai → コミュニティ製のgem

です。

公式のGitHubはこちら
https://github.com/openai/openai-ruby

コミュニティ製はこちら
https://github.com/alexrudall/ruby-openai

ややこしいのは、どちらもRubyからOpenAI APIを扱うためのgemであり、さらにクラス名も似ているため、情報が混ざりやすい点です。

なぜ混乱するのか

実際に混乱した理由は以下の通りです。

  • gem名が似ている(openai / ruby-openai
  • どちらも OpenAI::Client を使う
  • 検索すると両方の記事がヒットする
  • 古い記事は ruby-openai が多い

特に、「どっちをrequireすればいいの?」というところで完全に詰まりました。

使い方の違い

openai(公式SDK)の場合

require "openai"

client = OpenAI::Client.new(
  api_key: ENV["OPENAI_API_KEY"]
)

response = client.chat.completions.create(
  model: "gpt-5.2",
  messages: [
    { role: "user", content: "こんにちは" }
  ]
)

puts response

特徴:

  • api_key: を使う
  • メソッドチェーン形式(chat.completions.create)
  • API構造に近い書き方

ruby-openai(コミュニティ製)の場合

require "openai"

client = OpenAI::Client.new(
  access_token: ENV["OPENAI_API_KEY"]
)

response = client.chat( 
  parameters: {
    model: "gpt-4o", messages: [
      { role: "user", content: "こんにちは" }
    ]
  }
)

puts response.dig("choices", 0, "message", "content")

特徴:

  • access_token: を使う
  • parameters: にまとめて渡す
  • レスポンスはHash形式で扱うことが多い

一番ハマったポイント

自分が特に混乱したのは、gem名と require の書き方が一致しないことでした。

  • gem "openai"require "openai"
  • gem "ruby-openai"require "openai"

最初は ruby-openai なら require "ruby-openai" だと思い込んでいましたが、実際にはそうではありませんでした。
gem名は違うのに読み込み名が同じなので、検索結果やサンプルコードを読んでいるうちに情報が混ざりやすいと感じました。

どちらを選ぶべきか

今から新しく使うなら、まずは公式SDKである openai を確認するのが良いと思います。

理由:

  • 公式ドキュメントと一致する
  • 今後のアップデートに追従しやすい

一方で、既存の記事やRailsの実装例では ruby-openai が使われていることも多いため、記事を読む際にはどちらのgemかを意識することが重要です。

まとめ

ruby-openaiopenai がややこしいのは、

  • 名前が似ている
  • 役割が同じ
  • 使い方が微妙に違う

という点が重なっているためだと感じました。

卒業制作でかなり苦しめられたポイントでしたが、今回整理したことでスッキリ理解できました。
同じように混乱している方の参考になれば嬉しいです。

2
1
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
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?