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.
- New exception classes for better error handling:
PaymentRequiredError(HTTP 402) - Raised when payment is required to access the serviceServiceUnavailableError(HTTP 503) - Raised when the service is temporarily unavailable
- Improved error mapping in
_make_status_error()function for more specific exception types
- Input validation for embeddings API:
- Maximum array length validation (2048 items limit)
- Raises
InvalidRequestErrorwith descriptive message when limit is exceeded
- Base64 encoding support:
- Embedding responses can now return base64-encoded strings in addition to float arrays
- Support for
encoding_formatparameter with values "float" or "base64"
- OpenAI compatibility improvements:
userparameter now accepted (though discarded by Venice API) for better OpenAI client compatibility- Enhanced documentation clarifying parameter behavior
- New model capabilities in
ModelCapabilities:supportsVision- Indicates if model supports image inputssupportsReasoning- Indicates if model has reasoning capabilitiesquantization- Specifies model quantization type (e.g., "fp16", "int8")
- Beta field support in
ModelSpecfor identifying beta models - Enhanced model filtering in
get_filtered_models():- New capability-based filtering parameters
- Deprecated
supports_capabilitiesparameter in favor of specific capability flags
- New test suite
tests/test_embeddings_api_alignment.pywith 28 new tests for embeddings API
- Added
recommended_model_updates.pyproviding example utility classes (e.g.,ModelWrapper,ModelSelector) for advanced model interaction and management.
- Test Suites: Updated 13 test files to align with new exception handling and model capabilities.
- E2E Tests: Enhanced
e2e_tests/test_01_models.pyto verify new model fields and capabilities.
- Corrected various tests to handle new exception types and model filtering logic.
- Enhanced client-side robustness in stream handling, pricing information retrieval, and cost calculations.
- New cost calculation module (
venice_ai.costs):calculate_completion_cost()- Calculate actual costs from chat completion responsescalculate_embedding_cost()- Calculate costs for embedding operationsestimate_completion_cost()- Estimate costs before making API calls
- Dual currency support: All cost calculations now support both USD and VCU (Venice Compute Units)
- New client method
get_model_pricing()to fetch detailed pricing information for any model
- Web Search Integration:
enable_web_search- Control web search behavior ("on", "off", "auto")enable_web_citations- Request citations in[REF]0[/REF]formatinclude_search_results_in_stream- Include search results in streaming responses
- Reasoning/Thinking Controls:
strip_thinking_response- Remove<think></think>blocks from responsesdisable_thinking- Disable thinking mode entirely on supported models
- Advanced Sampling Parameters:
logit_bias- Modify token likelihood with bias values (-100 to 100)parallel_tool_calls- Enable parallel function callingmax_temp,min_temp- Dynamic temperature scalingmin_p- Minimum probability threshold for token selection
- New
get_models_by_capability()function to filter models by specific capabilities - Improved model filtering and capability detection
- Model metadata (capabilities, constraints, pricing) is now consolidated under
model_spec - Pricing structure now uses dedicated
PricingUnitandPricingDetailtypes - Legacy pricing fields are maintained for backward compatibility but are now optional
- Chat completion responses now use Pydantic models instead of TypedDict
- New
VeniceParametersResponsetype for Venice-specific response metadata web_search_citationsmoved intovenice_parametersresponse field
- Made
tiktokenoptional - because not everyone needs to count their tokens obsessively - Relocated
numpy,Pillow,beautifulsoup4, andpypandocto dev dependencies where they can contemplate their existence without affecting your production builds - Installation options:
pip install venice-ai # Lean and mean pip install venice-ai[tokenizers] # With token counting
- Improved error handling in model listing operations
- Fixed edge cases in token estimation fallback logic
- Enhanced type safety throughout the codebase
- Project status upgraded from Beta to Production/Stable
- Enhanced input validation for new chat completion parameters
- Reduced package size and installation time through dependency optimization
- Streamlined test suite for improved CI/CD performance
- Documentation Updates: Updated documentation to reflect Venice.ai API improvements
- Added information about Venice Large model's increased context window (32k → 128k tokens)
- Enhanced
README.mdwith Venice Large examples and context window guidance - Updated
docs/client_utilities.rstwith model capability notes and token management best practices - Enhanced
docs/async_chat_streaming_guide.rstwith large context window usage guidance - Added practical examples showing how to leverage the 128k context window with
max_completion_tokens
- API Compatibility: No SDK code changes required - existing functionality automatically benefits from API improvements
- Venice Large's increased context size can be utilized through existing
max_completion_tokensparameter - Non-streaming chat completions now receive cleaner responses due to server-side "thinking" message processing improvements
- Streaming behavior remains unchanged and continues to pass through all API-sent events
- Venice Large's increased context size can be utilized through existing
- Documentation Build Issues: Fixed empty sections in Sphinx API reference documentation that were appearing in Read the Docs builds
- Updated
.readthedocs.yamlto properly install thevenice_aipackage during documentation builds - Added missing imports in
src/venice_ai/resources/__init__.pyforApiKeys,AsyncApiKeys,Audio,AsyncAudio,Billing,AsyncBilling,Embeddings,AsyncEmbeddings, andAsyncModels - Added comprehensive type imports in
src/venice_ai/types/__init__.pyfor image, api_keys, audio, embeddings, and billing modules - Added explicit
__all__list tosrc/venice_ai/exceptions.pyfor better module discovery - Fixed missing
ModelTraitListandModelCompatibilityListexports in types package
- Updated
- Test Runner & Coverage: Refactored
test_runner.pyto usepytest-covdirectly, resolving significant code coverage reporting inaccuracies when running tests in parallel withpytest-xdist. - Embedding Tests: Updated
e2e_tests/test_05_embeddings.pywith improved and corrected end-to-end tests for embedding functionalities. - CI Workflow: Modified
.github/workflows/python-publish.yamlto enhance test execution, enabling or optimizing parallel test runs.
- Implemented support for
logprobsandtop_logprobsparameters in Chat Completions API, allowing users to retrieve token likelihoods. Includes E2E tests and documentation updates.
- BaseClient Foundation: Introduced
BaseClientclass providing shared functionality for both sync and async clients, including common initialization logic, retry configuration, and transport setup. - Advanced HTTP Configuration: Added comprehensive HTTP client configuration options to both
VeniceClientandAsyncVeniceClient:- Support for custom
httpx.Client/httpx.AsyncClientinstances - Direct configuration of proxy, transport, limits, cert, verify, trust_env, HTTP/1.1, HTTP/2 settings
- Custom event hooks and default encoding support
- Follow redirects and max redirects configuration
- Support for custom
- Global Timeout Management: Implemented
default_timeoutparameter for setting global timeout defaults across all API calls, with per-request override capability. - Automatic Retry System: Integrated
httpx-retrieslibrary with configurable retry behavior:- Configurable
max_retries(default: 2) - Adjustable
retry_backoff_factor(default: 0.1) - Customizable
retry_status_forcelist(default: [429, 500, 502, 503, 504]) - Respect for
Retry-Afterheaders in rate limit responses
- Configurable
- Sentinel Type System: Added
NotGivensentinel type andNOT_GIVENconstant for distinguishing betweenNoneand not-provided parameters.
- Streaming Audio Support: Implemented method overloads for
create_speech()supporting both streaming and non-streaming audio generation:stream=False: Returnsbytesfor immediate audio datastream=True: ReturnsIterator[bytes]for streaming audio chunks
- Voice Management System: Added comprehensive
get_voices()method with advanced filtering:- Filter by model ID, gender (male/female/unknown), and region code
- Automatic voice metadata parsing from voice IDs
- Language and accent detection for 15+ supported regions
- Enhanced Voice Metadata: Implemented
REGION_LANGUAGE_MAPPINGsupporting:- English variants: American, British, Canadian, Scottish, Welsh, Australian, Indian
- International languages: German, Spanish, French, Italian, Japanese, Korean, Portuguese, Russian, Mandarin Chinese
- Improved Parameter Handling: Set sensible defaults for audio generation (
response_format="mp3",speed=1.0). - Raw Response Support: Added
_request_raw_response()and_arequest_raw_response()methods for handling binary audio content and streaming responses.
- Character Listing: Implemented
Characters.list()method with support for extra headers, query parameters, and custom timeouts. - Enhanced Character Model: Completely redesigned
CharacterPydantic model with modern fields:- Core identification:
slug,name,description - AI capabilities:
system_prompt,user_prompt,vision_enabled - Media support:
image_url,voice_id - Organization:
category_tags - Timestamps:
created_at,updated_atwith proper datetime handling
- Core identification:
- Simplified Character List: Streamlined
CharacterListmodel for cleaner API responses.
- Retry-After Header Parsing: Implemented
_parse_retry_after_header()function supporting:- Integer seconds format (e.g., "120")
- HTTP-date format (e.g., "Wed, 21 Oct 2015 07:28:00 GMT")
- Timezone-aware datetime calculations
- Server time synchronization using response
Dateheader
- Enhanced RateLimitError: Extended
RateLimitErrorwithretry_after_secondsattribute for intelligent retry logic. - Improved Error Context: Better error message formatting and context preservation across the exception hierarchy.
- Massive Test Suites: Added extensive functional test coverage:
venice_sdk_async_test.py: 126k lines of async functionality testsvenice_sdk_sync_test.py: 49k lines of sync functionality tests
- HTTP Configuration Testing: New
tests/test_client_http_config.pyfor validating advanced HTTP client options. - Enhanced API Coverage: Expanded test coverage for:
- Audio streaming and non-streaming modes with various parameters
- Characters API functionality and error handling
- Chat completions with tool usage, JSON format, and streaming
- Image generation with advanced parameters (negative_prompt, seed, format)
- API key management including Web3 token functionality
- Retry mechanism behavior and configuration
- Global timeout functionality across all endpoints
- Comprehensive Changelog: Created this detailed changelog following Keep a Changelog format.
- Contributing Guidelines: Added
CONTRIBUTING.mdwith clear issue reporting guidelines. - Enhanced API Documentation: Updated
docs/api.rstwith 168 new lines covering:- Advanced HTTP client configuration examples
- Retry mechanism documentation
- Global timeout usage patterns
- Utility Documentation: Added
docs/client_utilities.rstdocumentingestimate_token_countandvalidate_chat_messagesutilities. - README Overhaul: Major
README.mdupdates (144 lines changed) including:- Advanced HTTP Client Configuration section with three configuration approaches
- Updated all code examples to include
default_timeoutparameter - Enhanced feature list highlighting automatic retry functionality
- Improved error handling examples and best practices
- Inheritance Hierarchy:
AsyncVeniceClientnow inherits fromBaseClientfor shared functionality and consistent behavior. - Request Method Simplification: Removed manual HTTP 503 retry loops from client request methods (
_request,_arequest, and related stream/multipart methods) in favor ofhttpx-retriesintegration. - Enhanced Documentation: Significantly expanded docstrings for both sync and async clients with detailed parameter descriptions and usage examples.
- Version Bump: Updated from
1.0.3to1.1.0reflecting significant new features and improvements. - Dependency Management: Added
httpx-retries = "^0.4.0"as a core dependency for retry functionality. - Enhanced Discoverability: Expanded keywords from 5 to 9 terms:
ai,api-client,generative-ai,llm,machine-learning,ml,sdk,venice,venice-ai. - Refined Classifiers: Updated PyPI classifiers:
- Removed Python 3.10 support (now requires Python 3.11+)
- Added "Development Status :: 4 - Beta"
- Added comprehensive topic classifiers for chat, image generation, speech, text processing
- Added "Typing :: Typed" classifier for type hint support
- Project URLs: Added "Issue Tracker" and "Changelog" links for better project navigation.
- Test Configuration: Enabled parallel test execution with
pytest-xdist(addopts = "-n auto").
- Characters API: Enhanced
Characters.list()with additional parameters for headers, query parameters, body, and timeout customization. - Audio API: Improved
create_speech()with better error handling, streaming support, and parameter validation. - Consistent Parameter Patterns: Standardized optional parameter handling across all API methods using the new
NotGivensentinel system.
- API Key Management: Corrected API key delete method to use query parameters instead of request body, aligning with API specification.
- Image Upscale Response Handling: Fixed Image Upscale functional tests to correctly handle
bytesresponse type instead of expecting JSON. - Audio Error Processing: Improved error handling in audio generation to properly consume response bodies before raising exceptions, preventing connection leaks.
- Embeddings Test Stability: Made Embeddings functional tests robustly skipped due to persistent API authentication issues in test environments, preventing false test failures.
- Response Type Validation: Enhanced test assertions to properly validate response types across different API endpoints.
- Legacy Files: Removed development and example files:
app.py: 883-line example/demo applicationdummy_image.pnganddummy_image_async.png: Test image filestests/resources/test_billing.py: 79-line billing test file
- Billing API Simplification: Removed
export()method (71 lines) that provided CSV billing data export functionality. - Obsolete Type Definitions: Removed incorrect/placeholder
CharacterChatCompletionRequestPydantic model and associatedStatsmodel. - Deprecated Features: Removed plans for
ResponseTransformer/AsyncResponseTransformeras existing streaming utilities were deemed sufficient.
- Streamlined Character Documentation: Simplified character model documentation to focus on current functionality rather than legacy fields.
- Rate Limit Intelligence:
RateLimitErrornow safely parses and exposesRetry-Afterheader information without leaking sensitive data. - Timeout Configuration: Global timeout settings provide better protection against hanging requests and resource exhaustion.
- Automatic Retries: Intelligent retry mechanism reduces manual retry logic and improves success rates for transient failures.
- Parallel Testing: Enabled parallel test execution reducing CI/CD pipeline duration.
- Streaming Optimization: Enhanced audio streaming implementation for better memory efficiency with large audio files.
- Connection Management: Improved HTTP connection lifecycle management through better integration with
httpxfeatures.
- Initial release of the Venice AI Python SDK with comprehensive API coverage
- Support for Chat Completions, Image Generation, Audio (TTS), Models, API Keys, Billing, and Characters endpoints
- Both synchronous and asynchronous client implementations
- Comprehensive error handling with custom exception hierarchy
- Type-hinted interfaces for better developer experience
- Resource-oriented client design pattern
- Streaming support for chat completions
- Comprehensive test suite with functional and unit tests
- Sphinx-based documentation system
- Poetry-based dependency management and packaging
- Established baseline functionality and API coverage
- Initial bug fixes and stabilization for public release
Note: This changelog follows Keep a Changelog format. For detailed technical information about any changes, please refer to the git commit history or the linked source files.