이벤트 핸들러

·3분 읽기

원문: Koog Documentation — agent-event-handlers 이 글은 Koog 공식 문서의 agent-event-handlers 페이지를 한국어로 옮긴 번역본입니다. 문서 구조와 링크 의미를 유지하되, MkDocs 전용 UI 문법은 블로그에서 읽기 좋도록 정리했습니다.

이벤트 핸들러

에이전트 동작 로깅, 테스트, 디버깅 및 확장을 위한 이벤트 핸들러를 사용하여 에이전트 워크플로 중에 특정 이벤트를 모니터링하고 응답할 수 있습니다.

기능 개요

EventHandler 기능을 사용하면 다양한 에이전트 이벤트에 연결할 수 있습니다. 이는 다음과 같은 이벤트 위임 메커니즘 역할을 합니다.

  • AI 에이전트 작업의 수명주기를 관리합니다.
  • 워크플로우의 다양한 단계를 모니터링하고 응답하기 위한 후크를 제공합니다.
  • 오류 처리 및 복구를 활성화합니다.
  • 도구 호출 추적 및 결과 처리를 용이하게 합니다.

설치 및 구성

EventHandler 기능은 EventHandler 클래스를 통해 에이전트 워크플로와 통합됩니다. 이는 다양한 에이전트 이벤트에 대한 콜백을 등록하는 방법을 제공하며 에이전트 구성의 기능으로 설치할 수 있습니다. 자세한 내용은 API reference을 참조하세요.

기능을 설치하고 에이전트에 대한 이벤트 핸들러를 구성하려면 다음을 수행하십시오.

코틀린

1handleEvents {2    // Handle tool calls3    onToolCallStarting { eventContext ->4        println("Tool called: ${eventContext.toolName} with args ${eventContext.toolArgs}")5    }6    // Handle event triggered when the agent completes its execution7    onAgentCompleted { eventContext ->8        println("Agent finished with result: ${eventContext.result}")9    }1011    // Other event handlers12}

자바

1AIAgent<String, String> agent = AIAgent.builder()2    .promptExecutor(simpleOllamaAIExecutor("http://localhost:11434"))3    .llmModel(OllamaModels.Meta.LLAMA_3_2)4    .install(EventHandler.Feature, cfg -> {5        // Handle tool calls6        cfg.onToolCallStarting(ctx -> {7            System.out.println("Tool called: " + ctx.getToolName() + " with args " + ctx.getToolArgs());8        });9        // Handle event triggered when the agent completes its execution10        cfg.onAgentCompleted(ctx -> {11            System.out.println("Agent finished with result: " + ctx.getResult());12        });13    })14    .build();

이벤트 핸들러 구성에 대한 자세한 내용은 API reference을 참조하세요.

에이전트를 생성할 때 handleEvents 확장 기능을 사용하여 이벤트 핸들러를 설정할 수도 있습니다. 또한 이 기능은 이벤트 핸들러 기능을 설치하고 에이전트에 대한 이벤트 핸들러를 구성합니다. 예는 다음과 같습니다.

코틀린

1val agent = AIAgent(2    promptExecutor = simpleOllamaAIExecutor(),3    llmModel = OllamaModels.Meta.LLAMA_3_2,4){5    handleEvents {6        // Handle tool calls7        onToolCallStarting { eventContext ->8            println("Tool called: ${eventContext.toolName} with args ${eventContext.toolArgs}")9        }10        // Handle event triggered when the agent completes its execution11        onAgentCompleted { eventContext ->12            println("Agent finished with result: ${eventContext.result}")13        }1415        // Other event handlers16    }17}

자바

1AIAgent<String, String> agent = AIAgent.builder()2    .promptExecutor(simpleOllamaAIExecutor("http://localhost:11434"))3    .llmModel(OllamaModels.Meta.LLAMA_3_2)4    .install(EventHandler.Feature, cfg -> {5        // Handle tool calls6        cfg.onToolCallStarting(ctx -> {7            System.out.println("Tool called: " + ctx.getToolName() + " with args " + ctx.getToolArgs());8        });9        // Handle event triggered when the agent completes its execution10        cfg.onAgentCompleted(ctx -> {11            System.out.println("Agent finished with result: " + ctx.getResult());12        });13    })14    .build();