見出し画像

【OpenAI】Assistants APIのバージョンアップがかなりいけてるので解説

OpenAIのAssistantsAPIのバージョンアップが行われたようなので、かなり乗り遅れたけどまとめます。

公式発表内容
https://platform.openai.com/docs/assistants/whats-new

AssistantsAPIとは

AssistantsAPIとはについては、AssistantsAPIがリリースされた際に以下の記事を出したのでこちらご参照ください。

これだけは押さえたい、追加機能を解説

①Retrievalからfile_searchへ!

以前までAssistantsAPIに回答時に参照させるデータは、Retrievalと呼ばれpdfなどのファイルをアップロードして、参照データとして読み込ませていました。
それが今回の変更で、file_searchと名前を新たにし強力アップデートされています。
最大10000ファイルまで取り込み可能で、これは以前までのRetrievalの500倍の容量です。
これだけあれば、ナレッジシェア目的で貯めている、GoogleDriveの資料を全部ぶち込む。みたいなこともできちゃいます。

②file_searchではベクトルデータも保持!

file_searchではベクトルデータとして保持する機能がついています。
vector_storeとしてファイルをfile_searchに突っ込めば、そのファイルの解析、チャンク、ベクトル化が行われ、内部でベクトルDBとして保持されるようです。
例えばチャットbotを作るとした場合、今までは準備データからベクトルDBを作成する部分を、アプリケーション側で実装してDBなどのデータストアで保持しておき、呼び出し時にそれを適宜参照するという形が一般的でしたが、この機能を使えば、アプリケーション側のベクトル化、ベクトルDBへの参照などは不要になり、ベクトルDBを備えたAssistantsAPIをコールするだけで良くなります。
AIチャットボットサービスみたいなのが乱立し、世は大AIチャットボット時代の様相を呈していますが、それらに対してのかなり破壊的なアップデートだと思います。

③トークン使用量の最大数を制御可能!

AssistantsAPIは、リクエスト時に過去の履歴を全てつなげて送る形なので、スレッドが長くなっていくと、想定外のお金がかかって破産しかけるという致命的な懸念がありましたが、このアップデートでそれが解消されました。
今までは、あんまりスレッドが長くなりすぎたら、古いものから先に履歴データから切り離すみたいな機構をアプリケーション側に入れるといった工夫が必要でした。
過去分のデータがどのように切り取られるのかは不明ですが、AssistantsAPIを使った開発における大きな懸念が解消されています。

④通常モデルの呼び出しで使用できるパラメーターをサポート!

通常のOpenAIのモデルをAPIで呼び出す時に使用できるパラメーターがサポートされたようです。
temperature, response_format, top_pなどですね。
なによりも、レスポンスとしてjson指定ができるようになったのはでかい!!
レスポンスをjsonで返すように固定することで、他のwebサービスなどへの繋ぎ込みが容易になります。
私は前までAssistantsAPIのレスポンスをjsonで返すために、最後にfunction_callingを呼び出して無理やり加工するみたいな変なことをしていました。
他にもtop_p指定(上位oo%みたいに指定することで、確定的なことだけでレスポンスさせるようにできる)などなど。

④ストリーミング機能をサポート!

ストリーミング機能をサポートすることで、今までは全てのレスポンス生成が完了してから、データを返すようになってましたが、ChatGPTのUIのようにリアルタイムで応答を作成することができるようになります。

今回の変更所感

以前までのAssistantsAPIは、かなり強力ではありますが痒いところに手が届かない感じがありました。
それが今回のアップデートで完全に解決され、OpenAIのAPIを使ったプロダクト開発において真っ先に選択肢に入るような機能が整ったといえます。

データを参照させつついい感じに答えるような社内チャットbotを作る際には、file_searchに様々な形式のファイルを読ませてベクトル化させたAssistantsAPIを一つ建てるだけで、あとはAPIを呼び出すだけみたいになったわけです。
バックエンドのことを全てAssistantsAPIに任せれるというだけでも価値の高さは半端ないのに、response_formatでjsonを返せるので、特定のwebサービスなどの拡張機能として使えるなど、凄まじい汎用性の高さです。

この記事が気に入ったらサポートをしてみませんか?