내장 도구
Koog 프레임워크는 에이전트와 사용자 간의 상호작용에서 발생하는 일반적인 시나리오를 처리하기 위한 Kotlin 및 Java용 내장 도구(built-in tools)를 제공합니다.
사용 가능한 내장 도구는 다음과 같습니다:
| 도구 | 이름 | 설명 |
|---|---|---|
| SayToUser | __say_to_user__ | 에이전트가 사용자에게 메시지를 보낼 수 있게 합니다. 에이전트 메시지를 Agent says: 접두사와 함께 콘솔에 출력합니다. |
| AskUser | __ask_user__ | 에이전트가 사용자에게 입력을 요청할 수 있게 합니다. 에이전트 메시지를 콘솔에 출력하고 사용자의 응답을 기다립니다. |
| ExitTool | __exit__ | 에이전트가 대화를 종료하고 세션을 마칠 수 있게 합니다. |
| ReadFileTool | __read_file__ | 선택적으로 줄 범위를 지정하여 텍스트 파일을 읽습니다. 0부터 시작하는 줄 인덱싱을 사용하여 메타데이터와 함께 포맷된 콘텐츠를 반환합니다. |
| EditFileTool | __edit_file__ | 파일 내에서 대상이 지정된 단일 텍스트 교체를 수행합니다. 새 파일을 생성하거나 콘텐츠를 완전히 교체할 수도 있습니다. |
| ListDirectoryTool | __list_directory__ | 디렉터리 콘텐츠를 계층적 트리 구조로 나열합니다. 선택적으로 깊이 제어 및 glob 필터링을 사용할 수 있습니다. |
| WriteFileTool | __write_file__ | 텍스트 콘텐츠를 파일에 씁니다(필요한 경우 부모 디렉터리를 생성합니다). |
내장 도구 등록하기
다른 도구와 마찬가지로, 내장 도구도 에이전트가 사용할 수 있도록 도구 레지스트리(tool registry)에 추가되어야 합니다. 다음은 예시입니다:
kotlin
// 모든 내장 도구를 포함하는 도구 레지스트리 생성
val toolRegistry = ToolRegistry {
tool(SayToUser)
tool(AskUser)
tool(ExitTool)
tool(ReadFileTool(JVMFileSystemProvider.ReadOnly))
tool(ListDirectoryTool(JVMFileSystemProvider.ReadOnly))
tool(WriteFileTool(JVMFileSystemProvider.ReadWrite))
}
// 에이전트 생성 시 레지스트리 전달
val agent = AIAgent(
promptExecutor = simpleOpenAIExecutor(apiToken),
systemPrompt = "You are a helpful assistant.",
llmModel = OpenAIModels.Chat.GPT4o,
toolRegistry = toolRegistry
)Kotlin과 Java 모두에서 동일한 레지스트리 내에 내장 도구와 커스텀 도구를 결합하여 에이전트를 위한 포괄적인 기능 세트를 구성할 수 있습니다. 커스텀 도구에 대해 자세히 알아보려면 Annotation-based tools 및 Class-based tools를 참조하세요.
