llm_core 0.1.9
llm_core: ^0.1.9 copied to clipboard
Core abstractions for LLM (Large Language Model) interactions. Provides common interfaces, models, and utilities used by LLM backend implementations.
Changelog #
All notable changes to this project will be documented in this file.
The format is based on Keep a Changelog, and this project adheres to Semantic Versioning.
[Unreleased] #
0.1.9 - 2026-02-28 #
Changed #
- Breaking: Removed
requireFinalAssistantResponseoption fromStreamChatOptions,StreamChatOptionsMerger, andStreamToolExecutor. Tool loops now always require a final assistant response — there is no reason to allow tool loops to end without the assistant reporting back. maxToolAttemptsdefault increased from 25 to 90 across all repositories and builders.chatResponse()tool loop detection refined: only actual tool result chunks (LLMRole.tool) trigger the incomplete-loop check, not tool calls appearing alongside content.
0.1.8 - 2026-02-26 #
Added #
- Tool result chunks emitted to stream:
StreamToolExecutornow yieldsLLMChunkwithrole: LLMRole.toolafter each tool execution, so chat consumers can display "Tool X returned: Y" per OpenAI function calling specs LLMToolCall.toApiFormat()helper for converting to OpenAI/Ollama API format- Assistant message with
tool_callsadded to message history before tool results (API-compliant sequence) - Content accumulation from stream chunks for assistant messages that include both text and tool calls
Changed #
- Breaking: Removed
toolNamefromLLMMessageandLLMChunkMessage; usetoolCallIdonly (OpenAI canonical format) - Breaking: Tool message validation now requires
toolCallId(removedtoolNameoption) StreamToolExecutoraccumulates content and thinking from chunks for the assistant message
0.1.7 - 2026-02-10 #
Added #
batchEmbed()onLLMChatRepository: explicit API for embedding multiple texts in one call. Same signature asembed(); default implementation delegates toembed(). Documented for Ollama, OpenAI, and llama.cpp backends.
0.1.6 - 2026-02-10 #
Fixed #
- Hardened
StreamToolExecutorto always synthesize a non-emptytoolCallIdforLLMRole.toolmessages when a backend-providedLLMToolCall.idis missing or empty, preventingTool message must have toolCallIdvalidation errors. - Improved tool execution error handling so that thrown tool exceptions are surfaced as tool messages rather than crashing the stream.
0.1.5 - 2026-01-26 #
Added #
StreamChatOptionsclass to encapsulate all streaming chat options and reduce parameter proliferationRetryConfigandRetryUtilfor configurable retry logic with exponential backoffTimeoutConfigfor flexible timeout configuration (connection, read, total, large payloads)LLMMetricsinterface andDefaultLLMMetricsimplementation for optional metrics collectionchatResponse()method onLLMChatRepositoryfor non-streaming complete responses- Input validation utilities in
Validationclass ChatRepositoryBuilderBasefor implementing builder patterns in repository implementationsStreamChatOptionsMergerfor merging options from multiple sources- HTTP client utilities (
HttpClientHelper) for consistent request handling - Error handling utilities (
ErrorHandlers,BackendErrorHandler) for standardized error processing - Tool execution utilities (
ToolExecutor) for managing tool calling workflows
Changed #
streamChat()now accepts optionalStreamChatOptionsparameter- Improved error handling and retry logic across all backends
- Enhanced documentation
0.1.0 - 2026-01-19 #
Added #
- Initial release
- Core abstractions for LLM interactions:
LLMChatRepository- Abstract interface for chat completionsLLMMessage- Message representation with roles and contentLLMResponse- Response wrapper with metadataLLMChunk- Streaming response chunksLLMEmbedding- Text embedding representation
- Tool calling support:
LLMTool- Tool definition with JSON Schema parametersLLMToolCall- Tool invocation representationLLMToolParam- Parameter definitions
- Exception types for error handling