メインコンテンツにスキップ

Finタスクのベストプラクティス

Finタスクの作成やFin向けの指示作成時のベストプラクティスと例をご覧ください。

対応者:Ivan Branimir Skoric

注意:Fin Proceduresは、タスクの次の進化形として管理された可用性で利用可能で、より簡単な作成体験と強力な機能を提供します。アクセスについてはアカウントマネージャーにご相談ください。Fin TasksからProceduresへの移行について詳しくはこちら

Proceduresにアクセスできる場合は、新しい自動化にはそれらの使用をお勧めします。

Fin Tasksを使用すると、Finに実行してほしいタスクのステップバイステップの指示を与えることができます。Fin向けの指示を書く際のベストプラクティスと例をいくつかご紹介しています。


Finタスクのベストプラクティス

明確に書かれた指示は、Finタスクのパフォーマンスに大きな違いをもたらします。

一般的なLLMプロンプトのヒント

Fin Tasksの詳細に入る前に、大規模言語モデル(LLM)を扱う際に一般的に役立つヒントをいくつかご紹介します。

  • 良いプロンプトは必須であり指示的です。文は動詞で始め、受動態は避けてください。

  • あいまいさを残さないでください:詳細な指示は簡潔なものより優れています。

追加の参考資料については、こちらの導入トピックをご覧ください。

タスクの範囲と構成

Finは前のステップや実行されたアクション、保存されたデータの記憶を保持しますが、明確な境界と焦点を持った目的でタスクを設計する必要があります。

単一のFin Taskを使用する場合:

  • すべてのステップが明確な進行を持つ一貫したプロセスの一部である。

  • 後のステップは論理的な順序で前のステップに依存している。

  • プロセス全体が同じ意思決定基準と結果を共有している。

複数のFin Tasksを検討する場合:

  • 完全に別のビジネスプロセスの場合。

  • 複雑なワークフローで明確なチェックポイントを作成する必要がある場合。

  • 異なる利害関係者やチームがプロセスの異なる部分を担当している場合。

  • ワークフローへの異なる入り口を可能にしたい場合。

タスク構造

トリガータイトルと説明

タイトルは説明的で、内部用だけでないことを確認してください。

  • 良い例:Damaged orders

  • 悪い例:Test123

Finがこのタスクをトリガーすべき状況を説明するために3~5文を書いてください。できるだけ具体的にし、以下のいずれかを必ず含めてください。

  • このタスクをトリガーするのに適切な一般的なシナリオ。

  • このタスクで回答される顧客の質問の例。

  • 顧客が使う可能性のあるキーフレーズ。

良い例:

配送中に破損した注文(飲み物の漏れ、食べ物のこぼれ、容器の破損など)を顧客が報告した場合にこのタスクを使用してください。遅延配送、欠品、製品の破損に関係ない問題の報告にはこのタスクを使用しないでください。

悪い例:

注文の返金にこのタスクを使用してください。

指示ブロック

指示ブロックは以下のセクションで構成される構造化フォーマットに従います。

1. 指示:

これはFinが従うべき明確で論理的に完結したステップバイステップの計画です。Finがタスクを実行するために必要なすべての意思決定ルールをカバーしてください。

これらを作成する最良かつ最も簡単な方法は、「if + else」ロジックに従うことです。このロジックにより、どの段階でも必ず意思決定ができ、解決に向けて進むか、行き詰まった場合にプロセスから抜け出す方法が得られます。例としては次のようになります。

1. 注文日が判明し、30日以内であれば返金を行う。

2. 注文日が判明したが30日を超えている場合、Company Xのポリシーでは30日以上前の購入に対する返金は認められていないと顧客に伝える。

3. それ以外の場合は、サポートチームの人間メンバーにエスカレーションすると顧客に伝え、エスカレーションを実行する(この例ではエスカレーションロジックがFin Taskに組み込まれていることを前提とする)。

Finがアクセスするロジックや情報があまりにも曖昧な場合は、指示ブロックをより小さなステップに分け、より明確で制約のあるロジックにすることを検討してください。

タスクを実行するために必要な入力値も特定する必要があります。プロンプトで明確に述べてください。

  • これらの属性が何であり、何に使われるか、そしてこれらの属性がタスクの広い文脈とどのように関連しているか。

  • これらの属性が必ず利用可能かどうか(例:指示の前のステップから)。

    • もしそうなら、どこで利用可能か、または値が何かをプロンプトに直接挿入してください。

    • そうでなければ、どこでまたはどのように収集できるか(例:顧客から)。

2. ガイダンス(任意):

Finがタスク中にどのように対話し、応答し、振る舞うかを明確に指示してください。Finに従ってほしい特定の行動を簡潔に説明してください。

タスクの下書き

Finタスクを管理するための重要なベストプラクティスは、下書きとして保存機能を使うことです。これにより、顧客に影響を与えずにタスク指示の編集やテストが安全に行えます。

ライブタスクを編集すると、2つのバージョンが作成されます。

  • ライブバージョン: これは顧客が実際に操作しているアクティブなタスクです。

  • 下書きバージョン: これは未公開の変更セットで、プライベートに作業やテストができます。

これにより、公開前に自動化を完璧に仕上げる安全な環境が得られます。タスクエディター内のプレビューシミュレーション機能を使って下書きバージョンを必ずテストしてください。自信がつき、変更を公開ボタンをクリックするまで変更はライブになりません。

タスクトリガー

約10件の例示的な質問を含めてください

タスクのマッチング精度を向上させるために、タスクをトリガーすべき質問とすべきでない質問の具体的な例を提供してください。これにより、特に類似タスクが複数ある場合にFinが適切にタスクを使う判断がしやすくなります。

ポジティブ例(「トリガーする場合...」)とネガティブ例(「トリガーしない場合...」)の両方を追加できます。

約10件の非常に関連性の高い例示的な質問や顧客フレーズから始めて、タスクが正しく認識されるようにしてください。必要に応じて20~30件に拡張できますが、複雑さに注意してください。リストが長すぎたり具体的すぎる場合は、説明を簡素化するか、意図ベースのトリガーに切り替えて明確さと管理のしやすさを保つことを検討してください。

誤トリガーがある場合のみネガティブ例を使用してください

「トリガーしない場合...」の例は、誤ったトリガー動作が観察される場合にのみ含めてください。ネガティブ例はFinが反応すべきでないものを明確にして検出を改善しますが、誤作動の問題に対処している場合以外は追加を避けてください。

タスク指示

タスクが複雑な場合のみ指示を分割してください

タスクが単純でおおよそ10ステップ未満の場合は、単一の構造化された指示ブロックを使用してください。複雑なロジックや大きな分岐がある場合、または追従が難しい場合は、明確さと保守性のために複数の指示ブロックに分割するのが最適です。

Finにデータコネクターの入力を自動収集させる

データコネクターを実行する前にすべての入力を手動で集める必要はありません。データコネクターの設定時に必要な入力を指定すると、Finが不足している入力を自動的に顧客に尋ねます。これにより指示の複雑さが減り、やり取りが効率的になります。

会話中のタスク切り替えが許可されている

Finは会話の途中でタスクを切り替えたり、文脈や顧客の意図が変わった場合に情報回答(サポートコンテンツから)に切り替えたりできます。これにより、1つのタスクを終了して別のタスクをシームレスに開始でき、ユーザーの変化するニーズに基づいたより動的で応答性の高い対話が可能になります。

APIレスポンスは指示ステップ間で記憶される

Finは同じ指示ブロック内でAPIレスポンスを自動的に記憶します。後のステップで「先ほど返された残高を使って」など自然に結果を参照できます。データを繰り返したり手動で保存する必要はありません。

APIレスポンスを一時属性に保存する必要はない

APIレスポンスを明示的に一時属性に保存する必要はありません。Finは内部でデータを管理しており、後続のステップで自然言語で直接参照できます。

指示ステップでタグ付けとエスカレーションコマンドを活用する

会話にタグを付ける

Finにタスク指示で事前定義されたタグを使って会話にタグ付けするよう指示し、会話の分類を改善します。これによりフィルタリング、レポート作成、フォローアップアクションのトリガーが容易になります。

例示指示:

"会話にタグを付ける '請求に関する問い合わせ' と '高優先度'。"

チームにエスカレーションする

人間の介入が必要な会話をスムーズに引き継ぐため、Finに特定のチームやチームメンバーにエスカレーションするよう指示します。

例示指示:

"エスカレーション先: 請求"

注意: 指示で使用するタグやチーム名は、Intercomワークスペースで設定されているものと一致していることを確認してください。


Finタスクの例

以下に、Finタスクの形作りに役立つさまざまなユースケースのプロンプトをまとめました。

注文の返金

説明: このタスクの目的は、顧客からの返金リクエストが有効かどうかを判断し、有効であれば処理することです。以下の指示に従うことで、Company Xでの注文に対する顧客の返金リクエストを検証し処理できます。

ステップ1: 注文ID @collected_order_id の注文詳細を取得するために @get_order_details を使用します。その後、取得した注文が返金可能かどうかを以下のロジックで判断します。

  • 注文日が現在日より30日以上前の場合、注文が30日以上前に行われたため返金できないことを顧客に伝えます。@refund_outcome を「denied」に設定し、結果を顧客に通知します。

  • 注文日が現在日より30日未満の場合は、ステップ2に進みます。

  • それ以外の場合は、返金可能かどうか確認できないため、サポートチームの人間メンバーにエスカレーションします。@refund_outcome を「escalation」に設定し、この対応を顧客に伝えます。

ステップ2: 注文ID @collected_order_id で @process_items_refund を使用して返金処理を行います。その後、レスポンスを取得し、以下を実行します。

  • 返金が成功した場合、返金処理が正常に完了したことを顧客に伝えます。@refund_outcome を「success」に設定し、結果を顧客に通知します。

  • 返金が失敗した場合、返金処理ができなかったことを顧客に伝えます。@refund_outcome を「escalation」に設定し、この対応を顧客に伝えます。

ガイダンス: 返金拒否のネガティブな知らせを伝える際は共感的に対応してください。返金が成功した場合は、返金処理のタイムラインについて温かく明確に伝えてください。

サブスクリプション解約リクエスト

説明: このタスクの目的は、顧客からのサブスクリプション解約リクエストが有効かどうかを判断し、有効であれば処理することです。以下の指示に従うことで、Company Xの顧客のサブスクリプションを検証し解約できます。

ステップ1:ID @collected_subscription_id のサブスクリプションの詳細を取得するために @get_subscription_details を使用します。その後、取得したサブスクリプションがキャンセル可能かどうかを以下のロジックに従って判断します。

  • サブスクリプションがまだ最低契約期間中(12か月の期間が経過していない場合):

    • サブスクリプションが契約期間内のため、現時点でキャンセルできないことをお客様にお伝えください。

    • @cancellation_outcome を「denied」に設定します。

  • サブスクリプションがキャンセル可能な場合(月単位のプランであるか、契約期間が終了している場合):

    • ステップ2に進みます。

  • それ以外で、サブスクリプションの詳細からキャンセル可能かどうか判断できない場合:

    • キャンセルの可否を確認できないことをお客様に伝え、サポートチームの担当者にエスカレーションしてください。

    • @cancellation_outcome を「escalation」に設定します。

ステップ2:ID @collected_subscription_id のサブスクリプションをキャンセルするために @cancel_subscription を使用します。その後、応答を収集し、以下に従います。

  • キャンセルが成功した場合:

    • サブスクリプションが正常にキャンセルされたことをお客様にお伝えください。

    • @cancellation_outcome を「success」に設定します。

  • キャンセルが失敗した場合:

    • サブスクリプションをキャンセルできなかったことをお客様に伝え、問題をエスカレーションしたことをお知らせください。

    • @cancellation_outcome を「escalation」に設定します。

ガイダンス:契約期間について説明する際は、事実を淡々と伝えつつも共感を示してください。成功した場合は、今後の請求について明確に確認してください。

住所変更リクエスト

説明:このタスクの目的は、お客様からの配送先住所変更のリクエストが有効かどうかを判断し、有効であれば処理することです。以下の指示に従い、Company Xのシステムで配送先住所を確認・更新します。

ステップ1:ID @collected_customer_id を使用して @get_customer_profile からお客様の現在のアカウント状況を取得します。その後、以下のロジックに従います。

  1. お客様のアカウントがロックされているかフラグが立っている場合(account_status が「suspected fraud」または「unpaid balance」):

    • アカウント制限のため、住所変更を進められないことをお客様にお伝えください。

    • @address_change_outcome を「denied」に設定します。

  2. お客様のアカウントがアクティブで更新可能な場合:

    • ステップ2に進みます。

  3. それ以外で、システムがアカウント状況を判断できないか情報が不十分な場合:

    • 住所の更新可否を確認できないことをお客様に伝え、サポート担当者にエスカレーションしてください。

    • @address_change_outcome を「escalation」に設定します。

ステップ2:@collected_new_address を提供して @validate_address を使用し、その住所の正当性と配達可能性を確認します。その後、以下のロジックに従います。

  1. 新しい住所が認識されないか、Company Xのサービス対象地域外の場合(住所の値は「United States」、「European Union」、「Canada」のみで、他の地域はサポートされていません):

    • 住所がサービス対象外または無効であることをお客様にお伝えください。

    • @address_change_outcome を「denied」に設定します。

  2. 住所が認識され、配達可能な場合:

    • ステップ3に進みます。

  3. 住所の検証結果が不確定、またはシステムで判断できない場合:

    • 住所を確認できないため、リクエストをエスカレーションしたことをお客様にお伝えください。

    • @address_change_outcome を「escalation」に設定します。

ステップ3:@collected_customer_id と @collected_new_address の両方を提供して @update_customer_address を使用し、住所の更新を完了します。その後、以下のロジックに従います。

  1. 住所の更新が成功した場合:

    • 住所が正常に更新されたことをお客様にお伝えください。

    • @address_change_outcome を「success」に設定します。

  2. 住所の更新が何らかの理由で失敗した場合(システムエラーや記録の競合など):

    • 問題をサポート担当者にエスカレーションしたことをお客様にお伝えください。

    • @address_change_outcome を「escalation」に設定します。

ガイダンス:サポートされている地域を明確に伝えてください。住所変更が成功した場合は、今後のすべての発送に影響することをお客様にお知らせください。

ロイヤルティポイント調整

説明:このタスクの目的は、お客様のロイヤルティポイント調整のリクエストが有効かどうかを判断し、有効であれば調整を実行することです。以下の指示に従い、お客様のロイヤルティアカウントの状況を確認し、リクエストを検証し、その後Company Xのシステムでポイントを調整します。

ステップ1:ID @collected_loyalty_member_id を使用して @get_loyalty_profile からメンバーのアカウント状況を取得します。その後、以下のロジックに従います。

  1. ロイヤルティアカウントが非アクティブ、停止中、または不審な活動でフラグが立っている場合:

    • 現時点でポイント調整の対象外であることをお客様にお伝えください。

    • @points_adjustment_outcome を「denied」に設定します。

  2. アカウントの状態が良好な場合:

    • ステップ2に進みます。

  3. それ以外で、システムがアカウントの状態を判断できない場合:

    • お客様にアカウントを確認できないことを伝え、この件をサポートスペシャリストにエスカレーションすることをお知らせします。

    • @points_adjustment_outcome を「escalation」に設定します。

ステップ2: @collected_loyalty_member_id と @collected_points_adjustment_request を使用して @audit_loyalty_activity を実行し、最近のロイヤルティ取引を確認してリクエストが正当かどうかを判断します。その後:

  1. リクエストされた調整が請求期間外の取引に関する場合(請求日が90日以上前の場合):

    • プログラムのポリシーによりリクエストを承認できないことをお客様に伝えます。

    • @points_adjustment_outcome を「denied」に設定します。

  2. リクエストが有効な場合(例:最近の対象購入でポイントが漏れていた場合):

    • ステップ3に進みます。

  3. 監査結果が不確定の場合(該当する取引が見つからない、または部分的なデータのみの場合):

    • さらなる調査が必要であり、この件を人間の担当者にエスカレーションすることをお客様に伝えます。

    • @points_adjustment_outcome を「escalation」に設定します。

ステップ3: @collected_loyalty_member_id と @collected_points_adjustment_request の金額を使用して @adjust_loyalty_points を実行し、ポイント調整を完了します。その後:

  1. ポイント調整が正常に処理された場合:

    • お客様にロイヤルティ残高が更新されたことを伝えます。

    • @points_adjustment_outcome を「success」に設定します。

  2. システムエラーや記録の不整合により調整が失敗した場合:

    • リクエストを完了できなかったことをお客様に伝え、手動での確認のためにエスカレーションしたことをお知らせします。

    • @points_adjustment_outcome を「escalation」に設定します。

ガイダンス: ポイント調整が成功した場合は、ポイントが発生した特定の取引を参照してください。リクエストを拒否する際はプログラムのポリシーについて説明してください。


FAQ

Fin Taskは私のknowledge baseに直接アクセスできますか?

はい、Fin TasksはHelp Centreのコンテンツにアクセスできますが、記事はFin AI Agent用に有効にする必要があります。

Fin Taskがアクティブなときでも、なぜFinは時々knowledge baseから回答を提供するのですか?

Finは、Fin Taskがアクティブなときでも、knowledge baseのコンテンツを使って情報クエリに答えるためにアクティブなタスクを一時停止することがあります。回答後、Finはタスクの実行を続けることがあります。この動作は、ユーザーの即時の質問に答えて会話を効率的に保つために設計されています。

Fin Taskが進行する前にまずknowledge baseを確認するようにするには?

Fin Taskが進行する前にまずknowledge baseを確認するようにするには、Fin Taskを明示的に一時停止し、特定の問い合わせについてknowledge baseを検索するように設定できます。これはFin設定で「Guidance」ステップを追加し、タスク内にも同様の指示を含めることで実現可能です。記事はFin AI Agent用に有効にする必要があります。

Fin TaskとGuidance設定にどのような指示を追加すべきですか?

「タスクの手順を進める前に、まず利用可能なknowledge baseのコンテンツからこの質問に答えられるか確認する」といった指示を含むGuidanceステップを追加することを推奨します。また、Finは両方の設定からガイダンスを組み合わせるため、タスクの指示内にも同様の指示を追加してください。会話の分析、会話コンテキストに基づくknowledge baseの検索、関連情報の有無の確認をFinに指示できます。

Finがknowledge baseを検索するのにデータコネクタは必要ですか?

いいえ、Finが自分のインデックスされたknowledge baseコンテンツを検索するにはデータコネクタは不要です。データコネクタは、注文状況の確認や返金処理など外部システムから情報を取得・更新する場合にのみ必要です。

こちらの回答で解決しましたか?