Upgrade to Pro — share decks privately, control downloads, hide ads and more …

Microsoft_20250311_できるつくれるAIAgent.pdf

 Microsoft_20250311_できるつくれるAIAgent.pdf

More Decks by AIxIoTビジネス共創ラボ

Other Decks in Technology

Transcript

  1. 語弊を恐れずに “AI Agent” という言葉について語ってみる  営業・マーケティング的には…  技術者的には… それなりに「バズワード」化 価値創造の有力手段の一つ

    • 単純に LLM へ問い合わせをするだけのアプリも 「エージェント」と言い張れるような市場観 • おそらく、AI Agent の厳密な定義を求めることに あまり意味はない • 人間やシステムの能力やキャパシティを拡大する ための強力な選択肢が一つ増えた • マルチモーダル性、エラーへの堅牢性を高め、 LLM がビジネスに貢献するための具体的な方法 「AI 技術 お客様の業務課題」で、どのように価値提供を行っていくか? AI 技術の新しいパラダイムはあれど、「課題解決」の目的は変わらない
  2. AI Agent にどこまで「よしなに」やってほしいのか? 明確な指示 抽象的な課題 タスク ジョブ Agent = 代理人

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

    新規ビジネス創出 Agentic AI を活用するメリット ⚫一般の利用者 ⚫プロの知識をエージェントに借りる ⚫専門性の高い業務を、 自律型エージェントに任せる ⚫AI Agent の力を借りて、 自分の能力以上のことを達成する 誰かのナレッジをエージェント化して切り売りしたり 誰かの分身として使役したり 他のエージェントから再利用可能にする インターネット上/自社内/過去の自分・他人の 集合知を活用して 自分の能力以上の成果を得る 共創ラボの皆さんはこちら!
  4. AutoGen : マルチエージェント LLM アプリ フレームワーク … … … …

    … … … エージェントのカスタマイズ 対話型エージェント マルチエージェント間の会話 柔軟な会話パターン 共同チャット 階層型チャット
  5. マルチエージェント対話の例 ユーザー入力受付と コードの実行を シェルで行う Agent コードを書いて問題を 解決する役割の 自律型 Agent Meta

    と Tesla の 株価の年次の動きを グラフでプロットして このコードを実行して! yfinance パッケージが 無いってエラーになるよ! ごめん!先に pip で yfinance を入れてから コードを実行して! インストールしてみる! パーセント軸で プロットしてほしいんだけど オーケー、それなら こっちのコードだね!
  6. AutoGen Ecosystem - Framework  Core API  メッセージの受け渡し 

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

    GUI  ノーコード・ローコード  AutoGen Bench  エージェントのパフォーマンス評価用のベンチマーク スイート
  8. AutoGen Ecosystem – Applications  Magnetic-One  AutoGen の Framework

    を利用して構築され た、マルチエージェントチーム  Web ブラウジング  ファイル処理  コードの実行  もちろん、自前アプリ構築も OK  Core, AgentChat, Extensions を活用
  9. 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]"
  10. チュートリアルコード  シングルエージェント+ツールの例  モデルクライアントの定義  このサンプルは 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()
  11. 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())
  12. 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
  13. 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))
  14. 実はブラウザの操作、コードからも出来ます!  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())
  15. 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 が呼べない
  16. 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 で定義する。
  17. どのツールを使うかよりは、どんなことをやらせるか? 明確な指示 抽象的な課題 タスク ジョブ Agent = 代理人 サポート :

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

    ビジネス観点からの継続的評価やフィードバック 専門性が高い > 多数のエージェントと自動化ワークフローの監視 ビジネスユーザー (お客様) IT エンジニア (みなさん!) お客様のビジネス課題や知識の言語化を支援し、システムに載せる能力 お客様固有のデータや情報について理解し、その活用方法を提案する能力 お客様と対話・協業し、信頼を得て、必要な知識をお客様から得る能力 お客様の会社に AI を活用する土壌を耕す能力
  19. 「業務にAI を活用する土壌」って何? AI を使った働き方改革は、従業員ひとりひとりの意識や評価のされ方と表裏一体 ・イノベーター ・オピニオンリーダー ・意識高ユーザー 全体の30% ・マジョリティ ・レイトマジョリティ

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