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
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
270
勉強会2_機械学習のモデル学習と開発について
milky04
0
88
勉強会3_LLMを活用する技術について
milky04
0
100
勉強会1_SlackのAIチャットボットを作ってみた
milky04
0
90
Other Decks in Programming
See All in Programming
その節約、円になってますか?
isamumumu
1
670
AIが無かった頃の素敵な出会いの話
codmoninc
1
360
Japan Community Day at Kubecon + CloudNativeCon Japan 2026: Learning Container Privilege Control by Building My Own Low-Level Container Runtime
ternbusty
1
120
メールのエイリアス機能を履き違えない
isshinfunada
0
210
php-fpmのプロセスが枯渇した日-調査・対処・そして本当にやるべきだったこと-
shibuchaaaan
0
200
Apache Hive: Toward a Cloud Native Lakehouse
okumin
0
170
React本体のコードリーディング
high_g_engineer
1
130
琵琶湖の水は止められてもNet--HTTPのリトライは止められない / You might be able to stop the water flow of Lake Biwa but you can't stop Net::HTTP retries
luccafort
PRO
0
530
AIエージェントで 変わるAndroid開発環境
takahirom
2
770
【SRE NEXT 2026 Lunch Session】一人目専任SREの立ち上げを加速する ― AIと進めたオンボーディングで2分を0.04秒にした話
pkshadeck
PRO
0
3.4k
20260722_microCMSで考える、AI時代のコンテンツ運用設計
yosh1
0
260
AI時代、エンジニアはどう育つのか -未経験エンジニアの成長を間近で見て考えたこと-
thasu0123
0
210
Featured
See All Featured
GitHub's CSS Performance
jonrohan
1033
470k
技術選定の審美眼(2025年版) / Understanding the Spiral of Technologies 2025 edition
twada
PRO
119
120k
Done Done
chrislema
186
16k
Digital Ethics as a Driver of Design Innovation
axbom
PRO
1
360
Making the Leap to Tech Lead
cromwellryan
135
10k
Agile Leadership in an Agile Organization
kimpetersen
PRO
0
200
Six Lessons from altMBA
skipperchong
29
4.4k
Ten Tips & Tricks for a 🌱 transition
stuffmc
0
160
Art, The Web, and Tiny UX
lynnandtonic
304
22k
jQuery: Nuts, Bolts and Bling
dougneiner
66
8.5k
Claude Code のすすめ
schroneko
67
230k
SEOcharity - Dark patterns in SEO and UX: How to avoid them and build a more ethical web
sarafernandez
0
230
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