LLMパラメータ
このページでは、KoogエージェントフレームワークにおけるLLMパラメータの詳細について説明します。LLMパラメータを使用すると、言語モデルの動作を制御およびカスタマイズできます。
概要
LLMパラメータは、言語モデルがレスポンスを生成する方法を微調整するための構成オプションです。これらのパラメータは、レスポンスのランダム性、長さ、フォーマット、ツールの使用などの側面を制御します。パラメータを調整することで、クリエイティブなコンテンツ生成から決定的な構造化出力まで、さまざまなユースケースに合わせてモデルの動作を最適化できます。
Koogでは、LLMParamsクラスにLLMパラメータが組み込まれており、言語モデルの動作を構成するための一貫したインターフェースを提供します。LLMパラメータは以下の方法で使用できます。
- プロンプトを作成する場合:
val prompt = prompt(
id = "dev-assistant",
params = LLMParams(
temperature = 0.7,
maxTokens = 500
)
) {
// コンテキストを設定するためのシステムメッセージを追加する
system("You are a helpful assistant.")
// ユーザーメッセージを追加する
user("Tell me about Kotlin")
}Prompt prompt = Prompt.builder("dev-assistant")
.withParams(new LLMParams(
0.7, // temperature
500, // maxTokens
1, // numberOfChoices
null, // speculation
null, // schema
LLMParams.ToolChoice.Auto.INSTANCE, // toolChoice
null, // user
null // additionalProperties
))
.system("You are a helpful assistant.")
.user("Tell me about Kotlin")
.build();プロンプト作成の詳細については、プロンプトを参照してください。
- サブグラフを作成する場合:
val processQuery by subgraphWithTask<String, String>(
tools = listOf(searchTool, calculatorTool, weatherTool),
llmModel = OpenAIModels.Chat.GPT4o,
llmParams = LLMParams(
temperature = 0.7,
maxTokens = 500
),
parallelTools = false,
assistantResponseRepeatMax = 3,
) { userQuery ->
"""
You are a helpful assistant that can answer questions about various topics.
Please help with the following query:
$userQuery
"""
}Koogの既存のサブグラフタイプの詳細については、事前定義されたサブグラフを参照してください。独自のサブグラフを作成および実装する方法については、カスタムサブグラフを参照してください。
- LLM書き込みセッションでプロンプトを更新する場合:
llm.writeSession {
changeLLMParams(
LLMParams(
temperature = 0.7,
maxTokens = 500
)
)
}セッションの詳細については、LLMセッションと手動履歴管理を参照してください。
LLMパラメータリファレンス
以下の表は、LLMParamsクラスに含まれ、Koogで標準提供されているすべてのLLMプロバイダーでサポートされているLLMパラメータのリファレンスです。 一部のプロバイダーに固有のパラメータのリストについては、プロバイダー固有のパラメータを参照してください。
| パラメータ | 型 | 説明 |
|---|---|---|
temperature | Double | 出力のランダム性を制御します。0.7~1.0などの高い値はより多様でクリエイティブなレスポンスを生成し、低い値はより決定的で焦点の絞られたレスポンスを生成します。 |
maxTokens | Integer | レスポンスで生成するトークンの最大数。レスポンスの長さを制御するのに役立ちます。 |
numberOfChoices | Integer | 生成する代替レスポンスの数。0より大きい必要があります。 |
speculation | String | モデルの動作に影響を与える推論的な構成文字列で、結果の速度と精度を高めるように設計されています。特定のモデルでのみサポートされていますが、速度と精度を大幅に向上させる可能性があります。 |
schema | Schema | モデルのレスポンス形式の構造を定義し、JSONなどの構造化出力を可能にします。詳細については、スキーマを参照してください。 |
toolChoice | ToolChoice | 言語モデルのツール呼び出し動作を制御します。詳細については、ツール選択を参照してください。 |
user | String | リクエストを行うユーザーの識別子で、トラッキングの目的に使用できます。 |
additionalProperties | Map<String, JsonElement> | 特定のモデルプロバイダーに固有のカスタムパラメータを格納するために使用できる追加のプロパティ。 |
各パラメータのデフォルト値のリストについては、対応するLLMプロバイダーのドキュメントを参照してください:
- OpenAI Chat
- OpenAI Responses
- Google β
- Anthropic
- Mistral β
- DeepSeek β
- OpenRouter
- Alibaba β (DashScope)
- Ollama
スキーマ
Schemaインターフェースは、モデルのレスポンス形式の構造を定義します。 Koogは、以下のセクションで説明するようにJSONスキーマをサポートしています。
JSONスキーマ
JSONスキーマを使用すると、言語モデルから構造化されたJSONデータをリクエストできます。Koogは以下の2種類のJSONスキーマをサポートしています。
- 基本的なJSONスキーマ (
LLMParams.Schema.JSON.Basic): 基本的なJSON処理機能に使用されます。この形式は、高度なJSON Schema機能を使用せず、主にネストされたデータ定義に焦点を当てています。
// 基本的なJSONスキーマを使用してパラメータを作成する
val jsonParams = LLMParams(
temperature = 0.2,
schema = LLMParams.Schema.JSON.Basic(
name = "PersonInfo",
schema = JsonObject(mapOf(
"type" to JsonPrimitive("object"),
"properties" to JsonObject(
mapOf(
"name" to JsonObject(mapOf("type" to JsonPrimitive("string"))),
"age" to JsonObject(mapOf("type" to JsonPrimitive("number"))),
"skills" to JsonObject(
mapOf(
"type" to JsonPrimitive("array"),
"items" to JsonObject(mapOf("type" to JsonPrimitive("string")))
)
)
)
),
"additionalProperties" to JsonPrimitive(false),
"required" to JsonArray(listOf(JsonPrimitive("name"), JsonPrimitive("age"), JsonPrimitive("skills")))
))
)
)// 基本的なJSONスキーマを使用してパラメータを作成する
LLMParams jsonParams = new LLMParams(
0.2, // temperature
null, // maxTokens
1, // numberOfChoices
null, // speculation
new LLMParams.Schema.JSON.Basic(
"PersonInfo",
new JsonObject(Map.of(
"type", new JsonPrimitive("object"),
"properties", new JsonObject(Map.of(
"name", new JsonObject(Map.of("type", new JsonPrimitive("string"))),
"age", new JsonObject(Map.of("type", new JsonPrimitive("number"))),
"skills", new JsonObject(Map.of(
"type", new JsonPrimitive("array"),
"items", new JsonObject(Map.of("type", new JsonPrimitive("string")))
))
)),
"additionalProperties", new JsonPrimitive(false),
"required", new JsonArray(List.of(
new JsonPrimitive("name"),
new JsonPrimitive("age"),
new JsonPrimitive("skills")
))
))
),
LLMParams.ToolChoice.Auto.INSTANCE, // toolChoice
null, // user
null // additionalProperties
);- 標準JSONスキーマ (
LLMParams.Schema.JSON.Standard): json-schema.orgに準拠した標準的なJSONスキーマを表します。この形式は、公式のJSON Schema仕様の適切なサブセットです。すべてのLLMプロバイダーが完全なJSONスキーマをサポートしているわけではないため、プロバイダーによってフレーバーが異なる場合があることに注意してください。
// 標準的なJSONスキーマを使用してパラメータを作成する
val standardJsonParams = LLMParams(
temperature = 0.2,
schema = LLMParams.Schema.JSON.Standard(
name = "ProductCatalog",
schema = JsonObject(mapOf(
"type" to JsonPrimitive("object"),
"properties" to JsonObject(mapOf(
"products" to JsonObject(mapOf(
"type" to JsonPrimitive("array"),
"items" to JsonObject(mapOf(
"type" to JsonPrimitive("object"),
"properties" to JsonObject(mapOf(
"id" to JsonObject(mapOf("type" to JsonPrimitive("string"))),
"name" to JsonObject(mapOf("type" to JsonPrimitive("string"))),
"price" to JsonObject(mapOf("type" to JsonPrimitive("number"))),
"description" to JsonObject(mapOf("type" to JsonPrimitive("string")))
)),
"additionalProperties" to JsonPrimitive(false),
"required" to JsonArray(listOf(JsonPrimitive("id"), JsonPrimitive("name"), JsonPrimitive("price"), JsonPrimitive("description")))
))
))
)),
"additionalProperties" to JsonPrimitive(false),
"required" to JsonArray(listOf(JsonPrimitive("products")))
))
)
)// 標準的なJSONスキーマを使用してパラメータを作成する
LLMParams standardJsonParams = new LLMParams(
0.2, // temperature
null, // maxTokens
1, // numberOfChoices
null, // speculation
new LLMParams.Schema.JSON.Standard(
"ProductCatalog",
new JsonObject(Map.of(
"type", new JsonPrimitive("object"),
"properties", new JsonObject(Map.of(
"products", new JsonObject(Map.of(
"type", new JsonPrimitive("array"),
"items", new JsonObject(Map.of(
"type", new JsonPrimitive("object"),
"properties", new JsonObject(Map.of(
"id", new JsonObject(Map.of("type", new JsonPrimitive("string"))),
"name", new JsonObject(Map.of("type", new JsonPrimitive("string"))),
"price", new JsonObject(Map.of("type", new JsonPrimitive("number"))),
"description", new JsonObject(Map.of("type", new JsonPrimitive("string")))
)),
"additionalProperties", new JsonPrimitive(false),
"required", new JsonArray(List.of(
new JsonPrimitive("id"),
new JsonPrimitive("name"),
new JsonPrimitive("price"),
new JsonPrimitive("description")
))
))
))
)),
"additionalProperties", new JsonPrimitive(false),
"required", new JsonArray(List.of(new JsonPrimitive("products")))
))
),
LLMParams.ToolChoice.Auto.INSTANCE, // toolChoice
null, // user
null // additionalProperties
);ツール選択
ToolChoiceクラスは、言語モデルがツールをどのように使用するかを制御します。以下のオプションを提供します:
LLMParams.ToolChoice.Named: 言語モデルは指定されたツールを呼び出します。呼び出すツールの名前を表すname文字列引数を取ります。LLMParams.ToolChoice.All: 言語モデルはすべてのツールを呼び出します。LLMParams.ToolChoice.None: 言語モデルはツールを呼び出さず、テキストのみを生成します。LLMParams.ToolChoice.Auto: 言語モデルはツールを呼び出すかどうか、およびどのツールを呼び出すかを自動的に決定します。LLMParams.ToolChoice.Required: 言語モデルは少なくとも1つのツールを呼び出します。
以下は、LLMParams.ToolChoice.Namedクラスを使用して特定のツールを呼び出す例です:
val specificToolParams = LLMParams(
toolChoice = LLMParams.ToolChoice.Named(name = "calculator")
)LLMParams specificToolParams = new LLMParams(
null, // temperature
null, // maxTokens
1, // numberOfChoices
null, // speculation
null, // schema
new LLMParams.ToolChoice.Named("calculator"), // toolChoice
null, // user
null // additionalProperties
);プロバイダー固有のパラメータ
Koogは、一部のLLMプロバイダーに対してプロバイダー固有のパラメータをサポートしています。これらのパラメータは、ベースのLLMParamsクラスを拡張し、プロバイダー固有の機能を追加します。以下のクラスには、プロバイダーごとに固有のパラメータが含まれています:
OpenAIChatParams: OpenAI Chat Completions API固有のパラメータ。OpenAIResponsesParams: OpenAI Responses API固有のパラメータ。GoogleParams: Googleモデル固有のパラメータ。AnthropicParams: Anthropicモデル固有のパラメータ。MistralAIParams: Mistralモデル固有のパラメータ。DeepSeekParams: DeepSeekモデル固有のパラメータ。OpenRouterParams: OpenRouterモデル固有のパラメータ。DashscopeParams: Alibabaモデル固有のパラメータ。OllamaParams: Ollamaモデル固有のパラメータ。
以下は、Koogにおけるプロバイダー固有のパラメータの完全なリファレンスです:
| パラメーター | 型 | 説明 |
|---|---|---|
audio | OpenAIAudioConfig | オーディオ対応モデルを使用する場合のオーディオ出力設定。詳細については、OpenAIAudioConfig のAPIドキュメントを参照してください。 |
frequencyPenalty | Double | 頻出するトークンにペナルティを課し、繰り返しを減らします。 frequencyPenalty の値を大きくすると、語彙のバリエーションが増え、繰り返しが減少します。-2.0から2.0の範囲の値を指定します。 |
logprobs | Boolean | true の場合、出力トークンの対数確率(log-probabilities)を含めます。 |
parallelToolCalls | Boolean | true の場合、複数のツール呼び出しを並列で実行できます。特にカスタムノードや、エージェント戦略外のLLMインタラクションに適用されます。 |
presencePenalty | Double | 出力に既に出現したトークンをモデルが再利用するのを防ぎます。値を大きくすると、新しいトークンやトピックの導入が促されます。-2.0から2.0の範囲の値を指定します。 |
promptCacheKey | String | プロンプトキャッシュ用の安定したキャッシュキー。OpenAIはこれを使用して、類似のリクエストに対するレスポンスをキャッシュします。 |
reasoningEffort | ReasoningEffort | モデルが使用する推論(reasoning)のレベルを指定します。詳細および利用可能な値については、ReasoningEffort のAPIドキュメントを参照してください。 |
safetyIdentifier | String | OpenAIのポリシーに違反するユーザーを検出するために使用される、安定した一意のユーザー識別子です。 |
serviceTier | ServiceTier | コストよりもパフォーマンスを優先するか、あるいはその逆かを選択できるOpenAIの処理ティア。詳細については、ServiceTier のAPIドキュメントを参照してください。 |
stop | List<String> | モデルがこれらの文字列のいずれかに遭遇したときに、コンテンツの生成を停止するように指示する文字列のリストです。例えば、2つの改行が出現したときに生成を停止させるには、停止シーケンスとして stop = listOf("/n/n") を指定します。 |
store | Boolean | true の場合、プロバイダーは後で取得できるように出力を保存することがあります。 |
topLogprobs | Integer | 各位置における、最も可能性の高い上位トークンの数。0から20の範囲の値を指定します。このパラメーターを使用するには、 logprobs パラメーターを true に設定する必要があります。 |
topP | Double | ニュークリアスサンプリング(nucleus sampling)とも呼ばれます。確率値の高い順にトークンをサブセットに追加し、それらの確率の合計が指定された topP 値に達するまでトークンのサブセットを作成します。0.0より大きく1.0以下の値を指定します。 |
webSearchOptions | OpenAIWebSearchOptions | Web検索ツールの使用を設定します(サポートされている場合)。詳細については、OpenAIWebSearchOptions のAPIドキュメントを参照してください。 |
| パラメーター | 型 | 説明 |
|---|---|---|
background | Boolean | レスポンスをバックグラウンドで実行します。 |
include | List<OpenAIInclude> | Web検索ツールの呼び出し元や、ファイル検索ツールの呼び出しによる検索結果など、モデルのレスポンスに含める追加データ。詳細なリファレンス情報については、Koog APIリファレンスの OpenAIInclude を参照してください。 include パラメーターの詳細については、OpenAIのドキュメント を参照してください。 |
logprobs | Boolean | true の場合、出力トークンの対数確率(log-probabilities)を含めます。 |
maxToolCalls | Integer | このレスポンスで許可される組み込みツールの呼び出しの最大合計数。0以上の値を指定します。 |
parallelToolCalls | Boolean | true の場合、複数のツール呼び出しを並列で実行できます。特にカスタムノードや、エージェント戦略外のLLMインタラクションに適用されます。 |
promptCacheKey | String | プロンプトキャッシュ用の安定したキャッシュキー。OpenAIはこれを使用して、類似のリクエストに対するレスポンスをキャッシュします。 |
reasoning | ReasoningConfig | 推論対応モデル用の推論設定。詳細については、ReasoningConfig のAPIドキュメントを参照してください。 |
safetyIdentifier | String | OpenAIのポリシーに違反するユーザーを検出するために使用される、安定した一意のユーザー識別子です。 |
serviceTier | ServiceTier | コストよりもパフォーマンスを優先するか、あるいはその逆かを選択できるOpenAIの処理ティア。詳細については、ServiceTier のAPIドキュメントを参照してください。 |
store | Boolean | true の場合、プロバイダーは後で取得できるように出力を保存することがあります。 |
topLogprobs | Integer | 各位置における、最も可能性の高い上位トークンの数。0から20の範囲の値を指定します。このパラメーターを使用するには、 logprobs パラメーターを true に設定する必要があります。 |
topP | Double | ニュークリアスサンプリング(nucleus sampling)とも呼ばれます。確率値の高い順にトークンをサブセットに追加し、それらの確率の合計が指定された topP 値に達するまでトークンのサブセットを作成します。0.0より大きく1.0以下の値を指定します。 |
truncation | Truncation | コンテキストウィンドウの制限に近づいたときの切り捨て(truncation)戦略。詳細については、Truncation のAPIドキュメントを参照してください。 |
| パラメーター | 型 | 説明 |
|---|---|---|
thinkingConfig | GoogleThinkingConfig | モデルが思考の連鎖(chain-of-thought)を公開すべきかどうか、およびそれに費やすことができるトークン数を制御します。詳細については、GoogleThinkingConfig のAPIリファレンスを参照してください。 |
topK | Integer | 出力を生成する際に考慮する上位トークンの数。0以上の値を指定します(プロバイダー固有の最小値が適用される場合があります)。 |
topP | Double | ニュークリアスサンプリング(nucleus sampling)とも呼ばれます。確率値の高い順にトークンをサブセットに追加し、それらの確率の合計が指定された topP 値に達するまでトークンのサブセットを作成します。0.0より大きく1.0以下の値を指定します。 |
| パラメーター | 型 | 説明 |
|---|---|---|
container | String | リクエスト間で再利用するためのコンテナー識別子。コンテナーは、安全でコンテナー化されたコード実行環境を提供するために、Anthropicのコード実行ツールで使用されます。以前のレスポンスのコンテナー識別子を指定することで、複数のリクエスト間でコンテナーを再利用でき、リクエスト間で作成されたファイルを保持できます。詳細については、Anthropicドキュメントの Containers を参照してください。 |
mcpServers | List<AnthropicMCPServerURLDefinition> | リクエストで使用されるMCPサーバーの定義。最大20個のサーバーをサポートします。詳細については、AnthropicMCPServerURLDefinition のAPIリファレンスを参照してください。 |
serviceTier | ServiceTier | コストよりもパフォーマンスを優先するか、あるいはその逆かを選択できるOpenAIの処理ティア。詳細については、ServiceTier のAPIドキュメントを参照してください。 |
stopSequences | List<String> | モデルにコンテンツ生成を停止させるカスタムテキストシーケンス。一致した場合、レスポンスの stop_reason の値は stop_sequence になります。 |
thinking | AnthropicThinking | Claudeの拡張思考(extended thinking)を有効にするための設定。有効にすると、レスポンスに思考コンテンツブロックも含まれます。詳細については、AnthropicThinking のAPIリファレンスを参照してください。 |
topK | Integer | 出力を生成する際に考慮する上位トークンの数。0以上の値を指定します(プロバイダー固有の最小値が適用される場合があります)。 |
topP | Double | ニュークリアスサンプリング(nucleus sampling)とも呼ばれます。確率値の高い順にトークンをサブセットに追加し、それらの確率の合計が指定された topP 値に達するまでトークンのサブセットを作成します。0.0より大きく1.0以下の値を指定します。 |
| パラメーター | 型 | 説明 |
|---|---|---|
frequencyPenalty | Double | 頻出するトークンにペナルティを課し、繰り返しを減らします。 frequencyPenalty の値を大きくすると、語彙のバリエーションが増え、繰り返しが減少します。-2.0から2.0の範囲の値を指定します。 |
parallelToolCalls | Boolean | true の場合、複数のツール呼び出しを並列で実行できます。特にカスタムノードや、エージェント戦略外のLLMインタラクションに適用されます。 |
presencePenalty | Double | 出力に既に出現したトークンをモデルが再利用するのを防ぎます。値を大きくすると、新しいトークンやトピックの導入が促されます。-2.0から2.0の範囲の値を指定します。 |
promptMode | String | 推論モードとシステムプロンプトなしを切り替えることができます。 reasoning に設定すると、推論モデル用のデフォルトのシステムプロンプトが使用されます。詳細については、Mistralの Reasoning ドキュメントを参照してください。 |
randomSeed | Integer | ランダムサンプリングに使用するシード。設定すると、同じパラメーターと同じシード値を持つ異なる呼び出しが決定論的な結果を生成します。 |
safePrompt | Boolean | すべての会話の前にセーフティプロンプトを注入するかどうかを指定します。セーフティプロンプトは、ガードレールを適用し、有害なコンテンツから保護するために使用されます。詳細については、Mistralの Moderation & Guardarailing ドキュメントを参照してください。 |
stop | List<String> | モデルがこれらの文字列のいずれかに遭遇したときに、コンテンツの生成を停止するように指示する文字列のリストです。例えば、2つの改行が出現したときに生成を停止させるには、停止シーケンスとして stop = listOf("/n/n") を指定します。 |
topP | Double | ニュークリアスサンプリング(nucleus sampling)とも呼ばれます。確率値の高い順にトークンをサブセットに追加し、それらの確率の合計が指定された topP 値に達するまでトークンのサブセットを作成します。0.0より大きく1.0以下の値を指定します。 |
| パラメーター | 型 | 説明 |
|---|---|---|
frequencyPenalty | Double | 頻出するトークンにペナルティを課し、繰り返しを減らします。 frequencyPenalty の値を大きくすると、語彙のバリエーションが増え、繰り返しが減少します。-2.0から2.0の範囲の値を指定します。 |
logprobs | Boolean | true の場合、出力トークンの対数確率(log-probabilities)を含めます。 |
presencePenalty | Double | 出力に既に出現したトークンをモデルが再利用するのを防ぎます。値を大きくすると、新しいトークンやトピックの導入が促されます。-2.0から2.0の範囲の値を指定します。 |
stop | List<String> | モデルがこれらの文字列のいずれかに遭遇したときに、コンテンツの生成を停止するように指示する文字列のリストです。例えば、2つの改行が出現したときに生成を停止させるには、停止シーケンスとして stop = listOf("/n/n") を指定します。 |
topLogprobs | Integer | 各位置における、最も可能性の高い上位トークンの数。0から20の範囲の値を指定します。このパラメーターを使用するには、 logprobs パラメーターを true に設定する必要があります。 |
topP | Double | ニュークリアスサンプリング(nucleus sampling)とも呼ばれます。確率値の高い順にトークンをサブセットに追加し、それらの確率の合計が指定された topP 値に達するまでトークンのサブセットを作成します。0.0より大きく1.0以下の値を指定します。 |
| パラメーター | 型 | 説明 |
|---|---|---|
frequencyPenalty | Double | 頻出するトークンにペナルティを課し、繰り返しを減らします。 frequencyPenalty の値を大きくすると、語彙のバリエーションが増え、繰り返しが減少します。-2.0から2.0の範囲の値を指定します。 |
logprobs | Boolean | true の場合、出力トークンの対数確率(log-probabilities)を含めます。 |
minP | Double | 最も可能性の高いトークンに対する相対的な確率が、定義された minP 値を下回るトークンをフィルタリングして除外します。0.0から0.1の範囲の値を指定します。 |
models | List<String> | リクエストで許可されるモデルのリスト。 |
presencePenalty | Double | 出力に既に出現したトークンをモデルが再利用するのを防ぎます。値を大きくすると、新しいトークンやトピックの導入が促されます。-2.0から2.0の範囲の値を指定します。 |
provider | ProviderPreferences | OpenRouterが使用するLLMプロバイダーをどのように選択するかを明示的に制御するための、さまざまなパラメーターが含まれます。詳細については、ProviderPreferences のAPIドキュメントを参照してください。 |
repetitionPenalty | Double | トークンの繰り返しにペナルティを課します。すでに出現したトークンの次トークン確率は repetitionPenalty の値で除算され、 repetitionPenalty > 1 の場合に再出現しにくくなります。0.0より大きく2.0以下の値を指定します。 |
route | String | 使用するリクエストルーティング戦略。 |
stop | List<String> | モデルがこれらの文字列のいずれかに遭遇したときに、コンテンツの生成を停止するように指示する文字列のリストです。例えば、2つの改行が出現したときに生成を停止させるには、停止シーケンスとして stop = listOf("/n/n") を指定します。 |
topA | Double | モデルの確信度に基づいてサンプリングウィンドウを動的に調整します。モデルの確信度が高い場合(支配的な高確率の次トークンがある場合)、サンプリングウィンドウを上位数個のトークンに限定します。確信度が低い場合(似たような確率を持つトークンが多数ある場合)、より多くのトークンをサンプリングウィンドウに保持します。0.0から0.1(両端を含む)の範囲の値を指定します。値が大きいほど、動的な適応性が高くなります。 |
topK | Integer | 出力を生成する際に考慮する上位トークンの数。0以上の値を指定します(プロバイダー固有の最小値が適用される場合があります)。 |
topLogprobs | Integer | 各位置における、最も可能性の高い上位トークンの数。0から20の範囲の値を指定します。このパラメーターを使用するには、 logprobs パラメーターを true に設定する必要があります。 |
topP | Double | ニュークリアスサンプリング(nucleus sampling)とも呼ばれます。確率値の高い順にトークンをサブセットに追加し、それらの確率の合計が指定された topP 値に達するまでトークンのサブセットを作成します。0.0より大きく1.0以下の値を指定します。 |
transforms | List<String> | コンテキスト変換のリスト。コンテキストがモデルのトークン制限を超えた場合に、コンテキストをどのように変換するかを定義します。デフォルトの変換は middle-out で、プロンプトの中央部分を切り捨てます。変換を行わない場合は空のリストを使用します。詳細については、OpenRouterドキュメントの Message Transforms を参照してください。 |
| パラメーター | 型 | 説明 |
|---|---|---|
enableSearch | Boolean | Web検索機能を有効にするかどうかを指定します。詳細については、Alibabaの Web search ドキュメントを参照してください。 |
enableThinking | Boolean | ハイブリッド思考モデルを使用する際に思考モードを有効にするかどうかを指定します。詳細については、Alibabaの Deep thinking ドキュメントを参照してください。 |
frequencyPenalty | Double | 頻出するトークンにペナルティを課し、繰り返しを減らします。 frequencyPenalty の値を大きくすると、語彙のバリエーションが増え、繰り返しが減少します。-2.0から2.0の範囲の値を指定します。 |
logprobs | Boolean | true の場合、出力トークンの対数確率(log-probabilities)を含めます。 |
parallelToolCalls | Boolean | true の場合、複数のツール呼び出しを並列で実行できます。特にカスタムノードや、エージェント戦略外のLLMインタラクションに適用されます。 |
presencePenalty | Double | 出力に既に出現したトークンをモデルが再利用するのを防ぎます。値を大きくすると、新しいトークンやトピックの導入が促されます。-2.0から2.0の範囲の値を指定します。 |
stop | List<String> | モデルがこれらの文字列のいずれかに遭遇したときに、コンテンツの生成を停止するように指示する文字列のリストです。例えば、2つの改行が出現したときに生成を停止させるには、停止シーケンスとして stop = listOf("/n/n") を指定します。 |
topLogprobs | Integer | 各位置における、最も可能性の高い上位トークンの数。0から20の範囲の値を指定します。このパラメーターを使用するには、 logprobs パラメーターを true に設定する必要があります。 |
topP | Double | ニュークリアスサンプリング(nucleus sampling)とも呼ばれます。確率値の高い順にトークンをサブセットに追加し、それらの確率の合計が指定された topP 値に達するまでトークンのサブセットを作成します。0.0より大きく1.0以下の値を指定します。 |
| パラメーター | 型 | 説明 |
|---|---|---|
think | Boolean | Ollamaの拡張思考(extended thinking)を有効にするための設定。有効にすると、レスポンスに思考コンテンツブロックも含まれます。詳細については、Ollama thinking のAPIリファレンスを参照してください。 |
以下の例は、プロバイダー固有のOpenRouterParamsクラスを使用して定義されたOpenRouter LLMパラメータを示しています:
val openRouterParams = OpenRouterParams(
temperature = 0.7,
maxTokens = 500,
frequencyPenalty = 0.5,
presencePenalty = 0.5,
topP = 0.9,
topK = 40,
repetitionPenalty = 1.1,
models = listOf("anthropic/claude-3-opus", "anthropic/claude-3-sonnet"),
transforms = listOf("middle-out")
)OpenRouterParams openRouterParams = new OpenRouterParams(
0.7, // temperature
500, // maxTokens
1, // numberOfChoices
null, // speculation
null, // schema
null, // toolChoice
null, // user
null, // additionalProperties
0.5, // frequencyPenalty
null, // logprobs
null, // minP
Arrays.asList("anthropic/claude-3-opus", "anthropic/claude-3-sonnet"), // models
0.5, // presencePenalty
null, // provider
1.1, // repetitionPenalty
null, // route
null, // stop
null, // topA
40, // topK
null, // topLogprobs
0.9, // topP
Arrays.asList("middle-out") // transforms
);使用例
基本的な使用法
// 長さを制限した基本的なパラメータセット
val basicParams = LLMParams(
temperature = 0.7,
maxTokens = 150,
toolChoice = LLMParams.ToolChoice.Auto
)// 長さを制限した基本的なパラメータセット
LLMParams basicParams = new LLMParams(
0.7, // temperature
150, // maxTokens
1, // numberOfChoices
null, // speculation
null, // schema
LLMParams.ToolChoice.Auto.INSTANCE, // toolChoice
null, // user
null // additionalProperties
);推論制御
モデルの推論を制御するプロバイダー固有のパラメータを通じて、推論制御を実装します。 OpenAI Chat APIと推論をサポートするモデルを使用する場合、reasoningEffortパラメータを使用して、レスポンスを提供する前にモデルが生成する推論トークンの量を制御します:
val openAIReasoningEffortParams = OpenAIChatParams(
reasoningEffort = ReasoningEffort.MEDIUM
)OpenAIChatParams openAIReasoningEffortParams = new OpenAIChatParams(
null, // temperature
null, // maxTokens
1, // numberOfChoices
null, // speculation
null, // schema
null, // toolChoice
null, // user
null, // additionalProperties
null, // audio
null, // frequencyPenalty
null, // logprobs
null, // parallelToolCalls
null, // presencePenalty
null, // promptCacheKey
ReasoningEffort.MEDIUM, // reasoningEffort
null, // safetyIdentifier
null, // serviceTier
null, // stop
null, // store
null, // topLogprobs
null, // topP
null // webSearchOptions
);さらに、ステートレスモードでOpenAI Responses APIを使用する場合、推論アイテムの暗号化された履歴を保持し、会話のターンごとにモデルに送信します。暗号化はOpenAI側で行われ、リクエストのincludeパラメータをreasoning.encrypted_contentに設定して、暗号化された推論トークンをリクエストする必要があります。 その後、次の会話のターンで暗号化された推論トークンをモデルに戻すことができます。
val openAIStatelessReasoningParams = OpenAIResponsesParams(
include = listOf(OpenAIInclude.REASONING_ENCRYPTED_CONTENT)
)OpenAIResponsesParams openAIStatelessReasoningParams = new OpenAIResponsesParams(
null, // temperature
null, // maxTokens
1, // numberOfChoices
null, // speculation
null, // schema
null, // toolChoice
null, // user
null, // additionalProperties
null, // background
Arrays.asList(OpenAIInclude.REASONING_ENCRYPTED_CONTENT), // include
null, // logprobs
null, // maxToolCalls
null, // parallelToolCalls
null, // promptCacheKey
null, // reasoning
null, // safetyIdentifier
null, // serviceTier
null, // store
null, // topLogprobs
null, // topP
null // truncation
);カスタムパラメータ
Koogで標準サポートされていない、プロバイダー固有の可能性があるカスタムパラメータを追加するには、以下の例のようにadditionalPropertiesプロパティを使用します。
// 特定のモデルプロバイダー用のカスタムパラメータを追加する
val customParams = LLMParams(
additionalProperties = additionalPropertiesOf(
"top_p" to 0.95,
"frequency_penalty" to 0.5,
"presence_penalty" to 0.5
)
)// 特定のモデルプロバイダー用のカスタムパラメータを追加する
LLMParams customParams = new LLMParams(
null, // temperature
null, // maxTokens
1, // numberOfChoices
null, // speculation
null, // schema
null, // toolChoice
null, // user
AdditionalPropertiesKt.additionalPropertiesOf(
"top_p", 0.95,
"frequency_penalty", 0.5,
"presence_penalty", 0.5
)
);パラメータの設定とオーバーライド
以下のコードサンプルは、主に使用するLLMパラメータのセットを定義し、元のセットの値を部分的にオーバーライドして新しい値を追加することで別のセットを作成する方法を示しています。 これにより、ほとんどのリクエストに共通するパラメータを定義しつつ、共通のパラメータを繰り返すことなく、より具体的なパラメータの組み合わせを追加できます。
// デフォルトパラメータを定義する
val defaultParams = LLMParams(
temperature = 0.7,
maxTokens = 150,
toolChoice = LLMParams.ToolChoice.Auto
)
// 一部のオーバーライドを使用してパラメータを作成し、残りはデフォルトを使用する
val overrideParams = LLMParams(
temperature = 0.2,
numberOfChoices = 3
).default(defaultParams)// デフォルトパラメータを定義する
LLMParams defaultParams = new LLMParams(
0.7, // temperature
150, // maxTokens
1, // numberOfChoices
null, // speculation
null, // schema
LLMParams.ToolChoice.Auto.INSTANCE, // toolChoice
null, // user
null // additionalProperties
);
// 一部のオーバーライドを使用してパラメータを作成し、残りはデフォルトを使用する
LLMParams overrideParams = new LLMParams(
0.2, // temperature
null, // maxTokens
3, // numberOfChoices
null, // speculation
null, // schema
null, // toolChoice
null, // user
null // additionalProperties
).applyDefaults(defaultParams);生成されたoverrideParamsセットの値は、以下と同等です:
val overrideParams = LLMParams(
temperature = 0.2,
maxTokens = 150,
toolChoice = LLMParams.ToolChoice.Auto,
numberOfChoices = 3
)LLMParams overrideParams = new LLMParams(
0.2, // temperature
150, // maxTokens
3, // numberOfChoices
null, // speculation
null, // schema
LLMParams.ToolChoice.Auto.INSTANCE, // toolChoice
null, // user
null // additionalProperties
);