Skip to content

エージェントイベント

エージェントイベントは、エージェントのワークフローの一部として発生するアクションまたはインタラクションです。これには以下が含まれます。

  • エージェントのライフサイクルイベント
  • ストラテジーイベント
  • ノード実行イベント
  • LLM呼び出しイベント
  • LLMストリーミングイベント
  • ツール実行イベント

注記:フィーチャーイベントは agents-core モジュールで定義されており、ai.koog.agents.core.feature.model.events パッケージの下にあります。agents-features-traceagents-features-event-handler などのフィーチャーは、これらのイベントを利用して、エージェントの実行中に作成されたメッセージを処理および転送します。

事前定義されたイベントタイプ

Koog は、カスタムメッセージプロセッサーで使用できる事前定義されたイベントタイプを提供しており、事前定義されたイベントは、関連するエンティティに応じて、いくつかのカテゴリに分類できます。

エージェントイベント

AgentStartingEvent

エージェントの実行開始を表します。以下のフィールドが含まれます。

名前データ型必須デフォルト説明
agentIdStringYesAIエージェントの一意の識別子。
runIdStringYesAIエージェント実行の一意の識別子。

AgentCompletedEvent

エージェントの実行終了を表します。以下のフィールドが含まれます。

名前データ型必須デフォルト説明
agentIdStringYesAIエージェントの一意の識別子。
runIdStringYesAIエージェント実行の一意の識別子。
resultStringYesエージェント実行の結果。結果がない場合は null になります。

AgentExecutionFailedEvent

エージェント実行中にエラーが発生したことを表します。以下のフィールドが含まれます。

名前データ型必須デフォルト説明
agentIdStringYesAIエージェントの一意の識別子。
runIdStringYesAIエージェント実行の一意の識別子。
errorAIAgentErrorYesエージェント実行中に発生した特定のエラー。詳細については、AIAgentError を参照してください。

AgentClosingEvent

エージェントのクローズまたは終了を表します。以下のフィールドが含まれます。

名前データ型必須デフォルト説明
agentIdStringYesAIエージェントの一意の識別子。

AIAgentError クラスは、エージェント実行中に発生したエラーに関する詳細を提供します。以下のフィールドが含まれます。

名前データ型必須デフォルト説明
messageStringYes特定のエラーに関する詳細を提供するメッセージ。
stackTraceStringYes最後に実行されたコードまでのスタックレコードのコレクション。
causeStringNonullエラーの原因(利用可能な場合)。

ストラテジーイベント

GraphStrategyStartingEvent

グラフベースのストラテジー実行の開始を表します。以下のフィールドが含まれます。

名前データ型必須デフォルト説明
runIdStringYesストラテジー実行の一意の識別子。
strategyNameStringYesストラテジーの名前。
graphStrategyEventGraphYesストラテジーワークフローを表すグラフ構造。

FunctionalStrategyStartingEvent

機能的ストラテジー実行の開始を表します。以下のフィールドが含まれます。

名前データ型必須デフォルト説明
runIdStringYesストラテジー実行の一意の識別子。
strategyNameStringYesストラテジーの名前。

StrategyCompletedEvent

ストラテジー実行の終了を表します。以下のフィールドが含まれます。

名前データ型必須デフォルト説明
runIdStringYesストラテジー実行の一意の識別子。
strategyNameStringYesストラテジーの名前。
resultStringYes実行の結果。結果がない場合は null になります。

ノードイベント

NodeExecutionStartingEvent

ノード実行の開始を表します。以下のフィールドが含まれます。

名前データ型必須デフォルト説明
runIdStringYesストラテジー実行の一意の識別子。
nodeNameStringYes実行が開始されたノードの名前。
inputJsonElementNonullノードへの入力値。

NodeExecutionCompletedEvent

ノード実行の終了を表します。以下のフィールドが含まれます。

名前データ型必須デフォルト説明
runIdStringYesストラテジー実行の一意の識別子。
nodeNameStringYes実行が終了したノードの名前。
inputJsonElementNonullノードへの入力値。
outputJsonElementNonullノードによって生成された出力値。

NodeExecutionFailedEvent

ノード実行中に発生したエラーを表します。以下のフィールドが含まれます。

名前データ型必須デフォルト説明
runIdStringYesストラテジー実行の一意の識別子。
nodeNameStringYesエラーが発生したノードの名前。
inputJsonElementNonullノードに提供された入力データ。
errorAIAgentErrorYesノード実行中に発生した特定のエラー。詳細については、AIAgentError を参照してください。

LLM呼び出しイベント

LLMCallStartingEvent

LLM呼び出しの開始を表します。以下のフィールドが含まれます。

名前データ型必須デフォルト説明
runIdStringYesLLM実行の一意の識別子。
callIdStringYesLLM呼び出しの一意の識別子。関連するイベントを関連付けます。
promptPromptYesモデルに送信されるプロンプト。詳細については、Prompt を参照してください。
modelStringYesllm_provider:model_id の形式のモデル識別子。
toolsList<String>Yesモデルが呼び出すことができるツールのリスト。

Prompt クラスは、メッセージのリスト、一意の識別子、および言語モデル設定のオプションパラメータで構成されるプロンプトのデータ構造を表します。以下のフィールドが含まれます。

名前データ型必須デフォルト説明
messagesList<Message>Yesプロンプトを構成するメッセージのリスト。
idStringYesプロンプトの一意の識別子。
paramsLLMParamsNoLLMParams()LLMがコンテンツを生成する方法を制御する設定。

LLMCallCompletedEvent

LLM呼び出しの終了を表します。以下のフィールドが含まれます。

名前データ型必須デフォルト説明
runIdStringYesLLM実行の一意の識別子。
callIdStringYesLLM呼び出しの一意の識別子。関連するイベントを関連付けます。
promptPromptYes呼び出しで使用されたプロンプト。
modelStringYesllm_provider:model_id の形式のモデル識別子。
responsesList<Message.Response>Yesモデルから返された1つまたは複数の応答。
moderationResponseModerationResultNonullモデレーション応答(存在する場合)。

LLMストリーミングイベント

LLMStreamingStartingEvent

LLMストリーミング呼び出しの開始を表します。以下のフィールドが含まれます。

名前データ型必須デフォルト説明
runIdStringYesLLM実行の一意の識別子。
callIdStringYesLLM呼び出しの一意の識別子。関連するイベントを関連付けます。
promptPromptYesモデルに送信されるプロンプト。
modelStringYesllm_provider:model_id の形式のモデル識別子。
toolsList<String>Yesモデルが呼び出すことができるツールのリスト。

LLMStreamingFrameReceivedEvent

LLMから受信したストリーミングフレームを表します。以下のフィールドが含まれます。

名前データ型必須デフォルト説明
runIdStringYesLLM実行の一意の識別子。
callIdStringYesLLM呼び出しの一意の識別子。関連するイベントを関連付けます。
frameStreamFrameYesストリームから受信したフレーム。

LLMStreamingFailedEvent

LLMストリーミング呼び出し中にエラーが発生したことを表します。以下のフィールドが含まれます。

名前データ型必須デフォルト説明
runIdStringYesLLM実行の一意の識別子。
callIdStringYesLLM呼び出しの一意の識別子。関連するイベントを関連付けます。
errorAIAgentErrorYesストリーミング中に発生した特定のエラー。詳細については、AIAgentError を参照してください。

LLMStreamingCompletedEvent

LLMストリーミング呼び出しの終了を表します。以下のフィールドが含まれます。

名前データ型必須デフォルト説明
runIdStringYesLLM実行の一意の識別子。
callIdStringYesLLM呼び出しの一意の識別子。関連するイベントを関連付けます。
promptPromptYesモデルに送信されるプロンプト。
modelStringYesllm_provider:model_id の形式のモデル識別子。
toolsList<String>Yesモデルが呼び出すことができるツールのリスト。

ツール実行イベント

ToolExecutionStartingEvent

モデルがツールを呼び出すイベントを表します。以下のフィールドが含まれます。

名前データ型必須デフォルト説明
runIdStringYesストラテジー/エージェント実行の一意の識別子。
toolCallIdStringNonullツール呼び出しの識別子(利用可能な場合)。
toolNameStringYesツールの名前。
toolArgsJsonObjectYesツールに提供される引数。

ToolValidationFailedEvent

ツール呼び出し中に検証エラーが発生したことを表します。以下のフィールドが含まれます。

名前データ型必須デフォルト説明
runIdStringYesストラテジー/エージェント実行の一意の識別子。
toolCallIdStringNonullツール呼び出しの識別子(利用可能な場合)。
toolNameStringYes検証に失敗したツールの名前。
toolArgsJsonObjectYesツールに提供される引数。
errorStringYes検証エラーメッセージ。

ToolExecutionFailedEvent

ツールの実行失敗を表します。以下のフィールドが含まれます。

名前データ型必須デフォルト説明
runIdStringYesストラテジー/エージェント実行の一意の識別子。
toolCallIdStringNonullツール呼び出しの識別子(利用可能な場合)。
toolNameStringYesツールの名前。
toolArgsJsonObjectYesツールに提供される引数。
errorAIAgentErrorYesツールを呼び出そうとしたときに発生した特定のエラー。詳細については、AIAgentError を参照してください。

ToolExecutionCompletedEvent

結果を返してツール呼び出しが成功したことを表します。以下のフィールドが含まれます。

名前データ型必須デフォルト説明
runIdStringYes実行の一意の識別子。
toolCallIdStringNonullツール呼び出しの識別子。
toolNameStringYesツールの名前。
toolArgsJsonObjectYesツールに提供される引数。
resultStringYesツール呼び出しの結果(null許容)。

FAQとトラブルシューティング

以下のセクションには、トレース機能に関するよくある質問とその回答が含まれています。

エージェント実行の特定の箇所のみをトレースするにはどうすればよいですか?

messageFilter プロパティを使用してイベントをフィルタリングします。たとえば、LLM呼び出しのみをトレースするには、次のようにします。

kotlin
install(Tracing) {
    val fileWriter = TraceFeatureMessageFileWriter(
        outputPath, 
        { path: Path -> SystemFileSystem.sink(path).buffered() }
    )
    addMessageProcessor(fileWriter)
    
    // LLM呼び出しのみをトレース
    fileWriter.setMessageFilter { message ->
        message is LLMCallStartingEvent || message is LLMCallCompletedEvent
    }
}

複数のメッセージプロセッサーを使用できますか?

はい、複数のメッセージプロセッサーを追加して、異なる宛先に同時にトレースできます。

kotlin
install(Tracing) {
    addMessageProcessor(TraceFeatureMessageLogWriter(logger))
    addMessageProcessor(TraceFeatureMessageFileWriter(outputPath, syncOpener))
    addMessageProcessor(TraceFeatureMessageRemoteWriter(connectionConfig))
}

カスタムメッセージプロセッサーを作成するにはどうすればよいですか?

FeatureMessageProcessor インターフェースを実装します。

kotlin
class CustomTraceProcessor : FeatureMessageProcessor() {

    // プロセッサーの現在のオープン状態
    private var _isOpen = MutableStateFlow(false)

    override val isOpen: StateFlow<Boolean>
        get() = _isOpen.asStateFlow()
    
    override suspend fun processMessage(message: FeatureMessage) {
        // カスタム処理ロジック
        when (message) {
            is NodeExecutionStartingEvent -> {
                // ノード開始イベントを処理
            }

            is LLMCallCompletedEvent -> {
                // LLM呼び出し終了イベントを処理 
            }
            // 他のイベントタイプを処理 
        }
    }

    override suspend fun close() {
        // 確立された接続を閉じる
    }
}

// カスタムプロセッサーを使用
install(Tracing) {
    addMessageProcessor(CustomTraceProcessor())
}

メッセージプロセッサーで処理できる既存のイベントタイプに関する詳細については、事前定義されたイベントタイプ を参照してください。