Slide 1

Slide 1 text

できる!つくれる! AI Agent Takashi Okawa Evangelist Microsoft Japan Co., Ltd.

Slide 2

Slide 2 text

Agentic AI の現状認識(個人の見解も含む)

Slide 3

Slide 3 text

AI Agent よくわからねぇ…

Slide 4

Slide 4 text

語弊を恐れずに “AI Agent” という言葉について語ってみる  営業・マーケティング的には…  技術者的には… それなりに「バズワード」化 価値創造の有力手段の一つ • 単純に LLM へ問い合わせをするだけのアプリも 「エージェント」と言い張れるような市場観 • おそらく、AI Agent の厳密な定義を求めることに あまり意味はない • 人間やシステムの能力やキャパシティを拡大する ための強力な選択肢が一つ増えた • マルチモーダル性、エラーへの堅牢性を高め、 LLM がビジネスに貢献するための具体的な方法 「AI 技術 お客様の業務課題」で、どのように価値提供を行っていくか? AI 技術の新しいパラダイムはあれど、「課題解決」の目的は変わらない

Slide 5

Slide 5 text

AI Agent にどこまで「よしなに」やってほしいのか? 明確な指示 抽象的な課題 タスク ジョブ Agent = 代理人 サポート : 情報検索、整理、アドバイス 「App Serviceでユーザー認証する方法を調べてほしい」 ドラフト作成 : ベータ版、初版の作成 「App Service でユーザー認証を説明するブログ記事の下書きを作って。 バズりそうなタイトルと目次、あと概要文と各章で書くべき内容を考えて。」 共同作業 : 提案、情報収集、対話を通じたゴール達成 人間 「●●の仕様を満たすアプリを作ってほしい。」 AI 「どんな画面構成にする?」 人間「青基調の UI で。アクセシビリティに配慮して。」 エージェント「こんな感じで作ってみました。」 自動生成 : ワークフローへの組み込みと外界への関与 人間 「運用中のアプリのセキュリティレビューをお願い。」 AI 「構成図とアクセス履歴を確認。攻撃の予兆あり。API キーを変えますか?」 人間「よろしく!」 完全自動化 : 人間の介入を抑えたエージェント駆動の世界 「アプリが遅いというクレームが多かったので、サーバーを増やしておきました。」

Slide 6

Slide 6 text

⚫アプリを実装できる人 ⚫分身をエージェントとして実装 ⚫定型的データ処理のエージェント化 ⚫自分の思考パターンのエージェント化 ⚫再利用可能な形に実装可能 ⚫社内ツールとして活用 ⚫社外に有償 API として提供 ⚫ 新規ビジネス創出 Agentic AI を活用するメリット ⚫一般の利用者 ⚫プロの知識をエージェントに借りる ⚫専門性の高い業務を、 自律型エージェントに任せる ⚫AI Agent の力を借りて、 自分の能力以上のことを達成する 誰かのナレッジをエージェント化して切り売りしたり 誰かの分身として使役したり 他のエージェントから再利用可能にする インターネット上/自社内/過去の自分・他人の 集合知を活用して 自分の能力以上の成果を得る 共創ラボの皆さんはこちら!

Slide 7

Slide 7 text

(エンドユーザーから見たときの)構築の難易度/カスタマイズの複雑性 高 Copilot組込型エージェント 外部エージェントとの連携 ビルトイン型エージェント サードパーティ型エージェント カスタマイズ型エージェント 一般ユーザー向け エージェント作成基盤 開発プロ向け エージェント作成基盤 多様なニーズとレベルにあわせた「売り方」「作り方」 Azure AI Foundry Copilot Studio Agents in Microsoft 365 低 高 リセール ビジネス ISV ビジネス SI ビジネス

Slide 8

Slide 8 text

Copilot Studio でエージェント 3 分クッキング!

Slide 9

Slide 9 text

Azure 技術情報 エージェントを 作ってみる!

Slide 10

Slide 10 text

「エージェントの作成」から開始

Slide 11

Slide 11 text

チャット形式でエージェントの設定を実施

Slide 12

Slide 12 text

No content

Slide 13

Slide 13 text

No content

Slide 14

Slide 14 text

社内情報参照 エージェントを 作ってみる!

Slide 15

Slide 15 text

「エージェントの作成」から開始

Slide 16

Slide 16 text

エージェント名入力 エージェントの説明入力 エージェントの挙動に関する 指示文を入力 参照先の SharePoint を選択

Slide 17

Slide 17 text

No content

Slide 18

Slide 18 text

No content

Slide 19

Slide 19 text

マルチエージェント開発フレームワーク : AutoGen

Slide 20

Slide 20 text

⚫全て人間が指示をするのは手間 ⚫自然言語で指示を出したい ⚫AI が自律的に動いてほしい ⚫AI 同士で協力してほしい ⚫エラーも自律的に解決してほしい 自律型マルチエージェント LLM を活用した 自律型エージェントへの ニーズが高まっている

Slide 21

Slide 21 text

AutoGen : マルチエージェント LLM アプリ フレームワーク … … … … … … … エージェントのカスタマイズ 対話型エージェント マルチエージェント間の会話 柔軟な会話パターン 共同チャット 階層型チャット

Slide 22

Slide 22 text

マルチエージェント対話の例 ユーザー入力受付と コードの実行を シェルで行う Agent コードを書いて問題を 解決する役割の 自律型 Agent Meta と Tesla の 株価の年次の動きを グラフでプロットして このコードを実行して! yfinance パッケージが 無いってエラーになるよ! ごめん!先に pip で yfinance を入れてから コードを実行して! インストールしてみる! パーセント軸で プロットしてほしいんだけど オーケー、それなら こっちのコードだね!

Slide 23

Slide 23 text

AutoGen Ecosystem - Framework  Core API  メッセージの受け渡し  イベント駆動型エージェント  ローカル及び分散ランタイム  .NET – Python クロス言語サポート  AgentChat API  Core の上位レイヤーとしてシンプルな API 提供  プリビルトエージェント  UserProxy, Assistant, GroupChat  ストリーミング、シリアライズ、メモリなどの新機能  Extensions API  ファーストパーティ/サードパーティの拡張機能  外部サービスとの統合や最新機能の実装

Slide 24

Slide 24 text

AutoGen Ecosystem – Developer Tools  AutoGen Studio  マルチエージェントアプリを構築するための GUI  ノーコード・ローコード  AutoGen Bench  エージェントのパフォーマンス評価用のベンチマーク スイート

Slide 25

Slide 25 text

AutoGen Ecosystem – Applications  Magnetic-One  AutoGen の Framework を利用して構築され た、マルチエージェントチーム  Web ブラウジング  ファイル処理  コードの実行  もちろん、自前アプリ構築も OK  Core, AgentChat, Extensions を活用

Slide 26

Slide 26 text

AutoGen (v0.4.x) を始めよう!  まずは venv を作成する  pip を利用してパッケージをインストール # Windows 環境であれば python3 を python と読み替える python3 -m venv .venv # Windows 環境であれば、 bin を Scripts に読み替える source .venv/bin/activate # autogen-agentchat をインストール pip install -U "autogen-agentchat“ # モデルクライアントのインストール pip install "autogen-ext[openai,azure]"

Slide 27

Slide 27 text

チュートリアルコード  シングルエージェント+ツールの例  モデルクライアントの定義  このサンプルは gpt-4o を利用する例  o1 を選択することも可能  Ollama でホストしたモデルも呼び出し可能  ツールの実装  サンプルは決め打ちでニューヨークの気温と天気を応答  本来であれば、このツール内で外部データソースを見たり  エージェントの実装  システムメッセージや利用可能なツールなどの設定  利用する LLM モデルの指定  async run_stream メソッド  指定したタスクでエージェントを実行  メッセージのストリームと最終タスクの結果を応答 from autogen_agentchat.agents import AssistantAgent from autogen_agentchat.ui import Console from autogen_ext.models.openai import OpenAIChatCompletionClient #モデルクライアントを定義します。 #'ChatCompletionClient' インターフェイスを実装している他のモデル クライアントを使用できます。 model_client = OpenAIChatCompletionClient( model="gpt-4o", # api_key="YOUR_API_KEY", ) #エージェントが使用できる単純な関数ツールを定義します。 #このサンプルは、デモ目的で決め打ちのニューヨークの天気を応答するだけの関数です。 async def get_weather(city: str) -> str: """Get the weather for a given city.""" return f"The weather in {city} is 73 degrees and Sunny." # モデル、ツール、システムメッセージ、リフレクションを有効にした AssistantAgent を定義します。 # システムメッセージは、自然言語でエージェントに指示します。 agent = AssistantAgent( name="weather_agent", model_client=model_client, tools=[get_weather], system_message="You are a helpful assistant.", reflect_on_tool_use=True, model_client_stream=True, # Enable streaming tokens from the model client. ) # エージェントを実行し、メッセージをコンソールにストリーミングします。 async def main() -> None: await Console(agent.run_stream(task="What is the weather in New York?")) # 注: これを Python スクリプト内で実行する場合は、asyncio.run(main()) を使用する必要があります。 await main()

Slide 28

Slide 28 text

AutoGen v0.4.x 系ことはじめ  AgentChat が最初はおススメ  Core の方が細かいこと弄れる分難しめ  AgentChat で定義する項目  モデルクライアント  AOAI?  Ollama でセルフホスト?  それぞれのエージェント  どんなシステムプロンプト?  エージェントが使えるツール  Python の関数として定義  エージェントのチームのスタイル  寄ってたかって形式?  順番に発話形式? model_client = AzureOpenAIChatCompletionClient(モデルの設定) caspar = AssistantAgent( "caspar", model_client=model_client, system_message=("あなたは、自律型意思決定システムのひとつのエージェントです。" "あなたは、女性としての人格を持ち、女性の視点から物事を考えます。" "あなた自身の考えが大切なので、judge 以外のエージェントの意見は聞かないようにしてください。" "あなたの意見を述べたうえで、最終的に「賛成」か「反対」か一択で回答してください。"), ) melchior = AssistantAgent(エージェントの設定割愛) balthazar = AssistantAgent(エージェントの設定割愛) conclusion = AssistantAgent(エージェントの設定割愛) judge = AssistantAgent(エージェントの設定割愛) text_termination = TextMentionTermination("APPROVE") team = RoundRobinGroupChat([caspar,melchior,balthazar,conclusion,judge], termination_condition=text_termination) async def main() -> None: await team.reset() await Console(team.run_stream(task=“エージェントに任せるタスク")) asyncio.run(main())

Slide 29

Slide 29 text

AutoGen Studio - ローコード・ノーコード版 AutoGen

Slide 30

Slide 30 text

AutoGen Studio のはじめかた  インストールが必要なもの  Python 3.xx  AutoGen Studio の動作に必要  Node.js  Playwright のセットアップに必要  Playwright  ブラウザーの自動操作に必要  準備が必要なもの  Azure OpenAI の以下のモデルデプロイ  GPT-4o  GPT-4o-mini  インストール手順 (Windows) # venv 作成 python -m venv .venv .venv¥Scripts¥activate # Autogen Studio インストール pip install -U autogenstudio # Playwright インストール # 色々聞かれるのは全部 Enter で OK npm init playwright@latest npx playwright install # AutoGen Studio 起動 autogenstudio ui --port 8081

Slide 31

Slide 31 text

Demo : AutoGen Studio で Browser Use っぽいこと

Slide 32

Slide 32 text

エージェントに指示を与えると 実行が開始される

Slide 33

Slide 33 text

Playwright 経由でブラウザが自動操作され タスクの完了のための操作を実行

Slide 34

Slide 34 text

こんな感じで、マウス操作も 自動で実行される

Slide 35

Slide 35 text

いい感じのページを見つけたので LLM にこのページのスクリーンショットを送る

Slide 36

Slide 36 text

実行ステップと途中出力は AutoGen Studio 側に記録されている

Slide 37

Slide 37 text

エージェントがブラウザを操作して情報収集して、 考えをまとめた結果がこんな感じ!

Slide 38

Slide 38 text

参考情報 : LLM はこうやってブラウザーを見ている

Slide 39

Slide 39 text

No content

Slide 40

Slide 40 text

No content

Slide 41

Slide 41 text

No content

Slide 42

Slide 42 text

No content

Slide 43

Slide 43 text

AutoGen / AutoGen Studio で使える、 開発者にもうれしい機能

Slide 44

Slide 44 text

LLM のコーディング能力を活用する!  CodeExectorAgent  メッセージ内でマークダウンされたコードを実行  複数のコードがあったら実行順はメッセージの上から順  コード実行環境  autogen_ext.code_executors.local  ローカル環境を使うため、生成されたコードに脆弱性があると危険  autogen_ext.code_executors.jupyter  ローカル環境を使うため、生成されたコードに脆弱性があると危険  autogen_ext.code_executors.docker  Docker Container をセキュリティサンドボックスにする  利用する Docker Image は自分のオリジナルのものでも良い  autogen_ext.code_executors.azure  Azure Container Apps に動的にコンテナを生成してコード実行 code_executor = DockerCommandLineCodeExecutor(work_dir="coding") await code_executor.start() code_executor_agent = CodeExecutorAgent( "code_executor", code_executor=code_executor ) coder = AssistantAgent( "coder", model_client=model_client, system_message=“コーダーの設定”), ) text_termination = TextMentionTermination("TERMINATE") termination = text_termination team = RoundRobinGroupChat( [coder, code_executor_agent], termination_condition=termination ) task = "Microsoft の創業以来の株価の推移をグラフにして表示する コードを生成してください。" await Console(team.run_stream(task=task))

Slide 45

Slide 45 text

実はブラウザの操作、コードからも出来ます!  MultimodalWebSurfer  AutoGen Extensions に含まれる機能の一つ  Web ブラウザを自律的に操作  バックエンドのエンジンは Playwright  ヘッドレスモードも、ブラウザUI表示も可能  デバッグ機能としてスクリーンショットの取得も可能 import asyncio from autogen_agentchat.ui import Console from autogen_agentchat.teams import RoundRobinGroupChat from autogen_ext.models.openai import OpenAIChatCompletionClient from autogen_ext.agents.web_surfer import MultimodalWebSurfer async def main() -> None: # Define an agent web_surfer_agent = MultimodalWebSurfer( name="MultimodalWebSurfer", model_client=OpenAIChatCompletionClient(model="gpt-4o-2024-08-06"), ) # Define a team agent_team = RoundRobinGroupChat( [web_surfer_agent], max_turns=3 ) # Run the team and stream messages to the console stream = agent_team.run_stream( task="Navigate to the AutoGen readme on GitHub.“ )] await Console(stream) # Close the browser controlled by the agent await web_surfer_agent.close() # Run Agent asyncio.run(main())

Slide 46

Slide 46 text

Phi-4 シリーズはAutoGen 対応か?  Ollama 経由、もしくは Azure AI Foundory 経由で利用可能  ただし、AutoGen Studio の多くの機能は “Function Calling” に依存する  補足  Phi-4 だけでなく、OpenAI 互換の API を持った LLM は接続可能なはず  Phi-4 と同様に、Function Calling が使えるモデルがおススメと思われる 現状まとめ Phi-4-mini / Phi-4-multimodal は Function Calling に対応 Phi-4 は Function Calling に非対応 結論 Function Calling が不要なら、賢い Phi-4 を選ぶといい感じ Function 関連のエラーになったらPhi-4-mini / Phi-4-multimodal を利用すると良さげ ただし、今のところ Ollama 側の Prompt Template がバグってて Tool が呼べない

Slide 47

Slide 47 text

AutoGen で SLM を呼び出すには?  モデルの定義部分を差し替える!(逆に言えば、これだけ!) # Azure OpenAI Base のモデル model_client = AzureOpenAIChatCompletionClient( azure_endpoint=os.getenv("ENDPOINT"), api_key=os.getenv("API_KEY"), api_version=os.getenv("API_VERSION"), model=os.getenv("MODEL") ) # Ollama でホストされた Phi-4 model_client = OpenAIChatCompletionClient( api_key="plaseholder_but_not_used", model="phi4", base_url="http://localhost:11434/v1", temperature=0.7, max_tokens=1024, model_info={ "json_output": False, "function_calling": False, "vision": False, "family": "unknown", }, ) ここで、Function Calling に対応したモデルか、 画像入力に対応したモデルか、など、 モデルの機能性について json で定義する。

Slide 48

Slide 48 text

まとめ

Slide 49

Slide 49 text

(エンドユーザーから見たときの)構築の難易度/カスタマイズの複雑性 高 Copilot組込型エージェント 外部エージェントとの連携 ビルトイン型エージェント サードパーティ型エージェント カスタマイズ型エージェント 一般ユーザー向け エージェント作成基盤 開発プロ向け エージェント作成基盤 ローコード・ノーコードから AI Agent は始められる! Azure AI Foundry Copilot Studio Agents in Microsoft 365 低 高 リセール ビジネス ISV ビジネス SI ビジネス

Slide 50

Slide 50 text

どのツールを使うかよりは、どんなことをやらせるか? 明確な指示 抽象的な課題 タスク ジョブ Agent = 代理人 サポート : 情報検索、整理、アドバイス 「App Serviceでユーザー認証する方法を調べてほしい」 ドラフト作成 : ベータ版、初版の作成 「App Service でユーザー認証を説明するブログ記事の下書きを作って。 バズりそうなタイトルと目次、あと概要文と各章で書くべき内容を考えて。」 共同作業 : 提案、情報収集、対話を通じたゴール達成 人間 「●●の仕様を満たすアプリを作ってほしい。」 AI 「どんな画面構成にする?」 人間「青基調の UI で。アクセシビリティに配慮して。」 エージェント「こんな感じで作ってみました。」 自動生成 : ワークフローへの組み込みと外界への関与 人間 「運用中のアプリのセキュリティレビューをお願い。」 AI 「構成図とアクセス履歴を確認。攻撃の予兆あり。API キーを変えますか?」 人間「よろしく!」 完全自動化 : 人間の介入を抑えたエージェント駆動の世界 「アプリが遅いというクレームが多かったので、サーバーを増やしておきました。」

Slide 51

Slide 51 text

これからの IT エンジニアの役割ってたぶんこうなる 業務知識、課題、データ IT スキル、既存システム、 AI 技術 自律性(汎用性が高い) > ビジネス観点からの継続的評価やフィードバック 専門性が高い > 多数のエージェントと自動化ワークフローの監視 ビジネスユーザー (お客様) IT エンジニア (みなさん!) お客様のビジネス課題や知識の言語化を支援し、システムに載せる能力 お客様固有のデータや情報について理解し、その活用方法を提案する能力 お客様と対話・協業し、信頼を得て、必要な知識をお客様から得る能力 お客様の会社に AI を活用する土壌を耕す能力

Slide 52

Slide 52 text

「業務にAI を活用する土壌」って何? AI を使った働き方改革は、従業員ひとりひとりの意識や評価のされ方と表裏一体 ・イノベーター ・オピニオンリーダー ・意識高ユーザー 全体の30% ・マジョリティ ・レイトマジョリティ ・ラガード 革新的 伝統主義 フラット 業務・人材・仕組みを変えていく 「革新的」なユーザーが AI を使った結果として不利益を被るような評価制度や業務体制は避けるべき AI の浸透にあたって良くないと思われる企業文化の例 • 仕事が早く終わった分、他の AI を使っていない人の仕事を押し付けられる • 時給制度で給与が決定されており、ダラダラと仕事をした方が得 • AI を使って作った成果物に「お気持ち」でいちゃもんを付けられる 時給 業務インパクト 自分の成果 他人への貢献 どれだけ頑張ったか どれだけ貢献したか 残業は頑張り 残業は基本ナシ でも社内からはこういうことを言いにくい…。 ならば、社外の協力者から提案してみては?

Slide 53

Slide 53 text

AI Agent は 簡単に始められる! お客さんと一緒に 楽しみながら やりやすい方法で 小さく始めて 良い効果を生み出し 更に大きな案件を!

Slide 54

Slide 54 text

© Copyright Microsoft Corporation. All rights reserved.