Upgrade to Pro
— share decks privately, control downloads, hide ads and more …
Speaker Deck
Features
Speaker Deck
PRO
Sign in
Sign up for free
Search
Search
勉強会4_アップデートされたAssistantsAPIを試す
Search
milky04
May 19, 2024
Programming
0
2.4k
勉強会4_アップデートされたAssistantsAPIを試す
社内勉強会資料です(2024/5/17)
milky04
May 19, 2024
Tweet
Share
More Decks by milky04
See All by milky04
勉強会5_画像生成AIの仕組みと学習・i2i対策
milky04
0
13
勉強会2_機械学習のモデル学習と開発について
milky04
0
60
勉強会3_LLMを活用する技術について
milky04
0
70
勉強会1_SlackのAIチャットボットを作ってみた
milky04
0
73
Other Decks in Programming
See All in Programming
たった 1 枚の PHP ファイルで実装する MCP サーバ / MCP Server with Vanilla PHP
okashoi
1
270
Result型で“失敗”を型にするPHPコードの書き方
kajitack
5
930
Hack Claude Code with Claude Code
choplin
5
2.3k
PHPでWebSocketサーバーを実装しよう2025
kubotak
0
290
PostgreSQLのRow Level SecurityをPHPのORMで扱う Eloquent vs Doctrine #phpcon #track2
77web
2
540
PHP 8.4の新機能「プロパティフック」から学ぶオブジェクト指向設計とリスコフの置換原則
kentaroutakeda
2
950
RailsGirls IZUMO スポンサーLT
16bitidol
0
190
Composerが「依存解決」のためにどんな工夫をしているか #phpcon
o0h
PRO
1
270
What's new in AppKit on macOS 26
1024jp
0
110
Deep Dive into ~/.claude/projects
hiragram
14
2.6k
A full stack side project webapp all in Kotlin (KotlinConf 2025)
dankim
0
120
チームで開発し事業を加速するための"良い"設計の考え方 @ サポーターズCoLab 2025-07-08
agatan
1
440
Featured
See All Featured
[Rails World 2023 - Day 1 Closing Keynote] - The Magic of Rails
eileencodes
35
2.4k
Stop Working from a Prison Cell
hatefulcrawdad
271
21k
[RailsConf 2023 Opening Keynote] The Magic of Rails
eileencodes
29
9.6k
Large-scale JavaScript Application Architecture
addyosmani
512
110k
Connecting the Dots Between Site Speed, User Experience & Your Business [WebExpo 2025]
tammyeverts
6
310
Scaling GitHub
holman
460
140k
Learning to Love Humans: Emotional Interface Design
aarron
273
40k
RailsConf & Balkan Ruby 2019: The Past, Present, and Future of Rails at GitHub
eileencodes
138
34k
The Art of Delivering Value - GDevCon NA Keynote
reverentgeek
15
1.5k
Gamification - CAS2011
davidbonilla
81
5.4k
Balancing Empowerment & Direction
lara
1
440
What's in a price? How to price your products and services
michaelherold
246
12k
Transcript
アップデートされたAssistants APIを試す
はじめに • 2024年4月にOpenAIのAssistants APIがv1→v2へアップデートされた。 →それにより新機能追加や改善され、アプデ前にあった料金がかなりか かってしまう問題も解決されたため試したい。 ※上記問題があったため、アプデ前のは試していない。
Assistants APIとは① • さまざまなタスクを実行できる強力な「AIアシスタント」を作成するためのAPI。 ※現在PythonとNode.jsで使用可能 • アシスタントは、特定の指示を設定することでOpenAIのモデルを呼び出し、その個性や能 力を調整することが可能。 ※OpenAIのAPIのため、使用可能なモデルはOpenAIのものに限られる。 •
現在「file_search(旧Retrieval)」「code_interpreter」「function_calling」の3つのツールをサ ポートしている。アシスタントはこれら複数のツールに同時にアクセスが可能。 ※ツールについては後述
Assistants APIとは② • アシスタントは永続的なスレッドにアクセスすることが可能。スレッドはメッセージの履歴を 保持し、会話がモデルのコンテキスト長を超える場合には切り捨てることで、AIアプリケー ション開発を容易にする。一度スレッドを作成すると、ユーザーが返信する際にはメッセー ジをスレッドに追加するだけ。 ※コンテキスト長:保持可能なトークン数 ※スレッドは会話セッションのことを指す。1つのアシスタントで複数の会話履歴を管理可能。 例えばChatBotで利用ユーザー毎にスレッド作成し、別々に会話履歴を保持することが可能。
• アシスタントは、作成の過程やアシスタントとユーザ間のスレッドの一部として、様々な形 式のファイルにアクセスが可能。ツールを使用する場合、アシスタントはファイル(画像、ス プレッドシート等)を作成し、メッセージ作成時に参照するファイルを引用することも可能。
file_search(旧Retrieval) • 独自の製品情報やユーザーから提供されたドキュメントなど、モデルの外部からの知識で アシスタントを強化する。 • ドキュメントを自動的に解析してチャンク化し、埋め込みを作成して保存し、Vector検索と キーワード検索の両方を使用して関連コンテンツを取得してユーザーからの質問に答える。 ※チャンク化:多くの情報や知識を小さなまとまり(チャンク)に分割して処理する技術のこと。 ※Vector検索(類似性検索):外部情報を事前にVector化したうえでVectorDBに保持してお き、inputと近しいVectorである情報がinputと関連性が高いとして回答に使用する
※サポートされているファイルについては以下(txt、docx、pdf、csv、pyなど) https://platform.openai.com/docs/assistants/tools/file-search/supported-files
file_search(旧Retrieval)の問題点 • AIアシスタントが返答する際に、用意したファイルをうまく参照してくれない 場合があるらしい。 • また、 file_searchする場合、通常の応答よりも返答が遅くなり、費用がか かってしまう。
code_interpreter • サンドボックス化された実行環境でPythonコードを記述し、実行することが可能。 ※サンドボックス:通常利用領域から隔離された仮想環境。 • 様々なデータやフォーマットのファイルを処理し、データやグラフの画像を含むファ イルを生成可能。 • アシスタントは、実行に失敗するコードを生成した場合、コードの実行が成功する まで別のコードの実行を試みるなど、ある程度自律的に動作をすることが可能。
function_calling • アシスタントに関数定義を追加しておくことで、呼び出す必要がある場合に、 関数呼び出しの要求を返すことが可能。 • 例:直近の天気を取得する関数、Web検索により外部情報を取得する関数 など
アップデートによる新機能/改善点① • file_searchの性能向上(旧Retrieval) アプデ前までは1つのアシスタントに20個までしかファイルを指定できなかった。 →アプデにより、10000個まで可能になった。正確性と速度も向上したとのこと。 file_searchと並行して、「vector_store」が追加された。ファイルがvector_storeに追 加されると、自動的に解析や分割、埋め込みが行われ、検索可能な状態となる。 vector_storeはアシスタント間で共有可能。 ※埋め込み:2つのテキスト間の関連性を測定するために使用できるテキストの ベクトル表現。2つのベクトル間の距離によって、それらの関連性が測定される。
アップデートによる新機能/改善点② • スレッドのメッセージ保持上限が指定可能になった アプデ前までは1つのスレッドのメッセージ保持上限が指定できなかった。 そのため、1度作ったスレッドでは過去全てのメッセージが履歴として使用される ため、会話が伸びると費用が膨大になってしまうという問題があった。 →アプデにより、1つのスレッドに何件まで過去のメッセージを含めるかを指定 可能となった。 ※メッセージ保持上限を超えた場合は、最も古いメッセージがスレッドから削除 される。
アップデートによる新機能/改善点③ • 特定の実行で使用するツールの指定が可能になった アプデ前まではアシスタントが持っているツールは、自動的に全ての実行で使 用される可能性があった。 →アプデにより、アシスタントの持っているツールのうち、どれを使用するかを 特定の実行毎に指定することが可能になった。これで思わぬところで不要な ツールを使用してしまう事故が防げる。 その他、特定の実行毎に指定できるパラメータ(tempreture、JSONモードなど)が 増えたので、アプデ前よりも柔軟なタスクに対応可能となった。
その他アップデートによる新機能/改善点 • 使用するトークンの上限が指定可能になった。 • ファインチューニングモデルが利用可能になった。 • ストリーミングが利用可能になった。 • 「Node.js SDK」と「Python
SDK」に、「Streaming Helper」と「Polling Helper」が追加された。 ※Helper:アシスタントと対話する際の応答をサポートするためのもの。Streamingはリ アルタイムで遂次的に応答を出力。Pollingは一定の間隔で定期的にAPIの更新状態を 確認し、終了状態になったら一度に応答を出力。
Assistants APIを使用したChat botを試す • 今回は主にfile_search、code_interpreter、スレッドによる会話履歴保持を試します。 • 今回はWebアプリ起動時に一度だけスレッドを作成しています。この場合、Webア プリ終了時にスレッドは破棄されます。 ※Webアプリ終了してから再起動した際にも、Webアプリ終了前のスレッドが保持 されるようにすることが可能かは未確認。
• Chat botはPythonでStreamlitを使用して作成。 ※Streamlit:Pythonで簡単にWebアプリケーションを作成できるオープンソースのライ ブラリ。
おわりに • Assistants APIは手軽に使用でき、 こちらで機能を用意せずともAPI利用することで様々な機 能が使用出来ました。そのため、Assistants APIを使用することで容易にAIアプリケーション 開発が可能になります。 • 今回紹介しませんでしたが、LangChainというライブラリがあり、LangChainでもAssistants
API で提供されているような機能を実現可能です。 • LangChainとAssistants APIにはそれぞれ違いやメリット/デメリットがあるため、シチュエー ションに応じてどちらが良いかを判断して使用すると良さそうかなと考えています。 • Assistants APIの今後のアップデートにも期待。 ※LangChainについて気になった方は調べてみてください。
参考 • https://platform.openai.com/docs/assistants/overview • https://platform.openai.com/docs/assistants/whats-new • https://note.com/nike_cha_n/n/n21fe47546e8d#23075f74-115c-4292-839b- 90cc0086f8b9 • https://note.com/npaka/n/n4438384c96d0
• https://developer.mamezou-tech.com/blogs/2024/04/21/openai-file-search-intro/ • https://note.com/mahlab/n/nba20ea09648d#1f2aff74-c918-483b-a195- 73658f107252