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

LLM拡張解体新書/llm-extension-deep-dive

 LLM拡張解体新書/llm-extension-deep-dive

2025/7/16に行われた、OCHaCafe Season10 #2 で用いた資料です。
https://ochacafe.connpass.com/event/357868/

Avatar for oracle4engineer

oracle4engineer

July 16, 2025
Tweet

More Decks by oracle4engineer

Other Decks in Technology

Transcript

  1. LLM 拡張解体新書 生成 AI 時代を生き残れ…!! Principal Cloud Engineer Oracle Corporation

    Japan, Cloud Product Unit Jul 16th, 2025 Takuya Niita Oracle Cloud Hangout Café Season10 #2
  2. Principal Cloud Engineer Oracle Corporation Japan Takuya Niita 2 Copyright

    © 2025, Oracle and/or its affiliates • AppDev/Container/FaaS/(a little)ML…(GPU) • a member of Oracle Cloud Hangout Café • a member of Oracle Groundbreakers Advocate • ex-SIer • Since Joined Oracle: 6年 • Ghibli is my life takuya_0301
  3. Agenda 3 Copyright © 2025, Oracle and/or its affiliates 1

    2 3 4 5 6 大規模言語モデル(LLM)の登場とその課題 LLM 拡張① – Retrieval-Augmented Generation(RAG) LLM 拡張②-1 – Function Calling / Tool Use LLM 拡張②-2 – Model Context Protocol(MCP) LLM 拡張②-3 – Agent2Agent(A2A) まとめ 検索拡張 エージェント指向拡張
  4. 大規模言語モデル (Large Language Model) 5 Copyright © 2025, Oracle and/or

    its affiliates 大量のテキスト 大規模言語モデル (LLM) テキスト分類 文書要約 質問応答 ・ ・ ・ 大規模言語モデル (LLM) • 非常に巨大なデータセットとディープラーニング技術を用いて構築された言語モデル(後述) • OpenAI 社が 2018 年に発表した GPT などが該当する • 具体的には Transformer(後述) が構成要素として用いられている • 人間に近い会話が可能であり、自然言語を用いたさまざまな処理や分析が可能 • チャットなどの対話形式で誰でも使える形になったことも大きい
  5. 【参考】言語モデル (Language Model) 言語モデル (LM) • 人間が利用する言語のパターンや意味を理解し、翻訳やテキスト生成を行う • Word2Vec などが該当する[1]

    • 大量のテキストデータから学習し、単語の出現確率や文脈を分析することで自然な文章を生成する • 機械学習文脈で言えば、統計的手法で次の単語を予測する確率モデル[2] • 大規模言語モデルは「計算量」「学習データ量」「パラメータ数」を大幅に増やして(大規模)構築したもの[3] [4] [1]: 厳密には埋め込み(後述)手法 [2]: ランダム性や不確実性の高い現象を確率の観点から表現し、数学的にモデル化したもの(論理的な根拠(因果関係)はない) [3]: 「大規模」の基準となる具体的な指標はない [4]: 大規模言語モデルの名称では、 パラメータ数をモデル名称に含めている場合もある e.g. Mistral AI社の mistralai/Mistral-7B-v0.1 etc… 6 Copyright © 2025, Oracle and/or its affiliates あなたの好きな食べものは? ハンバーグ カレーライス 〆のラーメン オムライス ブロッコリー 35% 25% 7% 30% 3% 次に来る単語は…?? ※数字は確率
  6. 【参考】Transformer 7 Copyright © 2025, Oracle and/or its affiliates Transformer

    • ディープラーニング領域での自然言語処理で利用される学習モデル(ニューラルネットワーク) • 2017年に発表された”Attention Is All You Need”という自然言語処理に関する論文の中で初めて登場 • 文中に含まれるそれぞれの単語が、他の各単語とどれくらい関係しているかを判断し(Self-Attention)、離れた位置にある単語との 関係性も適切に扱えるように(ベクトルを利用し、関連度を判断) • いわゆる「文脈」を理解するということが可能になった Vaswani, A. et al.(2017) Attention Is All You Need から引用 OCHaCafe は非常に勉強になるコミュニティイベントだ。 OCHaCafe は 非常 に 勉強 に なる コミュニティ イベント だ 。 次に続くのは・・・ OCHaCafe なぜなら コミュニティ エンジニア ・・・ 確率分布で予測 形態素解析 ベクトル化 → Attention による文脈理解
  7. 【参考】Transformer 8 Copyright © 2025, Oracle and/or its affiliates 動画:

    https://www.youtube.com/watch?v=mMFv3nVCLg8 Qiita: https://qiita.com/ksonoda/items/b767cbd283e379303178
  8. 【参考】マルチモーダル大規模言語モデル (Multimodal Large Language Model) マルチモーダル大規模言語モデル (MLLM) • 2023 年以降に登場したテキストや画像、動画など複数種類(モダリティ)の情報を処理できるモデル

    • e.g. GPT-4, Gemini… • 以下のようなメリットを背景に開発されたもの 1. 医療や建築など、テキストでは扱いきれない視覚情報を LLM で利用できる e.g. 自動運転 2. ユーザからのインプット/アウトプットの幅が格段に広がる e.g. 録音した会議をテキスト化する • MLLMによる LLM のユースケース拡大が期待される • 今後のAIエージェント時代にも有用 9 Copyright © 2025, Oracle and/or its affiliates https://x.gd/lc8Ws から引用 MLLM インプット/アウトプットの バリエーションが無限大…!?
  9. LLM のユースケース LLM のユースケース例 • コンテンツ作成: ブログ記事、報告書、SNS 投稿のコンテンツ作成 • 翻訳:

    LLM の持つニュアンスや文脈を理解する能力と複数言語を理解する能力を組み合わせる • 会話型検索/チャットボット: 質問応答としての利用。拡張手法の一つである RAG(後述) はこの領域で多用される • ドキュメントの理解: 文字起こしや文章の要約を行う。MLLM の場合は、会議の録音した音声からの文字起こしも可能 • AIコーディング(Vibe Coding): LLM を活用して自然言語で指示を出し、コードを生成・開発を進めるコーディングスタイル • 特定ドメインでの活用: RAG や ファインチューニング(後述) により医療や銀行業務などの特定領域に特化したタスク実行が可能 10 Copyright © 2025, Oracle and/or its affiliates https://arxiv.org/pdf/2303.18223v10 から引用
  10. プロンプトエンジニアリング プロンプトエンジニアリング • 生成 AI (not only LLM) に適切な指示を与えることで目的の出力を生成させること •

    この言葉により「プロンプトエンジニア」というロールもできるほど • できた当時は揶揄されることも多かった • 今では多岐にわたる手法 (後述) が開発され、生成 AI から最良の結果を引き出すために様々なテンプレートやスクリプトが存在 • LLM に関しては O‘Reilly からプロンプトエンジニアリング本が出版されるほどの領域になっている 11 Copyright © 2025, Oracle and/or its affiliates https://www.oreilly.co.jp/books/9784814401130/ このセッションについてどう思いますか? いずれかで評価してください。 「勉強になった」 「どちらでもない」 「無駄な時間だった」 「勉強になった」
  11. プロンプトエンジニアリングの手法例 手法例 • N-Shot: LLM にインプットする際にいくつかの例を示す • 比較として何も行わない場合の Zero-Shot、1つだけ例示する One-Shot、複数例示する

    Few-Shot がある • Chain of Thought(CoT): 思考の過程をプロンプトに入力する(特にパラメータ数が 100 Bを超える大規模モデルに有効) 12 Copyright © 2025, Oracle and/or its affiliates prompt = """ Q:太郎君は Database を 5 インスタンス持っている。彼はさらにインスタンスが 3 個入ったドラム缶を 2 つ買った。 彼は今何個のインスタンスを持っていますか? A:11個 Q:太郎君は Database を 10 インスタンス持っている。彼はさらにインスタンスが 5 個入ったドラム缶を 2 つ買った。 彼は今何個のインスタンスを持っていますか? A: """ prompt = """ Q:太郎君は Database を 5 インスタンス持っている。彼はさらにインスタンスが 3 個入ったドラム缶を 2 つ買った。 彼は今何個のインスタンスを持っている? A:太郎君は 5 インスタンスの Database をはじめに持っていました。Database インスタンス 3 個入りのドラム缶を 2 つ買うと、インスタンスは 6 個になります。つまり、5 + 6 = 11 で答えは 11 インスタンスです。 Q:太郎君は Database を 10 インスタンス持っている。彼はさらにインスタンスが 5 個入ったドラム缶を 2 つ買った。 彼は今何個のインスタンスを持っていますか? A: """
  12. 【再掲】LLM のユースケース LLM のユースケース例 • コンテンツ作成: ブログ記事、報告書、SNS 投稿のコンテンツ作成 • 翻訳:

    LLM の持つニュアンスや文脈を理解する能力と複数言語を理解する能力を組み合わせる • 会話型検索/チャットボット: 質問応答としての利用。拡張手法の一つである RAG(後述) はこの領域で多用される • ドキュメントの理解: 文字起こしや文章の要約を行う。MLLM の場合は、会議の録音した音声からの文字起こしも可能 • AIコーディング(Vibe Coding): LLM を活用して自然言語で指示を出し、コードを生成・開発を進めるコーディングスタイル • 特定ドメインでの活用: RAG や により医療や銀行業務などの特定領域に特化したタスク実行が可能 13 Copyright © 2025, Oracle and/or its affiliates https://arxiv.org/pdf/2303.18223v10 から引用 ファインチューニング
  13. ファインチューニング(FT) ファインチューニング (FT) • 学習済みモデル(LLM含)を別のデータセットを利用して特定のタスクやユースケースに合わせて調整するプロセス • LLM の登場より以前から、特定タスクに最適化し精度向上の一つとして知られている • 新たな知識を習得させたり、特定のドメイン領域の知識に特化させたりするために利用

    • OpenAI 社のドキュメント[1]では、3つの手法が存在(+ 画像入力の手法もあるが、SFT とほぼ同じため割愛) • SFT (Supervised fine-tuning): プロンプトに対する正解の応答を提供してモデルの挙動を導く(大量データを利用した”恒久的な N-Shot” に近い) • Instruction Tuning とも呼ばれる • DPO (Direct preference optimization):プロンプトに対して、正解と不正解の両方の例文を入力しパフォーマンスを上げる • RFT (Reinforcement fine-tuning): プロンプトに対する回答を生成し、その結果に対して専門家による採点を行いモデルの思考 の連鎖を強化(高度な推論が要求される Reasoning モデルに有効)。いわゆる「強化学習」のこと。 • Reinforcement Learning from Human Feedback (RLHF) が有名 [1]: https://platform.openai.com/docs/guides/fine-tuning 14 Copyright © 2025, Oracle and/or its affiliates {“prompt”: ”OCHaCafeとは何ですか?“, ”completion“: ”OCHaCafeは、オープンス タンダードなテクノロジーにフォーカスした勉強会です。"} {“prompt”: ”OCHaCafeの初回開催日はいつですか?“, ”completion“: ”OCHaCafeの 初回開催日は 2018/12/20 です。"} 大規模言語モデル (LLM)
  14. Retrieval-Augmented Generation(RAG) Retrieval-Augmented Generation(RAG) • 外部ソースから取得した情報を用いて、LLM の回答精度を向上させる手法 • 具体的には回答生成時に自身以外のナレッジベースを参照することによって回答内容の質を高める •

    ファインチューニングなどの複雑な手法を実施することなく、回答生成時のソースを特定のドメインや組織内部のナレッジベース から検索し、拡張し、回答を生成( ≠ 学習) 18 Copyright © 2025, Oracle and/or its affiliates 大規模言語モデル (LLM) ユーザ UI アプリケーション ナレッジベース (RDBMS, Object Storage…) ④回答出力 ②検索 ③検索結果を付加して 回答生成(拡張) ①プロンプト入力
  15. ③検索結果を付加して 回答生成(拡張) ④回答出力 ①プロンプト入力 Retrieval-Augmented Generation(RAG) Retrieval-Augmented Generation(RAG) • 外部ソースから取得した情報を用いて、LLMの回答精度を向上させる手法

    • 具体的には回答生成時に自身以外のナレッジベースを参照することによって回答内容を最適化 • ファインチューニングなどの複雑な手法を実施することなく、回答生成時のソースを特定のドメインや組織内部のナレッジベース から検索し、拡張し、回答を生成( ≠ 学習) 19 Copyright © 2025, Oracle and/or its affiliates 大規模言語モデル (LLM) ユーザ UI アプリケーション ナレッジベース (RDBMS, Object Storage…) ②検索 このナレッジベースの多様な情報を どうやってLLMに認識させるの?
  16. RAG を支える技術 • 埋め込み(ベクトル埋め込み/ Embedding) • テキスト、画像、音声などの多様なデータを LLM に渡す前の検索用内部表現としてベクトル形式に変換すること •

    RAG において埋め込みは必須ではないが(キーワードマッチ、BM 25 でもOK) 、以下の観点から利用しやすい/されやすい • 入力されたプロンプトとの文脈的/意味的関連性が把握しやすい • データの次元圧縮が容易(結果的には効率的なトークン数/文字数で扱うことができる、LLM の文脈長制限にも対処) • 埋め込み用モデル(Embedding Model)を利用 • ベクトルデータベース • ベクトル形式(数値の配列)でデータを格納し、管理できるデータストア(元のテキスト、画像、動画なども一緒に保持する) • 純粋にベクトルデータとして検索し、アプリケーションから利用することもできる(類似性検索) RAG を支える技術 – 埋め込み/ベクトルデータベース 20 Copyright © 2025, Oracle and/or its affiliates 前ページの絵をより正確に書くと・・・ ユーザ UI アプリケーション ベクトル データベース 大規模言語モデル (LLM) 前処理 埋め込み 埋め込み用 大規模言語モデル (LLM) ナレッジベース ③プロンプト入力 ⑥回答出力 ④検索 ① ② ⑤検索結果を 付加して回答生成
  17. RAG を支える技術 • セマンティック検索 • 入力されたテキストやキーワードの一致だけではなく、その意味や文脈を踏まえた上で検索結果を提供する仕組み • ベクトル検索はセマンティック検索の一種 • 意味や文脈の理解のために前述した”ベクトル埋め込み”と”ベクトルデータベース”を利用して検索を行う

    • ベクトルデータによる意味や文脈の理解に LLM を利用する • “セマンティック検索” + “全文検索”を組み合わせたハイブリッド検索という手法も存在 • Reciprocal Rank Fusion(RRF) という検索スコア評価法が有名 • リランク • 一度検索した結果を再評価して精度を高める手法 • セマンティック検索はデータ量や計算が膨大なので、ある程度関連性が高い結果からランダムに抽出して返す場合が多い • 精度とパフォーマンス(レイテンシ)のトレードオフ • 得られた結果から再度関連性が高い順にソートして結果を返す • リランク用のモデル(リランカーモデル)が存在 21 Copyright © 2025, Oracle and/or its affiliates RAG を支える技術 – セマンティック検索, リランク
  18. モデル精度以外でのRAG のチューニング – Chunk、オーバーラップ RAG のチューニング • Chunk(チャンク) • 情報を処理可能な単位に分割したデータのまとまり(単語数)

    • LLM 文脈だと単一の文や一段落の文などになることが多い • この単位が適切であれば、モデルが文脈を理解しやすくなり、精度が向上する • ツイートなどの短文を扱うのか、書籍や記事などの長文を扱うのかによって適切なサイズは変化 • 通常はアプリケーション、チャットボットライクなUIの場合は、画面上のパラメータなどで指定することが可能 • オーバーラップ • 隣り合うチャンクが一部重なるように分割すること • 重要な情報がチャンクの境界で切り捨てられないようにすることが目的 • パーセンテージで設定するのが一般的 • Microsoft 社の記事では チャンクサイズ 512、オーバラップ 25 % が適切という記事も[1](英語の場合) [1]: https://techcommunity.microsoft.com/blog/azure-ai-services-blog/azure-ai-search-outperforming-vector-search-with-hybrid-retrieval-and-reranking/3929167#toc-hId--537705592 22 Copyright © 2025, Oracle and/or its affiliates OCHaCafe は非常に勉強になるコミュニティイベントだ。| なぜなら、 チャンク1 チャンク2 オーバーラップ
  19. 【参考】Graph RAG Graph RAG • LLMを用いて、プロンプトからクエリ(Graph Databaseへ検索をするクエリ)を生成して、検索、文章生成をする RAG 手法 •

    データ間の関連性を表現し、複雑な知識の検索を実現するというGraph DBの性質を利用(トレーサビリティが高い) 23 Copyright © 2025, Oracle and/or its affiliates 動画: https://youtu.be/oh_NvyMS1n4 Deck: https://speakerdeck.com/oracle4engineer/graph-database-to-generative-ai-nosu-di-naguan-xi
  20. Agentic RAG(エージェント型 RAG) Agentic RAG (エージェント型 RAG) • エージェント(意思決定を持った処理分岐など)を追加することでユーザの質問内容に応じて動的に適応性と精度を向上させた RAG

    • 以下は”シングルエージェント”パターン。他にも”マルチエージェント”や”階層型エージェント”など数種類存在 24 Copyright © 2025, Oracle and/or its affiliates 大規模言語モデル (LLM) 前処理 埋め込み 前処理 埋め込み ベクトル データベース ナレッジベース ナレッジベース 社内ルールや社内 ドキュメントなど の内部情報 業務知識や 業界標準の 一般的な情報 ベクトル データベース ③プロンプト入力 ① ① ② ② ⑤検索結果を 付加して回答生成 ⑥回答出力 リモートワークに関する社内 規則を教えて リモートワークに関する法的 な労務管理を教えて ④ ④ プロンプトの内容に 応じて適切な ベクトルストアを検索 アプリケーション (エージェント)
  21. RAG の評価 – RAGAs, LettuceDetect RAGAs (Retrieval Augmented Generation Assessment)

    • Python 向けの OSS ライブラリ • https://github.com/explodinggradients/ragas • 主に以下の観点でそれぞれ、0 ≦ (精度) ≦ 1の範囲で定量的に評価(他にも観点は存在) • 文脈の適合度(Context Precision): コンテキスト内に存在する正解の関連チャンクが高順位にランク付けされているかどうか • 応答の正確性(Answer Correctness): 生成された回答が元の質問にどれだけ適切であるか • 信頼性(Faithfulness) : 生成された回答が与えられた文脈とどれだけ事実的に一致しているか • テストデータを生成し(LLM を利用したテストデータでも可) 、評価用 LLM を利用して評価を実施 • 他の LLM を利用して対象 LLM の評価を行う LLM-as-a-judge[1] と呼ばれるフレームワークの一つ [1]: 評価対象と評価用の LLM は別にする LettuceDetect • LLM-as-a-judge の LLM のバイアスや正確性に依存してしまうという課題を解決するために開発された比較的新しい評価手法 • “ModernBERT” という言語モデルに “RAGTruth” という RAG 評価専用の正解ラベル付きデータを利用して FT したモデルを利用 • https://github.com/KRLabsOrg/LettuceDetect • 主に Precision(適合率)、Recall(再現率)、F1 Score で評価(0 ≦ (精度) ≦ 1) 25 Copyright © 2025, Oracle and/or its affiliates
  22. RAG の周辺コンポーネント 26 Copyright © 2025, Oracle and/or its affiliates

    動画: https://youtu.be/dDenmzq7uBM Deck: https://speakerdeck.com/oracle4engineer/ecosystem-of-llm
  23. RAG で実現できること 27 Copyright © 2025, Oracle and/or its affiliates

    🧐 RAG で社内のリソース検索やドキュメントの サマリなんかもやってくれそう…!! でも、“AI” なんだから経費精算とか出張申請 もやってほしいな… Function Calling/Tool Use
  24. Function Calling / Tool Use Function Calling / Tool Use

    • LLM から 事前に定義した関数 (Function / Tool) を呼び出す (Calling / Use) ことで、LLM の機能を拡張する仕組み • 関数 (Function / Tool) の呼び出しは原則クライアントアプリケーションに委ねられている • 外部のデータソースや API と連携可能になり、格段にユースケースが広がる • 昨今の “AI エージェント” という概念も、この機能の登場によって広まったところが大きい • OpenAI 社では Function Calling、Anthropic 社では Tool Use と呼ばれる • OpenAI 社が 2023 年 に発表し、 Anthropic 社が 2024 年に Tool Use を発表している • 一般的に Tool Use の方が複数 Tools 呼び出しなど柔軟性がある。今の OpenAI 社の提供インタフェースも Tool Use に近い • 最近リリースされた LLM アプリに組み込まれている Web 検索などもこの仕組みを利用している • LLM プロバイダーの他にも、 Amazon Bedrock や LangChain などのエージェントエコシステムでも実装済み 29 Copyright © 2025, Oracle and/or its affiliates ユーザ UI アプリケーション 大規模言語モデル (LLM) ①プロンプト入力 ④回答出力 ②実行 関数 (Tool) 関数 (Tool) の結果を 踏まえて回答を生成 APIやデータソース など事実上なんでもOK ③実行結果による 回答生成
  25. Function Calling / Tool Use Function Calling / Tool Use

    • LLM から LLM 内部や外部に定義した関数 (Function / Tool) を呼び出す (Calling / Use) ことで、LLM の機能を拡張する仕組み • 関数 (Function / Tool) の呼び出しは原則クライアントアプリケーションに委ねられている • 外部のデータソースや API と連携可能になり、格段にユースケースが広がる • 昨今の “AI エージェント” という概念も、この機能の登場によって広まったところが大きい • OpenAI 社では Function Calling、Anthropic 社では Tool use と呼ばれる • OpenAI 社が 2023 年 に発表し、 Anthropic 社が 2024 年に Tool use を発表している • 一般的に Tool Use の方が複数 Tools 呼び出しなど柔軟性がある。今の OpenAI のインタフェースも Tool Use に近い • 最近リリースされた LLM に組み込まれている Web 検索やローカルファイル関連機能などもこの仕組みを利用している • LLM プロバイダーの他にも、 Amazon Bedrock や LangChain などのエージェントエコシステムでも実装済み 30 Copyright © 2025, Oracle and/or its affiliates ユーザ UI アプリケーション ①プロンプト入力 ④回答出力 大規模言語モデル (LLM) ②実行 ③実行結果による 回答生成 関数 (Tool) の結果を 踏まえて回答を生成 LLM はどうやって 関数 (Tool) を認識するの…?? 関数 (Tool) APIやデータソース など事実上なんでもOK
  26. Function Calling / Tool Use の実装方法 – LLM Provider (OpenAI)

    31 Copyright © 2025, Oracle and/or its affiliates 関数名、引数や使 用用途などの情報 を定義しておく LLM が関数の利用要否と実行時の引数を返 してくれるので、クライアント(ユーザ)側で 関数を呼び出して結果をLLMに引き渡す インタフェース仕様は LLM プロバイダーによって異なる…
  27. Function Calling / Tool Use の実装方法 – エージェント (LangChain) 32

    Copyright © 2025, Oracle and/or its affiliates デコレータを 利用して Tool を定義 Tool の選択から実行、回答生成 まで一貫して実行してくれる
  28. ReAct (Reasoning and Acting) ReAct (Reasoning and Acting) • LLM

    を利用して推論 (Reasoning) と行動 (Action) を同時に行うことで、より精度を上げる手法 • https://arxiv.org/abs/2210.03629 • 「行動 (Action) 」が含まれているので、Function Calling や Tool Use と一緒に語られることがある • CoT (Chain of Thought) の延長線上で語られることもある • LLM に状況に応じて動的にタスクを実行させることが可能 • LangChain や LangGraph などのエージェントエコシステムを利用 33 Copyright © 2025, Oracle and/or its affiliates Observation (観察) Thought (推論) Action (行動) Function Calling や Tool Use を利用 論文の中の ReAct 例
  29. Function Calling / Tool Useって… 34 Copyright © 2025, Oracle

    and/or its affiliates LLMごとにインタフェースが違うのは それぞれの作り込みが必要で辛い… 🧐 Model Context Protocol(MCP)
  30. MCP(Model Context Protocol) MCP(Model Context Protocol) • https://modelcontextprotocol.io/specification/2025-06-18 (以降のスライドでは 2025-06-18

    の仕様を元に説明します) • 2024 年 11 月に Anthropic 社が発表した LLMアプリケーション と外部システムの接続 (=Tool Use) を標準化するプロトコル • MCP で実装されていれば、 AI アプリケーション(含LLM) と外部システム間の自由な入れ替えが可能 • MCP クライアントおよびサーバで提供されるツール情報やスキーマが重要(後述) • この「ツール情報やスキーマ」が JSON-RPC 2.0 ベースで定義されている • 標準化されたインタフェースを読み込むことで、クライアントやサーバが提供されている Tool を理解 • MCP は LSP (Language Server Protocol) から着想を得ている (VS Codeやコードエディタなどで開発サポートを行うプロトコル) • コンポーネントとして”Hosts”、”Server”、”Client“の3つがあり、Client – Server で提供する機能を持つ(後述) 36 Copyright © 2025, Oracle and/or its affiliates https://norahsakal.com/blog/mcp-vs-api-model-context-protocol-explained/ から引用
  31. MCP のプロトコルと特徴 メッセージと通信形式 • JSON-RPC • 従来の Web アプリケーションや API

    間通信で利用されている JSON での通信形式 • リクエスト、レスポンス、通知、バッチ(Streamable HTTP 通信のみ)の 4 種類がある • ステートフル接続 • 常時接続/常時起動なので、 FaaS やサーバレスのアプリケーション基盤とは相性が良くない(実装はできる) • 主要原則(主なもの) • ユーザは全てのデータアクセスと操作を明示的に同意し、理解する(共有されるデータとアクションも理解する) • エージェントが追加のプロンプトを要求する場合、ユーザーが明示的に承認し、送信内容が管理できる(Sampling、後述) • 実装者はアクティビティの確認と承認のための明確な UI を提供する • MCP ホストはユーザーデータをサーバーに公開する前に、ユーザーの明示的な同意を得る(同意なしの送信はもちろんアウト) • ユーザーデータは適切なアクセス制御によって保護される • MCP ホストはツールを呼び出す前にユーザーの明示的な同意を得る • ユーザーは、使用を許可する前に各ツールの機能を理解する 37 Copyright © 2025, Oracle and/or its affiliates “Human-In-The-Loop” (プロセスに 人間を介在させる)や GDPR などの ガバナンスへの意識もあるかも…
  32. MCP のコンポーネント Hosts(MCP ホスト) • MCP で接続する LLM アプリケーション •

    Claude Desktop, Cursor, VS Code, 独自のチャットインターフェースなど Client(MCP クライアント) • 多くは MCP ホスト(LLM アプリケーション)内にあるServerと1:1で通信するためのコネクタ。個々のチャットウィンドウなど。 Server(MCP サーバ) • コンテキスト(機能)を提供するインタフェース 38 Copyright © 2025, Oracle and/or its affiliates Hosts Client Client Client Server Server Server データソース Stdio or Streamable HTTP 後述 MCPのスコープ 同じソフトウェアであることが多い
  33. MCP のライフサイクル 初期化 • MCP クライアント と MCP サーバ間の最初のやり取り(JSON-RPC) •

    お互いに以下の情報を交換 • サポートするプロトコルバージョン(以降全てのリクエストで必須) • MCP クライアントの Roots, Sampling, Elicitation (後述)[1] • MCP サーバがアクセスできる範囲などのメタデータなど • MCP サーバが提供する Tools, Resources, Prompt (後述) [1] • プロンプトの定型テンプレートやワークフローの提供など [1]: MCP ホスト(クライアント)や MCP サーバによってはサポートされない機能もあり 動作 • MCP クライアントが初期化フェーズで提供された機能を実行する シャットダウン • (通常は) MCP クライアントがプロトコル接続をクリーンに終了する • 終了方法は採用する通信方式によって決まる 39 Copyright © 2025, Oracle and/or its affiliates https://modelcontextprotocol.io/specification/2025-03-26/basic/lifecycle
  34. Client – Server 間の通信 標準入出力(stdio) • 標準入出力ストリームを介した通信を行う • MCP ホスト、

    MCP クライアント、 MCP サーバが全て同一筐体(ローカル)に存在する場合に便利 • 現状公開されている MCP サーバの大半はこの方式 Streamable HTTP • HTTP POST と HTTP GET での双方向通信。常時接続は不要(オプションとして Server-Sent Events (SSE) も利用可) • MCP クライアントと MCP サーバが別筐体にある場合は、必然的にこっち • 複数のリクエストにまたがってコンテキストを維持するためのセッション管理機能もあり(ステートフルとして提供) • 接続が中断された場合、 MCP サーバが発行するイベント ID や MCP クライアントが持つ Last-Event-ID などからリカバリ可能 Server-Sent Events (SSE) (非推奨) • Streamable HTTP 前に利用されていた HTTP POST を利用して通信する方式(常時接続かつ片方向通信) • 今でも後方互換性維持のための利用可能だが、バージョン 2024-11-05 から非推奨 • 現在は Streamable HTTP 内に組み込まれている SSE での利用を推奨 40 Copyright © 2025, Oracle and/or its affiliates Content-Type: text/event-stream
  35. Client – Server 間のセキュリティ(認証認可まわり) MCP の認証認可 • 認証については MCP では言及されていない(Client

    やエージェントの範疇) • MCP の仕様では認可はオプションであり、OAuth(認可コード + PKCE フロー) を利用 • 対象となる通信方式は Streamable HTTP (通信方式が標準入出力の場合、環境変数などで資格情報を取得することを推奨) • Streamable HTTP での認可で定めているのは以下 • (必須) OAuth 2.1 IETF DRAFT(draft-ietf-oauth-v2-1-12): OAuth の最新仕様(ドラフト版)。PKCE(Proof Key for Code Exchange by OAuth Public Clients)をデフォルトで適用する(OAuth 2.0 までは拡張仕様) • (必須) OAuth 2.0 Authorization Server Metadata(RFC8414): MCP クライアントが認可サーバを検出する • (推奨) OAuth 2.0 Dynamic Client Registration Protocol(RFC7591): MCP クライアントが認可サーバへ自身を登録し、動的に OAuth client_id や client_secret等を取得 • (必須) OAuth 2.0 Protected Resource Metadata(RFC9728) : MCP サーバがトークン失効時に自身のスコープ要件や認可サーバ 情報を公開 • (必須) Resource Indicators for OAuth 2.0(RFC8707): トークンに対象のMCPサーバやそのリソースを紐づける ※現状は以下での認可が多いように見える…(MCP としての認可仕様が出たのが 2025 年 3 月なので…) • OIDC を利用した認証認可 • (GitHub MCP サーバの場合)PAT(Personal Access Token)を利用した認可 • その他各ベンダーが提供する独自の仕組み 41 Copyright © 2025, Oracle and/or its affiliates 次ページで少し補足します
  36. Client – Server 間の認可補足(超簡易版) 42 Copyright © 2025, Oracle and/or

    its affiliates MCP サーバ(リソースサーバ) MCP クライアント 認可サーバ(多くはIdP) 失効済みトークン or トークンなしでリクエスト WWW-Authenticate header 401 Unauthorized OAuth 2.0 Protected Resource Metadata(RFC9728) OAuth 2.0 Dynamic Client Registration Protocol(RFC7591) OAuth 2.1 IETF DRAFT(draft-ietf-oauth-v2-1-12) Resource Indicators for OAuth 2.0 (RFC 8707) OAuth 2.0 Authorization Server Metadata(RFC8414) GET ./well-known/oauth-protected-resource 認可サーバ URL と リソースメタデータ(RFC 8414) 取得 トークンリクエスト アクセストークン リクエスト with トークン レスポンス … どうやって認可すれば いいのか? どうやって MCP サーバ/認可サーバの 情報を公開するか? MCP クライアントを認可 サーバに動的に登録したい アクセストークン取得 の営み(RFC 8707により、 悪意あるMCP サーバへの 送信を防ぐ) GET ./well-known/oauth-authorization-server 認可サーバメタデータ取得 MCP サーバ メタデータ の検証と認可サーバ メタデータURLの作成 OAuth 2.0 Authorization Server Metadata(RFC8414) OAuth 2.0 Dynamic Client Registration Protocol(RFC7591) 必須 推奨 LLM アプリケーションが連携しやすい ように、動的に検出できる仕組みが作 られている(=ハードコードを防ぐ)
  37. MCP サーバが提供する機能 - Tools Tools • LLM アプリケーション( MCP ホスト/

    MCP クライアント)が実行可能な関数 (Tools) を公開するためのインタフェース • 外部リソースに対して状態を変更するなどの動的な動作を可能にする(巷で語られている MCP サーバはほぼ Tools) • 以下のインタフェースを持つ • tools/list: 対象 MCP サーバの Tools の一覧を取得できるエンドポイント • tools/call: 対象Tools を実行できるエンドポイント 43 Copyright © 2025, Oracle and/or its affiliates Tools(“tools/call”) のリクエスト時のサンプルスキーマ ”outputSchema” を定義すること で構造化にも対応 (“structuredContent”として応答)
  38. MCP サーバが提供する機能 – Tools 実装例 44 Copyright © 2025, Oracle

    and/or its affiliates Tools の一覧を返す エンドポイントの実装 Tools を実行する エンドポイントの実装
  39. MCP サーバが提供する機能 - Resources Resources • LLM アプリケーション(MCP ホスト/ MCP

    クライアント)に多種多様な種類のデータを提供するためのインタフェース(読み取り専用) • “[protocol]://[host]/[path]”という URI 形式でデータを識別 • データ形式はテキスト or バイナリ(base64 エンコード形式) • 以下のインタフェースを持つ • resources/list: 対象 MCP サーバの提供リソースの一覧を取得できるエンドポイント • resources/read: リソースを読み取るためのエンドポイント • リソースの変更があった場合、 MCP クライアントに通知可能。 MCP クライアントは変更通知をサブスクライブ可能 45 Copyright © 2025, Oracle and/or its affiliates
  40. MCP サーバが提供する機能 – Resources 実装例 46 Copyright © 2025, Oracle

    and/or its affiliates リソース の一覧を返す エンドポイントの実装 リソースを読み取るための エンドポイントの実装
  41. MCP サーバが提供する機能 - Prompt Prompt • MCP サーバ が LLM

    に対して再利用可能なプロンプトテンプレートとワークフローを定義するためのインタフェース • プロンプトを標準化するための手段 • 以下のインタフェースを持つ • prompts/list: 対象 MCPサーバ の提供プロンプトの一覧を取得できるエンドポイント • prompts/get: プロンプトを読み取るためのエンドポイント • Promptの変更があった場合、 MCP クライアントに通知可能。MCP クライアントは変更通知をサブスクライブできる。 47 Copyright © 2025, Oracle and/or its affiliates
  42. MCP サーバが提供する機能 – Prompt 実装例 48 Copyright © 2025, Oracle

    and/or its affiliates Promptを読み取るための エンドポイントの実装 Prompt の一覧を返す エンドポイントの実装
  43. MCP クライアントが提供する機能 - Roots Roots • MCP サーバが動作できる環境を定義するインタフェース • クライアントがサーバに関連するリソースとその場所を通知する手段

    • MCP クライアントが MCP サーバに接続する際にどのルート (ファイルシステムのパスや URI ) を扱うべきかを宣言 49 Copyright © 2025, Oracle and/or its affiliates
  44. MCP クライアントが提供する機能 - Sampling Sampling • MCP サーバが MCP クライアントを介して

    LLM による応答生成を統制/要求できるインタフェース • セキュリティとプライバシーを維持するための側面があるが…(MCP サーバで LLM の API キー保持が不要など) • 悪用された場合のセキュリティ的な懸念やユースケース的なメリットは得にくいと言われているインタフェースでもある 50 Copyright © 2025, Oracle and/or its affiliates
  45. MCP クライアントが提供する機能 - Elicitation Elicitation • MCP サーバが MCP クライアントを介して、動作中に追加情報を要求するためのインタフェース

    • 最新仕様で追加された新しいインタフェース(人間を介在させることで信頼性を高める手法 “Human-In-The-Loop” 対応) • 例えば、「(特に不可逆な)操作を実行する際に、本当に問題ないかをユーザに問う」場合に有用 • Sampling 同様にセキュリティ上懸念点が多い(機密情報を要求するなど) • ”Accept”/”Decline”/”Cancel”という3つのActionモデルが存在 51 Copyright © 2025, Oracle and/or its affiliates
  46. MCP クライアントの実装例 – Tools の Call 52 Copyright © 2025,

    Oracle and/or its affiliates セッションの初期化と tools/list で Tools 一覧の取得 tools/call でツール呼び出し ここは本来 LLM での Tools 選定とパラメータ の決定 この後に LLM に Tool の実行結果とプロンプトを渡し、 回答を生成させる
  47. MCP の機能(プリミティブ) まとめ MCP Client MCP Server Roots MCP Server

    のアクセスできる境界(ディレクトリ/ ファイルなど)を定義 Tools MCP Client 経由で LLM に公開される実行可能な関 数 Sampling MCP Server が MCP Client 経由で LLM に推論リク エストが可能 Resources MCP Client に対して公開するデータ(コンテキスト) Elicitation MCP Server が実行時にユーザから追加情報を取得 Prompt MCP Client が利用可能なプロンプトテンプレート 53 Copyright © 2025, Oracle and/or its affiliates
  48. MCP を実装するための SDK MCP SDK • MCP SDK でサポートされている言語は以下。 •

    TypeScript, Python, Java, Kotlin, C#, Swift, Ruby • Golang も直近で対応予定 MCP SDK のラッパーフレームワーク • FastMCP (Python): MCP SDKをさらにデコレーターで容易に実装できるようにラップしたフレームワーク • FastMCP TypeScript: FastMCP の TypeScript 版 • 各社が提供するAgent Development Kit(ADK): ADKの中に MCP 実装がラップされており、MCP クライアントとして動作させた り、自身を MCP サーバとして動作させることも可能 • OCI ADK, Google ADK, Semantic Kernel SDK(Microsoft 社), Strands Agents SDK(AWS 社)… • LangChain MCP Adapters: MCP ツールを LangChain や LangGraph と統合するためのオープンソースライブラリ 54 Copyright © 2025, Oracle and/or its affiliates
  49. 結局… 55 Copyright © 2025, Oracle and/or its affiliates 標準プロトコルなのは理解したけど、特によく

    使いそうな Tools だとFunction Calling / Tool Useからほとんど進歩してない…?? 🧐
  50. MCP って結局何が画期的…?? • 標準化されたプロトコルで、各プロバイダーが MCP ホスト(含 MCP クライアント) を提供しているのが画期的!! •

    ユーザから見るとMCP ホストから自然言語で LLM 経由でアクションが実行できるようになった…!!(非エンジニアでも扱える…!!) • 今までは、ユーザ側で何かしらのエージェントの実装が必要だった(エンジニアの開発が必須) 56 Copyright © 2025, Oracle and/or its affiliates LLM MCPホスト/LLMアプリ (チャット UI 含) MCP クライアント MCP サーバ どんな Tools 持ってる?? 天気予報取得できるよ!! “明日の天気教えて”って言われた…!! (MCPサーバが知ってるらしいから聞いてきて…!!) 天気予報教えて…!! 晴れだよ…!! (晴れらしいからユーザに返して…!!) 晴れです!! この部分を LLM プロバイダーなどが実 装している(ケースが多い) e.g. Claude Desktop, VS Code など… (現状は)ここだけ実 装すればよさそう 明日の 天気教えて ユーザ
  51. MCP ホストから MCP サーバを呼び出すときは…?? MCP ホストから MCP サーバを呼び出す場合 • MCP

    サーバと MCP クライアントのプロトコルは前述した通り • 実際に MCP ホストから MCP クライアント経由 で MCP サーバを呼び出す際には MCP ホスト独自のプロトコルに準拠する必要あり • 多くは設定ファイルをJSONで定義する(各 MCP ホストのドキュメントに明記) 57 Copyright © 2025, Oracle and/or its affiliates VS Code での設定 Claude Desktop での設定
  52. MCP デモ – OCI Agent Development Kit (ADK) を添えて– 58

    Copyright © 2025, Oracle and/or its affiliates OCI Region OCI Compute Generative AI Agents OCI Documentation MCP Server [1] Kubernetes MCP Server [2] MCP Client with OCI ADK OCI Container Engine for Kubernetes ADK 経由での MCPサーバのメタデータの同期 MCPサーバ経由での Kubernetes の操作 MCPサーバ経由での OCI ドキュメントの検索 OCI Documents [1]: https://github.com/jin38324/oci-documentation-mcp-server [2]: https://github.com/manusa/kubernetes-mcp-server MCP サーバとMCP クライアントに 対して信頼できる情報源を管理 MCP サーバのテスト/デバッグツールである MCP Inspectorも使ってみます…!!
  53. MCP(Model Context Protocol)だけでは足りないこと… 59 Copyright © 2025, Oracle and/or its

    affiliates MCP でリソース取得(広義のRAG)とか LLM に何かしらのアク ションを実行してもらう時にすごく実装しやすくなった…!! でも、まだ足りない気がする…?? MCP クライアント やそれを取り巻くエージェントがたくさん できそうだけど、そうなったらカオスじゃない…?? 🧐 Agent2Agent(A2A)
  54. Agent2Agent (A2A) Agent2Agent • Google 社が 発表したエージェント同士が安全に相互通信を行い、それぞれが協調動作できるようにするためのプロトコル • https://github.com/a2aproject/A2A (以降のスライドでは

    v0.2.5 の仕様を元に説明します) • 2025 年 4 月に発表 • 「エージェント間の名刺交換」と例えられる • プロトコルはHTTP(S), JSON-RPC 2.0 を利用 • 以下を設計原則に持つ • エージェントの能力を包含: メモリや Tools、コンテキストを共有していない場合でもエージェント間が協調動作できる • 既存の標準に準拠(HTTP/Server-Sent Events など) • デフォルトで安全 • 長時間実行のサポート • モダリティ(データの種類)非依存 • エージェント間の連携には Agent Card(JSON形式) を利用 61 Copyright © 2025, Oracle and/or its affiliates https://google-a2a.github.io/A2A/topics/a2a-and-mcp/#agent2agent-protocol-a2a
  55. A2A の通信方式 Request / Response (message/send) • A2A クライアントがリクエストを送信し、A2A サーバがレスポンスを受信する方式

    • A2Aクライアントは ”tasks/send” メソッドを利用してリクエストを送信(エージェントにより同期/非同期いずれも可) • 非同期実行の場合、クライアントは ”completed” や “failed” に到達するまでポーリングを継続する • リクエスト/レスポンスのContent-Typeは ”application/json” Streaming (Server-Sent Events – SSE) (message/stream) • 段階的に結果を生成(チャットの長文出力など)したり、リアルタイムで進捗状況を更新するタスク向けの方式 • A2Aクライアントは ”tasks/sendSubscribe” メソッドを利用してリクエストを送信 • A2A サーバーは HTTP を介して Server-Sent Events (SSE) のストリームを送信(常時接続) • レスポンスのContent-Typeは ”text/event-stream” プッシュ通知 • 実行時間が非常に長いタスクや、永続的な接続 (SSE など) を維持することが不可能なシナリオ向け • A2A クライアントは、タスクを開始するときにWebhook URL を提供 • タスクのステータスが変更された場合 (完了/失敗など)、サーバーは Webhook URL に非同期通知 (HTTP POST リクエスト) 62 Copyright © 2025, Oracle and/or its affiliates
  56. タスク タスク • A2A サーバが 処理するステートフルな作業単位 63 Copyright © 2025,

    Oracle and/or its affiliates リクエスト レスポンス Request/Response リクエスト内容 タスクの状況 成果物
  57. A2A の肝 - Agent Card Agent Card • A2A サーバが自らの情報を示す

    JSON 形式のカード(=名刺) • Agent Card のディスカバリは以下のいずれかで行う • Well-Known URI: “https://{domain}/.well-known/agent.json” で公開する(RFC8615 準拠) • Curated Registries(Catalog-Based Discovery): レジストリが仲介し、Agent Cardを管理する(コンテナレジストリのイメージ) • Direct Configuration/Private Discovery: A2A クライアント側に Agent Card を保持(ハードコード、ローカルファイル…) • Agent Card に機密情報が含まれている場合は、エンドポイントへの制御が必須 • アクセス制御 • ネットワーク制限: IP (CIDR) 範囲の特定、プライベートネットワークからのみ許可など • mTLS • アクセス認可: API キーや OAuth 2.0 による認可など。特定の手法を定めてはいない • サーバ認証、クライアント認証は TLS / mTLS について言及されているが、mTLS は必須ではない。ユーザ認証は特 定手法の言及はない • レジストリの開示 • 認証認可によって許可されたクライアントに基づいて開示する Agent Card を決定 • 認証認可の営み(プロトコル)には言及していない • レジストリ内でパブリック/プライベートを定める 64 Copyright © 2025, Oracle and/or its affiliates
  58. A2A の肝 - Agent Card Agent Card で定義される主なフィールド • protocolVersion:

    A2A プロトコルバージョン • name: 人間用のエージェントの名前 • description:人間用のエージェントの概要 • url: A2A サービスのベース URL • version: エージェントのバージョン • defaultInput/OutputMode: 入出力形式 • Capabilities: A2A プロトコルの機能(Streaming, Push…) • skills: エージェントが持つスキル 65 Copyright © 2025, Oracle and/or its affiliates ほとんど文字列型もしくは文字列の リスト型だが、オブジェクトになっ ているものもある。今回は割愛
  59. A2A のプロトコルの流れ(リクエスト/レスポンスの場合) 66 Copyright © 2025, Oracle and/or its affiliates

    A2A クライアント A2A サーバ AgentExecutor & Agent Event_Queue GET /.well-known/agent.json Agent Card 返却 POST /message/send AgentExecutor.execute() Agent.invoke() メッセージをキューイング メッセージを取得 レスポンスを返却 Streaming の場合は、 チャンクで複数回返却 長時間タスクを前提とした イベントキューを実装 メッセージを更新
  60. A2A の Hello World – A2A クライアント, A2A サーバ 67

    Copyright © 2025, Oracle and/or its affiliates A2A サーバ (Agent Card 含む) 対象の Agent を指定する A2A クライアント Request/Response(message/send)
  61. A2A の Hello World – エージェント 68 Copyright © 2025,

    Oracle and/or its affiliates 対象のエージェント Event_Queue経由でレスポンスを返却
  62. エンタープライズグレード A2A TLS • HTTPS必須/最新の TLS への準拠/サーバIDの検証(証明書検証) 認証 • OpenID

    Connectなど標準的に認証プロトコルに委任(A2A としては定めない) 認可 • OAuth スコープなどを利用した認可(A2A としては定めない)を利用して、データやアクションを適切な範囲かつ最小権限の原則で認可 ガバナンス • Agent Cardに含まれる機密性の認識。GDPR, CCPA, HIPPA などの準拠。データの最小化。 トレーサビリティ、監視 • 分散トレース、ログの記録、メトリクス、監査。プロトコルは標準的な仕組みを利用しているため、従来通りの手法で利用できる 69 Copyright © 2025, Oracle and/or its affiliates
  63. A2A の実装 提供されているSDK • Python: https://github.com/a2aproject/a2a-python • pip や uv

    などのパッケージツールでインストールできる • セッション追跡、メッセージ履歴、タスクの中断再開、ログ、ステータス管理などの永続化の手段としてデータベース実装も 提供(プロトコルとしては永続化のための特定のデータソースやストレージは言及していない) • JavaScript: https://github.com/a2aproject/a2a-js • npm でインストールできる その他コミュニティでは Java や Golang での実装もみられる ラッパーライブラリ • Python: https://github.com/themanojdesai/python-a2a • デコレーターなどを利用してより簡易的に実装できる(LangChain統合) サンプルコード • https://github.com/a2aproject/a2a-samples • Python, JavaScript, Java, Golang のサンプルコードがある 70 Copyright © 2025, Oracle and/or its affiliates まだまだ発展途上…
  64. A2A と MCP って何が違う?? A2A: エージェント(≠LLM)間の相互連携に利用するプロトコル MCP: LLM が外部のデータソースやツールと連携するためのプロトコル エージェント(システム)全体で考えると

    A2A と MCP は補完関係 71 Copyright © 2025, Oracle and/or its affiliates 大規模言語モデル (LLM) エージェント サブエージェント(含MCPクライアント) MCP サーバ MCPプロトコル 大規模言語モデル (LLM) エージェント サブエージェント(含MCPクライアント) MCP サーバ MCPプロトコル A2A プロトコル A2A は大規模エージェントや 複数のエージェントが絡んだ 長時間タスク向き e.g. ベンダー間やサービスプロ バイダー間の相互連携など Resources で Agent Card を提供するのも良い
  65. 実は?? A2A で規定していないもの 72 Copyright © 2025, Oracle and/or its

    affiliates A2A が規定しているのは基本的にエージェントディスカバリ A2A プロトコル エージェントA くん エージェントB くん エージェント B くんはこういう スキルがあるのかぁ エージェント A くんはこういう スキルがあるのかぁ A2A プロトコルは、MCP のように LLM を中⼼としたプロトコルではなく、Agent Card のスキル選択やオーケストレーション機構は A2A プロト コル⾃体の管轄外。 つまり、Agent Card で取得した各エージェントのスキルから、どれを選択して実⾏するかはユーザ(A2A クライアント)が決定する。 (MCP では、 LLM のプロンプト推論能⼒を活⽤して Tool 選択を内包的に⾏うことが可能な設計になっている)
  66. A2A デモ Google 社が提供するサンプル A2A プロジェクトを利用 73 Copyright © 2025,

    Oracle and/or its affiliates A2A クライアント A2A サーバ 為替データAPI Agent Card 取得 リクエスト/レスポンス API 実行 Agent Card ※ A2Aクライアント は Mesop という Google 社が開発した UI フレームワークも利用 (Streamlit/Gradio 相当)
  67. 結局どれがいいの…?? RAG & Tool Use • 社内リソースを利用したチャットボット(QAボット)相当のサービスであればこれで十分 • 検索結果を資料にまとめたり、整理したりする分には通常の LLM

    の機能でOK(セキュリティ観点での考慮は必要) • 内部向けユースケースならまずはRAGから初めて、拡張が必要な場合は Function Calling / Tool Use を検討 • 各社公開している MCP サーバもあるため、MCP の方が実装コストが低い場合はそちらも検討 MCP • ローカルデータなどを社内外含めて公開したい場合に有効 • SaaS や各プロバイダーが提供するデータソースを利用する場合、まずはそのプロバイダーがMCPを提供しているか確認 • 提供していない場合は自作する(今後の流れを考えると、自作は必要最低限に留まるのでは…) • MCP によるデータ提供のマネタイズも視野に入る(従来の API エコシステムの文脈、ただし、非エンジニアも対応できる) A2A • 顧客リソースなどを外部向けに公開する場合や複数のサブエージェントを絡めた大規模タスクに有効 • 基本的にはベンダーやプロバイダー間のエージェントで利用されるはず… • サービスプロバイダーのマネタイズに有効(従来の API エコシステムの文脈、ただし、非エンジニアも対応できる) 75 Copyright © 2025, Oracle and/or its affiliates まずは RAG/Tool Use から小さく始めましょう…!!
  68. まとめ LLM の登場で始まった AI 時代 • LLM を有効に活用するために開発された様々な拡張手法がある • LLM

    が持たないソースを一時的にインプットさせて、回答を生成する “Retrieval-Augmented Generation(RAG)” • RAG では達成できなかった LLM に対してアクションを実行させるための Function Calling & Tool Use Tool Use & Function Calling のさらなる自律化と標準化を目的としたプロトコルの登場 • LLMアプリケーション と外部システムの接続 (=Tool Use) を標準化するプロトコル “Model Context Protocol(MCP)” • JSON-RPC を利用したプロトコルで、LLM や Tool 間の入れ替えを柔軟に実現 • Tools や Resources を利用して LLM エコシステムの最大化に寄与 大規模エージェント間の相互通信を実現する標準プロトコル • 各エージェントが持つスキルを効率的に共有するためのプロトコル “Agent2Agent(A2A)” • JSON 形式の Agent Card の利用と JSON-RPC を利用した通信 • サービスプロバイダーが持つエージェントシステムの連携による価値の最大化を期待 76 Copyright © 2025, Oracle and/or its affiliates
  69. 参考資料 ドキュメント • MCP: https://modelcontextprotocol.io/introduction • A2A: https://a2aproject.github.io/A2A/latest/ GitHub •

    https://github.com/modelcontextprotocol • https://github.com/a2aproject/A2A 書籍 • MCPで始めるAIエージェント構築 基本ガイド: https://x.gd/OlKZc • やさしいMCP入門: https://x.gd/ZY4tA 参考資料 • ChatGPTのコア技術「GPT」をざっくり理解する: https://x.gd/YDKbt • Graph Database と Generative AI の素敵な関係: https://x.gd/YrSHM • LLM のエコシステム: https://x.gd/Z50sY デモ • https://github.com/oracle-japan/ochacafe-master-of-next-level-llm 77 Copyright © 2025, Oracle and/or its affiliates ぜひ購入を…!!