chatgpt APIの話

  • #開発
  • #python
  • #chatgpt

こんにちは。CURUCURUエンジニアの長尾です。 今回は最近少しだけ業務で触れたchatgpt apiを使ってみたので、それについてお話したいと思います。


chatgpt API

chatgptは現在のエンジニア界隈では使っていない人はほぼいないんじゃないかと思うぐらいなので説明は不要ですね。 個人的には実装に関する調べ物だったりで結構お世話になってたりします。

目的

今回chatgptを使うに至ったのは、弊社の商品に対する説明を自動生成したいがためです。 元々弊社では商品に対する説明を人が書いていましたが、業務効率化のために商品説明のベースだけでもできないかということで 自動生成に着手してみたという経緯です。

どうやったか

当初はllamaindexというライブラリを使ってchatgptに対して事前に学習をさせた上で商品説明文の自動生成を行おうと考えていました。 俗に言う「ファインチューニング」というやつです。

ですが、それがなかなかうまくいかず「その商品に存在するはずのない機能の説明」が生成されてしまうようなことになってしまいました。 またファインチューニングでは事前にどういう情報を渡すかをきちんと作り込まないと余分なトークンが消費されてしまうことになってしまうので、無駄に費用を使ってしまうと感じたため諦めました。

そこで、最近リリースされたばかりではありますが評判の良さそうなchatgptに画像を読み込ませるAPI、GPT-4 with visionを利用してみました。 単にchatgptのapiを使うだけでもいい感じの文章が生成できたので、商品説明のベースとしては要件を満たせているのではないか。

一旦は社内で本当に使えるかどうかの精査中ではありますが、ここからさらに大幅に変更になることはなさそうです。

コード

では、実際にどういう感じで実装したのか?というと、とても簡単です。 実際のコードは1行で終わるようなものです。

from openai import OpenAI


def main():
    client = OpenAI()
    response = client.chat.completions.create(
        model="gpt-4-vision-preview",
        max_tokens=1000,
        messages=[
            {"role": "system", "content": "{ロールの説明}"},
            {"role": "user",
             "content": [    
                {"type": "text",
                "text": "{商品に関する情報の付与}"},
                {
                    "type": "image_url",
                    "image_url": "{画像のURL}",
                }
             ]},
        ]
    )

コアな部分はここだけです。 (chatgptモジュールの読み込みとかopenaiのAPIキー設定などは調べれば出てくるので、ここでは割愛します。) modelに"gpt-4-vision-preview"を入れることでGPT-4 with visionを使うことができました。

補足

実際のアプリケーションに組み込む際には、chatgptに渡す情報を商品データをもとに正しく生成したり、 chatgptから生成した結果を管理したりしないといけないのでやることはそれなりにありそうです。 ですが、コアな部分がとてもシンプルに出来ているのでありがたいですね。

ファインチューニングとかも正しくやればメーカー独自の機能だったり、商品特有の機能だったりも含めて商品説明が作れそうですが そのあたりはおいおいやっていきたいですね。

まとめ

今回はchatgptを使ってみたので、それについて書いてみました。 生成AI周りはやり出すと、奥が深すぎて沼になって抜け出せなくなりそうになるのでこれからやる人がいましたらほどほどで見切りをつけるのも大事です。

以上、長尾がお届けしました。

メンバー募集

CURUCURUでは開発メンバーを募集中です。 CURUCURUの開発に興味があったり、モダンな開発環境で挑戦してみたいという方がいましたら、ぜひこちらも覗いてみてください!