Slide 1

Slide 1 text

Azure OpenAI の 注目機能をご紹介! - Assistants API 編 Takashi Okawa Partner Solution Architect Microsoft Japan Co., Ltd. 2024/03/17

Slide 2

Slide 2 text

Assistants API

Slide 3

Slide 3 text

What’s Assistants API ?  独自のアプリケーション内で AI アシスタントを構築するための API  モデル、ツール、知識を活用してユーザーのクエリに応答できる それって今までも できてなかったっけ…?

Slide 4

Slide 4 text

Assistants API 以前 / 以後…  Assistants API がない世界  基本的にはオーケストレーターを自力実装  モデルを思考エンジンとして利用  知識は外部データベースから取得  使うべき知識は Embedding などで自力検索  外部ツールを使う判断も自前実装  状態管理も自分で頑張る  Semantic Kernel / LangChain 頑張る  Assistants API がある世界  エージェントを作るための基本機能は内包  グラウンディングのためのデータの読み込み  データの永続化  呼び出すべき外部ツールの選定  目的を達するためのコードの自動生成 頑張れば ステートフルかつ 外部データ連携のある エージェントを作れる 頑張らなくても ステートフルかつ 外部データ連携のある エージェントを作れる

Slide 5

Slide 5 text

Chat Completions API vs. Assistants API  Chat Completions API  軽量でパワフル  本質的にステートレス  Assistants API  ステートフル (組み込みの会話状態管理)  永続スレッドへのアクセス  複数の形式のファイルにアクセス  チャンク化  Embedding の保存と作成  ベクトル検索  モデルのコンテキストウィンドウの自動管理  複数のツールに並行してアクセス  アシスタントあたり最大128ツール  コードインタープリターを含む  関数呼び出しを使用して独自のツールを構築

Slide 6

Slide 6 text

Assistants API を使うとうれしいこと  Copilot にステートフルネスを簡単に導入  単一の API を使用して、強力でステートフルな Copilot とエージェントのようなエクスペリエンスを構築可能  開発工数の削減  状態、コンテキストウィンドウ、チャットスレッド、取得、コード実行、外部拡張機能は API の機能  オーケストレーターで頑張る必要がなくなる  強力なネイティブツールと 3rd party 拡張性  強力な組み込みツールに並行してアクセス可能  コードインタープリター  知識検索  関数呼び出しによる外部拡張機能など

Slide 7

Slide 7 text

Before Assistants な Copilot の姿 Plugin extensibility Copilots Apps AI orchestration Foundation models AI infrastructure Semantic Kernel や LangChain で 頑張って作ってた

Slide 8

Slide 8 text

Before Assistants な世界で何かアシスタントを作るとしたら? Orchectrator • アシスタントの設定 • 状態管理 • コンテキストの管理 • 外部ツールの呼び出し Chat Completions API 外部ツール LLM モデル ここら辺自前実装しなければいけない部分。

Slide 9

Slide 9 text

Microsoft Copilot Extensibility Copilots Instructions (Meta Prompt) Function Calling Code Interpreter Foundation models AI infrastructure Knowledge Retrieval Apps AI orchestration Assistants Stack Built-in safety system and responsible AI tools

Slide 10

Slide 10 text

with Assistants な世界で何かアシスタントを作るとしたら? Assistants API 外部ツール LLM モデル アシスタントに必要な機能を Assistants API が内包・抽象化している Assistant Thread Run Code Interpreter Function Calling Knowledge Retrieval

Slide 11

Slide 11 text

Assistants を作るにあたり必要な情報  アシスタントの名前  アシスタントへの指示 (instruction)  アシスタントの定義や目的  Completion API でいうところの System Message に近い役割  アシスタントが利用可能なツールのリスト  アシスタントが利用するモデル

Slide 12

Slide 12 text

Assistants API で取り扱うオブジェクト  Assistants API に固有のオブジェクトについて以下に列挙 オブジェクト名 説明 Assistant OpenAI のモデルに関する設定や利用可能なツールのリスト、利用するファイルなどを格納する箱 Thread アシスタントとユーザーの会話セッションのオブジェクト 会話は最大トークン長に収まるように自動的に切り捨てが行われる Message アシスタントもしくはユーザーによって作られたメッセージそのもののオブジェクト テキスト・画像・その他のファイルを含めることが可能 Run Thread からアシスタントを呼び出すためのオブジェクト Run に含まれる構成情報とメッセージを基に、Assistant はモデルとツールを実行する Run Step Assistant が Run で実行したステップの詳細リスト この中にアシスタントがどのように思考して最終的な結果に至ったかが含まれている

Slide 13

Slide 13 text

Assistants API が課題解決のために使うツール  Azure OpenAI にてホストされているツール  Code Interpreter  AOAI にホストされたサンドボックス環境で Python コードを実行可能  アシスタントにコードを自動生成させて結果を得ることも可能  ユーザーがアップロードしたファイルを Python コードで分析させて画像としてプロットするなどの用途も可能  Knowledge Retrieval  アップロードしたファイルをデータソースとして RAG (Retrieval Augmented Generation) を行う方法  外部の API  Function Calling  ReAct でいうところの “Reasoning” にあたるツール  ツールで指定した外部の API のリストの中から、ユーザーの目的を達するために必要なものの推論、選択、引数生成を実行  最終的な外部ツールの実行は Assistants API の機能の中にはない  ユーザー自身で API を叩いて、その結果をまた Assistants API に教える必要がある

Slide 14

Slide 14 text

Assistant の動作の例

Slide 15

Slide 15 text

自力で試してみるために必要な Azure リソース  (今のところ Assistants が有効化されている)特定リージョンの AOAI  米国東部 2、オーストラリア東部、スウェーデン中部  Assistant に対応した GPT モデルのデプロイメント  お勧めは GPT-4, GPT-3.5-turbo の 1106 モデル

Slide 16

Slide 16 text

Assistant Playground  Azure OpenAI Studio を開く  左側のメニューから「アシスタント(プレビュー)」を選択  ここで対応していないリージョンの AOAI だと警告画面に遷移する  その場合、対応したリージョンのデプロイメントに切り替える  アシスタントのセットアップとチャットの画面が開いたら OK

Slide 17

Slide 17 text

Assistant Playground の初期設定  アシスタント名  手順  ここに System Message にあたる指示を書く  デプロイ  ここで利用する GPT のモデルを選択  関数  ここで Function Calling の定義を追加  コードインタープリター  このチェックを有効化するとツールとして利用可能  ファイル  Assistant が使うファイルをアップロード

Slide 18

Slide 18 text

Code Interpreter を使ってみた例 TeX 形式で数式を入力し その清書を Code Interpreter に依頼 Code Interpreter が バックグラウンドでコード生成 入力された式が マクローリン展開の例であることを理解 式を最終的に清書して描画

Slide 19

Slide 19 text

Function Calling を使ってみた例 用意されている function の中で、 getCurrentWeather を呼べば 天気の情報が得られることを LLM が自動的に判断している

Slide 20

Slide 20 text

File Retrieval を使ってみた例 与えられた PDF の内容を要約している つまりファイルをDBにしたRAG的な動作

Slide 21

Slide 21 text

Assistants API の先にあるもの – マルチエージェント チャット Your Copilots Proxy Agent 出張予約用アシスタント 経費精算用アシスタント 名刺管理用アシスタント 旅行サイト API 経費精算 API 名刺管理API 来月の神戸出張 の予約をしたい

Slide 22

Slide 22 text

マルチエージェントを実装するための OSS  AutoGen  https://github.com/microsoft/autogen 複数のエージェントが相互接続するような LLMアプリケーションの開発を支援

Slide 23

Slide 23 text

Copilot を補強して複数の API にアクセスする 有用なデータを複数の形式で取得 複雑な計算とデータ解析の実行 ユーザーに代わって安全に行動する Assistants API 洗練されたステートフルアシスタントをより迅速に構築

Slide 24

Slide 24 text

Start building with Assistants today https://aka.ms/AOAIAssistants

Slide 25

Slide 25 text

1(.58) bit LLM の概念図 モデルの各パラメーターが (-1,0,1) だけで表現されている

Slide 26

Slide 26 text

1bit LLM を使うと嬉しいこと  浮動小数点演算 to 整数演算  行列の演算が加減算の処理のみで成立するようになる  CPU で行うにはコストの高い計算が不要になる  つまり GPU が不要となる可能性?!  値を高々 2bit で表現できるようになる  メモリー利用効率の向上 乗算回路 = シフト回路 + 加算回路 加算回路 = 単純な AND,OR,NOT で 構成可能な論理回路 加算回路だけで構成可能な LLM 専用ハードウェアの登場の可能性!?

Slide 27

Slide 27 text

1bit LLM のベンチマークスコアの例

Slide 28

Slide 28 text

1bit LLM のハードウェア効率

Slide 29

Slide 29 text

まとめ  まずは直近では、Assistants API を使ってみてください!  いっしょに YOUR Copilot 作りましょう!  今後の研究開発の進捗にもご注目ください!

Slide 30

Slide 30 text

© Copyright Microsoft Corporation. All rights reserved.