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

実用的かつリーズナブルな 「Azure × Gemini × LINE」~キャラクターBot 実装ライブデモ~

実用的かつリーズナブルな 「Azure × Gemini × LINE」~キャラクターBot 実装ライブデモ~

Azure×Gemini×LINEを用いてキャラクターボットを作成するライブデモ資料です。CosmosDBを用いた会話履歴管理やlangsmithを用いたトレースなど周辺知識の解説も含めています。デプロイはAzure Developer CLIでインフラからアプリまで1コマンドで実装できる仕組みになっておいます。Azureはじめ関連リソースも無料サービス縛りでおこなっており、手軽に始められる内容です。

Tomodo_ysys

July 04, 2024
Tweet

More Decks by Tomodo_ysys

Other Decks in Programming

Transcript

  1. 01 好きなキャラと一緒に生 きたい 自分の好きなキャラクターがず っとそばにいて、話しかけると すぐに答えてくれる。ついに時 代が追いついた。 自分の好きなキャラクターに近くにいてほしい 03 02

    日本文化とAIの親和性 日本人が人工知能と聞いて最初 におもい浮かべるのは?(ド〇 えもん、鉄腕〇トム?)日本人 のDNA キャラクターボットをつくる理由 5 @Tomodo_ysys
  2. バックエンド ホスティング データベース 会話ログ Python FastAPI Azure AppService Azure CosmosDB

    langsmith フロントエンドはLINE&バックグラウンドはAzureの無料サービス縛り 構成図 LLM Gemini 1.5 PRO 6 @Tomodo_ysys
  3. azd up だけでほとんど一撃でできます。 資材準備 (ローカル実行確認) azd upでデプロイ 動作確認 git clone,変数設定

    docker起動、ngrok設定、LINE設定 インフラのプロビジョニング、アプリのデプロイ、LINE設定 LINEからメッセージ送信、DBの会話履歴確認、langsmithでトレース確認 ライブデモの流れ 9 @Tomodo_ysys
  4. 事前に4つの準備が必要です。 Gemini APIキー取得 Google AI StudioでGemini APIキーを取得してください。 利用料金はかかりません。(上限あり) LINE Channelの作成

    LINE Developersにログインして新規チャンネルを作成して ください。アイコンは愛着が持てるものを画像AIで作成する のが吉。 LangsmithAPIキー発行 LangsmithのAPIキーを発行してください。月に5000トレ ースまでなら無料です。 Azureサブスクリプショ ン作成 Azureのサブスクリプションを作成してください。今回は使 いませんが、無料クレジットが配布されます。 Goal 01 Goal 02 Goal 03 Goal 04 事前準備項目 12 @Tomodo_ysys
  5. azd upコマンドを実行するのみです azd upコマンド実行 LINEチャンネルの webhook URL更新 LINEからメッセージ 送信 azd

    env new chatbot-demo LINE Developersのチャンネル画面>Messaging API設定>Webhook設定>Webhook URL LINEアプリからメッセージを送信してテスト デモ③:azd upによるデプロイと実行 AppServiceのurl + `/callback` cp .env.sample .azure/chatbot-demo/,env .azure/chatbot-demo/.envに変数追記 azd up 13 @Tomodo_ysys
  6. lang"chain"と言うからにはchainをつくる 生成されたテキストの 末尾に改行が入ること があるので削除 レスポンスから返答部 分のみテキストで抽出 LLMのモデルやパラメ ータ設定。 実行するときに好きな モデルがつ変えるよう

    にその都度引数として 受け取る ・システムプロンプト ・CosmosDBから取得 した会話履歴 ・メッセージ(ユーザ プロンプト) →連結させる prompt llm parser function アプリを見ていく②: レスポンス生成の流れ 17 @Tomodo_ysys
  7. GPT-4o (OpenAI) 特徴に乏しい平均的な性能 そこそこ早い AIっぽい Claude3 opus (Anthropic) 温かみのある返答 過剰に長文

    応答速度が遅い アプリ解説:モデル選定比較 Gemini 1.5 Pro (Google) 簡潔で的確、絵文字使用 高速なレスポンス 無料 性能にはあまり差はない。割と好みの問題 19 @Tomodo_ysys
  8. 直近10件 & 直近1時間 参照履歴 チャット履歴全体 (スレッド概念は ない) LINE LINEにはスレッドの概念がないので自分で切れ目を用意する 会話履歴の管理

    直近10件に加え1時間の制限も ・回答がおかしくなったときリフ レッシュできない。 ・会話の時間が空いた時も続きの会 話になってしまう。 コストの抑制 20 @Tomodo_ysys
  9. 今回使うAzureサービスは大きく3つ Cosmos DB 1000 RU/秒のスループット、25 GBのストレージまで無料 グローバル分散とマルチモデル対 応 フルマネージドのNoSQLデータベ ース

    App Service コードやdockerイメージをデプロ イすると起動してくれる AppServicePlanの上で動作する フルマネージドのアプリケーショ ンホスティング基盤 App Service Plan 今回はFreeプランを選択 プランを上げるほど確保できるリ ソースが増える アプリを実行するための仮想サー バー環境 Azureの主要インフラリソース 23 @Tomodo_ysys
  10. アプリ起動までで詰まったら以下のログを確認 (無料プランでライトに見る場合) インフラプロビジョニン グログ リソースグループ>デプロイからインフラプロビジョニング のログを確認できます。進捗状況やエラーメッセージなど Dockerログ App Service>高度なツール>REST API>Current

    Docker LogsからログのURLを確認→開く。Dockerコンテナのログ アプリケーションログ App Service>ログストリーム。アプリケーションのログを リアルタイムで確認。高度なツールからも確認可能。 Point 01 Point 02 Point 03 無料プランでさっと見られるログはどこ? 24 @Tomodo_ysys
  11. キャラクター道、第一歩は意外と簡単。 LINEはAPIのみで簡単に利用 01 LINEを使えばバックエンドだけで 済む テンプレートから流用。langchainベースのスクラ ッチのバックエンドも簡単にデプロイできる 02 Azdを使えば簡単構築 1時間、10件以内になど柔軟に取得も可能

    03 CosmosDBを使って会話履歴を管 理 langchainベースで書いておく恩恵 04 langsmithお手軽トレース LINEにどうスレッドの概念を持たせるか 05 スレッドの管理は課題 カギは愛嬌と特別感。この2つをどう増やしていけ るか 06 単純なキャラクターボットは飽きる 問題 まとめ 30 @Tomodo_ysys