Package com.tnsai.llm
Class ModelCapabilities
java.lang.Object
com.tnsai.llm.ModelCapabilities
- All Implemented Interfaces:
LLMCapabilities
Default implementation of LLMCapabilities with builder pattern.
ModelCapabilities provides a concrete implementation of the LLMCapabilities interface, making it easy to define model capabilities statically or dynamically.
Static Model Profiles
Pre-defined capability profiles for popular models:
// Get predefined profile
LLMCapabilities gpt4o = ModelCapabilities.GPT_4O;
LLMCapabilities claude = ModelCapabilities.CLAUDE_SONNET_4;
// Check capabilities
if (gpt4o.supportsVision()) {
// Use multimodal features
}
Custom Capabilities
LLMCapabilities custom = ModelCapabilities.builder()
.providerName("CustomProvider")
.modelId("my-model-v1")
.supportsStreaming(true)
.supportsVision(false)
.supportsFunctionCalling(true)
.supportsStructuredOutput(true)
.maxInputTokens(32000)
.maxOutputTokens(4096)
.supportedModalities(Set.of(Modality.TEXT))
.inputCostPer1KTokens(0.001)
.outputCostPer1KTokens(0.002)
.build();
- See Also:
-
Nested Class Summary
Nested classes/interfaces inherited from interface com.tnsai.llm.LLMCapabilities
LLMCapabilities.Modality -
Field Summary
FieldsModifier and TypeFieldDescriptionstatic final ModelCapabilitiesAnthropic Claude 3 Opus capabilitiesstatic final ModelCapabilitiesAnthropic Claude 3.5 Sonnet capabilitiesstatic final ModelCapabilitiesAnthropic Claude Sonnet 4 capabilitiesstatic final ModelCapabilitiesZhipuAI CodeGeeX-4 - Code specializedstatic final ModelCapabilitiesGoogle Gemini 1.5 Pro capabilitiesstatic final ModelCapabilitiesGoogle Gemini 2.5 Flash capabilitiesstatic final ModelCapabilitiesZhipuAI GLM-4-Flash - Fast and efficientstatic final ModelCapabilitiesZhipuAI GLM-4-Plus - Most capable ZhipuAI modelstatic final ModelCapabilitiesZhipuAI GLM-4V-Plus - Vision capable modelstatic final ModelCapabilitiesOpenAI GPT-4-turbo capabilitiesstatic final ModelCapabilitiesOpenAI GPT-4o capabilitiesstatic final ModelCapabilitiesOpenAI GPT-4o-mini capabilitiesstatic final ModelCapabilitiesGroq Llama 3.3 70B capabilitiesstatic final ModelCapabilitiesMeta Llama 3.2 (via Ollama) capabilitiesstatic final ModelCapabilitiesMiniMax abab6.5s-chat - Balanced performancestatic final ModelCapabilitiesMiniMax abab6.5t-chat - Turbo model for fast responsesstatic final ModelCapabilitiesMiniMax M2 - Flagship model with 1M contextstatic final ModelCapabilitiesMiniMax M2.1 - Enhanced multilingual modelstatic final ModelCapabilitiesMistral Large capabilitiesstatic final ModelCapabilitiesOpenAI o1 (reasoning) capabilitiesstatic final ModelCapabilitiesUnknown/default capabilities -
Constructor Summary
Constructors -
Method Summary
Modifier and TypeMethodDescriptionstatic ModelCapabilitiesReturns the capabilities for a known model by name.Returns additional provider-specific capabilities.Returns a human-readable description of the model.Estimated average latency for first token (TTFT) in milliseconds.Cost per 1000 input tokens in USD.intMaximum input tokens (context window).intMaximum output tokens the model can generate.The model identifier.Model version if applicable.Cost per 1000 output tokens in USD.The provider name (OpenAI, Anthropic, Google, etc.).Returns the list of supported input modalities.booleanWhether the model supports code execution (like Code Interpreter).booleanWhether the model supports function/tool calling.booleanWhether the model supports parallel function calls.booleanWhether the model has reasoning/thinking capabilities (like o1).booleanWhether the model supports streaming responses.booleanWhether the model supports structured JSON output mode.booleanWhether the model supports system prompts.booleanWhether the model can process images (vision capability).booleanWhether the model supports web browsing.Methods inherited from class java.lang.Object
equals, getClass, hashCode, notify, notifyAll, toString, wait, wait, waitMethods inherited from interface com.tnsai.llm.LLMCapabilities
getContextWindow, knowsInputWindow, meetsRequirements, requireStreaming, requireToolCalling, requireVision, supportsFileUpload, supportsModality
-
Field Details
-
GPT_4O
OpenAI GPT-4o capabilities -
GPT_4O_MINI
OpenAI GPT-4o-mini capabilities -
GPT_4_TURBO
OpenAI GPT-4-turbo capabilities -
O1
OpenAI o1 (reasoning) capabilities -
CLAUDE_SONNET_4
Anthropic Claude Sonnet 4 capabilities -
CLAUDE_35_SONNET
Anthropic Claude 3.5 Sonnet capabilities -
CLAUDE_3_OPUS
Anthropic Claude 3 Opus capabilities -
GEMINI_25_FLASH
Google Gemini 2.5 Flash capabilities -
GEMINI_15_PRO
Google Gemini 1.5 Pro capabilities -
LLAMA_32
Meta Llama 3.2 (via Ollama) capabilities -
MISTRAL_LARGE
Mistral Large capabilities -
GROQ_LLAMA_33_70B
Groq Llama 3.3 70B capabilities -
GLM_4_PLUS
ZhipuAI GLM-4-Plus - Most capable ZhipuAI model -
GLM_4V_PLUS
ZhipuAI GLM-4V-Plus - Vision capable model -
GLM_4_FLASH
ZhipuAI GLM-4-Flash - Fast and efficient -
CODEGEEX_4
ZhipuAI CodeGeeX-4 - Code specialized -
MINIMAX_M2
MiniMax M2 - Flagship model with 1M context -
MINIMAX_M21
MiniMax M2.1 - Enhanced multilingual model -
MINIMAX_ABAB65S
MiniMax abab6.5s-chat - Balanced performance -
MINIMAX_ABAB65T
MiniMax abab6.5t-chat - Turbo model for fast responses -
UNKNOWN
Unknown/default capabilities
-
-
Constructor Details
-
ModelCapabilities
public ModelCapabilities()
-
-
Method Details
-
supportsStreaming
public boolean supportsStreaming()Description copied from interface:LLMCapabilitiesWhether the model supports streaming responses. Most modern LLMs support this.- Specified by:
supportsStreamingin interfaceLLMCapabilities
-
supportsVision
public boolean supportsVision()Description copied from interface:LLMCapabilitiesWhether the model can process images (vision capability). Examples: GPT-4o, Claude 3, Gemini- Specified by:
supportsVisionin interfaceLLMCapabilities
-
supportsFunctionCalling
public boolean supportsFunctionCalling()Description copied from interface:LLMCapabilitiesWhether the model supports function/tool calling. This is critical for agent-based applications.- Specified by:
supportsFunctionCallingin interfaceLLMCapabilities
-
supportsStructuredOutput
public boolean supportsStructuredOutput()Description copied from interface:LLMCapabilitiesWhether the model supports structured JSON output mode. When enabled, model output is guaranteed to be valid JSON.- Specified by:
supportsStructuredOutputin interfaceLLMCapabilities
-
supportsSystemPrompt
public boolean supportsSystemPrompt()Description copied from interface:LLMCapabilitiesWhether the model supports system prompts. Some older models don't distinguish system from user messages.- Specified by:
supportsSystemPromptin interfaceLLMCapabilities
-
supportsParallelFunctionCalls
public boolean supportsParallelFunctionCalls()Description copied from interface:LLMCapabilitiesWhether the model supports parallel function calls. Some models can request multiple tool calls in a single response.- Specified by:
supportsParallelFunctionCallsin interfaceLLMCapabilities
-
supportsCodeExecution
public boolean supportsCodeExecution()Description copied from interface:LLMCapabilitiesWhether the model supports code execution (like Code Interpreter).- Specified by:
supportsCodeExecutionin interfaceLLMCapabilities
-
supportsWebBrowsing
public boolean supportsWebBrowsing()Description copied from interface:LLMCapabilitiesWhether the model supports web browsing.- Specified by:
supportsWebBrowsingin interfaceLLMCapabilities
-
supportsReasoning
public boolean supportsReasoning()Description copied from interface:LLMCapabilitiesWhether the model has reasoning/thinking capabilities (like o1).- Specified by:
supportsReasoningin interfaceLLMCapabilities
-
getMaxInputTokens
public int getMaxInputTokens()Description copied from interface:LLMCapabilitiesMaximum input tokens (context window). This is the combined limit for system prompt + history + user message.- Specified by:
getMaxInputTokensin interfaceLLMCapabilities
-
getMaxOutputTokens
public int getMaxOutputTokens()Description copied from interface:LLMCapabilitiesMaximum output tokens the model can generate. Some models have separate input/output limits.- Specified by:
getMaxOutputTokensin interfaceLLMCapabilities
-
getSupportedModalities
Description copied from interface:LLMCapabilitiesReturns the list of supported input modalities.- Specified by:
getSupportedModalitiesin interfaceLLMCapabilities- Returns:
- Set of supported modalities (TEXT, IMAGE, AUDIO, etc.)
-
getProviderName
Description copied from interface:LLMCapabilitiesThe provider name (OpenAI, Anthropic, Google, etc.).- Specified by:
getProviderNamein interfaceLLMCapabilities
-
getModelId
Description copied from interface:LLMCapabilitiesThe model identifier.- Specified by:
getModelIdin interfaceLLMCapabilities
-
getModelVersion
Description copied from interface:LLMCapabilitiesModel version if applicable.- Specified by:
getModelVersionin interfaceLLMCapabilities
-
getInputCostPer1KTokens
Description copied from interface:LLMCapabilitiesCost per 1000 input tokens in USD. Returns empty if pricing not available.- Specified by:
getInputCostPer1KTokensin interfaceLLMCapabilities
-
getOutputCostPer1KTokens
Description copied from interface:LLMCapabilitiesCost per 1000 output tokens in USD. Returns empty if pricing not available.- Specified by:
getOutputCostPer1KTokensin interfaceLLMCapabilities
-
getEstimatedLatencyMs
Description copied from interface:LLMCapabilitiesEstimated average latency for first token (TTFT) in milliseconds. Useful for latency-sensitive applications.- Specified by:
getEstimatedLatencyMsin interfaceLLMCapabilities
-
getAdditionalCapabilities
Description copied from interface:LLMCapabilitiesReturns additional provider-specific capabilities. This is an extension point for capabilities not covered by the interface.- Specified by:
getAdditionalCapabilitiesin interfaceLLMCapabilities
-
getDescription
Description copied from interface:LLMCapabilitiesReturns a human-readable description of the model.- Specified by:
getDescriptionin interfaceLLMCapabilities
-
forModel
Returns the capabilities for a known model by name.- Parameters:
modelName- The model name (e.g., "gpt-4o", "claude-sonnet-4")- Returns:
- The capabilities, or UNKNOWN if not found
-