Agents
AIエージェントは、推論、意思決定、環境との相互作用を行い、特定の目標を達成するために行動を起こすことができる自律的なシステムです。 Koogにおいて、AIエージェントは単なるLLMのラッパーではありません。 それはJVMエコシステム向けに設計された、構造化された型安全なステートマシンです。
Koogのエージェントは、以下のコア概念を中心に構築されています。
- プロンプトエクゼキューターは、プロンプトの管理と実行を行い、エージェントが推論や意思決定のためにLLMと対話できるようにします。
- ストラテジーは、エージェントのワークフローを定義します。 これは、有向グラフ、関数、またはプランナーの形式をとることができます。 エージェントの種類を参照してください。
- エージェントは、外部のデータソースやサービスと相互作用するためにツールを使用できます。
- フィーチャーを使用して、AIエージェントの機能を拡張および強化できます。
TIP
最小限のエージェントの作成と実行に関する情報については、クイックスタートを参照してください。
Agent types
実行する必要があるタスクに応じて、Koogはいくつかのエージェントタイプを提供しています。
- 基本エージェント (Basic agents)は、カスタムロジックを必要としない単純なタスクに最適です。 これらのエージェントは、ほとんどの一般的なユースケースで機能する事前定義されたストラテジーを実装しています。
- グラフベースエージェント (Graph-based agents)は、エージェントのワークフロー、状態管理、および可視化を完全に制御し、柔軟性を提供します。
- 関数型エージェント (Functional agents)は、エージェントのコンテキストにアクセスできる関数として、カスタムロジックのプロトタイプを迅速に作成することを可能にします。
- プランナーエージェント (Planner agents)は、望ましい最終状態に達するまで、反復的なサイクルを通じて多段階のタスクを自律的に計画および実行できます。
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 のパラメータは以下の通りです。
modelは、エージェントが対話する言語モデルを指定します。 定義済みのモデルのいずれかを使用するか、カスタムモデル設定を作成できます。maxAgentIterationsは、エージェントが終了するまでに実行できる最大ステップ数を制限します。 各ステップは、エージェントのワークフローにおけるノードです。missingToolsConversionStrategyは、エージェントの実行中に欠落しているツールを処理するための戦略を定義します。
responseProcessorは、カスタムレスポンスプロセッサを定義するために使用できます。 例えば、レスポンス内容のモデレートやバリデーション、レスポンス形式の変更、またはレスポンスのログ記録などを行うことができます。
