Agents reference
================

エージェント関連の機能、ビュー、およびタイプのリファレンス。ガイドスタイルのドキュメントについては、
:ref:`Agents reference <Agents reference>`  を参照してください。

カタログビュー
--------------

helpb.agents
^^^^^^^^^^^^

エージェント構成。専用の「リストエージェント」機能はありません。このテーブルを直接照会します。

.. csv-table::
  :header: Column,Type,Description
  :widths: 12,15,25
  :align: left
  :class: longtable

  `id`,uuid,内部識別子。
  `name`,text,一意のエージェント名。
  `instructions`,text,エージェントの指示。
  `model`,text,エージェントをバッキングするモデル。
  `role`,text,エージェントのツール呼び出しのPostgresロールは、構成されている場合に実行されます。
  `delegates`,text[],このエージェントが委任できるエージェントの名前。
  `tools`,text[],このエージェントが呼び出す可能性のあるツールの名前。
  `output_type`,jsonb,`aidb.output_type()`で構築された構造化出力スキーマ。
  `input_token_budget`,integer,呼び出しごとの入力トークンバジェット。
  `output_token_budget`,integer,呼び出しごとの出力トークンバジェット。
  `max_iterations`,integer,呼び出しごとの最大推論反復数。
  `timeout_seconds`,integer,通話ごとの最大実時間。
  `budget_strategy`,`aidb.budget_strategy`,予算を超過した場合の動作。以下の :ref:`タイプ<タイプ>` を参照してください。
  `preset`,text,保存されていますが、現在動作は解決されていません。
  `created_at`,timestamptz,作成時間。
  `updated_at`,timestamptz,最終更新時間。

promoteb.agent_tasks
^^^^^^^^^^^^^^^^^^^^

``agent_converse``
コール「タスク」ごとに1行、そのライフサイクルステータスを含みます。

.. csv-table::
  :header: Column,Type,Description
  :widths: 12,15,25
  :align: left
  :class: longtable

  `task_id`,uuid,内部タスク識別子。
  `agent_id`,uuid,このタスクを実行したエージェント `aidb.agents.id` 。
  `conversation_id`,uuid,このタスクが属する会話。
  `request_message_id`,uuid,`aidb.conversation_log`のトリガーメッセージのID。
  `response_message_id`,uuid,完了すると、`aidb.conversation_log`の結果の回答のID。
  `caller_role`,text,`agent_converse`を呼び出したPostgresロール。
  `status`,`aidb.task_status`,現在のライフサイクルステータス。以下の :ref:`タイプ<タイプ>` を参照してください。
  `blocking`,boolean,今日は常に`true` — すべてのタスクは同期的に実行されます。
  `error`,text,タスクが失敗した場合のエラーメッセージ。
  `created_at`,timestamptz,タスクが開始されたとき。
  `completed_at`,timestamptz,タスクが完了したとき。既にある場合。

helpb.conversation_log
^^^^^^^^^^^^^^^^^^^^^^

すべての会話にわたる、すべてのユーザープロンプトとエージェントの回答 -
``aidb.get_conversation()`` が返すのと同じ行、\ ``conversation_id``
によってフィルタリングされていません。ツール呼び出し、モデル要求、およびその他の内部アクティビティは含まれません。完全なアクティビティ履歴については、\ ``aidb_internal.action_log``
を直接照会します。

.. csv-table::
  :header: Column,Type,Description
  :widths: 12,15,25
  :align: left
  :class: longtable

  `id`,uuid,メッセージID
  `conversation_id`,uuid,このメッセージが属している会話。
  `agent_id`,uuid,エージェントが関与しました。
  `task_id`,uuid,このメッセージが含まれていたタスク。
  `action_type`,`aidb.action_type`,`user_prompt`または`answer`。
  `payload`,jsonb,メッセージの生のペイロード `user_message`または`llm_response`構造体。
  `created_at`,timestamptz,メッセージが作成されたとき。
  `completed_at`,timestamptz,完成したとき。

helpb.conversations
^^^^^^^^^^^^^^^^^^^

会話ごとに1行、\ ``aidb.conversation_log`` から集計されます。

.. csv-table::
  :header: Column,Type,Description
  :widths: 12,15,25
  :align: left
  :class: longtable

  `conversation_id`,uuid,会話のID。
  `agent_id`,uuid,エージェントが関与しました。
  `parent_conversation_id`,uuid,常に`NULL` — 会話フォークは実装されていません。
  `forked_from_message_id`,uuid,常に`NULL` — 会話フォークは実装されていません。
  `status`,`aidb.task_status`,この会話の最新のタスクのステータス。
  `message_count`,bigint,会話内のメッセージの数。
  `last_message_id`,uuid,最新のメッセージのID。
  `created_at`,timestamptz,会話が始まったとき。
  `updated_at`,timestamptz,会話が最後に更新された日。

--------------

エージェント管理機能
--------------------

promoteb.create_agent
^^^^^^^^^^^^^^^^^^^^^

新しいエージェントを登録します。

パラメーター
^^^^^^^^^^^^

.. csv-table::
  :header: Parameter,Type,Default,Description
  :widths: 15,12,12,20
  :align: left
  :class: longtable

  `name`,TEXT,Required,エージェントの一意の名前。
  `instructions`,TEXT,Required,エージェントの動作を定義する指示。
  `model`,TEXT,Required,エージェントをバッキングするモデルの名前。  :ref:`モデルの選択<モデルの選択>` を参照してください。
  `tools`,TEXT[],NULL,エージェントが呼び出すことができるツールの名前`aidb.tools`から 。
  `delegates`,TEXT[],NULL,このエージェントが委任できる他のエージェントの名前。
  `role`,TEXT,NULL,エージェントのツールが呼び出すPostgresロールは実行対象となります。呼び出し者はこのロールのメンバーである必要があります。
  `output_type`,JSONB,NULL,:ref:``aidb.output_type()` <#aidboutput_type>` で構築された構造化出力スキーマ。
  `input_token_budget`,INTEGER,NULL (no limit),`agent_converse`コールごとの入力トークンバジェット。
  `output_token_budget`,INTEGER,NULL (no limit),呼び出しごとの出力トークンバジェット。
  `max_iterations`,INTEGER,NULL,呼び出しごとの最大推論反復数。 25のハードシーリングは、関係なく常に適用されます。
  `timeout`,INTEGER,NULL (300 applied at runtime),通話ごとの最大実時計秒数。
  `budget_strategy`,TEXT,`'attempt_complete'`,`'ignore'`、`'error'`、`'summarize'`、`'attempt_complete'`のいずれか。  :ref:`予算と制限<予算と制限>` を参照してください。
  `preset`,TEXT,NULL,保存されていますが、現在動作は解決されていません。

返品
^^^^

``TABLE(error TEXT)`` —成功した場合は行なし。失敗に設定された\ ``error``
を含む単一の行検証/名前衝突失敗の場合に発生することはありません。

例
^^

.. code:: sql

   SELECT aidb.create_agent(
       name                 => db_helper,
       instructions         => You are a helpful assistant that answers questions about this database.,
       model                => my_gpt,
       tools                => ARRAY[run_sql_query],  -- optional; tool names from aidb.tools. Default: NULL (no tools)
       delegates            => NULL,                    -- optional; names of other agents to delegate to. Default: NULL (no delegation)
       role                 => NULL,                    -- optional; Postgres role tool calls run as. Default: NULL (run as the calling role)
       output_type          => NULL,                    -- optional; structured output schema from aidb.output_type(). Default: NULL (plain-text answer)
       input_token_budget   => NULL,                    -- optional; input token cap per agent_converse call. Default: NULL (no limit)
       output_token_budget  => NULL,                    -- optional; output token cap per agent_converse call. Default: NULL (no limit)
       max_iterations       => NULL,                    -- optional; reasoning-round cap per call. Default: NULL (a hard ceiling of 25 always applies)
       timeout              => NULL,                    -- optional; wall-clock seconds cap per call. Default: NULL (300 seconds applied at runtime)
       budget_strategy      => attempt_complete,      -- optional; behavior when a budget is exceeded. Default: attempt_complete
       preset               => NULL                     -- optional; reserved for future use, has no effect today. Default: NULL
   );

--------------

promoteb.update_agent
^^^^^^^^^^^^^^^^^^^^^

既存のエージェントを更新します。 ``name``
を除くすべてのパラメーターはオプショナルであり、デフォルトは「変更しない」を意味する\ ``NULL``
になります。 ``budget_strategy``
を含みます。ここでのデフォルトは\ ``'attempt_complete'``
ではなく\ ``NULL`` です。

.. _パラメーター-1:

パラメーター
^^^^^^^^^^^^

``create_agent`` と同じパラメーター、 ``name``
を除き、すべてオプショナルデフォルト\ ``NULL`` 。

.. _返品-1:

返品
^^^^

``TABLE(error TEXT)``
—成功した場合は行なし。失敗した場合に設定された\ ``error``
を含む単一の行エージェントが見つからない、無効なフィールド値。

.. _例-1:

例
^^

.. code:: sql

   SELECT aidb.update_agent(db_helper, model => my_new_gpt, max_iterations => 15);

--------------

promoteb.delete_agent
^^^^^^^^^^^^^^^^^^^^^

名前でエージェントを削除します。

.. _パラメーター-2:

パラメーター
^^^^^^^^^^^^

.. csv-table::
  :header: Parameter,Type,Default,Description
  :widths: 15,12,12,20
  :align: left
  :class: longtable

  `name`,TEXT,Required,削除するエージェントの名前。
  `force`,BOOLEAN,NULL (false),`true`の場合、エージェントの内部タスク/アクションキューレコードも削除するため、会話履歴がある場合でも削除を続行できます。会話トランスクリプト自分自身 `aidb.conversation_log`は、いずれの方法でも保存されます。

.. _返品-2:

返品
^^^^

``TABLE(error TEXT)``
—成功した場合は行なし。エージェントに会話履歴があり、\ ``force``
が渡されなかった場合を含む、失敗に設定された\ ``error`` を含む単一の行。

.. _例-2:

例
^^

.. code:: sql

   SELECT aidb.delete_agent(db_helper, force => true);

--------------

会話機能
--------

promoteb.agent_converse
^^^^^^^^^^^^^^^^^^^^^^^

プロンプトに対してエージェントの推論ループを実行し、その回答を返します。

.. _パラメーター-3:

パラメーター
^^^^^^^^^^^^

.. csv-table::
  :header: Parameter,Type,Default,Description
  :widths: 15,12,12,20
  :align: left
  :class: longtable

  `agent_name`,TEXT,Required,会話するエージェントの名前。
  `prompt`,TEXT,Required,送信するプロンプト。
  `conversation_id`,TEXT,NULL,既存の会話を続行します。新しいものを開始する場合は省略します。IDは自動的に生成されます。
  `read_only`,BOOLEAN,NULL,:ref:`読み取り専用モード<読み取り専用モード>` を強制的にオンまたはオフにします。省略すると、リードレプリカで自動有効化されます。
  `output_type`,JSONB,NULL,このコールのみにエージェントの設定済み :ref:`構造化された出力<構造化された出力>` スキーマをオーバーライドします。
  `debug`,BOOLEAN,NULL,`true`の場合、すべてのアクションを`NOTICE`としても出力します。  :ref:`デバッグモード<デバッグモード>` を参照してください。

.. _返品-3:

返品
^^^^

``TABLE(message TEXT, conversation_id TEXT, error TEXT)`` —
1行。エージェントロジックの障害に対してレイズすることはありません。代わりに\ ``error``
が設定され、\ ``message`` /``conversation_id`` は\ ``NULL`` です。
IDを添付するものは何も永続化されないため、 ``conversation_id``
は読み取り専用実行の\ ``NULL`` でもあります。

.. _例-3:

例
^^

.. code:: sql

   SELECT * FROM aidb.agent_converse(
       agent_name      => db_helper,
       prompt          => How many rows are in the orders table?,
       conversation_id => NULL,  -- optional; continue an existing conversation by id. Default: NULL (starts a new conversation)
       read_only       => NULL,  -- optional; force read-only mode on/off. Default: NULL (auto: on for a read replica, off otherwise)
       output_type     => NULL,  -- optional; override the agents structured output schema for this call. Default: NULL (use the agents own configuration)
       debug           => NULL   -- optional; also emit every action as a NOTICE. Default: NULL (false)
   );

--------------

promoteb.start_agent_session
^^^^^^^^^^^^^^^^^^^^^^^^^^^^

名前付けエージェントの新しい会話IDを使用する最初の\ ``agent_converse``
呼び出しに先立って、名前付けエージェントの新しい会話IDを生成します。

.. _パラメーター-4:

パラメーター
^^^^^^^^^^^^

.. csv-table::
  :header: Parameter,Type,Description
  :widths: 12,15,25
  :align: left
  :class: longtable

  `agent_name`,TEXT,会話するエージェントの名前。

.. _返品-4:

返品
^^^^

``TABLE(conversation_id TEXT)`` . ``agent_converse``
とは異なり、このファンクションは、 ``agent_name``
が空または不明な場合に\ ``error`` 列を返すのではなく **レイズ** します。

.. _例-4:

例
^^

.. code:: sql

   SELECT * FROM aidb.start_agent_session(db_helper);

--------------

promoteb.get_conversation
^^^^^^^^^^^^^^^^^^^^^^^^^

会話のメッセージ-すべてのユーザーのプロンプトと最終的な回答を時系列で取得します。ツール呼び出しおよびその他の内部アクティビティを除外します。完全なアクティビティ履歴については、
``aidb_internal.action_log`` を参照してください。

.. _パラメーター-5:

パラメーター
^^^^^^^^^^^^

.. csv-table::
  :header: Parameter,Type,Description
  :widths: 12,15,25
  :align: left
  :class: longtable

  `conversation_id`,TEXT,会話のID。

.. _返品-5:

返品
^^^^

``TABLE(message_id TEXT, task_id TEXT, action_type TEXT, role TEXT, sender_id TEXT, contents TEXT)``
— メッセージごとに1行。 ``role`` は\ ``"user"`` または\ ``"agent"``
です。 ``sender_id`` は、特定の送信者プロンプト自分自身の\ ``user``
フィールド、またはエージェントのIDです。 ``conversation_id``
が空の場合、 **レイズ** ``error`` 列を返すのではなく。

.. _例-5:

例
^^

.. code:: sql

   SELECT * FROM aidb.get_conversation(8f14e45f-ceea-467e-9575-a3d1a2c1a123);

--------------

promoteb.get_message
^^^^^^^^^^^^^^^^^^^^

IDに基づいて1つのメッセージのプレーンテキストコンテンツを取得します。

.. _パラメーター-6:

パラメーター
^^^^^^^^^^^^

.. csv-table::
  :header: Parameter,Type,Description
  :widths: 12,15,25
  :align: left
  :class: longtable

  `message_id`,TEXT,メッセージのID。

.. _返品-6:

返品
^^^^

``TABLE(message TEXT, error TEXT)`` — 1行。 ``error`` ``message``
ではない
は、そのようなメッセージが存在しない場合に設定されます。上げません。

.. _例-6:

例
^^

.. code:: sql

   SELECT * FROM aidb.get_message(3fa85f64-5717-4562-b3fc-2c963f66afa6);

--------------

構造化出力ヘルパー
------------------

helpb.output_field
^^^^^^^^^^^^^^^^^^

エージェントの構造化出力スキーマの1つのフィールドを構築します。

.. _パラメーター-7:

パラメーター
^^^^^^^^^^^^

.. csv-table::
  :header: Parameter,Type,Default,Description
  :widths: 15,12,12,20
  :align: left
  :class: longtable

  `name`,TEXT,Required,フィールドの名前。
  `field_type`,TEXT,Required,フィールドのタイプたとえば `'TEXT'`、`'FLOAT'`、`'BOOLEAN'`など。
  `description`,TEXT,NULL,モデルに表示される説明。

.. _返品-7:

返品
^^^^

``JSONB`` — これらのうちの1つ以上を\ ``aidb.output_type()`` に渡します。

--------------

promoteb.output_type
^^^^^^^^^^^^^^^^^^^^

1つ以上のフィールドから完全な構造化出力スキーマを構築します。

.. _パラメーター-8:

パラメーター
^^^^^^^^^^^^

.. csv-table::
  :header: Parameter,Type,Description
  :widths: 12,15,25
  :align: left
  :class: longtable

  `fields`,VARIADIC JSONB[],1つ以上の`aidb.output_field()`結果。

.. _返品-8:

返品
^^^^

``JSONB`` — ``create_agent`` /``update_agent`` の\ ``output_type``
パラメーターまたは\ ``agent_converse`` に渡します。

.. _例-7:

例
^^

.. code:: sql

   SELECT aidb.create_agent(
       name         => sentiment_tagger,
       instructions => Classify the sentiment of the given text.,
       model        => my_gpt,
       output_type  => aidb.output_type(
           aidb.output_field(sentiment, TEXT, One of: positive, negative, neutral),
           aidb.output_field(confidence, FLOAT)
       )
   );

--------------

タイプ
------

helpb.budget_strategy
^^^^^^^^^^^^^^^^^^^^^

.. code:: sql

   CREATE TYPE aidb.budget_strategy AS ENUM (
       ignore,
       error,
       summarize,
       attempt_complete
   );

各値の機能については、 :ref:`予算と制限 <予算と制限>` を参照してください。

promoteb.task_status
^^^^^^^^^^^^^^^^^^^^

.. code:: sql

   CREATE TYPE aidb.task_status AS ENUM (
       PENDING,
       IN_PROGRESS,
       RECOVERY,
       AWAIT_APPROVAL,
       DENIED,
       ERROR,
       TIMEOUT,
       CANCELED,
       SUCCESS,
       EVALUATING,
       COMPLETE
   );

``aidb.agent_tasks.status`` および\ ``aidb.conversations.status``
を介して浮上しました。今日のすべてのタスクは1つの\ ``agent_converse``
呼び出し内で完了まで同期して実行されるため、タスクのターミナルステータスは通常\ ``SUCCESS``
または\ ``ERROR``
になります。残りの値は、まだ実装されていない非同期/承認ワークフロー用に予約されています。
