以下のベスト プラクティスは、堅牢なエージェント アプリの構築に役立ちます。
自然言語のエージェント名
エージェント名には、意味がわかりやすい自然言語の名前を使用します。たとえば、「カスタマー ヘルプセンター エージェント」は「company_specialist」よりもわかりやすいため、実行時の LLM のパフォーマンスに役立ちます。
簡潔な目標
目標は、エージェントの目的の簡潔な説明にする必要があります。
品質の指示を行う
指示は以下のようにする必要があります。
- エンドユーザーの問題を解決するための段階的なアプローチを反映する
- 大まかな指示で簡潔な自然言語の文
- 率直に、ツールの使用シナリオを指定する
エージェントごとに 1 つ以上のサンプル
サンプルはエージェントごとに 1 つ以上必要ですが、4 つ以上使用することをおすすめします。サンプルにはハッピーパスのシナリオを含む必要があります。
十分なサンプルがないと、エージェントで予期しない動作が発生する可能性があります。 エージェントが応答しない、または予期したとおりに動作しない場合は、欠落しているか、明確に定義されていないサンプルが原因である可能性があります。サンプルを改善するか、新しいサンプルを追加してみてください。
指示とサンプルの正確性
明確で説明的な指示を書くことも有用ですが、エージェントの動作の精度を決めるのはサンプルの質と量です。言い換えると、完全に正確な指示を与えるよりも、徹底的なサンプルを書くことに多くの時間をかけてください。
サンプルでツールを参照する
エージェントがツールを使用してレスポンスを提供するように設計されている場合は、このタイプのリクエストに対応する例でツールを参照してください。
ツールスキーマの operationId
フィールド
ツールのスキーマを定義する場合、operationId
値は重要です。エージェントの指示では、この値が参照されます。このフィールドの名前付けの推奨事項は次のとおりです。
- 英数字とアンダースコアのみ。
- スキーマで説明されているすべての
operationId
の中で一意である必要があります。 - 提供される機能を反映した意味のある名前でなければなりません。
ツールスキーマ検証
ツールスキーマは、検証する必要があります。Swagger Editor を使用して、openAPI 3.0 のスキーマ構文を確認できます。
空のツール結果を処理する
エージェントがレスポンスを通知するためにツールに依存している場合、空のツールの結果により、エージェントの予期しない動作が発生する可能性があります。場合によっては、エージェント LLM がツールの結果を使用せずに回答をでっち上げる場合があります。これを防ぐには、エージェント LLM が独自の回答を試みないようにするための特定の指示を追加します。
一部のユースケースでは、エージェントの応答がツールの結果や提供されたデータに基づいた十分に根拠のあるものである必要があります。そのため、エージェント LLM の知識のみに基づいて応答させないようにする必要があります。
ハルシネーションを軽減するための指示の例:
- 「すべてのユーザーの質問に回答するには、このツールを使用する必要があります」
- 「ツールからデータが返ってこない場合は、ユーザーの質問に対する回答がわからないと答えてください」
- 「ツールからデータが返されなかった場合に、答えをでっち上げないでください」
Gemini でスキーマを生成する
Gemini では、スキーマを生成できます。たとえば、「Google カレンダー用にサンプルの openAPI 3.0 スキーマを作成できますか」を試してください。
集中的なエージェント
非常に大規模で複雑なエージェントは作成しないでください。各エージェントでは、具体的で明確なタスクを達成する必要があります。複雑なエージェントがある場合は、小さなサブエージェントに分割することを検討してください。
ループと再帰を回避する
エージェント アプリをリンクする際にループや再帰を作成するような指示はしないでください。
例にルーティング情報を提供する
エージェントを別のエージェントにルーティングする必要がある場合は、サンプルにこの情報を提供します。この情報は、入力と出力サンプル セクションの出力情報を持つエンドサンプル フィールドから、サンプルへ提供されます。
たとえば、このフィールドの最後の文は、「以後のクエリをデフォルト エージェントに再ルーティングする」などです。
パーソナライズに会話エージェント(Dialogflow CX)Messenger の JavaScript 関数を使用する
会話エージェント(Dialogflow CX)Messenger を使用する場合、次の関数を使用して、ユーザーのパーソナライズ情報をウェブ インターフェースからエージェントに送信することができます。