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

キャラクター制御のためのプロンプト術 for LINE Bot

uezo
April 10, 2024

キャラクター制御のためのプロンプト術 for LINE Bot

2024.4.10 LINE DC BOT AWARDS 2024 シリーズのイベントのLT資料です。

uezo

April 10, 2024
Tweet

More Decks by uezo

Other Decks in Technology

Transcript

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

    その後⾦融業界に転⾝し、損害保険会社と銀⾏にて各種デジタル トランスフォーメーション案件をリード。現在はテクノロジー企 業にて⾦融業界向け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. 感情と表情の連動の流れ l 感情シミュレーターでパラメーターを更新 l 更新結果から表情として反映すべきパラメーターを判断し、モデルに適⽤ あなたはあなたの感 情を「joy」 「angry」 「sorrow」「fun」 の感情パラメーター

    で表現します。 感情パラメーターは 会話を通じて変化し ます。 感情パラメーターの 値が特定… プロンプト {“joy”: 5, “angry”: 0, “sorrow”: 0, “fun”: 3, “response_text”: “⼀緒にお出かけする の、楽しみだね!”, “notes”: “ユー ザーにおでかけに誘 われて嬉しい気持ち になっています"} 応答 モデルに適⽤
  4. 感情パラメーター連動⽅式の課題 l 連動⾃体はうまくいったが、運⽤している中で課題が顕在化 表情反映のトリガーが難しい 1ターン1表情に限られる 処理が重く安定性に⽋く セリフの途中での表情変更が できない 常に同期させる(例:Joyが最⼤のときは常 に笑っている)のは不⾃然であり、更新・

    復元タイミングの作り込みが複雑 パラメーター更新タイミングがターン毎な ので、1ターンの中で複数の表情を表現でき ない たとえば冒頭で同調→中盤で励ましといっ た際に、笑顔を励ましに合わせることがで きない 応答待ち時間が⻑くなる傾向にあり、また、 応答フォーマットを確実に固定して抽出す る必要がある(or Function Calling等)
  5. 表情タグによる課題解決 l 感情パラメーター連動⽅式の課題を全て解決💪 表情反映のトリガーが難しい 1ターン1表情に限られる 処理が重く安定性に⽋く セリフの途中での表情変更が できない 常に同期させる(例:Joyが最⼤のときは常 に笑っている)のは不⾃然であり、更新・

    復元タイミングの作り込みが複雑 パラメーター更新タイミングがターン毎な ので、1ターンの中で複数の表情を表現でき ない たとえば冒頭で同調→中盤で励ましといっ た際に、笑顔を励ましに合わせることがで きない 応答待ち時間が⻑くなる傾向にあり、また、 応答フォーマットを確実に固定して抽出す る必要がある(or Function Calling等) 応答メッセージ指定のタイミ ングに従うのみ 1ターンに複数の表情切り替え が可能 セリフの任意のタイミングで 表情変更が可能 通常の応答メッセージと同じ で軽量・安定
  6. ⾝振り⼿振り制御のプロンプト例 l アニメーションタグを使⽤。プロンプトに渡すアニメーションの名付けは、そのポーズを⽣成 AIが理解しやすい⼀般的な単語により構成する You can express your emotions through

    the following animations: - angry_hands_on_waist - brave_hand_on_chest - calm_hands_on_back - concern_right_hand_front - energetic_right_fist_up - energetic_right_hand_piece - pitiable_right_hand_on_back_head - surprise_hands_open_front - walking - waving_arm - look_away - nodding_once - swinging_body If you want to express emotions with gestures, insert the animation into the response message like [anim:waving_arm]. Example [anim:waving_arm]Hey, over here!
  7. 古典的な対話フロー制御 l リクエストの内容(今なんて⾔ったか)とコンテキスト(これまでの話の流れ)に基づいてフ ローを制御 l 現在話しているトピック(雑談、天気予報、各種注⽂等)を意識し、進⾏状況をステート情報 として厳格に管理する必要があるため、そのライフサイクル管理は重要な論点 天気 どこ? 千葉

    晴れ 天 気 予 報 終了 ⽣成 破棄 トピック ステート 天気 どこ? 占い 何座? 占 い ⽣成 破棄 トピック ステート 天 気 更新 天気 どこ? 埼⽟ ⽣成 破棄 トピック ステート 天 気 例外 トピックの終了時 トピックの切り替わり時 スキルでの例外発⽣時
  8. 古典的な応答⽂⾔⽣成 l 応答メッセージのテンプレートをあらかじめ⽤意し、スキルの処理結果を当てはめることで⽂ ⾔を組み⽴て l 状況に応じた⾔い回しに対応する場合、ロジックと事前準備が煩雑になる {location}の天気は、{weather}。 最⾼気温は{max_temperature}度、 最低気温は{min_temperature}度 の⾒込みだよ!

    { "location": "佐賀", "forecast": [ { "time": "2024-04-07 00:00:00", "condition": "Sunny", "temperature_celsius": 22, "humidity_percent": 45 }, { "time": "2024-04-07 03:00:00", "condition": "Partly Cloudy", "temperature_celsius": 20, "humidity_percent": 50 }, : JSONの情報を要約して テンプレートに適⽤ テンプレート(キャラの⼝調) 向こう24時間の天気情報(3時間毎) location: 佐賀 weather: ⾬のち晴れ max: 32.0 min: 12.0
  9. ⽣成AIを使った実装例 l ChatGPTを使⽤する場合はFunction Callingに任せればOK l 情報が不⾜する場合に聞き返すといった振る舞いについてはプロンプトで指⽰ l 応答⽂⾔はAPIからの戻り値(JSON)をrole: functionなメッセージとしてそのままChatGPTに 渡すよりも、どのような構成を期待するか等の指⽰とともにrole:userとして渡す⽅が安定

    あなたは私のAIアシスタントです。あなたは会話の 他に以下のスキルを備えています。 ## 天気予報スキル * 指定された場所の天気を調べて回答します。 * 場所が不明な場合はユーザーに聞き返します。 ## リマインダースキル * ユーザーのToDoを指定⽇時に思い出させます。 * リマインドすべき⽇時や内容が不明な場合はユー ザーに聞き返します。 リクエストのプロンプト 以下は天気予報の結果をJSON形式で取得したもので す。条件に従って応答⽂章を作成してください。 * 現在の天気と気温を伝えてください * 今後天気や気温が変化する場合は、その内容と最 ⾼または最低気温を伝えてください * 天気の変化によって服装や⾬具、アクティビ ティーに関するアドバイスがあれば伝えてください * 100⽂字以内程度の簡潔な⽂⾔で応答してくださ い ```json {{ weather_json }} ``` 応答⽣成のプロンプト
  10. まとめ l ⽣成AIによるキャラクターの制御領域は、性格や⼝調のみならず、そ の他の表現や処理フローに⾄るまで全体に渡る l 表情や⾝振り⼿振りはタグ挿⼊をプロンプトで指⽰することにより実現 可能。LINE Botではアイコンやスタンプを利⽤して感情を表現 l 処理フロー全体をChatGPT等の⽣成AIに任せることで効率的にユー

    ザー体験の良いLINE Botを開発可能。ただし、処理フローにおけるプ ロセスの責務に応じたアーキテクチャーを設計し、保守性や拡張性を⾼ めておくことがオススメ l LIFFを組み合わせるとチャットだけでは実現できないことも可能に l Enjoy creating LINE Bot and Get ¥1,000,000🥰