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

【完全版】Dify - LINE Bot連携 考え方と実用テクニック

uezo
October 10, 2024

【完全版】Dify - LINE Bot連携 考え方と実用テクニック

2024.10.10のLINE DC Generative AI Meetup #3での発表資料です。
Difyを活用したLINEメッセージ&ビデオ通話ができるAIキャラクターの開発方法についての解説です。

uezo

October 10, 2024
Tweet

More Decks by uezo

Other Decks in Technology

Transcript

  1. ⾃⼰紹介 うえぞう うな技研 代表/プログラマー LINE API Expert ⾦融DXコンサルタント ⾼校卒業後に単⾝上京。バリスタの⾒習いをしながら独学でプロ グラミングを習得。

    その後⾦融業界に転⾝し、三井住友海上と三菱UFJ銀⾏にて各種 デジタルトランスフォーメーション案件をリード。現在は⽇本 IBMにて⾦融業界向けAIソリューションの事業責任者を務めるほ か、総務省地⽅公共団体経営・財務マネジメント強化事業にてDX 分野のアドバイザーを務める。近年は⽣成AIとXR関連技術を活⽤ したAIアシスタントの開発や書籍・記事の執筆等を中⼼に活動。 uezo uezo uezo @uezochan
  2. ChatGPTに関する書籍を執筆 ベストセラー1位 amazon 表計算ソフトカテゴリー 2023年9⽉7⽇時点 l Excel上で動作する対話型のアシスタントツールの作成 l アンケート回答⼀覧から重要なキーワードと聴講者の要 望を⼀括で抽出

    l 問い合わせを分類し、内容に応じて商品在庫の確認など を⾃動化 l 1つの製品を元に、その競合製品を⽐較した表を⾃動⽣成 l 複数のWebページの情報を要約してワークシートに転記 l マニュアルの内容など事実に基づいたQ&Aやコンテンツ の作成 \次世代の⽣産性Hack/ ChatGPT API×Excel VBAで業務を徹底的に効率化! ✅ChatGPT APIがゼロからわかる ✅Excelと組み合わせて⾝近な業務に役⽴てられる ✅応⽤テクニックで業務全体を⾃動化できる ChatGPTを現場で⾃ら活⽤することにこだわり抜いた内容です。考え⽅から実践的テク ニックまでこれ⼀冊で幅広く網羅。 業務担当者やデジタル担当者、エンジニアなどあらゆる⽅々にお役⽴ていただけます! l ChatGPTを使った⼤量データの処理 や業務⾃動化の⽅法を知りたい⼈ l ChatGPTのより便利な活⽤⽅法を知 りたい⼈ l Excel VBAを実務で使っていて、 ChatGPTと組み合わせる⼿法を知り たい⼈ l ChatGPT APIを使ってみたい⼈ ▼本書で解説している内容の⼀例 ▼このような⽅におすすめ 詳細 / Amazon商品ページ https://www.amazon.co.jp/dp/429501768X
  3. 本⽇お話しすること 1. Dify連携のメリット 2. アーキテクチャー超ざっくり解説 3. Dify-LINE Bot連携各論 ① セッション管理

    ② さまざまな要求メッセージへの対応(テキスト、画像、スタンプほか) ③ さまざまな応答メッセージへの対応(Flex、Quick Reply、スタンプほか) ④ ⼊⼒引数(プロンプト可変値、LINEユーザーIDほか) 4. ビデオ通話⾵キャラクター対話連携 ① ビデオ通話⾵インターフェイスの仕組み ② チャネルを跨いだコンテキストの共有 5. まとめ
  4. Why Dify × LINE Bot l 対話フロー制御、スキル実⾏、応答メッセージ⽣成(キャラクターの⼀貫性管理)といった LINE Botの主要な処理をほぼフルカバー l

    開発・実⾏・運⽤それぞれの環境もオールインワンで提供 l ログ取得や利⽤状況モニタリングといった運⽤上必要な機能も充実 ⇨Time-to-Marketの⼤幅な短縮が可能 開発環境(ノーコード) 実⾏環境(API/画⾯)
  5. LINEユーザー毎の⽂脈管理の実現⽅法 l 会話の⽂脈はDify側で⾃動的に管理されるが、LINEとDifyをそのまま接続するとすべてのユー ザーが1つの⽂脈を共有してしまう l そのため、LINEのUserIDごとに会話(conversation_id)を割り当てる対応が必須 LINE LINE-Dify インテグレーション層 Dify

    line_uid conv_id updated_at U1234 D9876 xxx U2345 D8765 xxx U3456 D7654 xxx : : : U2345 D8765 conv_id 会話履歴 D7654 xxxx D8765 U2345との会話履歴 D9876 xxxx D1111 U9999との会話履歴 (新規) U9999 (なし) ①セッション管理
  6. FlexMessage等による応答 l より利⽤しやすくリッチなユーザー体験を創出するためには、Flex Message、Template Message、Quick Reply等のUIを組み合わせることが望ましい l Difyからの応答に含まれる情報を利⽤して、プログラムでメッセージを組み⽴てる { "event":

    "agent_thought", "conversation_id": ”xxxxxxxxxxx", : 中略 “observation”: “{¥”createReminder¥“: ¥”{¥“message¥”: ¥“{¥”id¥“:123,¥”user_id¥“:¥”U123456789¥“,¥”reminder_datetime¥“:¥”2024-08- 30T03:00:00¥“,¥”content¥“:¥”お昼にパンを買うよ!¥",¥"notified¥":false}¥", ¥"status_code¥": 200}¥"}", "tool": "createReminder", "tool_labels": { "createReminder": { "en_US": "createReminder", "zh_Hans": "createReminder" } }, "tool_input": "{¥"createReminder¥": {¥"text¥": ¥"お昼にパンを買うよ!¥", ¥"user_id¥": ¥”U123456789¥", ¥"reminder_datetime_utc¥": ¥"2024-08- 30T03:00:00Z¥"}}", "message_files": [] } Difyからの応答(チャンク) インテグレーション層で Template Message組⽴ ③応答メッセージ
  7. ⼊⼒引数 l DifyのAPIで inputs にあたる⼊⼒引数を使⽤してユーザー情報や設定情報をDifyに送信 l Toolでユーザーを特定するためのキー情報を渡す際には漏洩することを前提とした対策が必須 l 会話(conversation_id単位)の初回に送信した(しなかった)値は以後更新できない点に注意 {

    "inputs": { "user_id": "U123456789" }, “query”: "おはよう", "response_mode": "streaming", "user": "myuser", "auto_generate_name": False, } 会話の初回ターン ここに「U123456789」が埋め込まれる Difyでのプロンプト設定 ④⼊⼒引数
  8. キャラクターの性格の切り替え l 会話ルールや基本的な振る舞いを共通プロンプトとしてDify上に設定し、性格やセリフ例などの キャラクター依存部分を⼊⼒引数とすることで、⼀つのアプリで複数キャラクターの運⽤が可能 l 好感度等に応じて性格を変化させるときは会話IDの変更が必要な点に注意 ## 全体にわたる指⽰ (ロールプレイであること、共通的な世界観など) ##

    会話のルールと制約 (表現の共通的なルールや情報の取り扱いなど) ## ステッカー ([sticker:{keywords}]タグの説明) ## ビデオ通話 ([call:video]タグの説明) {{character_prompt}} Dify上のプロンプト設定(共通プロンプト) 🦔ツンツンな性格・セリフ例 ツンでもデレでもない性格・セリフ例 🐯ツンデレな性格・セリフ例 ❤デレ気味な性格・セリフ例 ❤🩹病みの⼊ったデレな性格・セリフ例 キャラクター差分プロンプト ⼊⼒引数 ④⼊⼒引数
  9. ⾳声通話の全体像 l いもうとBOT2.0では、LINEメッセージとビデオ通話(LIFF)とで⽂脈を共有 l Difyアプリはそれぞれに⽤意し、ビデオ通話起動時にはLINEメッセージ⽂脈情報を⽤いて会話 を初期化、ビデオ通話の会話ターン毎に要求・応答をLINEメッセージの⽂脈にフィードバック することでコンテキストの相互共有を実現 Dify Agent for

    Video Call Dify Agent for LINE Bot チャネルブリッジ LIFF ⽂脈情報 要求・応答 LIFF Token conversation_id ①初期化要求 ③通話初期化 conversation_id ④会話 conversation_id ⑤会話内容の通知 要求・応答のコピー 要求・応答のコピー ⑤ʼ会話内容の通知 ⽂脈情報 ②⽂脈取得
  10. 参考:ChatdollKit - AIキャラクター開発フレームワーク l ⾳声対話AIキャラクター開発フレームワーク。ユーザーとの対話のための⼊出⼒、対話制御、 3Dモデル制御を統合して提供 How is the weather

    today in Tokyo? Itʼs fine today! 聞く・⾒る・感じる 考える・働く・返事書く しゃべる・⾝振り⼿振り・表情 右 の 要 素 を う ま い こ と 繋 げ る 🥳🥳🥳🥳🥳 3Dモデルと声を⽤意してキャラク ター設定を書けば、どこでも動く AIキャラクターのできあがり 🥳🥳🥳🥳🥳
  11. コンテキスト共有⽅式の検討 l 純粋に⽂脈を共有するだけであればDifyの会話IDを共有することで対応可能だが、LINEメッ セージと通話では会話の作法が異なるため、今回は別個のDifyアプリの会話IDを間接的に連携 させる⽅式で対応 表情 モーション 声⾊ 映像取得 絵⽂字

    スタンプ 通話開始 Systemプロンプトに LINE・通話の指⽰が混在 LINE履歴 通話履歴 LINE・通話が混在する指⽰と履歴 に基づいて⽣成される応答😣 単⼀コンテキストによる対応 表情 モーション 声⾊ 映像取得 LINE特化の Systemプロンプト LINE履歴 LINEの指⽰と履歴 に基づいた応答🥰 LINE履歴 表情 モーション 声⾊ 映像取得 通話特化の Systemプロンプト 通話履歴 通話の指⽰と履歴に 基づいた応答🥰 通話履歴 複数コンテキスト連携による対応 連携 共通Difyアプリ LINE Difyアプリ 通話Difyアプリ
  12. ⾳声通話の全体像(再掲) l いもうとBOT2.0では、LINEメッセージとビデオ通話(LIFF)とで⽂脈を共有 l Difyアプリはそれぞれに⽤意し、ビデオ通話起動時にはLINEメッセージ⽂脈情報を⽤いて会話 を初期化、ビデオ通話の会話ターン毎に要求・応答をLINEメッセージの⽂脈にフィードバック することでコンテキストの相互共有を実現 Dify Agent for

    Video Call Dify Agent for LINE Bot チャネルブリッジ LIFF ⽂脈情報 要求・応答 LIFF Token conversation_id ①初期化要求 ③通話初期化 conversation_id ④会話 conversation_id ⑤会話内容の通知 要求・応答のコピー 要求・応答のコピー ⑤ʼ会話内容の通知 ⽂脈情報 ②⽂脈取得