Skip to content

Agents

AIエージェントは、推論、意思決定、環境との相互作用を行い、特定の目標を達成するために行動を起こすことができる自律的なシステムです。 Koogにおいて、AIエージェントは単なるLLMのラッパーではありません。 それはJVMエコシステム向けに設計された、構造化された型安全なステートマシンです。

Koogのエージェントは、以下のコア概念を中心に構築されています。

  • プロンプトエクゼキューターは、プロンプトの管理と実行を行い、エージェントが推論や意思決定のためにLLMと対話できるようにします。
  • ストラテジーは、エージェントのワークフローを定義します。 これは、有向グラフ、関数、またはプランナーの形式をとることができます。 エージェントの種類を参照してください。
  • エージェントは、外部のデータソースやサービスと相互作用するためにツールを使用できます。
  • フィーチャーを使用して、AIエージェントの機能を拡張および強化できます。

TIP

最小限のエージェントの作成と実行に関する情報については、クイックスタートを参照してください。

Agent types

実行する必要があるタスクに応じて、Koogはいくつかのエージェントタイプを提供しています。

Agent configuration

エージェント設定(Agent configuration)は、初期プロンプト、言語モデル、反復制限などのエージェントの実行パラメータを定義します。

TIP

最小限のエージェントの作成と実行に関する情報については、クイックスタートを参照してください。

シンプルなエージェントの場合、必須のプロンプトエクゼキューターと言語モデルに加えて、初期システムプロンプトやその他のパラメータをエージェントのコンストラクタで直接指定できます。

=== "Kotlin"

<!--- INCLUDE
import ai.koog.agents.core.agent.AIAgent
import ai.koog.prompt.executor.clients.openai.OpenAIModels
import ai.koog.prompt.executor.llms.all.simpleOpenAIExecutor
-->
```kotlin
val agent = AIAgent(
    promptExecutor = simpleOpenAIExecutor(System.getenv("YOUR_API_KEY")),
    llmModel = OpenAIModels.Chat.GPT4o,
    systemPrompt = "You are a helpful assistant.",
    temperature = 0.7,
    maxIterations = 10
)
```
<!--- KNIT example-agent-config-01.kt -->

=== "Java"

<!--- INCLUDE
/**
-->
<!--- SUFFIX
**/
-->
```java
AIAgent<String, String> agent = AIAgent.builder()
    .promptExecutor(simpleOpenAIExecutor(System.getenv("YOUR_API_KEY")))
    .llmModel(OpenAIModels.Chat.GPT4o)
    .systemPrompt("You are a helpful assistant.")
    .temperature(0.7)
    .maxIterations(10)
    .build();
```
<!--- KNIT example-agent-config-java-01.java -->

あるいは、AIAgentConfig のインスタンスを作成して、エージェントの動作とパラメータをより細かく定義し、それをエージェントのコンストラクタに渡すこともできます。 これにより、複数のメッセージを含む複雑なプロンプト、会話履歴、LLMパラメータ、および追加の実行パラメータを定義できるようになります。

=== "Kotlin"

<!--- INCLUDE
import ai.koog.agents.core.agent.AIAgent
import ai.koog.agents.core.agent.config.AIAgentConfig
import ai.koog.prompt.dsl.prompt
import ai.koog.prompt.executor.clients.openai.OpenAIModels
import ai.koog.prompt.executor.llms.all.simpleOpenAIExecutor
import ai.koog.prompt.params.LLMParams
-->
```kotlin
val agentConfig = AIAgentConfig(
    prompt = prompt(
        id = "assistant",
        params = LLMParams(
            temperature = 0.7
        )
    ) {
        system("You are a helpful assistant.")
    },
    model = OpenAIModels.Chat.GPT4o,
    maxAgentIterations = 10
)

val agent = AIAgent(
    promptExecutor = simpleOpenAIExecutor(System.getenv("OPENAI_API_KEY")),
    agentConfig = agentConfig
)
```
<!--- KNIT example-agent-config-02.kt -->

=== "Java"

<!--- INCLUDE
/**
-->
<!--- SUFFIX
**/
-->
```java
Prompt prompt = Prompt.builder("assistant")
    .system("You are a helpful assistant.")
    .build()
    .withParams(new LLMParams(
        0.7,         // temperature
        null,        // maxTokens
        1,           // numberOfChoices
        null,        // speculation
        null,        // schema
        LLMParams.ToolChoice.Auto.INSTANCE, // toolChoice
        null,        // user
        null         // additionalProperties
    ));

AIAgentConfig agentConfig = AIAgentConfig.builder(OpenAIModels.Chat.GPT4o)
    .prompt(prompt)
    .maxAgentIterations(10)
    .build();

AIAgent<String, String> agent = AIAgent.builder()
    .promptExecutor(simpleOpenAIExecutor(System.getenv("OPENAI_API_KEY")))
    .agentConfig(agentConfig)
    .build();
```
<!--- KNIT example-agent-config-java-02.java -->

AIAgentConfig のパラメータは以下の通りです。

  • prompt は、初期プロンプトLLMパラメータを定義します。

  • model は、エージェントが対話する言語モデルを指定します。 定義済みのモデルのいずれかを使用するか、カスタムモデル設定を作成できます。

  • maxAgentIterations は、エージェントが終了するまでに実行できる最大ステップ数を制限します。 各ステップは、エージェントのワークフローにおけるノードです。

  • missingToolsConversionStrategy は、エージェントの実行中に欠落しているツールを処理するための戦略を定義します。

  • responseProcessor は、カスタムレスポンスプロセッサを定義するために使用できます。 例えば、レスポンス内容のモデレートやバリデーション、レスポンス形式の変更、またはレスポンスのログ記録などを行うことができます。