Slide 1

Slide 1 text

AWS LambdaとLangSmithを使った社 内レポート添削システム Minervaの実装 2024/08/31 機械学習の社会実装勉強会 第38回 熊懐 葵

Slide 2

Slide 2 text

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

Slide 3

Slide 3 text

Minervaとは AWS LambdaとLangSmithを使った 社内レポート添削システム ※由来…知恵の女神・魔法学校の先生

Slide 4

Slide 4 text

Minervaが作られた経緯 背景 • 業務でデータ解析レポートを書いている 課題 • レポートのレビューには時間と労力がかかる 解決策 • 社内レポート添削システムを作り、Minervaと命名 • 一回およそ7.5円でレポートを添削 Confluence→ (社内資料共有ツール)

Slide 5

Slide 5 text

Minervaの使用感 1~2分後、資料のコメン ト欄にレビュー内容が出 力される

Slide 6

Slide 6 text

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

Slide 7

Slide 7 text

AWS Lambdaとは 概要 • サーバーを管理することなく コードを実行できるコン ピューティングサービス • サーバー管理の手間を省き、 コスト効率の高い開発を可能 にする 特徴 • イベント駆動型: イベントを トリガーとしてコードを実行 する • 従量課金制: 実行時間に応じ て課金され、使用していない 間はコストが発生しない

Slide 8

Slide 8 text

LangSmithとは 概要 • 大規模言語モデル (LLM) の プロンプトエンジニアリン グを効率化するツール • プロンプトの設計、テスト、 改善をサポートする 特徴 • バージョン管理: 異なるプロ ンプトを保存、比較できる • テスト環境: プロンプトのテ スト、結果の確認が高い自 由度で簡単にできる

Slide 9

Slide 9 text

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

Slide 10

Slide 10 text

Minervaの概念図 Amazon API Gateway AWS Lambda Confluence(社内資料共有アプリ) Document User Bot /minerva URL • 資料データ • プロンプト • 出力結果

Slide 11

Slide 11 text

Lambda関数の実装 minerva-impl minerva Document 資料の内容を取得 GPTによるレビュー レビュー結果を投稿 minerva-implを呼び出す Amazon API Gateway 1 2 3 4

Slide 12

Slide 12 text

なぜminervaとminerva-implに分けるのか API Gateway minerva Slack 3秒以内にリクエスト 結果が返ってこない といけない Slackの制約 全体処理に1~2分 ↓ リクエスト結果を返す API Gateway minerva Slack minerva-impl 全体処理に 1~2分 Slackの制約をクリア リクエスト結果を返す リクエスト送信 リクエスト送信

Slide 13

Slide 13 text

Lambdaの実装 minerva-impl Document 資料の内容を取得 GPTによるレビュー レビュー結果を投稿 Amazon API Gateway 2 3 4 minerva minerva-implを呼び出す 1

Slide 14

Slide 14 text

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

Slide 15

Slide 15 text

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

Slide 16

Slide 16 text

minerva minerva-implを呼び出す 1 Lambdaの実装 GPTによるレビュー レビュー結果を投稿 Amazon API Gateway 3 4 資料の内容を取得 2 Document minerva-impl Confluence API Keyを 発行しておく

Slide 17

Slide 17 text

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

Slide 18

Slide 18 text

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

Slide 19

Slide 19 text

資料の内容を取得 2 minerva minerva-implを呼び出す 1 Lambdaの実装 Document レビュー結果を投稿 Amazon API Gateway 4 minerva-impl それぞれAPI Keyを 発行しておく GPTによるレビュー 3

Slide 20

Slide 20 text

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

Slide 21

Slide 21 text

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

Slide 22

Slide 22 text

資料の内容を取得 2 minerva minerva-implを呼び出す 1 Lambdaの実装 GPTによるレビュー Amazon API Gateway 3 minerva-impl レビュー結果を投稿 4 Document

Slide 23

Slide 23 text

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

Slide 24

Slide 24 text

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

Slide 25

Slide 25 text

システム環境構築 Amazon API Gateway AWS Lambda Confluence(社内資料共有アプリ) Document User Bot /minerva URL • 資料データ • プロンプト • 出力結果 1 2

Slide 26

Slide 26 text

❶Slack ⇄ API Gateway ▼ API Gateway REST APIを作成 ▼ Slack Appを作成 ▼ Appのスラッシュコマンド設定 API Gateway REST APIの エンドポイント

Slide 27

Slide 27 text

システム環境構築 Amazon API Gateway AWS Lambda Confluence(社内資料共有アプリ) Document User Bot /minerva URL • 資料データ • プロンプト • 出力結果 1 2

Slide 28

Slide 28 text

❷API Gateway ⇄ Lambda(minerva) ▼ minervaのトリガーにAPI Gatewayを設定 作成したREST APIをア タッチ

Slide 29

Slide 29 text

システム環境構築 補足 minerva-implはx84_64 ▼ Lambdaの初期設定 AWS IAMの設定 (Lambdaのアクセス権限) ▼ API Gateway マッピングテンプレートを設定 SlackのHTTPリクエストのデータ (HTML形式)をJSON形式に変換 その他 AWS CloudWatchも使用

Slide 30

Slide 30 text

目次 • 自己紹介 • AWS Lambda・Langsmithとは • Minervaの概略 • Minervaの実装 • 環境整備 • Lambda関数(添削機能)の実装 • Minervaの応用 • プロンプトの改善 • 料金の概算の仕方

Slide 31

Slide 31 text

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

Slide 32

Slide 32 text

現状のプロンプトの問題点 レポート 資料 プロンプト 以下の指示 に従って添 削して 指示1 指示2 … LLM 回答 回答 レビュー結果 をコメント 一つのプロンプトに複数指示があると 指示ごとに回答の質がばらつく

Slide 33

Slide 33 text

指示ごとにプロンプトを分ける レポート 資料 プロンプト 指示1 指示2 指示3 LLM 回答 回答1 回答2 回答3 レビュー結果 をコメント どのようなプロンプトにすれば良いか

Slide 34

Slide 34 text

LangSmithがプロンプト改善をサポート Amazon API Gateway AWS Lambda Confluence(社内資料共有アプリ) Document User Bot /minerva URL • 資料データ • プロンプト • 出力結果 本番環境と同様のデータ、 モデルで簡単に テスト実行ができる

Slide 35

Slide 35 text

LangSmithがプロンプト改善をサポート プロンプトを調整 ▼ LangSmithのテスト環境でテスト⇄改善 ▼ Lambdaにて完成プロンプトを反映 プロンプト ごとに 回答を生成 回答を まとめる 非公開の社内資料も 使用可能 プロンプト改善が 一画面で完結

Slide 36

Slide 36 text

料金の概算 -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円

Slide 37

Slide 37 text

AWS LambdaとLangSmithを使った社 内レポート添削システム Minervaの実装 ご清聴ありがとうございました