Upgrade to Pro
— share decks privately, control downloads, hide ads and more …
Speaker Deck
Sign up for free
Menu
Search
Features
All features
Private URLs
Password Protection
Custom URLS
Scheduled publishing
Remove Branding
Restrict embedding
Deck Collections
Notes
Features
All features
Private URLs
Password Protection
Custom URLS
Scheduled publishing
Remove Branding
Restrict embedding
Deck Collections
Notes
Explore
Featured decks
Featured speakers
Programming
Technology
Storyboards
Explore
Featured decks
Featured speakers
Programming
Technology
Storyboards
Pricing
Search
Sign in
Sign up for free
勉強会4_アップデートされたAssistantsAPIを試す
Search
Sponsored
·
Ship Features Fearlessly
Turn features on and off without deploys. Used by thousands of Ruby developers.
→
milky04
May 19, 2024
Programming
2.5k
0
Share
Embed
Copy iframe code
Copy JS code
Copy link
Start on current slide
勉強会4_アップデートされたAssistantsAPIを試す
社内勉強会資料です(2024/5/17)
milky04
May 19, 2024
More Decks by milky04
See All by milky04
勉強会5_画像生成AIの仕組みと学習・i2i対策
milky04
0
290
勉強会2_機械学習のモデル学習と開発について
milky04
0
93
勉強会3_LLMを活用する技術について
milky04
0
110
勉強会1_SlackのAIチャットボットを作ってみた
milky04
0
94
Other Decks in Programming
See All in Programming
モバイル交通系ICへのチャージ実例から考える、クロスプラットフォーム開発におけるiOS実機テスト設計とCI運用
yusuga
1
540
KiroのSpecで「五目並べ」を作ってみる
satoshi256kbyte
1
250
そのリトライ、死んだコネクションを使い回していませんか ── GoのHTTPクライアントとHTTP/2を実プロダクト障害から学び直す
myus4a
0
290
iOSDC Japan 2026 - Swiftで作って学ぼう!データベース自作入門
kaseken
2
370
手動確認はもう限界 〜XCUITestでCustom URL Schemeの遷移を起動種別ごとに自動テストする〜 / Testing Custom URL Schemes with XCUITest
otouto
0
350
速く作れる。その次は、速く確かめられる開発へ 〜AIネイティブ開発を支える、Shift Down〜 / Can build fast. Next, moving to development where we can verify fast.
rkaga
7
5k
Augmenting AI with the Power of Jakarta EE
ivargrimstad
0
310
モジュールの視点からSwiftを読み解く #iosdc
s_shimotori
0
200
フロントエンドUIフレームワークのこれまでとこれから
ssssota
5
3k
パズルゲームの作り方 / how to make puzzle games
kaityo256
PRO
2
240
Intent as Code
shoppingjaws
6
1.1k
難しいけど、読めた。- OSSの入口に立った話。
sts11142
0
120
Featured
See All Featured
16th Malabo Montpellier Forum Presentation
akademiya2063
PRO
0
390
The Web Performance Landscape in 2024 [PerfNow 2024]
tammyeverts
12
1.3k
svc-hook: hooking system calls on ARM64 by binary rewriting
retrage
2
590
Sharpening the Axe: The Primacy of Toolmaking
bcantrill
46
3k
DBのスキルで生き残る技術 - AI時代におけるテーブル設計の勘所
soudai
PRO
68
58k
AI in Enterprises - Java and Open Source to the Rescue
ivargrimstad
0
1.5k
Git: the NoSQL Database
bkeepers
PRO
432
67k
RailsConf 2023
tenderlove
30
1.6k
Practical Orchestrator
shlominoach
192
12k
Code Reviewing Like a Champion
maltzj
528
40k
Discover your Explorer Soul
emna__ayadi
2
1.3k
[RailsConf 2023 Opening Keynote] The Magic of Rails
eileencodes
31
10k
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