Skip to content

モデル機能

Koogは、さまざまなLLMプロバイダーのLarge Language Models(LLM)を、プロバイダーに依存しない方法で扱うための抽象化と実装のセットを提供します。このセットには以下のクラスが含まれています。

  • LLMCapability: LLMがサポートできるさまざまな機能を定義するクラス階層です。例として以下のようなものがあります:

    • 応答のランダム性を制御するためのTemperature(温度)調整
    • 外部システムとの連携のためのツール統合
    • 視覚データを扱うためのビジョン処理
    • ベクトル表現のための埋め込み(Embedding)生成
    • テキスト生成タスクのための補完(Completion)
    • 構造化データ(SimpleおよびFullバリアントのJSON)のスキーマサポート
    • 探索的な応答のための推測(Speculation)
  • LLModel: プロバイダー、一意識別子、およびサポートされる機能を備えた特定のLLMを表すデータクラスです。

これは、統一された方法で異なるLLMプロバイダーと対話するための基盤として機能し、プロバイダー固有の詳細を抽象化しながら、アプリケーションがさまざまなモデルで動作できるようにします。

LLMの機能 (LLM capabilities)

LLMの機能は、Large Language Modelがサポートできる特定の機能や特性を表します。Koogフレームワークでは、機能を使用して特定のモデルができることや、その設定方法を定義します。各機能は、LLMCapabilityクラスのサブクラスまたはデータオブジェクトとして表されます。

アプリケーションで使用するためにLLMを設定する際、LLModelインスタンスを作成する時にcapabilitiesリストに機能を追加することで、そのモデルがサポートする機能を指定します。これにより、フレームワークはモデルと適切に対話し、その機能を適切に使用できるようになります。

コア機能

以下のリストには、Koogフレームワークのモデルで利用可能な、コアとなるLLM固有の機能が含まれています。

  • 推測 (LLMCapability.Speculation): モデルが、さまざまな可能性の程度を伴う推測的または探索的な応答を生成できるようにします。より広範な潜在的結果が望まれる、創造的または仮説的なシナリオに有用です。

  • Temperature (LLMCapability.Temperature): モデルの応答のランダム性や創造性のレベルを調整できるようにします。Temperatureの値が高いほど多様な出力が生成され、低いほど集中的で決定論的な応答になります。

  • ツール (LLMCapability.Tools): 外部ツールの使用または統合のサポートを示します。この機能により、モデルは特定のツールを実行したり、外部システムと対話したりできます。

  • ツール選択 (LLMCapability.ToolChoice): LLMでのツール呼び出しの動作を設定します。モデルに応じて、以下のように設定できます:

    • テキスト生成かツール呼び出しのどちらかを自動的に選択する
    • ツール呼び出しのみを生成し、テキストは生成しない
    • テキストのみを生成し、ツール呼び出しは行わない
    • 定義されたツールの中から特定のツールの呼び出しを強制する
  • 複数の選択肢 (LLMCapability.MultipleChoices): 単一のプロンプトに対して、モデルが複数の独立した返答の選択肢を生成できるようにします。

メディア処理機能

以下のリストは、画像や音声などのメディアコンテンツを処理するための機能のセットを表しています。

  • ビジョン (LLMCapability.Vision): 視覚データから洞察を処理、分析、推論するビジョンベースの機能のためのクラスです。 以下のタイプの視覚データをサポートしています:

    • 画像 (LLMCapability.Vision.Image): 画像分析、認識、解釈などの画像関連のビジョンタスクを処理します。
    • ビデオ (LLMCapability.Vision.Video): ビデオコンテンツの分析や理解を含む、ビデオデータを処理します。
  • オーディオ (LLMCapability.Audio): 文字起こし、オーディオ生成、またはオーディオベースのインタラクションなどのオーディオ関連機能を提供します。

  • ドキュメント (LLMCapability.Document): ドキュメントベースの入力および出力の処理を可能にします。

テキスト処理機能

以下の機能リストは、テキスト生成および処理機能を表しています。

  • 埋め込み (LLMCapability.Embed): モデルが入力テキストからベクトル埋め込み(embeddings)を生成できるようにし、類似性の比較、クラスタリング、その他のベクトルベースの分析を可能にします。

  • 補完 (LLMCapability.Completion): 文章の補完、提案の生成、入力データに沿ったコンテンツの作成など、与えられた入力コンテキストに基づいたテキストやコンテンツの生成を含みます。

  • プロンプトキャッシュ (LLMCapability.PromptCaching): プロンプトのキャッシュ機能をサポートし、繰り返しのクエリや類似のクエリに対するパフォーマンスを向上させる可能性があります。

  • モデレーション (LLMCapability.Moderation): モデルがテキストを有害な可能性のあるコンテンツについて分析し、ハラスメント、ヘイトスピーチ、自傷行為、性的コンテンツ、暴力などのさまざまなカテゴリに従って分類できるようにします。

スキーマ機能

以下のリストは、構造化データの処理に関連する機能を示しています。

  • スキーマ (LLMCapability.Schema): 特定のフォーマットを使用したデータのやり取りやエンコードに関連する、構造化スキーマ機能のためのクラスです。 以下のフォーマットのサポートが含まれます:
    • JSON (LLMCapability.Schema.JSON): 異なるレベルのJSONスキーマサポート:
      • Basic (LLMCapability.Schema.JSON.Basic): 軽量または基本的なJSON処理機能を提供します。
      • Standard (LLMCapability.Schema.JSON.Standard): 複雑なデータ構造に対する包括的なJSONスキーマサポートを提供します。

モデル(LLModel)設定の作成

汎用的でプロバイダーに依存しない方法でモデルを定義するには、以下のパラメータを使用してLLModelクラスのインスタンスとしてモデル設定を作成します。

名前データ型必須デフォルト説明
providerLLMProviderはいGoogleやOpenAIなど、LLM의 プロバイダー。これはモデルを作成またはホストしている企業や組織を識別します。
idStringはいLLMインスタンスの一意識別子。これは通常、特定のモデルのバージョンや名前を表します。例:gpt-4-turboclaude-3-opusllama-3-2
capabilitiesList<LLMCapability>はいTemperature調整、ツールの使用、またはスキーマベースのタスクなど、LLMによってサポートされる機能のリスト。これらの機能は、モデルができることとその設定方法を定義します。
contextLengthLongはいLLMのコンテキスト長。これはLLMが処理できる最大トークン数です。
maxOutputTokensLongいいえnullプロバイダーによって生成可能なLLMの最大トークン数。

このセクションでは、異なる機能を備えたLLModelインスタンスを作成する詳細な例を紹介します。

以下のコードは、コア機能を備えた基本的なLLM設定を表しています。

kotlin
val basicModel = LLModel(
    provider = LLMProvider.OpenAI,
    id = "gpt-4-turbo",
    capabilities = listOf(
        LLMCapability.Temperature,
        LLMCapability.Tools,
        LLMCapability.Schema.JSON.Standard
    ),
    contextLength = 128_000
)
java
LLModel basicModel = new LLModel(
    LLMProvider.OpenAI,
    "gpt-4-turbo",
    List.of(
        LLMCapability.Temperature.INSTANCE,
        LLMCapability.Tools.INSTANCE,
        LLMCapability.Schema.JSON.Standard.INSTANCE
    ),
    128_000L
);

以下のモデル設定は、ビジョン機能を備えたマルチモーダルLLMです。

kotlin
val visionModel = LLModel(
    provider = LLMProvider.OpenAI,
    id = "gpt-4-vision",
    capabilities = listOf(
        LLMCapability.Temperature,
        LLMCapability.Vision.Image,
        LLMCapability.MultipleChoices
    ),
    contextLength = 1_047_576,
    maxOutputTokens = 32_768
)
java
LLModel visionModel = new LLModel(
    LLMProvider.OpenAI,
    "gpt-4-vision",
    List.of(
        LLMCapability.Temperature.INSTANCE,
        LLMCapability.Vision.Image.INSTANCE,
        LLMCapability.MultipleChoices.INSTANCE
    ),
    1_047_576L,
    32_768L
);

オーディオ処理機能を備えたLLM:

kotlin
val audioModel = LLModel(
    provider = LLMProvider.Anthropic,
    id = "claude-3-opus",
    capabilities = listOf(
        LLMCapability.Audio,
        LLMCapability.Temperature,
        LLMCapability.PromptCaching
    ),
    contextLength = 200_000
)
java
LLModel audioModel = new LLModel(
    LLMProvider.Anthropic,
    "claude-3-opus",
    List.of(
        LLMCapability.Audio.INSTANCE,
        LLMCapability.Temperature.INSTANCE,
        LLMCapability.PromptCaching.INSTANCE
    ),
    200_000L
);

LLModelインスタンスとしてモデルを作成し、関連するすべてのパラメータを指定する必要があることに加え、Koogには事前定義されたモデルと、サポートされる機能を備えたそれらの設定のコレクションが含まれています。 事前定義されたOllamaモデルを使用するには、以下のように指定します。

kotlin
val metaModel = OllamaModels.Meta.LLAMA_3_2
java
LLModel metaModel = OllamaModels.Meta.LLAMA_3_2;

モデルが特定の機能をサポートしているかどうかを確認するには、containsメソッドを使用して、capabilitiesリスト内にその機能が存在するかどうかをチェックします。

kotlin
// モデルが特定の機能をサポートしているかチェック
val supportsTools = basicModel.supports(LLMCapability.Tools) // true
val supportsVideo = visionModel.supports(LLMCapability.Vision.Video) // false

// スキーマ機能をチェック
val jsonCapability = basicModel.capabilities?.filterIsInstance<LLMCapability.Schema.JSON>()?.firstOrNull()
val hasFullJsonSupport = jsonCapability is LLMCapability.Schema.JSON.Standard // true
java
// モデルが特定の機能をサポートしているかチェック
boolean supportsTools = basicModel.supports(LLMCapability.Tools.INSTANCE); // true
boolean supportsVideo = visionModel.supports(LLMCapability.Vision.Video.INSTANCE); // false

// スキーマ機能をチェック
LLMCapability jsonCapability = basicModel.getCapabilities().stream()
    .filter(c -> c instanceof LLMCapability.Schema.JSON)
    .map(c -> (LLMCapability.Schema.JSON) c)
    .findFirst()
    .orElse(null);
boolean hasFullJsonSupport = jsonCapability instanceof LLMCapability.Schema.JSON.Standard; // true

モデル別LLM機能

このリファレンスは、各プロバイダーのモデルごとにどのLLM機能がサポートされているかを示しています。

以下の表において:

  • はモデルがその機能をサポートしていることを示します
  • - はモデルがその機能をサポートしていないことを示します
  • JSON Schemaについては、FullまたはSimpleが、そのモデルがサポートしているJSON Schema機能のバリアントを示します
Googleモデル

Googleモデル

モデルTemperatureJSON Schema補完複数の選択肢ツールツール選択ビジョン (画像)ビジョン (ビデオ)オーディオ
Gemini2_5ProFull
Gemini2_5FlashFull
Gemini2_5FlashLiteFull
Gemini2_0FlashFull
Gemini2_0Flash001Full
Gemini2_0FlashLiteFull
Gemini2_0FlashLite001Full
OpenAIモデル

OpenAIモデル

モデルTemperatureJSON Schema補完複数の選択肢ツールツール選択ビジョン (画像)ビジョン (ビデオ)オーディオ推測モデレーション
Reasoning.O4Mini-Full---
Reasoning.O3Mini-Full----
Reasoning.O3-Full---
Reasoning.O1-Full---
Chat.GPT4oFull---
Chat.GPT4_1Full---
Chat.GPT5Full---
Chat.GPT5MiniFull---
Chat.GPT5NanoFull---
Audio.GptAudio------
Audio.GPT4oMiniAudio------
Audio.GPT4oAudio------
CostOptimized.GPT4_1NanoFull---
CostOptimized.GPT4_1MiniFull---
CostOptimized.GPT4oMiniFull---
Moderation.Omni---------
Anthropicモデル

Anthropicモデル

モデルTemperatureJSON Schema補完ツールツール選択ビジョン (画像)
Fable_5Full
Opus_4_6Full
Opus_4_5Full
Opus_4_1-
Opus_4-
Sonnet_4_6Full
Sonnet_4_5Full
Sonnet_4-
Haiku_4_5Full
Haiku_3-
Ollamaモデル

Ollamaモデル

Metaモデル
モデルTemperatureJSON Schemaツールモデレーション
LLAMA_3_2_3BSimple-
LLAMA_3_2Simple-
LLAMA_4Simple-
LLAMA_GUARD_3---
Alibabaモデル
モデルTemperatureJSON Schemaツール
QWEN_2_5_05BSimple
QWEN_3_06BSimple
QWQSimple
QWEN_CODER_2_5_32BSimple
Groqモデル
モデルTemperatureJSON Schemaツール
LLAMA_3_GROK_TOOL_USE_8BFull
LLAMA_3_GROK_TOOL_USE_70BFull
Graniteモデル
モデルTemperatureJSON Schemaツールビジョン (画像)
GRANITE_3_2_VISIONSimple
DeepSeekモデル

DeepSeekモデル

モデルTemperatureJSON Schema補完推測ツールツール選択ビジョン (画像)
DeepSeekChatFull--
DeepSeekReasonerFull--
OpenRouterモデル

OpenRouterモデル

モデルTemperatureJSON Schema補完推測ツールツール選択ビジョン (画像)
Phi4ReasoningFull-
Claude3OpusFull
Claude3SonnetFull
Claude3HaikuFull
Claude3_5SonnetFull
Claude3_7SonnetFull
Claude4SonnetFull
Claude4_1OpusFull
GPT4oMiniFull
GPT5Full-
GPT5MiniFull-
GPT5NanoFull-
GPT_OSS_120bFull-
GPT4Full-
GPT4oFull
GPT4TurboFull
GPT35TurboFull-
Llama3Full-
Llama3InstructFull-
Mistral7BFull-
Mixtral8x7BFull-
Claude3VisionSonnetFull
Claude3VisionOpusFull
Claude3VisionHaikuFull
DeepSeekV30324Full-
Gemini2_5FlashLiteFull
Gemini2_5FlashFull
Gemini2_5ProFull
Bedrockモデル

Bedrockモデル

BedrockモデルはAWS Bedrock経由でアクセスされ、InvokeModelまたはConverse APIのいずれかを使用します。 (C) が付いているモデルはConverse専用であり、BedrockAPIMethod.Converseが必要です。

Anthropic Claude (Bedrock経由)
モデルTemperatureJSON Schema補完ツールツール選択ビジョン (画像)ドキュメント
AnthropicClaudeFable5Full
AnthropicClaude47Opus-
AnthropicClaude46Opus-
AnthropicClaude45Opus-
AnthropicClaude41Opus-
AnthropicClaude4Opus-
AnthropicClaude4_6Sonnet-
AnthropicClaude4_5Sonnet-
AnthropicClaude4Sonnet-
AnthropicClaude4_5Haiku-
AnthropicClaude3Haiku-
Amazon Nova
モデルTemperatureJSON Schema補完ツールツール選択ビジョン (画像)ドキュメント
AmazonNovaMicro----
AmazonNovaLite----
AmazonNovaPro----
AmazonNovaPremier----
Meta Llama (Bedrock経由)
モデルTemperatureJSON Schema補完ツールツール選択ビジョン (画像)ドキュメント
MetaLlama3_3_70BInstruct---
MetaLlama3_2_90BInstruct-
MetaLlama3_2_11BInstruct-
MetaLlama3_2_3BInstruct-----
MetaLlama3_2_1BInstruct-----
MetaLlama3_1_405BInstruct-----
MetaLlama3_1_70BInstruct-----
MetaLlama3_1_8BInstruct-----
MetaLlama3_0_70BInstruct-----
MetaLlama3_0_8BInstruct-----
Moonshot Kimi (Converse専用)
モデルTemperatureJSON Schema補完ツールツール選択ビジョン (画像)ドキュメント
MoonshotKimiK2_5 (C)--
MoonshotKimiK2Thinking (C)---
MiniMax (Converse専用)
モデルTemperatureJSON Schema補完ツールツール選択ビジョン (画像)ドキュメント
MiniMaxM2_5 (C)---
OpenAI GPT-OSS (Converse専用)
モデルTemperatureJSON Schema補完ツールツール選択ビジョン (画像)ドキュメント
OpenAIGptOss120B (C)Full--
OpenAIGptOss20B (C)Full--
Google Gemma 3 (Converse専用)
モデルTemperatureJSON Schema補完ツールツール選択ビジョン (画像)ドキュメント
GoogleGemma3_27BIt (C)Full
GoogleGemma3_12BIt (C)Full
GoogleGemma3_4BIt (C)--
埋め込みモデル
モデル埋め込み
CohereEmbedV4
CohereEmbedEnglishV3
CohereEmbedMultilingualV3
AmazonTitanEmbedTextV2
AmazonTitanEmbedText