Skip to content

模型能力

Koog 提供了一組抽象和實作,用於以與供應商無關的方式處理來自各個大型語言模型 (LLM) 供應商的模型。這套工具包含以下類別:

  • LLMCapability:一個類別階層結構,定義了 LLM 可以支援的各種功能,例如:

    • 溫度調整:用於控制回應的隨機性
    • 工具整合:用於與外部系統互動
    • 視覺處理:用於處理視覺資料
    • 嵌入 (Embedding) 產生:用於向量表示
    • 補全 (Completion):用於文字產生任務
    • 架構支援:用於結構化資料(包含 Simple 與 Full 變體的 JSON)
    • 推測 (Speculation):用於探索性回應
  • LLModel:一個資料類別,表示具有其供應商、唯一識別碼和支援功能的特定 LLM。

這可作為以統一方式與不同 LLM 供應商互動的基礎,允許應用程式在使用各種模型時,抽象化掉特定供應商的細節。

LLM 功能

LLM 功能代表大型語言模型可以支援的特定特性或功能性。在 Koog 架構中,功能用於定義特定模型可以執行什麼操作以及如何進行配置。每項功能都表示為 LLMCapability 類別的子類別或資料物件。

在配置應用程式中使用的 LLM 時,您可以在建立 LLModel 執行個體時將支援的功能新增至 capabilities 列表來指定它們。這讓架構能夠正確地與模型互動並適當地使用其功能。

核心功能

下方列表包含 Koog 架構中模型可用的核心、LLM 特有功能:

  • 推測 (LLMCapability.Speculation):讓模型以不同的可能性程度產生推測性或探索性回應。適用於需要更廣泛潛在結果的創意或假設場景。

  • 溫度 (LLMCapability.Temperature):允許調整模型回應的隨機性或創意程度。較高的溫度值會產生更多樣化的輸出,而較低的值則會產生更集中且確定性的回應。

  • 工具 (LLMCapability.Tools):表示支援外部工具使用或整合。此功能讓模型執行特定工具或與外部系統互動。

  • 工具選擇 (LLMCapability.ToolChoice):配置工具呼叫在 LLM 中的運作方式。根據模型的不同,可以配置為:

    • 自動在產生文字或工具呼叫之間做出選擇
    • 僅產生工具呼叫,不產生文字
    • 僅產生文字,不產生工具呼叫
    • 強制呼叫已定義工具中的特定工具
  • 多重選擇 (LLMCapability.MultipleChoices):讓模型對單個提示詞產生多個獨立的回覆選擇。

媒體處理功能

以下列表代表一組用於處理圖像或音訊等媒體內容的功能:

  • 視覺 (LLMCapability.Vision):一個用於視覺功能的類別,可處理、分析視覺資料並從中推斷洞察。 支援以下類型的視覺資料:

    • 圖像 (LLMCapability.Vision.Image):處理與圖像相關的視覺任務,例如圖像分析、識別和解讀。
    • 影片 (LLMCapability.Vision.Video):處理影片資料,包括分析和理解影片內容。
  • 音訊 (LLMCapability.Audio):提供音訊相關功能,例如轉錄、音訊產生或基於音訊的互動。

  • 文件 (LLMCapability.Document):啟用基於文件的輸入和輸出的處理。

文字處理功能

以下功能列表代表文字產生與處理功能:

  • 嵌入 (LLMCapability.Embed):讓模型從輸入文字產生向量嵌入,從而實現相似性比較、分群和其他基於向量的分析。

  • 補全 (LLMCapability.Completion):包含根據給定的輸入上下文產生文字或內容,例如補全句子、產生建議或產出與輸入資料一致的內容。

  • 提示詞快取 (LLMCapability.PromptCaching):支援提示詞的快取功能,可提升重複或相似查詢的效能。

  • 審核 (LLMCapability.Moderation):讓模型分析文字中潛在的有害內容,並根據各種細節分類,例如騷擾、仇恨言論、自殘、性內容、暴力等。

架構功能

下方列表指出與處理結構化資料相關的功能:

  • 架構 (LLMCapability.Schema):一個用於結構化架構功能的類別,與使用特定格式進行資料互動和編碼相關。 包含對以下格式的支援:
    • JSON (LLMCapability.Schema.JSON):支援不同層級的 JSON 架構:
      • 基本 (LLMCapability.Schema.JSON.Basic):提供輕量級或基本的 JSON 處理功能。
      • 標準 (LLMCapability.Schema.JSON.Standard):為複雜的資料結構提供全面的 JSON 架構支援。

建立模型 (LLModel) 配置

若要以通用、與供應商無關的方式定義模型,請建立 LLModel 類別的執行個體作為模型配置,並使用以下參數:

名稱資料型別必填預設值說明
providerLLMProviderLLM 的供應商,例如 Google 或 OpenAI。這識別了建立或託管該模型的公司或組織。
idStringLLM 執行個體的唯一識別碼。這通常代表特定的模型版本 or 名稱。例如 gpt-4-turboclaude-3-opusllama-3-2
capabilitiesList<LLMCapability>LLM 支援的功能列表,例如溫度調整、工具使用或基於架構的任務。這些功能定義了模型可以做什麼以及如何進行配置。
contextLengthLongLLM 的上下文長度。這是 LLM 可以處理的最大 Token 數量。
maxOutputTokensLongnull供應商可為該 LLM 產生的最大 Token 數量。

範例

本節提供了建立具有不同功能的 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 架構,FullSimple 表示模型支援的 JSON 架構功能變體
Google 模型

Google 模型

模型溫度JSON 架構補全多重選擇工具工具選擇視覺 (圖像)視覺 (影片)音訊
Gemini2_5ProFull
Gemini2_5FlashFull
Gemini2_5FlashLiteFull
Gemini2_0FlashFull
Gemini2_0Flash001Full
Gemini2_0FlashLiteFull
Gemini2_0FlashLite001Full
OpenAI 模型

OpenAI 模型

模型溫度JSON 架構補全多重選擇工具工具選擇視覺 (圖像)視覺 (影片)音訊推測審核
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 模型

模型溫度JSON 架構補全工具工具選擇視覺 (圖像)
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 模型
模型溫度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
DeepSeek 模型

DeepSeek 模型

模型溫度JSON 架構補全推測工具工具選擇視覺 (圖像)
DeepSeekChatFull--
DeepSeekReasonerFull--
OpenRouter 模型

OpenRouter 模型

模型溫度JSON 架構補全推測工具工具選擇視覺 (圖像)
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)
模型溫度JSON 架構補全工具工具選擇視覺 (圖像)文件
AnthropicClaudeFable5Full
AnthropicClaude47Opus-
AnthropicClaude46Opus-
AnthropicClaude45Opus-
AnthropicClaude41Opus-
AnthropicClaude4Opus-
AnthropicClaude4_6Sonnet-
AnthropicClaude4_5Sonnet-
AnthropicClaude4Sonnet-
AnthropicClaude4_5Haiku-
AnthropicClaude3Haiku-
Amazon Nova
模型溫度JSON 架構補全工具工具選擇視覺 (圖像)文件
AmazonNovaMicro----
AmazonNovaLite----
AmazonNovaPro----
AmazonNovaPremier----
Meta Llama (透過 Bedrock)
模型溫度JSON 架構補全工具工具選擇視覺 (圖像)文件
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)
模型溫度JSON 架構補全工具工具選擇視覺 (圖像)文件
MoonshotKimiK2_5 (C)--
MoonshotKimiK2Thinking (C)---
MiniMax (僅支援 Converse)
模型溫度JSON 架構補全工具工具選擇視覺 (圖像)文件
MiniMaxM2_5 (C)---
OpenAI GPT-OSS (僅支援 Converse)
模型溫度JSON 架構補全工具工具選擇視覺 (圖像)文件
OpenAIGptOss120B (C)Full--
OpenAIGptOss20B (C)Full--
Google Gemma 3 (僅支援 Converse)
模型溫度JSON 架構補全工具工具選擇視覺 (圖像)文件
GoogleGemma3_27BIt (C)Full
GoogleGemma3_12BIt (C)Full
GoogleGemma3_4BIt (C)--
嵌入模型
模型嵌入 (Embed)
CohereEmbedV4
CohereEmbedEnglishV3
CohereEmbedMultilingualV3
AmazonTitanEmbedTextV2
AmazonTitanEmbedText