Skip to content

Koogは、さまざまなLLMプロバイダーの大規模言語モデル(LLM)とプロバイダーに依存しない方法で連携するための、一連の抽象化と実装を提供します。このセットには、以下のクラスが含まれます。

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

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

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

LLM機能

LLM機能は、大規模言語モデルがサポートできる特定の特徴や機能を表します。Koogフレームワークでは、機能は特定のモデルができることと、どのように構成できるかを定義するために使用されます。各機能は、LLMCapability クラスのサブクラスまたはデータオブジェクトとして表されます。

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

コア機能

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

  • Speculation (LLMCapability.Speculation): モデルが、さまざまな確度で推測的または探索的な応答を生成できるようにします。より広範な潜在的結果が望まれるクリエイティブなシナリオや仮説的なシナリオで役立ちます。

  • Temperature (LLMCapability.Temperature): モデルの応答のランダム性または創造性のレベルを調整できます。高い温度値はより多様な出力を生成し、低い値はより焦点を絞った決定論的な応答につながります。

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

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

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

メディア処理機能

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

  • Vision (LLMCapability.Vision): 視覚データを処理、分析し、そこから洞察を推測する、視覚ベースの機能のためのクラスです。 以下の種類の視覚データをサポートします。

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

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

テキスト処理機能

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

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

  • Completion (LLMCapability.Completion): 与えられた入力コンテキストに基づいてテキストまたはコンテンツを生成することを含みます。例えば、文の補完、提案の生成、または入力データに合わせたコンテンツの作成などです。

  • Prompt caching (LLMCapability.PromptCaching): プロンプトのキャッシング機能をサポートし、繰り返しまたは類似のクエリのパフォーマンスを潜在的に向上させます。

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

スキーマ機能

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

  • Schema (LLMCapability.Schema): 特定の形式を使用したデータインタラクションとエンコーディングに関連する構造化スキーマ機能のためのクラスです。 以下の形式をサポートします。
    • JSON (LLMCapability.Schema.JSON): さまざまなレベルのJSONスキーマサポート:
      • Basic (LLMCapability.Schema.JSON.Basic): 軽量または基本的なJSON処理機能を提供します。
      • Standard (LLMCapability.Schema.JSON.Standard): 複雑なデータ構造に対する包括的なJSONスキーマサポートを提供します。

モデル (LLModel) 設定の作成

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

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

このセクションでは、さまざまな機能を持つ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
)

以下のモデル構成は、視覚機能を備えたマルチモーダル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
)

音声処理機能を備えたLLM:

kotlin
val audioModel = LLModel(
    provider = LLMProvider.Anthropic,
    id = "claude-3-opus",
    capabilities = listOf(
        LLMCapability.Audio,
        LLMCapability.Temperature,
        LLMCapability.PromptCaching
    ),
    contextLength = 200_000
)

LLModel インスタンスとしてモデルを作成し、関連するすべてのパラメータを指定する必要があるだけでなく、Koogには、サポートされる機能を持つ事前定義されたモデルとその構成のコレクションが含まれています。 事前定義されたOllamaモデルを使用するには、次のように指定します。

kotlin
val metaModel = OllamaModels.Meta.LLAMA_3_2

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

kotlin
// Check if models support specific capabilities
val supportsTools = basicModel.capabilities.contains(LLMCapability.Tools) // true
val supportsVideo = visionModel.capabilities.contains(LLMCapability.Vision.Video) // false

// Check for schema capabilities
val jsonCapability = basicModel.capabilities.filterIsInstance<LLMCapability.Schema.JSON>().firstOrNull()
val hasFullJsonSupport = jsonCapability is LLMCapability.Schema.JSON.Standard // true

モデルごとのLLM機能

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

以下の表では:

  • は、モデルがその機能をサポートしていることを示します。
  • - は、モデルがその機能をサポートしていないことを示します。
  • JSONスキーマについては、Full または Simple が、モデルがサポートするJSONスキーマ機能のどのバリアントであるかを示します。

Googleモデル

モデル温度JSONスキーマ補完複数選択肢ツールツール選択視覚 (画像)視覚 (ビデオ)音声
Gemini2_5ProFull
Gemini2_5FlashFull--
Gemini2_0FlashFull
Gemini2_0Flash001Full
Gemini2_0FlashLiteFull
Gemini2_0FlashLite001Full
Gemini1_5ProFull
Gemini1_5ProLatestFull
Gemini1_5Pro002Full
Gemini1_5FlashFull
Gemini1_5FlashLatestFull--
Gemini1_5Flash002Full--
Gemini1_5Flash8BFull--
Gemini1_5Flash8B001Full--
Gemini1_5Flash8BLatestFull--

OpenAIモデル

モデル温度JSONスキーマ補完複数選択肢ツールツール選択視覚 (画像)視覚 (ビデオ)音声推測モデレーション
Reasoning.GPT4oMiniFull---
Reasoning.O3MiniFull----
Reasoning.O1Mini-Full------
Reasoning.O3-Full---
Reasoning.O1-Full---
Chat.GPT4oFull---
Chat.GPT4_1Full---
Audio.GPT4oMiniAudio------
Audio.GPT4oAudio------
Moderation.Omni---------
Moderation.Text----------

Anthropicモデル

モデル温度JSONスキーマ補完ツールツール選択視覚 (画像)
Opus_4Full
Sonnet_4Full
Sonnet_3_7Full
Haiku_3_5Full
Sonnet_3_5Full
Haiku_3Full
Opus_3Full

Ollamaモデル

Metaモデル
モデル温度JSONスキーマツールモデレーション
LLAMA_3_2_3BSimple-
LLAMA_3_2Simple-
LLAMA_4Simple-
LLAMA_GUARD_3---
Alibabaモデル
モデル温度JSONスキーマツール
QWEN_2_5_05BSimple
QWEN_3_06BSimple
QWQSimple
QWEN_CODER_2_5_32BSimple
Groqモデル
モデル温度JSONスキーマツール
LLAMA_3_GROK_TOOL_USE_8BFull
LLAMA_3_GROK_TOOL_USE_70BFull
Graniteモデル
モデル温度JSONスキーマツール視覚 (画像)
GRANITE_3_2_VISIONSimple

OpenRouterモデル

モデル温度JSONスキーマ補完推測ツールツール選択視覚 (画像)
Phi4ReasoningFull-
Claude3OpusFull
Claude3SonnetFull
Claude3HaikuFull
GPT4Full-
GPT4oFull
GPT4TurboFull
GPT35TurboFull-
Gemini15ProFull
Gemini15FlashFull
Llama3Full-
Llama3InstructFull-
Mistral7BFull-
Mixtral8x7BFull-
Claude3VisionSonnetFull
Claude3VisionOpusFull
Claude3VisionHaikuFull