Loading...

GenAI 関連メモ

2025/05/09 17:11
2025/05/12 08:22
  • GenAI についての情報量が死ぬほど多くて結局何もわからない
  • ブックマークしてるだけでは自分のなかに知識が蓄積されない
  • 各サイトにどんなことが書いてあって、どんなことを思ったのかを分野別にメモっていくことにより将来疑問が生じたときにすぐに参照できる状態としておく

LLM そのものに関するトピック

そもそも LLM とはなにか

RAG とはなにか

MCP とはなにか

最小の MCP 実装

MCP とはなにか

  • MCP は Model Context Protocol の略
  • LLM アプリケーションにおけるHost、Client、Server 間のやり取りを管理するプロトコル
  • メッセージフォーマットとしてJSON-RPCを用い、stdio や Streamable HTTPなどの通信手段を推奨
  • Client と Server 間の通信には、Initialization、Operation、Shutdownの 3 つのフェーズがある
  • Host はユーザー入力と LLM とのやり取りを管理し、その結果をユーザーに示す役割を担う
  • MCP Client は MCP Server に対してリクエストを送り Host に結果を返す
  • MCP Server は Client からのリクエストを受けて所定の処理を行い Client に結果を返す
  • 初期化フェーズが完了するまで、PING/LOGGING 以外のメッセージ送信は制限される

MCP はなんの役に立つのか

  • LLM が外部の機能(Tool)を実行することを可能にする。例として、指定された面数のサイコロを振るといった機能の実装がある
  • LLM アプリケーションが、ユーザー入力に基づき LLM に次に何をすべきかを判断させ、その結果としてMCP サーバーの Tool を実行するといった処理の流れを実現する
  • コーディングエージェントのように、LLM が外部システムと連携して特定のタスクを行うアプリケーションで利用される
  • LLM アプリケーション(Host/Client)が、外部サービス(MCP Server)が提供する利用可能な Tool を一覧取得(list_tools)したり、特定の Tool を呼び出して実行(call_tool)したりするための標準的な仕組みを提供する
  • SDK を利用する場合、開発者は低レベルな Client/Server 間の通信処理を自身で実装する必要がなく、Tool の定義に集中できるようになる
  • 最新の仕様ではAuthorizationに関する機能も追加されており、セキュリティの側面も考慮されている
  • 仕様に基づいた実装レベルでの学習を通じて、MCP の理解を深めることができる

言語処理について学びたい

ソフトウェア開発への応用に関するトピック

Claude Code による Agentic Coding

  • Claude Code とは
    • Anthropic が開発した、agentic coding のためのコマンドラインツール
  • この記事に書かれてることのさわり
    • ツールのセットアップ方法
    • bashツールの活用/MCPの活用/カスタムスラッシュコマンドの作成 など外部との連携
    • ツールを使った一般的なワークフロー
      • 探求、計画、コード、コミット
      • テストを書く、コミット;コード、反復、コミット
      • コードを書く、結果をスクリーンショット、反復 etc...
    • ほか、高度な話題が続く

Figma がそのままウェブサイトになる

3D モデルの作成

業務活用に関するトピック

ドキュメントのデータベース化

資料作成

旅行

活用事例リンク集

プロンプトに関するトピック

LLM サービスのベースとなるプロンプト

本当かどうかは知らないが LLM サービスのベースとなるプロンプトがたくさん転がってるリポジトリ

出力形式の制御について

サービスに関するトピック

Bedrock における RAG 評価機能と LLM-as-a-Judge 機能

評価手法に関するトピック

LLM アプリケーションの評価手法入門

  • プログラミングは明確なルール・条件に基づいて動作するが、生成 AI はプロンプトベースの指示による意図しない出力やハルシネーションなどが発生しうるため **目的を達成できているかどうかの評価が実用上必要
  • 評価対象には LLM モデルそのものファインチューニングしたモデルなどがあるが、LLM アプリケーションを作成する上では「目的を達成できているかどうか」が評価対象となる
    • 分類→分類に応じた出力といったようにプロンプトが別れていればそれぞれのモジュールを評価できる
  • 評価方法にはオンライン評価とオフライン評価がある
    • オフライン評価: 事前準備したデータセットで評価
    • オンライン評価: 機能稼働後、実ユーザーの反応やトラフィックで評価
  • 評価指標はいくつかのレイヤーに分けることができる
    • レベル1: LLM 機能・アプリケーションそのものの評価
      • 出力の評価(Grand Truth 比較、妥当性評価)
      • レイテンシーなどの非機能要件の評価
  • レベル2: ユーザーの反応や挙動の評価(Good/Bad ボタン、クリック率など)
    • LLM 機能以外の UX にも影響され、KPI の先行指標となりうる
  • レベル3: KPI 向上評価(購入率、継続率、生産性向上など)

Bedrock における MCP の活用

LLM-as-a-Judge を利用した LLM の評価

  • LLM の評価観点 (TrustLLM: Trustworthiness in Large Language Models より)
    • 真実性
    • 安全性
    • 公平性
    • 堅牢性
    • プライバシー
    • 機械倫理
    • アプリケーションにあった品質評価
  • LLM-as-a-Judge は LLM アプリの出力に対して例えば下記のような評価を LLM に行わせる
    • ニ値分類: ある条件を満たしているか Yes/No で判断させる
    • 回帰: 条件 A を満たしていれば +X 点、条件 B を満たしていれば +Y 点というような形で点数評価させる

promptfoo を利用した LLM アプリの評価