以下のベスト プラクティスは、堅牢なエージェントの構築に役立ちます。
自然言語のハンドブック名
ハンドブック名は、明確で説明的で、自然な英語にする必要があります。これにより、実行時の AI ジェネレータのパフォーマンスが向上します。たとえば、「company_specialist」よりも「Customer Help Center Playbook」の方が適切です。
英語のアルファベットとスペースを含め、すべての名前を 64 文字以下にしてください。
簡潔な目標
目標は、ハンドブックの目的の簡潔な説明にする必要があります。
品質の指示を行う
指示は以下のようにする必要があります。
- エンドユーザーの問題を解決するための手順を反映する
- 大まかな指示を簡潔な自然言語の文で伝える
- 率直な表現を使い、ツールを使うシナリオを指定する
ハンドブックごとに 1 つ以上のサンプル
ハンドブックごとに少なくとも 1 つのサンプル を用意する必要がありますが、少なくとも 4 つ用意することをおすすめします。サンプルにはハッピーパスのシナリオを含む必要があります。
十分なサンプルがないと、ハンドブックで予期しない動作が発生する可能性があります。ハンドブックが応答しない、または期待どおりに動作しない場合は、欠落しているか、明確に定義されていないサンプルが原因である可能性があります。サンプルを改善するか、新しいサンプルを追加してみてください。
指示とサンプルの正確性
明確で説明的な指示を書くことも有用ですが、ハンドブックの動作の精度を決めるのはサンプルの質と量です。言い換えると、完全に正確な指示を与えるよりも、徹底的なサンプルを書くことに多くの時間をかけてください。
サンプルでツールを参照する
ハンドブックがツールを使用してレスポンスを提供するように設計されている場合は、このタイプのリクエストに対応する例でツールを参照してください。
ツールスキーマの operationId フィールド
ツールのスキーマを定義する場合、operationId 値は重要です。ハンドブックの指示では、この値が参照されます。
このフィールドの名前付けの推奨事項は次のとおりです。
- 英数字とアンダースコアのみ。
- スキーマで説明されているすべての
operationIdの中で一意である必要があります。 - 提供される機能を反映した意味のある名前でなければなりません。
ツールスキーマ検証
ツールスキーマは、検証する必要があります。 Swagger Editor を使用して、openAPI 3.0 のスキーマ 構文を確認できます。
空のツール結果を処理する
ハンドブックがレスポンスを通知するためにツールに依存している場合、空のツールの結果により、ハンドブックの予期しない動作が発生する可能性があります。場合によっては、ハンドブック AI ジェネレータがツールの結果を使用せずに回答をでっち上げる場合があります。 これを防ぐには、ハンドブック AI ジェネレータが独自の回答を試みないようにするための特定の指示を追加します。
一部のユースケースでは、ハンドブックの応答がツールの結果や提供されたデータに基づいた十分に根拠のあるものである必要があります。そのため、ハンドブック AI ジェネレータの知識のみに基づいて応答させないようにする必要があります。
ハルシネーションを軽減するための指示の例を次に示します。
- 「すべてのユーザーの質問に回答するには、このツールを使用する必要があります」
- 「ツールからデータが返ってこない場合は、ユーザーの質問に対する回答がわからないと答えてください」
- 「ツールからデータが返されなかった場合に、答えをでっち上げないでください」
Gemini でスキーマを生成する
Gemini はスキーマを生成できます。 たとえば、「Google カレンダーの openAPI 3.0 スキーマの例を作成できますか?」と試してみてください。
焦点を絞ったハンドブック
非常に大規模で複雑なハンドブックは作成しないでください。各ハンドブックでは、具体的で明確なタスクを達成する必要があります。複雑なハンドブックがある場合は、小さなサブハンドブックに分割することを検討してください。
ループと再帰を回避する
指示でエージェントをリンクする際にループや再帰を作成しないでください。現在のハンドブックを直接的または間接的に呼び出した祖先ハンドブックにルーティングしようとすると、ループが発生する可能性があります。
例にルーティング情報を提供する
ハンドブックを別のハンドブックにルーティングする必要がある場合は、サンプルにこの情報を提供します。これは、[入力と出力] のサンプル セクションの [出力情報を含むサンプルを終了] フィールドからサンプルに提供されます。
たとえば、このフィールドの最後の文は、「以後のクエリをデフォルト ハンドブックに再ルーティングする」などです。
パーソナライズに Dialogflow CX Messenger の JavaScript 関数を使用する
Dialogflow CX Messenger を使用する場合、次の関数を使用して、ユーザーのパーソナライズ情報をウェブ インターフェースからハンドブックに送信することができます。
パフォーマンスの計画
通常、生成機能では、レスポンスを生成するのに数秒から数十秒かかります。ハンドブックは会話の自然さを高めますが、エンドユーザー エクスペリエンスを維持するには、レスポンス時間を管理することが重要です。
パフォーマンスを最適化するための戦略をいくつか紹介します。
- 生成機能の使用のバランスを取る: 複数の生成機能の実行に必要な時間と、会話にもたらす価値とのトレードオフを慎重に検討してください。これらの機能がユーザーの目標に大きく貢献しない場合は、過度に使用しないでください。
- 生成機能の入力を最小限に抑える: AI ジェネレータが有用なレスポンスを生成するために必要な最小限の情報を収集して処理することを目指します。これにより、処理時間を大幅に短縮できます。
- コンテキスト キャッシュを使用する: ツールを介して Gemini を使用していて、 初期コンテキストが大きい場合は、 Vertex AI コンテキスト キャッシュ を使用して情報をキャッシュに保存し、同じデータに対するリクエストを繰り返さないようにします。
- 速度を上げるために固定レスポンスを実装する: アプリケーションで一意の動的コンテンツが必要ない場合は、Firebase などの従来のデータベースに頻繁に使用されるレスポンスを保存することを検討してください。これらの固定レスポンスは事前定義されていてすぐに利用できるため、その場で回答を計算する必要がある生成機能よりもはるかに高速なレスポンスを提供できます。
- 簡潔なハンドブック レスポンスを生成するように AI ジェネレータに指示する: テキストの入力と出力の場合、AI ジェネレータのレスポンス時間は、使用するモデルと出力 の長さに大きく左右されます。レスポンスを短くすると、パフォーマンスを大幅に向上させることができます。入力の長さも考慮されますが、出力の長さの方が影響が大きくなります。