Slide 1

Slide 1 text

Difyによるエージェント デザインパターン構築の試み A I エ ー ジ ェ ン ト 開 発 の 未 来

Slide 2

Slide 2 text

自己紹介 大城 海斗 Oshiro kaito 2024年4月 バックエンドエンジニア入社 LangChain / LangGraph / Difyを用いた生成AIツールの開発 サイバーエージェント > AIオペレーション室

Slide 3

Slide 3 text

01 AIエージェント 02 エージェントデザインパターンについて 03 Difyで構築:エージェントデザインパターン例 04 まとめ  Contents

Slide 4

Slide 4 text

AIエージェント 作ってますか? 01

Slide 5

Slide 5 text

AIエージェントとは

Slide 6

Slide 6 text

環境に適応して、 与えられた指示を遂行する AIシステム??

Slide 7

Slide 7 text

システムに落とす時、 この言語化レベルで エージェント作れるの?

Slide 8

Slide 8 text

AIエージェントに書かれているものが色々

Slide 9

Slide 9 text

AIエージェントに必要な機能 Profile Contents 属性情報:年齢や居住地など 性格情報:性格特性や好みなど 社会的背景:関係性や役割など Generation Strategy 手作業でのプロフィール作成 大規模言語モデルによる生成 既存データセットとのアラインメント P r o f i l e ( 役 割 、 個 性 ) Planning without Feedback Single-path Reasoning(単一路径での思考) Multi-path Reasoning(複数経路を並行・比較する思考) External Planner(外部システムを利用する計画立案) Planning with Feedback Environment Feedback(環境からの情報を取り込みながらの計画修正) Human Feedback(人間からの指示・評価を取り込む) Model Feedback(モデル自身の推論からフィードバックを得る) P l a n n i n g ( 行 動 の 計 画 ) Action Target(アクションの目的) Task Completion(タスクの完了) Exploration(探索や学習) Communication(対話・コミュニケーシ ョン) Action Production(アクションの生成) Memory Recollection(必要な記憶の呼び 出し) Plan Following(計画に従う) A c t i o n ( タ ス ク 実 行 ) Action Space(アクションの空間・種類) Tools(外部ツールの利用) Self-Knowledge(自分自身に関する情報の活 用) Action Impact(アクションの影響) Environments(周囲の環境や状況に変化を与 える) New Actions(新たな行動や次のアクションを 誘発する) Internal States(エージェント内部の状態に 影響を与える) Memory Structure すべての記憶を一元的に管理する構造 長期・短期など複数種類のメモリを組み合わせた構造 Memory Formats 言語ベースの表現、テキストなど ベクトル表現 データベース形式 リスト形式 Memory Operation 過去の記憶を読み取る 新しい情報を書き込み、更新する 過去の情報を振り返り、要約したり考察したりする M e m o r y ( 会 話 の 記 憶 )

Slide 10

Slide 10 text

AIエージェントに必要な機能 Profile Contents 属性情報:年齢や居住地など 性格情報:性格特性や好みなど 社会的背景:関係性や役割など Generation Strategy 手作業でのプロフィール作成 大規模言語モデルによる生成 既存データセットとのアラインメント P r o f i l e ( 役 割 、 個 性 ) Planning without Feedback Single-path Reasoning(単一路径での思考) Multi-path Reasoning(複数経路を並行・比較する思考) External Planner(外部システムを利用する計画立案) Planning with Feedback Environment Feedback(環境からの情報を取り込みながらの計画修正) Human Feedback(人間からの指示・評価を取り込む) Model Feedback(モデル自身の推論からフィードバックを得る) P l a n n i n g ( 行 動 の 計 画 ) Action Target(アクションの目的) Task Completion(タスクの完了) Exploration(探索や学習) Communication(対話・コミュニケーシ ョン) Action Production(アクションの生成) Memory Recollection(必要な記憶の呼び 出し) Plan Following(計画に従う) A c t i o n ( タ ス ク 実 行 ) Action Space(アクションの空間・種類) Tools(外部ツールの利用) Self-Knowledge(自分自身に関する情報の活 用) Action Impact(アクションの影響) Environments(周囲の環境や状況に変化を与 える) New Actions(新たな行動や次のアクションを 誘発する) Internal States(エージェント内部の状態に 影響を与える) Memory Structure すべての記憶を一元的に管理する構造 長期・短期など複数種類のメモリを組み合わせた構造 Memory Formats 言語ベースの表現、テキストなど ベクトル表現 データベース形式 リスト形式 Memory Operation 過去の記憶を読み取る 新しい情報を書き込み、更新する 過去の情報を振り返り、要約したり考察したりする M e m o r y ( 会 話 の 記 憶 ) この要素が含まれていればエージェントっぽい 振る舞いはするだろう

Slide 11

Slide 11 text

AIエージェント エージェントの振る舞いはできそう と言いつつも

Slide 12

Slide 12 text

Difyでエージェント 構築できてますか? 01

Slide 13

Slide 13 text

エージェント構築難しい ワークフローどうやって 構築すべきか悩む 構築にパターンがない こういう悩みを持っている方いらっしゃるのでは?

Slide 14

Slide 14 text

今日話したいこと Difyでエージェント構築をするために エージェントデザインパターンを知って、 Difyのエージェント(ワークフロー)構築の幅を広げよう

Slide 15

Slide 15 text

エージェントデザイン パターンって何? 02

Slide 16

Slide 16 text

エージェントデザインパターンとは 複数のLLM(エージェント)が相互に連携して、 目的を達成するための設計パターン エージェントを設計するときの選択肢みたいなもの

Slide 17

Slide 17 text

参考にしたもの タイトル 概要 エージェントデザインカタログ エージェント設計のパターンを 18個紹介、複雑化するエージェント 設計のために設計ガイドラインの提 供

Slide 18

Slide 18 text

ピックアップしたものを紹介します 1. プロンプト・レスポンス最適化 2. 役割ベース 3. リフレクション(チェック)

Slide 19

Slide 19 text

ピックアップしたものを紹介します 1. プロンプト・レスポンス最適化 2. 役割ベース 3. リフレクション(チェック)

Slide 20

Slide 20 text

①入力をいい感じにする ②出力をいい感じにする プロンプト・レスポンス最適化 ざっくり説明

Slide 21

Slide 21 text

プロンプト・レスポンス最適化 アウトプットが大幅に変わる ことはないが、 細かい言い回しや欲しい追加 情報がアウトプットされる

Slide 22

Slide 22 text

プロンプト・レスポンス最適化 - Dify_ver

Slide 23

Slide 23 text

結果: 入力(カレーの作り方教えて) プロンプト最適 レスポンス最適

Slide 24

Slide 24 text

通常のものと比較: 入力(カレーの作り方教えて)

Slide 25

Slide 25 text

レスポンス最適 通常のものと比較: 入力(カレーの作り方教えて) 通常アウトプット

Slide 26

Slide 26 text

レスポンス最適 プロンプト・レスポンス最適化 通常アウトプット 細かい文章の最適化 追加情報などが追加される

Slide 27

Slide 27 text

ピックアップしたものを紹介します 1. プロンプト・レスポンス最適化 2. 役割ベース 3. リフレクション(チェック)

Slide 28

Slide 28 text

役割ベース ユーザの入力に対して、 計画を立てて タスクを生成し タスクを実行していく というような流れを1つのLLM に任せず、それぞれ分けて実行 していく

Slide 29

Slide 29 text

役割ベース- Dify_ver ユーザの入力情報をもとに、検索を行ってレポートを返す

Slide 30

Slide 30 text

比較用:役割なしDify_ver ユーザの入力情報をもとに、検索を行ってレポートを返す

Slide 31

Slide 31 text

違い ユーザの入力情報をもとに、検索を行ってレポートを返す 計画&タスク生成あり 計画&タスク生成なし

Slide 32

Slide 32 text

違い(いちごの育て方について) 計画&タスク生成あり 計画&タスク生成なし 左の方が細かく言語化できている

Slide 33

Slide 33 text

違い(いちごの育て方について) 計画&タスク生成あり 計画&タスク生成なし 左の方が細かく言語化できている

Slide 34

Slide 34 text

余談:ヒューマンインザループとの相性が良さそう

Slide 35

Slide 35 text

余談:ヒューマンインザループとの相性が良さそう チェックしてス テートを切り替 える human in the loop

Slide 36

Slide 36 text

余談:ヒューマンインザループとの相性が良さそう ヒアリングすることで、ユーザのニーズを引き出 し、ブレのないアウトプットになりやすい

Slide 37

Slide 37 text

ピックアップしたものを紹介します 1. プロンプト・レスポンス最適化 2. 役割ベース 3. リフレクション(チェック)

Slide 38

Slide 38 text

リフレクション リフレクションとは、人でいうところの セルフチェックやクロスチェックになります

Slide 39

Slide 39 text

メリット アウトプットが正しいかチェックした後 に出力できる

Slide 40

Slide 40 text

リフレクション 図で表すと 目標設定 タスク分解 タスク実行 実行結果を リフレクション 判定 実行結果を まとめる 次のタスクへ タスク完了 もう一度実行 全タスク終了 Claude Gemini GPT 人間 アウトプットのチェック

Slide 41

Slide 41 text

目標設定 タスク分解 タスク実行 実行結果を リフレクション 判定 実行結果を まとめる 次のタスクへ リフレクション Difyでできるの? タスク完了 もう一度実行 全タスク終了 Claude Gemini GPT 人間 チェックはありがたいが、 DIfyに同じものをループする機能はない

Slide 42

Slide 42 text

画像分析 リフレクション _dify ver 画像からペルソナを作成する

Slide 43

Slide 43 text

リフレクション _dify ver 画像分析

Slide 44

Slide 44 text

リフレクション _dify ver 画像分析

Slide 45

Slide 45 text

デモ動画 動いている様子

Slide 46

Slide 46 text

リフレクション _dify ver 画像分析

Slide 47

Slide 47 text

デモ動画 動いている様子

Slide 48

Slide 48 text

まとめ Difyでエージェント構築をするために エージェントデザインパターンを知って、 Difyのエージェント(ワークフロー)構築の幅を広げよう

Slide 49

Slide 49 text

ありがとうございました! Thank you!