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