Table of Contents

📝 LM-Kit.NET Change History

📅 Version 2026.2.6 (not yet released)

New Features

  • Added memory capacity limits, eviction policies, and time-decay scoring to AgentMemory

    • New MaxMemoryEntries property: set the maximum number of memory entries (0 = unlimited, default)
    • New EvictionPolicy property: choose between OldestFirst, LowestImportanceFirst, or OldestLowestImportanceFirst
    • New EntryCount property: get the total number of entries across all data sources
    • New MemoryEvicted event: fires before each entry is evicted, allowing the application to cancel individual evictions
    • New TimeDecayHalfLife property: exponential decay on retrieval scores so recent memories rank higher (configurable half-life, disabled by default)
    • Automatic created_at timestamp on every memory entry (both manual and auto-extracted)
    • New types in LMKit.Agents.Memory namespace: MemoryEvictionPolicy, MemoryEvictedEventArgs
    • Unified timestamp key across manual and extracted memories for consistent eviction and decay ordering
    • New ConsolidateAsync method: merge clusters of semantically similar memories into concise summaries using an LLM
    • New ConsolidationSimilarityThreshold property: control cluster grouping sensitivity (default 0.7)
    • New MinClusterSize property: minimum entries required before a cluster is merged (default 2)
    • New BeforeMemoryConsolidated event: inspect or cancel individual merges before they are applied
    • New types in LMKit.Agents.Memory namespace: MemoryConsolidationResult, MemoryConsolidationEventArgs
    • New SummarizeConversationAsync method: summarize a full conversation into 1-3 episodic memory entries using an LLM
    • New MaxConversationSummaries property: control the maximum number of episodic entries per conversation (default 3)
    • New ConversationSummaryResult type in LMKit.Agents.Memory namespace
  • Added UserScopedMemory for multi-user memory isolation

    • New UserScopedMemory class: thin wrapper over AgentMemory that namespaces data sources by user ID (e.g., "alice::preferences")
    • ApplyFilter() / ClearFilter() methods to scope retrieval to a single user
    • ClearUserData() method to remove all data belonging to a specific user without affecting others
    • Full save/remove API mirroring AgentMemory with automatic user-prefix handling
  • Added built-in automatic memory extraction to AgentMemory

    • New ExtractionMode property: set to MemoryExtractionMode.LlmBased to enable automatic fact extraction from conversation turns
    • Uses grammar-constrained structured output via TextExtraction for reliable extraction
    • Extracted memories are classified by MemoryType (Semantic, Episodic, Procedural) and MemoryImportance (Low, Medium, High)
    • Built-in deduplication via vector similarity before storage (configurable DeduplicationThreshold)
    • New ExtractionModel property to use a separate lightweight model for extraction
    • New RunExtractionSynchronously property: false (default) for fire-and-forget, true for blocking extraction
    • New ExtractionPrompt property for custom extraction guidance
    • New BeforeMemoryStored event to inspect, modify, or cancel extracted memories before storage
    • New types in LMKit.Agents.Memory namespace: MemoryExtractionMode, MemoryImportance, ExtractedMemory, MemoryExtractionEventArgs, MemoryExtractionResult
    • Made TopK and MinScore properties public on AgentMemory
  • Added MemoryEstimation static class in LMKit.Hardware for accurate VRAM/context fitting

    • New FitParameters(string modelPath, ...) method: probes how a model fits into available device memory without loading it
    • New FitParameters(LM model, ...) overload: estimates memory for an already-loaded model
    • Returns a FitResult with Success, ContextSize, and GpuLayerCount properties indicating the optimal configuration
    • Supports custom DeviceConfiguration (main GPU, GPU layer count, tensor split) for fine-grained control
    • Configurable minimumContextSize parameter (default 2048) to set a lower bound for context allocation
    • Validates GGUF file format before probing via FileFormatValidator
    • Powered by llama.cpp's native llama_params_fit for hardware-accurate memory estimation

📅 Version 2026.2.5 (16 February 2026)

New Features

  • Added Markdown conversion public APIs in LMKit.Document.Conversion

    • New MarkdownHtmlConverter.MarkdownToHtml(string) method to convert Markdown to HTML
    • New MarkdownHtmlConverter.HtmlToMarkdown(string) method to convert HTML back to Markdown
    • New MarkdownDocxConverter.MarkdownToDocx(string) and MarkdownDocxConverter.MarkdownToDocxFile(string, string) methods to convert Markdown to DOCX
    • New MarkdownDocxConverter.DocxToMarkdown(...) overloads for DOCX byte arrays and DOCX file paths
    • Added comprehensive XML documentation and usage examples for each public member
    • Added prebuilt agent tools convert_markdown_to_html and convert_html_to_markdown
  • Added per-element confidence scores to extraction results

    • New ConfidenceScore property on TextExtractionResultElement exposes a [0.0, 1.0] quality score computed from per-token probabilities during grammar-constrained generation
    • New HumanVerificationRequired property on TextExtractionResult signals when any element falls below the configurable threshold
    • New HumanVerificationThreshold property on TextExtraction (default 0.7) controls the verification flag
  • Added extraction progress events

    • New Progress event on TextExtraction reports phase transitions: OcrProcessing, Extracting, PostProcessing, Completed
    • Reports per-pass index and total for multi-pass extraction of large documents
    • New ExtractionPhase enum and ExtractionProgressEventArgs class
  • Added entity auto-detection and validation for extraction results

    • New EntityKind public enum (102 values) identifies the semantic kind of each extracted field (email, phone, IBAN, postal code, URI, etc.)
    • New DetectedEntityKind property on TextExtractionElement exposes the automatically inferred entity kind
    • New Validation property on TextExtractionResultElement returns an EntityValidationResult with Status (Valid, Invalid, Repaired, NotApplicable), EntityKind, and OriginalValue (when repaired)
    • 14 entity kinds have dedicated format validators: email, phone, fax, URI, IBAN, SWIFT/BIC, IPv4, IPv6, MAC address, GUID/UUID, currency code, postal code, hostname
    • Invalid extractions now contribute to HumanVerificationRequired flag alongside low confidence scores
    • Validation results are tracked even when NullOnDoubt is disabled, enabling inspection without value nullification
  • Added HTML-aware chunking for RAG workflows

    • New HtmlChunking class implements IChunking with DOM-aware splitting using AngleSharp
    • Respects semantic HTML boundaries: headings, sections, tables, preformatted blocks
    • StripBoilerplate option (default: true) removes nav, footer, sidebar, and ad containers
    • PreserveHeadingContext option (default: true) prepends heading breadcrumb trail to chunks
    • Tables are extracted as pipe-delimited text and kept intact when they fit in a single chunk
    • Oversized blocks are sub-split using the plain text partitioner with configurable overlap
  • Added async PDF splitting and extraction APIs to improve SDK async coverage for file-heavy workflows

    • Added ExtractPagesAsync overloads for file-path based extraction (pageRange and pageIndexes)
    • Added SplitToFilesAsync overloads for attachment and file-path workflows (including DocumentSplittingResult-based splitting)
    • All new async APIs support CancellationToken
  • Added pattern-constrained extraction formatting (best-effort deterministic enforcement)

    • New TextExtractionElementFormat.Pattern supports regex patterns and compact descriptors such as 4N-26A2N-1A
    • Pattern is now included in JSON Schema round-trip (SetElementsFromJsonSchema parse + JsonSchema generation)
    • Grammar generation now applies pattern constraints for String and StringArray fields when pattern conversion is supported
    • Post-processing now validates extracted values against field patterns and rejects non-conforming values when validation is enabled
  • Added standardized tool metadata via IToolMetadata interface

    • All built-in tools now implement IToolMetadata, exposing Category, SideEffect, RiskLevel, DefaultApproval, IsIdempotent, and IsReadOnly
    • New ToolSideEffect enum: None, LocalRead, LocalWrite, NetworkRead, NetworkWrite, Irreversible
    • New ToolRiskLevel enum: Low, Medium, High, Critical
    • New ToolApprovalMode enum: Never, Conditional, Always
    • Custom ITool implementations may optionally implement IToolMetadata to participate in policy-based governance
  • Added ToolPermissionPolicy for centralized tool access control

    • Fluent API with Allow(), Deny(), AllowCategory(), DenyCategory(), RequireApproval(), RequireApprovalForCategory(), and SetMaxRiskLevel()
    • Supports wildcard patterns (e.g., Deny("fs.*")) and category-level rules
    • Deny rules always take precedence over allow rules
    • Configurable DefaultAction (Allow or Deny) for whitelist/blacklist modes
    • New ToolPermissionResult enum: Allowed, Denied, ApprovalRequired
  • Added tool approval workflow support

    • New ToolApprovalRequestEventArgs event args class with ToolCall, Tool, RiskLevel, SideEffect, Approved, and DenialReason properties
    • BeforeToolInvocationEventArgs now exposes Tool and PermissionResult properties for policy-aware interception
  • Added ToolPermissionPolicy integration to ToolRegistry and AgentBuilder

    • ToolRegistry.PermissionPolicy property for attaching a policy to the registry
    • ToolRegistry.EvaluatePermission(ITool) method for programmatic policy checks
    • AgentBuilder.WithPermissionPolicy() methods (direct and inline configuration)
  • Added metadata-aware query methods to BuiltInTools

    • GetByMaxRisk(ToolRiskLevel): filter tools by maximum risk level
    • GetByCategory(string): filter tools by category
    • GetReadOnly(): get all read-only tools
  • Enhanced ToolInfo with rich security metadata

    • Now includes Category, SideEffect, RiskLevel, DefaultApproval, IsIdempotent, and IsReadOnly in addition to existing HasIOCapabilities
  • Added pdf_search built-in document tool and reusable LMKit.Document.Pdf.PdfSearch API

    • New built-in tool: pdf_search for searching text in PDF files with page ranges, case sensitivity, result limits, and contextual snippets
    • PdfSearchTool now delegates to LMKit.Document.Pdf.PdfSearch (domain logic moved out of tool layer)
    • PdfSearch now uses existing LayoutSearchEngine + TextSearchOptions
    • Added async-first API PdfSearch.FindTextAsync(...) and sync wrapper PdfSearch.FindText(...)
  • Added filesystem_search built-in IO tool for recursive file search

    • Search files by name glob, content regex, size range, and modification date
    • Configurable recursion depth, directory matching, and FileSystemToolOptions policy
  • Added http_download built-in Net tool for streaming file downloads

    • Download files from a URL to the local filesystem with streaming I/O and configurable size limits
    • Supports custom headers, overwrite control, and partial file cleanup on failure

Improvements

  • Improved tool calling reliability across all models
  • Fixed and improved GLM (glm4.7-flash) tool calling support

Breaking Changes

  • Split multi-operation built-in tools into atomic single-operation tools (1 tool = 1 feature)
    • All previously monolithic tools (FileSystemTool, ProcessTool, CompressTool, ClipboardTool, HttpTool, FtpTool, DatabaseTool, SpreadsheetTool) have been replaced by individual atomic tools, each performing exactly one operation
    • PdfSplitTool now handles split operations only; new PdfExtractTool handles page extraction
    • BuiltInTools factory properties updated: BuiltInTools.FileSystemBuiltInTools.FileSystemRead, BuiltInTools.HttpGetBuiltInTools.HttpGet, etc.
    • New group registration methods: AddFileSystemTools(), AddHttpTools(), AddProcessTools(), etc. via BuiltInToolsExtensions
    • ToolPermissionPolicy wildcard patterns now work with atomic names: Allow("filesystem_*"), Deny("filesystem_delete"), RequireApproval("process_*")

📅 Version 2026.2.4 (12 February 2026)

Improvements

  • Improved SupervisorOrchestrator to use a single-pass execution model

    • Replaced the multi-step loop with a single ExecuteAgentAsync call, since AgentExecutor handles multi-turn tool calling internally
    • Eliminated redundant supervisor iterations that could confuse the model
  • Improved DelegateTool to return plain text on successful delegation

    • Worker responses are now returned as plain text instead of a JSON wrapper, allowing the supervisor to relay them verbatim without summarizing
  • Added real-time streaming of worker agent output during supervisor delegation

    • Added AfterTextCompletion event to DelegateTool for streaming worker tokens in real time
    • SupervisorOrchestrator now wires up BeforeDelegation, AfterDelegation, and AfterTextCompletion events to emit AgentStarted, Content, and AgentCompleted stream tokens for worker agents
    • Users see live worker output instead of a frozen screen during delegation
  • Improved SupervisorOrchestrator.DefaultSupervisorPrompt to instruct the supervisor to relay single-worker responses verbatim

New Features

  • Introduced the PdfSplitter class for physically splitting PDF documents by page ranges

    • Supports extracting pages from Attachment instances or file paths
    • Provides ExtractPages methods for single output and Split/SplitToFiles methods for multi-output splitting
    • Integrates with DocumentSplittingResult to extract AI-detected segments into separate PDF files
  • Introduced the DocumentSplitting class for detecting logical document boundaries within multi-page files

  • Introduced the DocumentSplittingResult class

  • Introduced the DocumentSegment class

  • Introduced the PdfMerger class for merging multiple PDF documents into one

    • Supports merging from Attachment instances or file paths
    • Provides Merge methods for in-memory output and MergeToFile/MergeFiles methods for file output
  • Added DatabaseTool to built-in tools for SQLite database operations

    • Query, execute SQL, list tables, describe schemas, import/export CSV and JSON, vacuum, and backup
    • Read-only by default with configurable write and DDL permissions, path restrictions, and blocked SQL keywords
  • Added SpreadsheetTool to built-in tools for Excel (.xlsx) file operations

    • Read ranges, write cells with values or formulas, list sheets, create workbooks, and convert to/from CSV and JSON
    • Read-only by default with configurable write permissions and path restrictions
  • Added RssFeedTool to built-in tools for RSS and Atom feed operations

    • Fetch, parse raw XML, and search feed entries by keyword or date with support for RSS 2.0, Atom, and RSS 1.0 (RDF)
  • Added ClipboardTool to built-in tools for system clipboard access

    • Cross-platform read/write of clipboard text using native commands (PowerShell, pbcopy/pbpaste, xclip)
  • Added FtpTool to built-in tools for FTP file transfer operations

    • List, upload, download, delete, rename, mkdir/rmdir on FTP servers with passive mode and explicit FTPS support
  • Extended the PdfToImage class to support JPEG output

    • Added JPEG rendering with configurable quality alongside existing PNG and BMP support
    • RenderToFiles now accepts "jpg" as a format option
  • Introduced the ImageToPdf class for converting images into PDF documents

    • Combines one or more JPEG, PNG, or BMP images into a single PDF
    • Each image occupies a full page sized to match image dimensions
    • Supports file path and Attachment inputs
  • Introduced the PdfUnlocker class for removing password protection from PDFs

    • Opens a password-protected PDF with the known password and saves an unprotected copy
    • Supports file path and Attachment inputs with file or in-memory output
  • Added SaveAsJpeg method to ImageBuffer

    • Native JPEG encoder using libjpeg with configurable quality (0 to 100)
    • Supports RGB24, RGBA32 (alpha stripped), and GRAY8 pixel formats
  • Added Document category to built-in tools for document processing

    • PDF operations: split, merge, extract pages, get info, render to image, unlock password-protected files
    • Image preprocessing: deskew, auto-crop, resize with aspect ratio preservation
    • Content extraction: text from PDF/DOCX/XLSX/PPTX/HTML, OCR via Tesseract (34 languages)

📅 Version 2026.2.3 (09 February 2026)

Improvements

  • Improved skill activations via tools

New Features

  • Added model cards for minicpm-o-45, lightonocr-2:1b and glm4.7-flash

  • Added StripStyleAttributes property to VlmOcr

📅 Version 2026.2.2 (06 February 2026)

Improvements

  • Enhanced telemetry with comprehensive OpenTelemetry GenAI semantic conventions support
    • Added gen_ai.client.token.usage histogram metric with token type tagging (input/output)
    • Added gen_ai.client.operation.duration histogram metric
    • Added gen_ai.conversation.id span attribute for session correlation
    • Added gen_ai.response.id span attribute for response identification
    • Added gen_ai.response.finish_reasons span attribute (stop, length, tool_calls, etc.)
    • Added gen_ai.request.temperature, gen_ai.request.top_p, gen_ai.request.top_k span attributes
    • Added gen_ai.request.max_tokens span attribute
    • Added gen_ai.embeddings.dimension.count span attribute for embedding operations
    • Agent telemetry now includes gen_ai.agent.name, gen_ai.agent.id, gen_ai.agent.description
    • Tool invocation events now include gen_ai.tool.name, gen_ai.tool.call.id

New Features

  • Introduced the LM-Kit.NET.Integrations.ExtensionsAI NuGet package for Microsoft.Extensions.AI integration 🔥

    • Implements IChatClient via LMKitChatClient, enabling LM-Kit.NET models to be used through the standard Microsoft.Extensions.AI abstraction layer
    • Implements IEmbeddingGenerator<string, Embedding<float>> via LMKitEmbeddingGenerator for embedding generation
    • Supports non-streaming and streaming chat completions
    • Supports tool/function calling through automatic bridging of AIFunction/AITool to LMKit's ITool interface
    • Maps ChatOptions properties: Temperature, TopP, TopK, MaxOutputTokens, StopSequences, FrequencyPenalty, PresencePenalty, ToolMode, and JSON response format
    • Reports token usage (input/output/total) and finish reasons in ChatResponse
    • Provides IServiceCollection extension methods (AddLMKitChatClient, AddLMKitEmbeddingGenerator) for dependency injection
    • Compatible with the Microsoft.Extensions.AI middleware pipeline (caching, telemetry, function invocation)
    • Targets .NET Standard 2.0, .NET 8.0, .NET 9.0, and .NET 10.0
    • Git repository: LM-Kit.NET Extensions AI
  • Real-time streaming support for orchestrators

    • Added IOrchestrationStreamHandler interface for handling streaming output from multi-agent workflows
    • Added DelegateOrchestrationStreamHandler with built-in console output handlers
    • Added OrchestrationStreamToken class with agent context (agent name, step, token type)
    • Added StreamHandler and StreamToolCalls properties to OrchestrationOptions
    • Added extension methods: StreamAsync, StreamContentAsync, RunStreamingAsync, RunStreamingToConsoleAsync
    • Supports all orchestrators: SupervisorOrchestrator, PipelineOrchestrator, ParallelOrchestrator, RouterOrchestrator
    • Token types include: Content, Thinking, ToolCall, ToolResult, AgentStarted, AgentCompleted, Delegation
  • Added the ConversationId property to the ChatHistory class for session correlation across distributed systems

  • Extended MCP client with complete protocol support

    • Sampling: Allows MCP servers to request LLM completions from the client
      • SamplingRequested event and SetSamplingHandler method for handling sampling requests
      • McpSamplingRequest, McpSamplingResponse, McpSamplingMessage, McpModelPreferences classes
    • Roots: Client exposes filesystem boundaries to servers
      • AddRoot, RemoveRoot, ClearRoots methods for managing roots
      • RootsRequested event for server root list requests
      • McpRoot class with FromPath factory method
    • Elicitation: Servers can request structured user input
      • ElicitationRequested event and SetElicitationHandler method
      • McpElicitationRequest, McpElicitationResponse classes
    • Progress tracking: Track long-running operations
      • ProgressReceived event for progress notifications
      • CreateProgressToken, UnregisterProgressToken, SendProgress methods
      • McpProgressToken, McpProgressEventArgs classes
    • Cancellation: Cancel in-progress requests
      • CancellationReceived event for cancellation notifications
      • CancelRequest method to send cancellation notifications
      • McpCancellationEventArgs class
    • Logging: Structured server-side logging
      • LogMessageReceived event for log messages
      • SetLogLevel method to configure minimum log level
      • McpLogLevel enum and McpLogMessageEventArgs class
    • Completions: Argument autocompletion for prompts and resources
      • GetPromptCompletions, GetResourceCompletions methods
      • McpCompletionResult class
    • Resource templates: Parameterized URI templates (RFC 6570)
      • GetResourceTemplates, RefreshResourceTemplates methods
      • McpResourceTemplate class
    • Resource subscriptions: Real-time resource update notifications
      • SubscribeToResource, UnsubscribeFromResource methods
      • ResourceUpdated event and McpResourceUpdatedEventArgs class

📅 Version 2026.2.1 (02 February 2026)

Improvements

  • Improved ReAct pattern of agents with tools

New Features

  • Added stdio transport support to the MCP client for local MCP servers
    • Introduced the IMcpTransport interface for transport abstraction
    • Introduced the StdioTransport class for subprocess-based MCP communication
    • Introduced the StdioTransportOptions class for detailed stdio configuration
    • Introduced the McpTransportException class for transport-specific errors
    • Introduced the McpClientBuilder class for fluent client construction
    • Added ForStdio factory methods to the McpClient class
    • Added TransportType, IsStdioTransport, and Transport properties to McpClient
    • Support for Node.js (npx), Python (uvx), and native MCP server executables
    • Features: process lifecycle management, auto-restart, graceful shutdown, stderr capture

Bug Fixes

  • Boolean type was not correctly handled in TextExtraction

📅 Version 2026.1.5 (31 January 2026)

Improvements

  • Improved SpeechToText speed and accuracy

New Features

  • Extended the LMKit.Agents namespace with comprehensive agent framework 🔥

    • Core classes: Agent, AgentBuilder, AgentExecutor, AgentRegistry
    • Configuration: AgentCapabilities, AgentIdentity, AgentExecutionOptions
    • Execution tracking: AgentExecutionResult, AgentExecutionStatus
  • Introduced the LMKit.Agents.Orchestration namespace 🔥

    • IOrchestrator interface with PipelineOrchestrator, ParallelOrchestrator, RouterOrchestrator, and SupervisorOrchestrator implementations
    • Supporting classes: OrchestrationContext, OrchestrationOptions, OrchestrationResult
  • Introduced the LMKit.Agents.Tools.BuiltIn namespace with a comprehensive set of built-in tools 🔥

    • Eight tool categories: Data, Text, Numeric, Security, Utility, IO, Net, and Document
    • Each tool is a single atomic operation (1 tool = 1 feature) for fine-grained control
    • Factory class BuiltInTools and fluent registration extensions
    • The built-in tool catalog is designed for continuous growth, with a strong focus on security and scalability
  • Introduced the LMKit.Agents.Planning namespace

    • IPlanningHandler interface with ReActHandler, ChainOfThoughtHandler, TreeOfThoughtHandler, PlanAndExecuteHandler, and ReflectionHandler implementations
    • Supporting classes: PlanningStep, PlanningStepResult, PlanningContext, PlanningStrategy
  • Introduced the LMKit.Agents.Delegation namespace

    • Agent-to-agent delegation via DelegationManager, DelegateTool, IDelegationRouter
    • Supporting classes: DelegationRequest, DelegationResult
  • Introduced the LMKit.Agents.Streaming namespace

    • IAgentStreamHandler interface with BufferedStreamHandler, MulticastStreamHandler, TextWriterStreamHandler, DelegateStreamHandler
    • Supporting classes: StreamingAgentExecutor, AgentStreamResult, AgentStreamToken
  • Introduced the LMKit.Agents.Resilience namespace

    • IResiliencePolicy interface with RetryPolicy, CircuitBreakerPolicy, TimeoutPolicy, RateLimitPolicy, BulkheadPolicy, FallbackPolicy, CompositePolicy
    • Supporting classes: ResilientAgentExecutor, FallbackAgentExecutor, AgentHealthCheck
  • Introduced the LMKit.Agents.Observability namespace

    • IAgentTracer interface with ConsoleTracer, InMemoryTracer, CompositeTracer, NoOpTracer
    • Supporting classes: AgentSpan, AgentMetrics, AgentTracing, TracingAgentExecutor, JsonTraceExporter
  • Introduced the LMKit.Agents.Templates namespace

    • AgentTemplate base class with 18 pre-built templates: ChatAgentTemplate, AssistantAgentTemplate, ToolAgentTemplate, ReActAgentTemplate, CodeAgentTemplate, WriterAgentTemplate, AnalystAgentTemplate, PlannerAgentTemplate, ResearchAgentTemplate, ReviewerAgentTemplate, SummarizerAgentTemplate, ExtractorAgentTemplate, TutorAgentTemplate, TranslatorAgentTemplate, ClassifierAgentTemplate, DebuggerAgentTemplate, EditorAgentTemplate, QAAgentTemplate
    • Factory class AgentTemplates
  • Introduced the LMKit.Agents.Skills namespace with Agent Skills Protocol support 🔥

    • Core classes: AgentSkill, SkillRegistry, SkillBuilder, SkillActivator, SkillParser
    • Metadata: SkillMetadata, SkillContext, SkillMatch, SkillResource
    • Enumerations: SkillInjectionMode, SkillResourceType
    • Event args: SkillRegisteredEventArgs, SkillRemovedEventArgs
    • Exception: SkillParseException
    • Supports SKILL.md specification for defining reusable agent skills
    • Progressive disclosure with lazy loading of instructions and resources
    • Multiple loading sources: filesystem, URLs, GitHub repositories
    • Keyword-based and semantic (embedding-based) skill matching
    • Slash command parsing (/skill-name arguments)
  • Added skills support to the MultiTurnConversation class

    • Added Skills property for registering tool collections
    • Added RegisterSkill and RegisterSkillAsync methods
    • Added UnregisterSkill method
    • Added SkillInvoked and SkillCompleted events
    • Added EnableSkills property to control skill execution

Bug Fixes

  • Resolved compilation issue with MAUI for macOS (this time for real)

📅 Version 2026.1.4 (27 January 2026)

Improvements

  • Improved SpeechToText accuracy

New Features

  • Added model cards for whisper-large2 and devstral-small2
  • Introduced the LMKit.Speech.Dictation namespace with Formatter, Command, CommandInfo, CommandMatch, and FormatterOptions classes for dictation text formatting
  • Added the SuppressHallucinations property to the SpeechToText class
  • Added the SuppressNonSpeechTokens property to the SpeechToText class

Bug Fixes

  • Resolved compilation issue with MAUI for macOS

📅 Version 2026.1.3 (17 January 2026)

Improvements

  • Improved confidence metrics computation
  • Improved the target language support of the summarizer engine

New Features

  • Introduced the NamedEntityRecognitionTrainingDataset class

Bug Fixes

  • Text attachments were not correctly processed in some tasks

📅 Version 2026.1.2 (11 January 2026)

Improvements

  • General performance enhancements
  • Improved DataSource create and update performance on cloud vector databases (for example Qdrant)
  • Improved error reporting when loading partially corrupted DataSource files
  • Improved the accuracy of the keyword extraction engine

New Features

  • Added the DeleteDocument and DeleteDocumentAsync methods to the DocumentRag class
  • Added AddDataSource and AddDataSourceAsync overloads to the RagEngine class that load an existing DataSource from a vector store
  • Added LoadWarnings and HasLoadWarnings properties to the DataSource class for inspecting sections that could not be read during partial loading
  • Introduced the LoadWarning class
  • Added model cards for nemotron3-nano and falcon-h1r:7b
  • Added support for the LMKIT_MODELS_DIR environment variable to configure the default model storage directory

📅 Version 2026.1.1 (04 January 2026)

Improvements

  • General performance enhancements
  • Improved speed and accuracy of the VlmOcr engine
  • Improved speed of the SpeechToText engine
  • Improved observability with OpenTelemetry GenAI instrumentation

New Features

  • Added the ModelID property to the LM class
  • Added PromptTokenCount and PromptProcessingRate properties to the TextGenerationResult class
  • Added the GeneratedTokenCount property to the TextGenerationResult class
  • Introduced the AttachmentReference class
  • Added GetText and GetTextAsync overloads to the Attachment class that take a page range as a parameter
  • Added the Structured and Auto members to the TextOutputMode enumeration
  • Added SetText overloads to the Attachment class that accept a page index
  • Added URI constructor and CreateFromUriAsync factory method to the Attachment class for loading attachments from remote URIs
  • Added CreateFromFileAsync and CreateFromStreamAsync factory methods to the Attachment class for asynchronous loading
  • Added HasTextOnPage and HasTextOnPageAsync methods to the Attachment class
  • Added support for the PDF format
  • Introduced the IMultiTurnConversation enumeration
  • Introduced the FileSystemVectorStore class
  • Introduced the IChunking interface
  • Introduced the MarkdownChunking class
  • Added QueryPartitions and QueryPartitionsAsync overloads to RagEngine that accept a custom prompt template
  • Introduced the DocumentRag class
  • Introduced the PdfChat class
  • Introduced the DocumentReference class
  • Introduced the DocumentIndexingResult class
  • Introduced the DocumentImportProgressEventArgs class
  • Introduced the CacheAccessedEventArgs class
  • Introduced the PassageRetrievalCompletedEventArgs class
  • Introduced the ResponseGenerationStartedEventArgs class
  • Introduced the DocumentImportPhase enumeration
  • Introduced the DocumentQueryResult class
  • Introduced the PageProcessingMode class
  • Added the MaximumCompletionTokens and StripImageMarkup properties to the VlmOcr class
  • Added SetContent overloads to the TextExtraction class that accept a page index or a page range
  • Introduced the LMKitTelemetry class

Breaking changes

  • Removed the Prompt class, use ChatHistory.Message instead

📅 Version 2025.12.4 (13 December 2025)

Improvements

  • General performance enhancements
  • Improved task accuracy with Ministral models
  • Improved accuracy of the VlmOcr engine

Bug Fixes

  • Fixed unsupported Unicode characters in TextExtractionElement.Name

📅 Version 2025.12.2 (08 December 2025)

Improvements

  • General performance enhancements
  • Voice activity detection accuracy improvements
  • Embedding performance enhancements

New Features

  • Introduced the VlmOcr class
  • Added support for LightOnOCR model
  • Added model cards for qwen3-vl:30b and lightonocr1025:1b

📅 Version 2025.12.1 (03 December 2025)

Improvements

  • General performance enhancements

New Features

  • Added Message constructor overloads taking attachment as parameter
  • Added Expand method overload to the Rectangle class, allowing asymmetric expansion on each side
  • Added support for Ministral V3 models
  • Added model cards for ministral3:3b, ministral3:8b, and ministral3:14b

📅 Version 2025.12.1 (22 November 2025)

Improvements

  • General performance enhancements
  • Faster Vulkan backend

New Features

  • Added support for Qwen3 embedding models
  • Added model cards for qwen3-embedding:0.6b, qwen3-embedding:4b, and qwen3-embedding:8b

📅 Version 2025.11.2 (12 November 2025)

Improvements

  • General performance enhancements

New Features

  • Added a native assembly targeting .NET 10

📅 Version 2025.11.1 (05 November 2025)

Improvements

  • General performance enhancements
  • Improved the summarizer engine

New Features

  • Added model cards for qwen3-vl:2b, qwen3-vl:4b, and qwen3-vl:8b

📅 Version 2025.10.5 (24 October 2025)

Improvements

  • General performance enhancements

New Features

  • Introduced the McpResource class
  • Introduced the McpResourceContent class
  • Introduced the McpPrompt class
  • Introduced the McpPromptArgument class
  • Introduced the McpPromptResult class
  • Introduced the McpMessageRole enumeration
  • Introduced the McpPromptMessage class
  • Introduced the McpPromptContent class
  • Introduced the McpEmbeddedResource class
  • Introduced the McpClientCapabilities and McpServerCapabilities enumerations
  • Introduced the McpCatalogKind enumeration
  • Added the ServerCapabilities, Prompts, Resources, and McpProtocolVersion properties to the McpClient class
  • Added the HasCapability method to the McpClient class
  • Added the ToolsChanged, ResourcesChanged, and PromptsChanged events to the McpClient class
  • Added the GetResources, GetResourcesAsync, ReadResource, and ReadResourceAsync methods to the McpClient class
  • Added the GetPrompts, GetPromptsAsync, RefreshPrompts, and RefreshPromptsAsync methods to the McpClient class
  • Introduced the McpResponseReceivedEventArgs class
  • Introduced the McpRequestSendingEventArgs class
  • Introduced the McpAuthFailedEventArgs class
  • Introduced the McpCatalogChangedEventArgs class
  • Added the ToolsChanged, ResourcesChanged, and PromptsChanged events to the McpClient class

📅 Version 2025.10.4 (16 October 2025)

Improvements

  • General performance enhancements
  • Improved tool calling support
  • Improved Mistral and GptOss models support

New Features

  • Introduced the LMFunctionToolBinder class
  • Introduced the Agent.Tools.LMFunctionAttribute class
  • Added model card for magistral-small1.2
  • Introduced the ReasoningLevel enumeration
  • Added the ReasoningLevel property to the MultiTurnConversation class
  • Introduced the ChatHistory.Message.MessageSegment class
  • Added the Segments property to the ChatHistory.Message class
  • Introduced the EntityAnnotation class
  • Introduced the ExtractionTrainingDataset class
  • Introduced the CategorizationTrainingDataset class
  • Introduced the EmotionDetectionTrainingDataset class
  • Introduced the SarcasmDetectionTrainingDataset class
  • Introduced the SentimentAnalysisTrainingDataset class
  • Introduced the LanguageDetectionTrainingDataset class
  • Introduced the PiiExtractionTrainingDataset class

📅 Version 2025.10.3 (09 October 2025)

Improvements

  • Improved tool calling support
  • Improved MCP client support

New Features

  • Introduced the TextSegmentType enumeration
  • Added the SegmentType property to the AfterTextCompletionEventArgs class

📅 Version 2025.10.2 (06 October 2025)

Improvements

  • General performance enhancements
  • Improved tool calling support
  • Optimized dynamic sampling mechanisms

New Features

  • Added model cards for granite4-h:3b and granite4-h:7b

📅 Version 2025.9.3 (29 September 2025)

Improvements

  • General performance enhancements
  • Improved internal paragraph-detection engine, yielding better RAG chunking and higher extraction accuracy
  • Improved PII extraction and NER engines accuracy

New Features

  • Introduced first version of a CUDA 13 backend
  • Introduced the TextRegion class
  • Introduced the TextOutputMode enumeration
  • Added the GetText method to the PageElement class
  • Introduced the ITool class
  • Introduced the ToolRegistry class
  • Introduced the ToolCallPolicy class
  • Introduced the ToolChoice enumeration
  • Introduced the ToolCallResultType enumeration
  • Introduced the ToolCall class
  • Introduced the ToolCallResult class
  • Introduced the MCPTool class
  • Introduced the MCPClient class
  • Introduced the ShareGptExporter class
  • Introduced the LMKit.Finetuning.Export.RoleMappingPolicy enumeration
  • Introduced the LMKit.Finetuning.Export.ExportResult class
  • Introduced the LMKit.Finetuning.Export.ExportProgress class
  • Added the HasTextGeneration property to the LM class
  • Added the HasToolCalls property to the LM class
  • Added the Tools property to the MultiTurnConversation class
  • Added the ToolPolicy property to the MultiTurnConversation class
  • Introduced the AfterToolInvocationEventArgs class
  • Introduced the BeforeToolInvocationEventArgs class
  • Added the BeforeToolInvocation event to the MultiTurnConversation class
  • Added the AfterToolInvocation event to the MultiTurnConversation class
  • Added the Occurrences property to the PiiExtraction.PiiExtractedEntity class
  • Added the Occurrences property to the NamedEntityRecognition.ExtractedEntity class
  • Added the PageElements and PageCount properties to the Attachment class
  • Added the GetPageWidth and GetPageHeight methods to the Attachment class

📅 Version 2025.9.2 (10 September 2025)

Improvements

  • Improved overall extraction accuracy

New Features

  • Introduced the LayoutSearchEngine class
  • Added support for Gemma embedding models
  • Added model card for embeddinggemma-300m

📅 Version 2025.9.1 (09 September 2025)

Improvements

  • Improved overall extraction accuracy

New Features

  • Added the Bounds property to the TextExtractionResultElement class
  • Added the GetValue, TryGetValue, Get, TryGet, and GetAll methods to the TextExtractionResult class
  • Introduced the Rectangle class
  • Introduced the Quadrilateral class
  • Introduced the IBounds, IPoint, ISize, and IVector2D interfaces
  • Introduced the ILayoutElement interface
  • Introduced the ParagraphElement class
  • Introduced the LineElement class
  • Added DetectLines and DetectParagraphs methods to the PageElement class
  • Added the Bounds property to the PageElement class
  • Added TryDetectBorderBackgroundColor, Deskew, CropAuto, IsBlank, ConvertGRAY8, ConvertRGB24, and ConvertRGBA32 methods to the ImageBuffer class
  • Added DOCX, XLSX, and PPTX formats support to the Attachment class
  • Added the Prompt property to the SpeechToText class
  • Added model card for minicpm-v-45

📅 Version 2025.8.4 (22 August 2025)

Improvements

  • General performance enhancements

📅 Version 2025.8.3 (19 August 2025)

Improvements

  • Improved Categorization engine speed and accuracy
  • General performance enhancements

New Features

  • Introduced the ChatTrainingSample class
  • Introduced the TrainingDataset class
  • Added model card for gemma3:270m
  • Added the SchemaDiscovery and SchemaDiscoveryAsync methods to the TextExtraction class
  • Added the HasImageSegmentation property to the LM class
  • Introduced the ImageSegmentation member to the ModelCapabilities enumeration
  • Introduced the BackgroundDetection class
  • Added model card for u2net

📅 Version 2025.8.2 (08 August 2025)

Improvements

  • Optimized dynamic sampling mechanisms
  • Enhanced runtime loading strategy
  • General performance enhancements
  • Improved the summarizer and keyword extraction engines introducing optional target language detection

New Features

  • Introduced the Configuration.FavorDistributedInference property
  • Added TargetLanguage property to the Summarizer class
  • Added TargetLanguage property to the KeywordExtraction class
  • Added RemoveLoraAdapter method to the LM class
  • Added support for OpenAI gpt-oss models
  • Added model card for gptoss:20b

📅 Version 2025.8.2 (02 August 2025)

Improvements

  • Optimized dynamic sampling mechanisms
  • Enhanced runtime loading strategy
  • General performance enhancements

📅 Version 2025.7.5 (25 July 2025)

Improvements

  • Optimized dynamic sampling mechanisms

New Features

  • Introduced the TesseractOcrEngine class

📅 Version 2025.7.4 (17 July 2025)

Improvements

  • Better multi-threading support for multimodal inference

New Features

  • Dynamic LoRA adapter loading support
  • Introduced the LoraAdapter class
  • Introduced the Adapters property to the LM class

📅 Version 2025.7.3 (10 July 2025)

New Features

  • Added support for SmolLM 3 models family
  • Added model card for smollm3:3b
  • Introduced the ExtractionProfiler class

📅 Version 2025.7.2 (7 July 2025)

New Features

  • Added support for linux-arm64 (CPU, Vulkan, and CUDA)

Improvements

  • Optimized dynamic sampling mechanisms

Bug Fixes

  • Fixed a crash that occurred when aborting speech-to-text tasks

📅 Version 2025.7.1 (1 July 2025)

New Features

  • Added LoadAsRGB method overload to the ImageBuffer class taking file path as parameter
  • Added DetectLanguage and DetectLanguageAsync method overload to the TextTranslation class taking an ImageBuffer object as parameter
  • Introduced the VoiceActivityDetection member to the ModelCapabilities enumeration
  • Introduced the SpeechToText.SpeechToTextMode enumeration
  • Introduced the VadSettings class
  • Added Mode property to the SpeechToText class
  • Added EnableVoiceActivityDetection property to the SpeechToText class
  • Introduced the VadSettings property to the SpeechToText class
  • Introduced the SpeechToText.LanguageDetectionResult class
  • Introduced the IsValid static method to the WaveFile class

📅 Version 2025.6.5 (27 June 2025)

New Features

  • Added model cards for mistral-small3.2, magistral-small, whisper-tiny, whisper-base, magistral-small, magistral-medium, whisper-large3, and whisper-large-turbo3
  • Added the HasSpeechToText property to the LM class
  • Introduced the SpeechToText member to the ModelCapabilities enumeration
  • Introduced the WaveFile class
  • Introduced the SpeechToText class
  • Introduced the SpeechToText.OnNewSegmentEventArgs class
  • Introduced the SpeechToText.OnProgressEventArgs class
  • Introduced the SpeechToText.TranscriptionResult class
  • Introduced the AudioSegment class
  • Introduced the CorruptedAudioException class
  • Introduced the NotSupportedAudioException class
  • Introduced the ImageBuffer class
  • Introduced the ImagePixelFormat enumeration
  • Added new constructor to the Attachment class to support ImageBuffer input

Improvements

  • Improved overall extraction accuracy

📅 Version 2025.6.4 (19 June 2025)

New Features

  • Added the PageElement property to the OcrResult class
  • Added the Guidance property to the PiiExtraction class
  • Added the Guidance property to the NamedEntityRecognition class

Improvements

  • Minor extraction improvements

📅 Version 2025.6.3 (17 June 2025)

New Features

  • Added the InnerElements property to the TextExtractionResultElement class
  • Introduced the PageElement class
  • Introduced the TextElement class
  • Added SetText method overload to the Attachment class taking PageElement as parameter

Improvements

  • Improved overall extraction accuracy

Bug Fixes

  • Fixed txt file loading issue from the Attachment class

📅 Version 2025.6.2 (10 June 2025)

New Features

  • Introduced the NamedEntityRecognition class
  • Introduced the NamedEntityRecognition.EntityDefinition class
  • Introduced the NamedEntityRecognition.ExtractedEntity class
  • Introduced the NamedEntityRecognition.NamedEntityType enumeration
  • Introduced the PiiExtraction class
  • Introduced the PiiExtraction.PiiExtraction class
  • Introduced the PiiExtraction.PiiExtractedEntity class
  • Introduced the PiiExtraction.PiiEntityType enumeration
  • Added the Timeout property to the TextractOcr class
  • Introduced the OcrStartingEventArgs event
  • Introduced the OcrCompletedEventArgs event
  • Added the Id property to the Attachment class
  • Added the ClearContent method to the TextExtraction class
  • Added the InferencePolicies property to the SingleTurnConversation class

Improvements

  • Optimized dynamic sampling mechanisms

Bug Fixes

  • Fixed the Linux runtime, which was not correctly updated in the previous version

📅 Version 2025.6.1 (2 June 2025)

New Features

  • Added support for multimodal classification and extraction
  • Added the Title and Description properties to the TextExtraction class
  • Added the OcrEngine property to the TextExtraction class
  • Added the MaxInputTokens property to the Categorization class
  • Added the HasText property to the Attachment class
  • Added the CreateFromText and DetectMimeType static methods to the Attachment class
  • Added the SetText methods to the Attachment class
  • Added the Path property to the Attachment class
  • Introduced the InferenceModality enumeration
  • Added the PreferredInferenceModality property to the Categorization class
  • Added the PreferredInferenceModality property to the TextExtraction class
  • Introduced the OcrEngine abstract class
  • Introduced the OcrResult class
  • Introduced the OcrParameters class
  • Introduced the TextractOcr class

Improvements

  • Improved overall extraction accuracy
  • Improved Categorization engine speed and accuracy
  • Optimized dynamic sampling mechanisms

📅 Version 2025.5.5 (25 May 2025)

New Features

  • Added model card for qwen2.5-vl:32b
  • Added the TrimStart property to the TextExtractionElementFormat class
  • Added support for more CUDA devices

Improvements

  • Reduced memory usage when handling large context
  • Improved overall extraction accuracy

📅 Version 2025.5.4 (20 May 2025)

Improvements

  • Various speed and memory usage improvements

Bug Fixes

  • Fixed a model-loading issue that occurred under rare conditions

📅 Version 2025.5.3 (20 May 2025)

Improvements

  • Improved overall extraction accuracy
  • Introduced the TextExtractionElementFormat.PredefinedStringFormat enumeration
  • Added the FormatHint property to the TextExtractionElementFormat class
  • Added the IsRequired property to the TextExtractionElementFormat class
  • Added the EnableBackendLogging property to the Runtime class

📅 Version 2025.5.2 (13 May 2025)

Improvements

  • Improved inference on various model families
  • Reduced memory footprint of the built-in vector database engine

New Features

  • Added model cards for bge-m3 and bge-m3-reranker
  • Introduced the Reranker class
  • Introduced the RagEngine.RagReranker class
  • Added the Reranker property to the RagEngine class
  • Added new RagEngine constructor for multimodal RAG
  • Added FindMatchingPartitions and FindMatchingPartitionsAsync method overloads to the RagEngine class taking attachment as parameter
  • Added the DefaultImagePayloadPix property to the RagEngine class
  • Added RerankedScore and RawSimilarity properties to the PartitionSimilarity class
  • Added the PayloadEncoding property to the PartitionSimilarity class
  • Added the NullOnDoubt property to the TextExtraction class
  • Introduced the Partition class
  • Introduced the ImagePartition class
  • Added the Version property to the DataSource class

📅 Version 2025.5.1 (5 May 2025)

Improvements

  • Improved inference of vision models
  • Improved inference of LLama 4 models

New Features

  • Added support for Qwen 2.5 VL and Pixtral model families
  • Added model cards for pixtral, qwen2.5-vl:3b, and qwen2.5-vl:7b

📅 Version 2025.4.13 (30 April 2025)

Improvements

  • Improved translation engine precision with small models

New Features

  • Added model cards for qwen3:0.6b, qwen3:1.7b, qwen3:4b, qwen3:8b, and qwen3:14b
  • Added the DisableReasoning property to the SingleTurnConversation class
  • Added the DisableReasoning property to the MultiTurnConversation class
  • Added the HasReasoningSupport member to the TemplateFormatFlags enumeration
  • Added the HasReasoning property to the LM class

📅 Version 2025.4.12 (27 April 2025)

Bug Fixes

  • Fixed a multi-byte decoding issue in produced model tokens

New Features

  • Added Upsert and UpsertAsync method overloads to the DataSource class taking raw vector as parameter

📅 Version 2025.4.11 (23 April 2025)

Bug Fixes

  • Fixed ONNX runtime loading issue on Linux

New Features

  • Added the DataSource.VectorEntry class
  • Added the Upsert and UpsertAsync method to the DataSource class
  • Introduced the VectorSearch static class

Breaking changes

  • The TextPartitionSimilarity class has been renamed to PartitionSimilarity

📅 Version 2025.4.10 (22 April 2025)

Improvements

  • Optimized dynamic sampling mechanisms

New Features

  • Added support for image embeddings
  • Added support for running inference on ONNX models
  • Added the GetEmbeddings and GetEmbeddingsAsync overloads to the Embedder class to enable embeddings computation from image
  • Added the HasImageEmbeddings property to the LM class
  • Introduced the Summarizer.SummarizationIntent enumeration
  • Added the Summarizer.Intent property to the Summarizer class
  • Added model cards for nomic-embed-vision, granite3.3:2b, and granite3.3:8b

📅 Version 2025.4.9 (15 April 2025)

Improvements

  • Improved translation engine
  • Improved structured text extraction accuracy
  • Improved compatibility with JSON schemas for structured text extraction
  • Improved internal scheduler engine
  • Global speed improvement, up to 20%

New Features

  • Added GetTopCategories, GetTopCategoriesAsync, GetBestCategory, and GetBestCategoryAsync overloads to the Categorization class to specify category descriptions

📅 Version 2025.4.7 (9 April 2025)

New Features

  • Added the HasSection method to the DataSource class

📅 Version 2025.4.6 (9 April 2025)

New Features

  • Introduced a new built-in vector database engine that permits handling small- to medium-sized vector collections on the file system without any dependency
  • Introduced the StorageMode enumeration
  • Added the DataSource.StorageMode property
  • Added the LoadFromFile and LoadFromFileAsync methods to the DataSource class
  • Added the OptimizeDataSource and OptimizeDataSourceAsync methods to the DataSource class
  • Added the CreateFileDataSource, CreateInMemoryDataSource, CreateVectorStoreDataSource, and CreateVectorStoreDataSourceAsync methods to the DataSource class
  • Added the Import method to the RagEngine class
  • Added the ImportAsync method to the RagEngine class
  • Added the DefaultTextChunking property to the RagEngine class

📅 Version 2025.4.1 (2 April 2025)

Improvements

  • Enhanced RagEngine accuracy and speed
  • The RAG engine now supports multiple DataSources simultaneously, each backed by its own storage mode (e.g., one DataSource using in-memory storage and another using a vector database)

New Features

  • Introduced different DataSource storage modes, enabling storage of DataSource content directly in vector databases
  • Introduced a new collection of open-source assemblies to bridge external vector databases with LM-Kit.NET. Currently, Qdrant is supported. Git repository: LM-Kit.NET Data Connectors
  • Introduced the IVectorStore interface
  • Introduced the PointEntry class
  • Added the CollectionChanged event to the MetadataCollection class
  • Added the PropertyChanged event to the MetadataCollection class
  • Added the AddOrReplace method to the MetadataCollection class
  • Added the ImportText, ImportTextAsync, ImportTextFromFile, and ImportTextFromFileAsync overloads to the RagEngine class to specify metadata collection
  • Added the GetSectionByIdentifierAsync method to the DataSource class
  • Added the RemoveSectionAsync method to the DataSource class
  • Added the LoadFromStore and LoadFromStoreAsync methods to the DataSource class
  • Added the Metadata property to the RagEngine.TextPartitionSimilarity class

📅 Version 2025.3.6 (24 March 2025)

Improvements

  • Strong performance improvements for the Vulkan backend
  • Enhanced extraction accuracy in the structured text extraction engine
  • Reduced VRAM/RAM usage

New Features

  • Added support for Mistral Small 3.1 model and added mistral-small-3.1 model card
  • Added the GetText method to the Attachment class
  • Added HTML format support to the Attachment class

📅 Version 2025.3.5 (17 March 2025)

New Features

  • Added the HandleUnknownCategory property to the Categorization class
  • Added support for Gemma 3 vision

Improvements

  • Improved inference with Gemma 3 models family
  • Improved internal context caching strategy
  • Inference speed improvements

📅 Version 2025.3.4 (12 March 2025)

New Features

  • Added support for Gemma 3 models family
  • Added model cards for Qwen QwQ 32B, Gemma 3 1B, Gemma 3 4B, Gemma 3 12B, and Gemma 3 27B
  • Added the Guidance property to the Categorization class

📅 Version 2025.3.3 (11 March 2025)

New Features

  • Added the SetElementsFromJsonScheme method to the TextExtraction class
  • Added the IsVisionRequired property to the Attachment class
  • Added the GetTopCategories and GetTopCategoriesAsync property to the Categorization class
  • Added the GetBestCategoryAsync and GetTopCategoriesAsync overloads to the Categorization class to enable classification from image attachments

📅 Version 2025.3.2 (3 March 2025)

Improvements

  • Improved inference with phi-3 and phi-4 models
  • Reduced CUDA backend size for Windows by a factor of 3

New Features

  • Introduced the MemoryType enumeration
  • Added the SaveInformation overloads to the AgentMemory class to specify the type of memory to record
  • Added the SaveInformationAsync overloads to the AgentMemory class to specify the type of memory to record
  • Added the GetMemoryType static method to the AgentMemory class
  • Added the GetDataSource method to the RagEngine class
  • Added the TryGetDataSource method to the RagEngine class
  • Added the Get method to the MetadataCollection class
  • Added the TryGet method to the MetadataCollection class
  • Added the MemoryType property to the MemoryRecallEventArgs class

📅 Version 2025.3.1 (1 March 2025)

Improvements

  • Improvements to generic classification accuracy and speed

New Features

  • Added the RemoveDataSource overloads to the RagEngine class to remove a DataSource from an identifier
  • Added the RemoveSection method to the DataSource class
  • Added support for Phi-4 Mini models
  • Added model cards for Phi-4 Mini and Deepseek R1

📅 Version 2025.2.4 (26 February 2025)

Improvements

  • Minor performance improvements of the inference system
  • Improved inference with various model families such as Granite, Mistral, Monarch, Orion, MiniCPM, and GigaChat
  • Improved language detection accuracy

New Features

  • Added new constructor to the Attachment class to support stream input
  • Added the ExtractKeywords and ExtractKeywordsAsync overloads to the KeywordExtraction class to extract keywords from image attachments
  • Added the Summarize and SummarizeAsync overloads to the Summarizer class to produce summary from image attachments
  • Added the DetectLanguage and DetectLanguageAsync overloads to the TextTranslation class to detect language from image attachments
  • Introduced the DataFilter class
  • Added the RemoveDataSource overloads to the AgentMemory class to remove a DataSource from an identifier
  • Added the AddDataSource method to the AgentMemory class
  • Added the AddDataSources method to the AgentMemory class
  • Added the Filter property to the RagEngine class
  • Added the Filter property to the AgentMemory class
  • Added support for DeepSeek-R1 models

📅 Version 2025.2.3 (19 February 2025)

Improvements

  • Improved RAG engine accuracy and speed
  • Optimized dynamic sampling mechanisms

New Features

  • Introduced the AgentMemory class
  • Introduced the MemoryRecallEventArgs class
  • Introduced the TopNSigmaSampling class
  • Added the Memory property to the MultiTurnConversation class
  • Added the MaximumRecallTokens property to the MultiTurnConversation class
  • Added the MemoryRecall event to the MultiTurnConversation class
  • Added the DownloadAsync method to the ModelCard class
  • Added the LogCallback event to the Runtime class

📅 Version 2025.2.2 (12 February 2025)

Improvements

  • Improved internal context caching strategy

New Features

  • Added the ModelID property to the ModelCard class
  • Added the GetPredefinedModelCardByModelID method to the ModelCard class
  • Added the LoadFromModelID static method to the LM class
  • Added the ModelUri property to the LM class
  • Added the ImportTextAsync method to the RagEngine class
  • Added the ImportTextFromFileAsync method to the RagEngine class

📅 Version 2025.2.1 (4 February 2025)

Improvements

  • Improved inference of MiniCPM engine

New Features

  • Added model card for Mistral Small Instruct 2501
  • Created a new open-source assembly bridging Microsoft SemanticKernel and LM-Kit.NET. Git repository: LM-Kit.NET Semantic Kernel

📅 Version 2025.1.10 (30 January 2025)

Improvements

  • Added WebP and TIFF image support to Attachment
  • Minor performance improvements of the inference system

📅 Version 2025.1.9 (27 January 2025)

Improvements

  • Enhanced compatibility with Framework 4.6.2 apps
  • Enhanced backend management mechanism

📅 Version 2025.1.8 (26 January 2025)

Improvements

  • Enhanced compatibility with Framework 4.6.2 apps
  • Minor performance improvements for the Vulkan backend

📅 Version 2025.1.7 (24 January 2025)

Improvements

  • Improved speed and accuracy of vision models inference

Bug Fixes

  • Fixed a memory leak during image eval using MiniCPM models

📅 Version 2025.1.6 (22 January 2025)

Improvements

  • Improved speed and accuracy of vision models inference for content retrieval

New Features

  • Added support for the MiniCPM-O model
  • Added the ReplacementModel property to the ModelCard class

Bug Fixes

  • Resolved a crash when regenerating responses using MiniCPM models
  • Fixed a memory leak with VLM disposal

📅 Version 2025.1.4 (19 January 2025)

Bug Fixes

  • Resolved an inference issue in AOT mode
  • Resolved a rare race condition in the Vulkan backend during inference
  • Resolved a segmentation fault in the TextExtraction class

📅 Version 2025.1.3 (18 January 2025)

Improvements

  • Various performance improvements
  • Improved Runtime initialization

New Features

  • Added the SetContent method overload that accepts an Attachment to the TextExtraction class, allowing extraction of unstructured content from images

Bug Fixes

  • Resolved a crash during Qwen2-VL inference on macOS

📅 Version 2025.1.2 (11 January 2025)

Improvements

  • Enhanced GPU device memory management
  • Optimized dynamic sampling mechanisms
  • Various performance improvements

New Features

  • Initial support for multimodal capabilities with vision handling (VLM)
  • Added support for the LMK model format
  • Introduced the Prompt class
  • Introduced the Attachment class
  • Added overloads to the Submit and SubmitAsync methods in the MultiTurnConversation class to support prompts with image attachments
  • Added overloads to the Submit and SubmitAsync methods in the SingleTurnConversation class to support prompts with image attachments

📅 Version 2025.1.1 (1 January 2025)

Improvements

  • Optimized dynamic sampling mechanisms
  • Improved error handling

New Features

  • Added the HasVision property to the LM class
  • Added the EnableModelChecksumValidation property to the Configuration class

📅 Version 2024.12.13 (29 December 2024)

Improvements

  • Optimized dynamic sampling mechanisms
  • Improved performance with IBM Granite models

New Features

  • Added overloads to the GetPerformanceScore methods in the DeviceConfiguration class to obtain the model's performance score from a specified path

Bug Fixes

  • An unhandled exception was raised when a model could not be loaded

📅 Version 2024.12.12 (26 December 2024)

New Features

  • Added the ShortModelName property to the ModelCard class
  • Added the IsPredefined property to the ModelCard class

Improvements

  • The LLM class has been marked as obsolete. Use LM class as its replacement

Bug Fixes

  • GpuDeviceInfo.DeviceType was returning an invalid value

📅 Version 2024.12.11 (23 December 2024)

New Features

  • Added the Architecture property to the ModelCard class
  • Added the GetPerformanceScore method to the DeviceConfiguration class
  • Added support for Llama-3_1-Nemotron-51B and InfiniAI Megrez 3b models

📅 Version 2024.12.10 (22 December 2024)

New Features

  • Added the LocalPath property to the ModelCard class

Improvements

  • Improved performance with Phi 4 model

📅 Version 2024.12.9 (20 December 2024)

New Features

  • Added the ValidateFileChecksum method to the ModelCard class
  • The ModelCard class can now retrieve model metadata directly from Hugging Face servers without downloading the models

📅 Version 2024.12.8 (19 December 2024)

New Features

  • Added the GetDeviceFromNumber method to the GpuDeviceInfo class
  • Added the MaximumContextLength property to the TextExtraction class
  • Added overloads to GetOptimalContextSize methods in the DeviceConfiguration class to obtain the optimal context size from the available resources and model
  • Introduced the ModelCard class
  • Introduced the ModelCapabilities enumeration
  • Added the ModelStorageDirectory property to the Configuration class

Improvements

  • Improved summarization engine

📅 Version 2024.12.7 (15 December 2024)

New Features

  • Introduced the Summarizer.OverflowResolutionStrategy enumeration
  • Introduced the TextShrinkingStrategy enumeration
  • Added the OverflowStrategy property to the Summarizer class
  • Added the TextShrinkingStrategy property to the KeywordExtraction class
  • Introduced the DeviceConfiguration class

Improvements

  • Improved summarization of very large text

Bug Fixes

  • Prevent the MultiTurnConversation class from requesting a context size exceeding the model's capacity

📅 Version 2024.12.6 (13 December 2024)

New Features

  • Introduced the Summarizer class
  • Introduced the Summarizer.SummarizerResult class

Improvements

  • Enhanced MAUI compatibility for macOS development

📅 Version 2024.12.5 (11 December 2024)

New Features

  • Added the ContextRemainingSpace property to the MultiTurnConversation class
  • Added the ContextRemainingSpace property to the AfterTokenSamplingEventArgs class
  • Added the ContextSize property to the AfterTokenSamplingEventArgs class

📅 Version 2024.12.4 (10 December 2024)

Improvements

  • Changed type of ChatHistory.Message.PreviousContent to ChatHistory.Message
  • Improved CPU backend speed on Windows

📅 Version 2024.12.3 (07 December 2024)

Bug Fixes

  • The items in ChatHistory.Message.PreviousContent were not set in the correct order
  • The KeywordExtraction.KeywordCount setter was ignored

Improvements

  • Improved the sampling strategy in scenarios with a low context length

📅 Version 2024.12.2 (07 December 2024)

New Features

  • The Windows Vulkan runtime is now included in the NuGet package

Improvements

  • Optimized dynamic sampling mechanisms

📅 Version 2024.12.1 (06 December 2024)

New Features

  • Introduced the LLM.TemplateFormatFlags enumeration
  • Introduced the KeywordExtraction class
  • Introduced the KeywordExtraction.KeywordItem class
  • Added the ChatTemplateFormatFlags property to the LLM class
  • Added the IsArray property to the TextExtractionElement class

Improvements

  • Optimized dynamic sampling mechanisms
  • Improved support for large text bodies in the embedding engine

📅 Version 2024.11.10 (29 November 2024)

New Features

  • Introduced the DeviceType enumeration
  • Added the DeviceType property to the GpuDeviceInfo class

Improvements

  • Inference speed improvements with Vulkan backend

📅 Version 2024.11.9 (27 November 2024)

New Features

  • Added the UseAsyncModelAttributesLoading property to the Configuration class
  • Added the DeviceDescription property to the GpuDeviceInfo class
  • Added the TotalMemorySize property to the GpuDeviceInfo class
  • Added the FreeMemorySize property to the GpuDeviceInfo class

Improvements

  • Improved NuGet package compatibility with MAUI
  • Various inference speed improvements
  • Improved handling of model loading failures

📅 Version 2024.11.8 (25 November 2024)

New Features

  • Added the SetLogTextWriter method to the Runtime class

📅 Version 2024.11.7 (25 November 2024)

New Features

  • Added maccatalyst RID for MAUI

📅 Version 2024.11.6 (25 November 2024)

New Features

  • Vulkan backend is now enabled by default
  • Introduced the Runtime.BackendType enumeration
  • Added the Backend static property to the Runtime class
  • Introduced the GpuDeviceInfo class
  • Added the PreviousContent property to the ChatHistory.Message class

📅 Version 2024.11.5 (23 November 2024)

Improvements

  • Enhanced inference speed
  • Improved compatibility with MAUI

📅 Version 2024.11.4 (18 November 2024)

New Features

  • Added Vulkan backend for Linux
  • Added support for .NET 9

Improvements

  • Improved compatibility with macOS ARM and macOS x64
  • Enhanced CPU inference speed

📅 Version 2024.11.4 (12 November 2024)

New Features

  • Added the CreateGrammarFromStringList method to the Grammar class
  • Added the WhitelistedValues property to the TextExtractionElementFormat class

📅 Version 2024.11.2 (05 November 2024)

New Features

  • Added overloads to GetEmbeddings and GetEmbeddingsAsync methods in the Embedder class to support batch processing of multiple inputs

📅 Version 2024.11.1 (04 November 2024)

New Features

  • Added support for Granite models
  • Added the Perplexity property to the BeforeTokenSamplingEventArgs class
  • Added the Perplexity property to the AfterTokenSamplingEventArgs class
  • Added the ContinueLastAssistantResponse and ContinueLastAssistantResponseAsync methods to the MultiTurnConversation class

Improvements

  • Optimized dynamic sampling mechanisms

📅 Version 2024.10.5 (24 October 2024)

New Features

  • Added the GeneratedTokens property to the ChatHistory.Message class
  • Added the TerminationReason property to the ChatHistory.Message class
  • Introduced the TextExtractionElementFormat class
  • Introduced the TextExtractionElementFormat.TextCaseMode enumeration
  • Added the TextExtractionElementFormat property to the TextExtractionElement class

Improvements

  • Enhanced structured text extraction
  • Added new formatting options to text extraction elements
  • Improved function calling capabilities
  • Refined JSON data sampling
  • Optimized dynamic sampling mechanisms

📅 Version 2024.10.4 (17 October 2024)

Improvements

  • Structured text extraction improvements
  • Function calling improvements
  • Refined JSON data sampling
  • Optimized dynamic sampling mechanisms

📅 Version 2024.10.3 (16 October 2024)

New Features

  • Added the TextExtraction class
  • Added the TextExtractionResult class
  • Added the TextExtractionResultElement class
  • Added the ElementType enumeration
  • Added the DateTime parameter type support to function calling

Improvements

  • Optimized dynamic sampling mechanisms

📅 Version 2024.10.2 (09 October 2024)

New Features

  • Added the TextExtractionElement class
  • Added the CreateJsonGrammarFromExtractionElements(IEnumerable<TextExtractionElement> extractionElements) method overload to the Grammar class

Improvements

  • Optimized dynamic sampling mechanisms

📅 Version 2024.10.1 (01 October 2024)

New Features

  • Added the CreateTrainingObject method overload to the EmotionDetection class
  • Added the GetTrainingData method to the EmotionDetection class
  • Introduced the EmotionDetection.TrainingDataset enumeration
  • Introduced the JsonNumArray, JsonIntArray, and JsonStringArray members to the LMKit.Data.Json.JsonBasicType enumeration
  • Introduced the TextTranslation.TrainingDataset enumeration
  • Added the GetTrainingData method to the TextTranslation class
  • Added the EnableDynamicSampling property to the Configuration class

Improvements

  • Improvements to generic classification accuracy and speed
  • Improved global performance with Llama 3.2 models
  • Improved global performance with Qwen 2.5 models
  • Fine-tuning: extended compatibility to all Llama architectures
  • Improved sampling of JSON array structures

📅 Version 2024.9.4 (25 September 2024)

New Features

  • Added support for array parameters in function calls
  • Added the ForceFunctionSelection property to the SingleFunctionCall class
  • Introduced the LMKit2024_09_INT member to the SentimentAnalysis.TrainingDataset enumeration

Improvements

  • Improved function calling accuracy and speed
  • Improved emotion detection engine accuracy and speed
  • Strong improvements to generic classification accuracy and speed
  • Improved accuracy of the language detection engine

Bug Fixes

  • Fixed a memory leak in the fine-tuning engine

📅 Version 2024.9.3 (18 September 2024)

Improvements

  • Improved function calling accuracy
  • Enhanced language detection accuracy
  • Boosted generic classification accuracy and speed
  • Increased inference speed on CPU

📅 Version 2024.9.2 (11 September 2024)

New Features

  • Added the Seed property to RandomSampling, MirostatSampling, and Mirostat2Sampling classes
  • Introduced the TrimAuto member to the InputLengthOverflowPolicy enumeration
  • Enabled deserialization of ChatHistory objects without specifying a Model parameter

Improvements

  • Further increased inference speed on CPU
  • Enhanced internal API for better error handling

📅 Version 2024.9.1 (6 September 2024)

Improvements

  • Optimized inference speed on CPU
  • Implemented checks to prevent access to disposed objects
  • Improved exception handling in quantization features

📅 Version 2024.9.0 (3 September 2024)

New Features

  • Added the GetToken method to the Vocabulary class
  • Introduced the Confidence property to the TextTranslation class
  • Added the MaximumInputTokens property to the SingleTurnConversation class

Improvements

  • Enhanced JSON content sampling strategy
  • Extended CUDA backend compatibility across more Windows configurations
  • Improved accuracy of the language detection engine
  • Enhanced compatibility with MAUI

📅 Version 2024.8.4 - Preview (26 August 2024)

New Features

  • Introduced the GlobalConfiguration static class

Improvements

  • Refined JSON content sampling strategy
  • Improved function calling accuracy and speed
  • Increased inference speed with Gemma2 models
  • Enhanced classification accuracy with tiny-small models

Bug Fixes

  • Fixed an issue when computing embeddings from a token array matching the context size

📅 Version 2024.8.3 - Preview (21 August 2024)

Improvements

  • Improved support for Phi 3.5 models

📅 Version 2024.8.2 - Preview (20 August 2024)

New Features

  • Added the CreateJsonGrammarFromJsonScheme method to the Grammar class

Improvements

  • Improved JSON content sampling strategy
  • Enhanced function calling accuracy and speed

📅 Version 2024.8.1 - Preview (15 August 2024)

New Features

  • Added Vulkan backend 🔥
  • Introduced the FunctionCallResult property to the FunctionCallEventArgs class
  • Added the EnableVulkan property to the Runtime class
  • Included KeepLast property in the AfterTokenSamplingEventArgs class

Improvements

  • Refined JSON content sampling strategy
  • Enhanced function calling accuracy and speed

📅 Version 2024.8.0 - Preview (8 August 2024)

New Features

  • Added the CreateJsonGrammarFromFields method to the Grammar class
  • Enabled function calling support with any model class 🔥
  • Introduced the SingleFunctionCall and FunctionCallResult classes
  • Added the LMFunctionAttribute attribute

Improvements

  • Enhanced grammar sampling strategy, especially for JSON schemes

📅 Version 2024.7.10 - Preview (6 August 2024)

New Features

  • Added support for Google Gemma 2 2B models 🔥
  • Introduced the CreateJsonGrammarFromTextFields method to the Grammar class

Improvements

  • Improved grammar sampling strategy, particularly with JSON schemes

📅 Version 2024.7.9 - Preview (31 July 2024)

New Features

  • Added the Version property to the Runtime class

Bug Fixes

  • Fixed an issue enabling neutral emotion support in the EmotionDetection class
  • Resolved issues when running fine-tuning with gradient checkpointing

📅 Version 2024.7.8 - Preview (30 July 2024)

New Features

  • Added the MaximumContextLength property to the SingleTurnConversation class
  • Added the GetTextAsync method to the Attachment class

Improvements

  • Enhanced inference engine handling of context overflow scenarios

📅 Version 2024.7.7 - Preview (29 July 2024)

Improvements

  • Enhanced compatibility with .NET Framework 4.6.2

Bug Fixes

  • Resolved a crash related to grammar sampling

📅 Version 2024.7.6 - Preview (27 July 2024)

New Features

  • Added support for LLaMA 3.1 models 🔥

Improvements

  • Enhanced logging mechanism

🎉 Version 2024.7.1 - Preview (23 July 2024)

🎉🥳 Initial release! 🥳🎉
😺 🐱 🐾