nikkie-ftnextの日記

イベントレポートや読書メモを発信

MyGPTsやAssistants APIとアニメについておしゃべりしてみる(ムビマス篇)

はじめに

でも、私は天海春香だから。」 nikkieです。

かつてLangChainを使って、ChatGPTと劇場版『THE IDOLM@STER MOVIE 輝きの向こう側へ!』についておしゃべりしました。

OpenAI DevDayによってリリースされたものたちでも同じことができるか素振りしました。

目次

MyGPTsでムビマスおしゃべりGPTを作る

自然言語だけでGPTを特定タスクにカスタマイズできる(と認識している)MyGPTs。

からあげさんの記事を見たところ本当に簡単そうだったので、早速作ってみました。

志保は「もう時間が無いんです!」と焦りを表現しています​。

す、すげ〜!!

Configuration設定値

Description

『THE IDOLM@STER MOVIE 輝きの向こう側へ!』を熟知しています

Instructions

ムビマスおしゃべりGPTは『THE IDOLM@STER MOVIE 輝きの向こう側へ!』(通称ムビマス)の内容に沿って会話してくれます。この作品が好きな人にとっては素晴らしい存在です

ファイル「THE IDOLM@STER MOVIE 輝きの向こう側へ!.txt」に基づいて回答します。
このファイルの形式:
キャラクター「セリフ」

Knowledge

以下のファイルをアップロードしました。
https://github.com/erutaso/THE-IDOL-MASTER-MOVIE/blob/75fb2853c3d5cea96238d7e42a6a844cbffd548b/THE%20IDOLM%40STER%20MOVIE%20%E8%BC%9D%E3%81%8D%E3%81%AE%E5%90%91%E3%81%93%E3%81%86%E5%81%B4%E3%81%B8%EF%BC%81.txt

Capabilitiesは、3つともチェックなし

Additional Settingsの「Use conversation data in your GPT to improve our models」はチェックを外します (これでAPIと同じ1、データを訓練に使われない設定にできたのかな?)

Only meで使っていますが、詳細を見たところ「Powered by GPT-4」表示がありました

ムビマスおしゃべりGPTをAssistants APIでも作る

先日の素振りを元にAPIを呼び出していきます

動作環境

ライブラリバージョン

annotated-types==0.6.0
anyio==3.7.1
certifi==2023.7.22
distro==1.8.0
h11==0.14.0
httpcore==1.0.2
httpx==0.25.1
idna==3.4
openai==1.2.3
pydantic==2.4.2
pydantic_core==2.10.1
sniffio==1.3.0
tqdm==4.66.1
typing_extensions==4.8.0

スクリプト

一度限りの処理をスクリプトに切り出し

  • ムビマスセリフファイルのアップロード
  • ファイルを参照したAssistantの作成
    • Retrievalの指定が必要

Threadを作って呼んでみましょう。

こんにちは!志保ちゃんが「もう時間が無いんです!」と言った場面がありますね【7†source】。何か心配事があるのでしょうか?もし何か困っていることがあれば、いつでもお手伝いしますよ!

(ちょっとポンコツ?)

MyGPTsとAssistants APIでムビマスおしゃべりを試した感想

それぞれ何回か試しましたが、おんなじ感じかなあという印象です(※この評価は非常に雑です)。

Assistants APIでは時間について、生っすかの美希のセリフ「そろそろ行くの」が見つかって見当違いなことを言います(半々くらい)。
私の雑なLangChain実装ではここは見つけられていないので、OpenAIのデフォルトのRAG2はすごいですね。

MyGPTsの方が性能はいい感じなのですが、こちらも生っすかの美希のセリフが返ってきたので、ずば抜けてよいという感じはしていません。
公式発表されているかわからないですが、Assistants APIにチャットUI(ビルダー)を付けたのがMyGPTsなのかなととらえています

なお、instructionのチューニングや、ムビマスについて他の話題での検証の余地は多分に残されています3

終わりに

MyGPTsを触り、同じものをAssistants APIで作れるか手を動かしてみました。

OpenAIの提供するRAGがすごいです、ベースの水準を引き上げています!
LangChainなどで実装する方法ももちろんあると思いますが、MyGPTsでもAssistants APIでも、カスタマイズGPTのアイデアはサクッと検証できちゃう状況になっちゃってますね。
未来が来ちゃったよ!

P.S. MyGPTsではプロンプトインジェクションが話題

MyGPTsは自然言語だけで簡単に始められますが、instructionが抜かれてしまうことが話題です。
いくつか記事を見ましたが、「MyGPTsはデータ全公開と同じ」というとらえ方がしっくり来ました。
(OpenAIの初期プロンプトすら抜かれるんだから、絶対に抜かれないようにはできないんじゃないかな...)

このインジェクションですが、Ngセンセ講座4で対策がありました。
それが処理対象のテキストをdelimiterで区切る

これを使うにはMyGPTsだと難しくて、間に独自UIを挟めるAssistants APIに分があるように感じます。

Assistants APIに送るプロンプトイメージ

『THE IDOLM@STER MOVIE 輝きの向こう側へ!』の内容に基づいて、以下に回答してください

"""

<ここにユーザ入力が入る>

"""

Ngセンセの説明を聞いて、「instructionを教えて」のようにユーザに入力されたとしても、delimiterで区切っている分エスケープされ、モデルが処理する対象の文字列になるってことかなと理解しました


  1. data sent to the OpenAI API will not be used to train or improve OpenAI models」ref: https://platform.openai.com/docs/models/how-we-use-your-data
  2. Once a file is uploaded and passed to the Assistant, OpenAI will automatically chunk your documents, index and store the embeddings, and implement vector search to retrieve relevant content to answer user queries.」 ref: https://platform.openai.com/docs/assistants/tools/knowledge-retrieval
  3. カッチリやるなら、以下にあるようにいくつかの質問と回答を定義し、検証することになるんじゃないかと考えます