エージェントの入力スキーマと出力スキーマを定義する

AI エージェントは、Databricks の他の機能と互換性を持つために、特定の入力および出力スキーマ要件に従う必要があります。 この記事では、AI エージェントがこれらの要件に準拠していることを確認する方法と、互換性を確保しながらエージェントの入力スキーマと出力スキーマをカスタマイズする方法について説明します。

Mosaic AI は、 MLflow モデル シグネチャを使用して 、エージェントの入力スキーマと出力スキーマの要件を定義します。 モデル署名は、内部コンポーネントと外部コンポーネントにエージェントとの対話方法を指示し、それらがスキーマに準拠していることを検証します。

カスタム入力と出力

Databricks では、ほとんどのエージェントのユースケースで OpenAI チャット完了スキーマに準拠することをお勧めします。

ただし、一部のシナリオでは、 client_typesession_idなどの追加の入力や、将来の対話のためにチャット履歴に含めるべきではない取得ソース リンクなどの出力が必要になる場合があります。

これらのシナリオでは、Mosaic AI Agent Framework は、カスタム入力と出力による OpenAI チャット完了リクエストとレスポンスの拡張をサポートしています。

PyFuncおよびLangGraphエージェントのカスタム入力と出力を作成する方法については、次の例を参照してください。

警告

Agent Evaluation レビュー アプリは、現在、追加の入力フィールドを持つエージェントのトレースのレンダリングをサポートしていません。

PyFuncカスタムスキーマ

次のノートブックは、PyFunc を使用したカスタムスキーマの例を示しています。

PyFunc カスタムスキーマエージェントノートブック

ノートブックを新しいタブで開く

PyFuncカスタムスキーマドライバーノートブック

ノートブックを新しいタブで開く

LangGraph カスタムスキーマ

次のノートブックは、LangGraph を使用したカスタムスキーマの例を示しています。 ノートブックの wrap_output 関数を変更して、メッセージ・ストリームから情報を解析および抽出できます。

LangGraph カスタム スキーマ エージェント ノートブック

ノートブックを新しいタブで開く

LangGraph カスタム スキーマ ドライバー ノートブック

ノートブックを新しいタブで開く

AI Playground とエージェント レビュー アプリでcustom_inputsを提供する

エージェントが custom_inputs フィールドを使用して追加の入力を受け入れる場合は、 AI Playgroundエージェントレビューアプリの両方でこれらの入力を手動で提供できます。

  1. AI Playground または Agent Review App で、歯車アイコン 歯車アイコン を選択します。

  2. custom_inputsを有効にします。

  3. エージェントの定義済み入力スキーマに一致するJSONオブジェクトを提供します。

    AIプレイグラウンドでcustom_inputsを提供します。

従来の入力スキーマと出力スキーマ

SplitChatMessageRequest 入力スキーマと StringResponse 出力スキーマは非推奨になりました。 これらのレガシ スキーマのいずれかを使用している場合、Databricks では、推奨されるチャット完了スキーマに移行することをお勧めします。

SplitChatMessageRequest 入力スキーマ (非推奨)

SplitChatMessagesRequest では、現在のクエリと履歴をエージェント入力として別々に渡すことができます。

  question = {
      "query": "What is MLflow",
      "history": [
          {
              "role": "user",
              "content": "What is Retrieval-augmented Generation?"
          },
          {
              "role": "assistant",
              "content": "RAG is"
          }
      ]
  }

StringResponse 出力スキーマ (非推奨)

StringResponse エージェントの応答を、単一の文字列 content フィールドを持つオブジェクトとして返すことができます。

{"content": "This is an example string response"}