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

AWS LambdaとLangSmithを使った社内レポート添削システムMinervaの実装

熊懐葵
August 31, 2024

AWS LambdaとLangSmithを使った社内レポート添削システムMinervaの実装

機械学習の社会実装勉強会 第38回 (https://machine-learning-workshop.connpass.com/event/328440/) の発表資料です。

熊懐葵

August 31, 2024
Tweet

More Decks by 熊懐葵

Other Decks in Technology

Transcript

  1. 目次 • Minervaについて • AWS Lambda・LangSmithとは • Minervaの実装 • Minervaの概念図

    • Lambda関数(添削機能本体)の実装 • システム環境構築 • Minervaの応用 • プロンプトの改善 • 料金の概算の仕方
  2. 目次 • Minervaについて • AWS Lambda・LangSmithとは • Minervaの実装 • Minervaの概念図

    • Lambda関数(添削機能本体)の実装 • システム環境構築 • Minervaの応用 • プロンプトの改善 • 料金の概算の仕方
  3. AWS Lambdaとは 概要 • サーバーを管理することなく コードを実行できるコン ピューティングサービス • サーバー管理の手間を省き、 コスト効率の高い開発を可能

    にする 特徴 • イベント駆動型: イベントを トリガーとしてコードを実行 する • 従量課金制: 実行時間に応じ て課金され、使用していない 間はコストが発生しない
  4. LangSmithとは 概要 • 大規模言語モデル (LLM) の プロンプトエンジニアリン グを効率化するツール • プロンプトの設計、テスト、

    改善をサポートする 特徴 • バージョン管理: 異なるプロ ンプトを保存、比較できる • テスト環境: プロンプトのテ スト、結果の確認が高い自 由度で簡単にできる
  5. 目次 • Minervaについて • AWS Lambda・LangSmithとは • Minervaの実装 • Minervaの概念図

    • Lambda関数(添削機能本体)の実装 • システム環境構築 • Minervaの応用 • プロンプトの改善 • 料金の概算
  6. Minervaの概念図 Amazon API Gateway AWS Lambda Confluence(社内資料共有アプリ) Document User Bot

    /minerva URL • 資料データ • プロンプト • 出力結果
  7. なぜminervaとminerva-implに分けるのか API Gateway minerva Slack 3秒以内にリクエスト 結果が返ってこない といけない Slackの制約 全体処理に1~2分

    ↓ リクエスト結果を返す API Gateway minerva Slack minerva-impl 全体処理に 1~2分 Slackの制約をクリア リクエスト結果を返す リクエスト送信 リクエスト送信
  8. Lambda関数の実装 ❶ minerva: minerva-implを呼び出す • HTTPリクエストデータ • Slack 認証トークン •

    資料ページのURL • 環境変数 Slack 認証トークン 用いるデータ • リクエストの認証 • 添削資料のページIDの抽出 • minerva-implを呼び出す • リクエスト結果をslackに返す 処理内容 ▼ リクエストの認証 ▼ ページIDの抽出 資料のURLから ページIDを抽出
  9. Lambda関数の実装 ❶ minerva: minerva-implを呼び出す • HTTPリクエストデータ • Slack 認証トークン •

    資料ページのURL • 環境変数 Slack 認証トークン 用いるデータ • リクエストの認証 • 添削資料のページIDの抽出 • minerva-implを呼び出す • リクエスト結果をslackに返す 処理内容 ▼ minerva-implを呼び出す ▼ リクエスト結果の出力
  10. minerva minerva-implを呼び出す 1 Lambdaの実装 GPTによるレビュー レビュー結果を投稿 Amazon API Gateway 3

    4 資料の内容を取得 2 Document minerva-impl Confluence API Keyを 発行しておく
  11. Lambda関数の実装 ❷ minerva-impl: 資料の内容の取得 • 添削資料のページID • Confluence API Key

    用いるデータ • リクエストの準備 • リクエストの送信 • リクエスト結果を取得 • テキスト情報を抽出 処理内容 ▼ リクエストの準備 ▼ リクエストの送信
  12. Lambda関数の実装 ❷ minerva-impl: 資料の内容の取得 • 添削資料のページID • Confluence API Key

    用いるデータ • リクエストの準備 • リクエストの送信 • リクエスト結果を取得 • レポート情報を抽出 処理内容 ▼ リクエスト結果を取得 ▼ レポート情報を抽出
  13. 資料の内容を取得 2 minerva minerva-implを呼び出す 1 Lambdaの実装 Document レビュー結果を投稿 Amazon API

    Gateway 4 minerva-impl それぞれAPI Keyを 発行しておく GPTによるレビュー 3
  14. • 抽出したレポート情報 • LangSmith API Key • OpenAI API Key

    用いるデータ • LangSmithと紐付ける • GPTにプロンプトを投げる • レビュー結果を出力する 処理内容 Lambda関数の実装 ❸ minerva-impl: GPTによるレビュー ▼ LangSmithと紐づける これらの環境変数を設定するだけで 情報が自動的にLangSmithに送られる
  15. • 抽出したレポート情報 • LangSmith API Key • OpenAI API Key

    用いるデータ • LangSmithと紐付ける • GPTにプロンプトを投げる • レビュー結果を出力する 処理内容 Lambda関数の実装 ❸ minerva-impl: GPTによるレビュー ▼ GPTにプロンプトを投げ、レビュー結果を出力する 命令+レポート情報 GPTにプロンプトを投げる レビュー結果を出力する
  16. Lambda関数の実装 ❹ minerva-impl: レビュー結果を投稿 • GPTのレビュー結果 • Confluence API Key

    用いるデータ • リクエストの準備 • リクエストの送信 →資料のコメント欄に レビュー結果が出力される 処理内容 ▼ リクエストの準備 ▼ リクエストの送信
  17. Lambda関数の実装 ❹ minerva-impl:レビュー結果を投稿 • GPTのレビュー結果 • Confluence API key 用いるデータ

    • リクエストの準備 • リクエストの送信 →資料のコメント欄に レビュー結果が出力される 処理内容 ▼ レビュー結果が出力される(Confluence画面)
  18. システム環境構築 Amazon API Gateway AWS Lambda Confluence(社内資料共有アプリ) Document User Bot

    /minerva URL • 資料データ • プロンプト • 出力結果 1 2
  19. ❶Slack ⇄ API Gateway ▼ API Gateway REST APIを作成 ▼

    Slack Appを作成 ▼ Appのスラッシュコマンド設定 API Gateway REST APIの エンドポイント
  20. システム環境構築 Amazon API Gateway AWS Lambda Confluence(社内資料共有アプリ) Document User Bot

    /minerva URL • 資料データ • プロンプト • 出力結果 1 2
  21. システム環境構築 補足 minerva-implはx84_64 ▼ Lambdaの初期設定 AWS IAMの設定 (Lambdaのアクセス権限) ▼ API

    Gateway マッピングテンプレートを設定 SlackのHTTPリクエストのデータ (HTML形式)をJSON形式に変換 その他 AWS CloudWatchも使用
  22. 目次 • 自己紹介 • AWS Lambda・Langsmithとは • Minervaの概略 • Minervaの実装

    • 環境整備 • Lambda関数(添削機能)の実装 • Minervaの応用 • プロンプトの改善 • 料金の概算の仕方
  23. プロンプトの改善 レポート 資料 プロンプト 以下の指示 に従って添 削して 指示1 指示2 …

    LLM 回答 回答 レビュー結果 をコメント 回答の質を上げるにはどうすれば良いか
  24. 現状のプロンプトの問題点 レポート 資料 プロンプト 以下の指示 に従って添 削して 指示1 指示2 …

    LLM 回答 回答 レビュー結果 をコメント 一つのプロンプトに複数指示があると 指示ごとに回答の質がばらつく
  25. 指示ごとにプロンプトを分ける レポート 資料 プロンプト 指示1 指示2 指示3 LLM 回答 回答1

    回答2 回答3 レビュー結果 をコメント どのようなプロンプトにすれば良いか
  26. LangSmithがプロンプト改善をサポート Amazon API Gateway AWS Lambda Confluence(社内資料共有アプリ) Document User Bot

    /minerva URL • 資料データ • プロンプト • 出力結果 本番環境と同様のデータ、 モデルで簡単に テスト実行ができる
  27. 料金の概算 -1,000回/月の場合- • Slack, Confluence, LangSmith(フリープラン): 考慮しない • API Gateway

    • 1,000 x 0.00000425 USD = 0.0043 USD • Lambda • 処理時間 5 s/回 • メモリー使用 128 MB/回 = 0.125 GB/回 • 1,000 x 5s x 0.125 GB x 2 x 0.0000166667 USD = 0.02 USD • Open AI API • モデル gpt-4o • 入力 4,000トークン/回 • 出力 2,000トークン/回 • 1,000 x (4,000 x 0.000005 USD + 2,000 x 0.000015 USD) = 50 USD • 合計 約7500 円/月 (ほぼOpenAI APIの使用料) AWS使用料はほぼ かかっていない 1添削あたり7.5円