$30 off During Our Annual Pro Sale. View Details »

OlaGPT を踏襲した Agent 構築ことはじめ - AI Agent Meetup Tokyo #0

OlaGPT を踏襲した Agent 構築ことはじめ - AI Agent Meetup Tokyo #0

Shumpei Miyawaki

July 21, 2023
Tweet

More Decks by Shumpei Miyawaki

Other Decks in Technology

Transcript

  1. OlaGPT を踏襲した Agent 構築
    Shumpei Miyawaki
    keywalker,inc. / Tohoku Univ.
    @catshun_
    • OlaGPT [Xie+ʼ23] の6つの認知モジュールを紹介する
    • 現在やっていることの共有

    View Slide

  2. どうやって有効だと検証した︖
    • ヒトの認知機能を模した6つのモジュールを構築
    • ⾼い柔軟性を持つ推論⽅法を提案
    Xie+’23 - OlaGPT: Empowering LLMs with Human-like Problem-Solving Abilities
    Yuanzhen Xie, Tao Xie, Mingxiong Lin, WenTao Wei, Chenglin Li, Beibei Kong, Lei Chen, Chengxiang Zhuo, Bo Hu, Zang Li
    どんなもの︖
    先⾏研究と⽐べてどこがすごい︖
    技術や⼿法のキモはどこ︖
    議論はある︖
    次に読むべき論⽂は︖
    • Kotseruba and Tsotsos+’20 - 40 years of cognitive architectures: core
    cognitive abilities and practical applications
    • ヒトの選好性を学習する RLHF、思考の連鎖、現
    在の状況から⾏動を選択する ReAct などは、ヒ
    トの体系的な認知能⼒を考慮していない
    表1.先⾏研究に対する⽴ち位置
    • 誤答の記録、推論時に参照することで誤りを防ぐ
    • 思考テンプレの設計、柔軟な推論を可能にする
    提案⼿法
    記録した誤答を参照する
    ことで正解率が向上
    • 🙆 差し込み可能なモジュールを利⽤している
    • 🙅 ほとんどのモジュールが LLM 依存(ブラックボックス問題,etc)
    ベースラインに対し
    正解率が改善

    View Slide

  3. P.2
    認知能⼒ 概要
    perception -
    attention
    (intention enhance)
    ユーザの顕在ニーズを明確にする。
    memory ⻑期記憶として、事実型知識・ツール・ノート・思考 のベクトル DB を作成。
    learning
    (active learning)
    予測誤りとフィードバック結果をノートに記録して 失敗から学ぶ枠組み を確⽴。
    reasoning ⽔平思考・直線的思考・批判思考・統合思考の 思考テンプレート を利⽤。
    action selection
    (controller)
    モジュールやメモリ選択等の 内部計画 を企てる。
    voting 複数エージェントの推論結果に対して 投票 を⽤いたアンサンブルを⾏う。
    ヒトの認知能⼒に基づく6つの機能 [Xie+’23]
    Kotseruba and Tsotsos+’20
    OlaGPT では、ヒトの認知能⼒に基づいて6つの機能を設計

    View Slide

  4. P.3
    OlaGPT の概要図 [Xie+’23]
    質問タイプを取得して
    質問の仕⽅を再構築する
    4つのメモリを定義︓
    ①事実型知識
    ②道具
    ③ノート
    ④思考
    頻発する予測誤りに対して LLM or 専⾨家がノートを作成
    推論モデル LLM / 専⾨家
    複数の推論結果に対して
    投票を⾏う
    検索情報からプロンプトを作成
    複数の思考テンプレを
    プロンプトとして設計

    View Slide

  5. タスク指向型エージェント
    ことはじめ

    View Slide

  6. P.5
    (課題)ユーザによる曖昧な⼊⼒を解消したい
    □ LLM による⽣成拡張 (GenRead, RECITE, CAMEL, etc...)
    □ +検索拡張 (HyDE, FLARE, etc...)
    □ Few-shot + スロットフィリング
    Intention Enhance (1/2)
    中略
    ① few-shot の検索
    ② LLM による条件スロット⽣成
    ③ 複数ターン対話によるスロットフィリング

    ユーザ意図を知るのが⽬的なので
    ユーザから直接ヒアリングする

    View Slide

  7. P.6
    Intention Enhance (2/2)
    (課題)ユーザ意図を対話形式ではなく⽂書として保持したい
    □ LLM によって意図+要約を⽣成 intention memory に登録
    few-shot 検索に利⽤

    View Slide

  8. P.7
    global_state = dict()
    for subtask in task:
    plan_name = subtask[“plan_name”]
    input_vars = subtask[“input_variables”]
    output_var = subtask[“output_variables”]
    func_string = generate_program(subtask)
    state = exec(func_string)
    output = state[plan_name](**input_vars)
    global_state.update(input_vars)
    global_state[output_var] = output
    (課題)複雑なタスクを簡単なタスクに分解したい(Decomposition)
    (課題)各サブタスクに対して関数を作成したい
    □ LLM で⼀連のサブタスクを JSONL として表現
    🙆 後続タスクで関数作成する際に引数を指定可能
    🙆 出⼒変数を次のサブタスクで指定できる
    Reasoning (1/3)
    [ …
    … ]
    中略
    中略

    サブタスク
    サブタスク
    変数として保持
    # 関数名
    # 引数
    # 戻り値
    # ユーザ FB の介⼊
    # タスクタイプ(I/O)
    実⾏イメージ

    View Slide

  9. P.8
    Reasoning (2/3)
    熱海のランチ候補を検索 熱海のレストランを⼀つ選択
    (課題)具体的なタスクを実⾏可能なプログラムを⽣成 or 再利⽤したい
    □ タスク⼀覧に対して改良を⾏う(PET, etc...)
    □ サブタスクに対して順次プログラム⽣成(LATM, PEARL, etc...)
    □ サブタスクの実⾏結果に対して内省・修正(OlaGPT, Reflexion, CodeClarQA, DTG, etc...)
    □ ロールプレイによるプログラム⽣成(CAMEL, etc...)

    API 等の呼び出し関数は
    事前に定義しておく
    {“inquire_to_user”: “True”} の場合は以下のコードを実⾏してユーザに判断を委ねる
    未実装
    だが必須

    View Slide

  10. ここからは未実装…
    なので展望を簡単に紹介します

    View Slide

  11. P.10
    Reasoning
    (課題)思考⽅法を柔軟に切り替える
    □ ⽔平思考・直線思考・批判思考・統合思考を柔軟に切り替える(OlaGPT, SwiftSage, etc...)
    □ 複数エージェントを使⽤して多様な推論を実施する (OlaGPT, MAD, Socratic AI, etc...)
    今後の展望
    Memory & Action Selection
    (課題)ユーザ意図に応じて柔軟な意思決定を⾏う
    □ 検索対象となる外部知識のドメインを絞り込む(FARM, etc...)
    □ 柔軟な⾏動選択 (ToT, RAP, etc...)

    View Slide