Releases: OEvortex/llm4free
Releases · OEvortex/llm4free
Release list
Release v2025.12.1
[2025.12.01] - 2025-12-01
✨ Added
- feat: sanitize.py - Added
output_formatterparameter tosanitize_stream()for custom output transformation - feat: sanitize.py - Users can now define custom formatter functions to transform each output item into any desired structure before yielding
🚮 Removed
- removed: sanitize.py - Removed built-in response formatters (
ResponseFormatter,OutputFormat,create_openai_response,create_openai_stream_chunk,create_anthropic_response,create_anthropic_stream_chunk,format_output) in favor of user-definedoutput_formatterfunctions - removed: sanitize.py - Removed
output_formatandformat_optionsparameters fromsanitize_stream()- useoutput_formatterinstead
📝 Documentation
- docs: sanitize.md - Updated documentation with
output_formatterparameter and usage examples - docs: sanitize.md - Removed references to removed built-in formatters
Release v2025.11.30
[2025.11.30] - 2025-11-30
🔧 Maintenance
- refactor: Added missing
# type: ignoreto imports for optional dependencies (trio, numpy, tiktoken, pandas) in multiple modules for better compatibility and linting - refactor: Improved type hints and error handling in
scout/core/crawler.pyandscout/core/scout.py - refactor: Updated
oivscode.pyto generate and use a unique ClientId (UUID) in headers - refactor: Updated CLI group import in
swiftcli/core/cli.pyto avoid circular dependency - refactor: Minor docstring and comment cleanups in AISEARCH providers
- chore: Removed unfinished providers:
Aitopia.py,VercelAIGateway.py,puterjs.py,scira_search.py,hika_search.pyfrom Provider/UNFINISHED and Provider/AISEARCH
🐛 Fixed
- fix: Fixed error handling in
sanitize.pyasync stream processing (removed logger usage in extractor error branch) - fix: Fixed import and type hint issues in
duckduckgo/base.py,search/http_client.py,Provider/cerebras.py, and others - fix: Fixed streaming output and test code in
genspark_search.py,PERPLEXED_search.py, andiask_search.pyfor more robust CLI testing - fix: Fixed YahooSearch import for Dict type in
search/yahoo_main.py
🚮 Removed
- removed: Deleted unfinished provider files:
Aitopia.py,VercelAIGateway.py,puterjs.py,scira_search.py,hika_search.pyfor codebase cleanup
🐛 Fixed
- fix: TogetherAI.py - Updated API endpoint from
https://chat.together.ai/api/chat-completiontohttps://api.together.xyz/v1/chat/completionsfor compatibility with the public Together API - fix: TogetherAI.py - Fixed payload parameters to use OpenAI-compatible format (
model,max_tokens,top_pinstead ofmodelId,maxTokens,topP) - fix: OPENAI/TogetherAI.py - Removed self-activation endpoint logic that auto-fetched API keys from external service
✨ Added
- feat: TogetherAI.py - Implemented dynamic model loading from
https://api.together.xyz/v1/modelsAPI, similar to Groq provider - feat: TogetherAI.py - Added
get_models()andupdate_available_models()class methods for automatic model discovery - feat: OPENAI/TogetherAI.py - Added dynamic model loading support with automatic model list updates on initialization
- feat: OPENAI/TogetherAI.py - Now requires user-provided API key via
api_keyparameter, following Groq provider pattern
🔧 Maintenance
- refactor: TogetherAI.py - Changed
AVAILABLE_MODELSfrom hardcoded dictionary to dynamically populated list - refactor: TogetherAI.py - Updated model validation to handle empty model lists gracefully when API fetch fails
- refactor: OPENAI/TogetherAI.py - Removed
activation_endpointandget_activation_key()method for better security practices - refactor: OPENAI/TogetherAI.py - Updated
__init__to acceptapi_keyparameter and conditionally update models if key is provided
Release v2025.11.22
[2025.11.22] - 2025-11-22
🐛 Fixed
- fix: TogetherAI.py - Updated API endpoint from
https://chat.together.ai/api/chat-completiontohttps://api.together.xyz/v1/chat/completionsfor compatibility with the public Together API - fix: TogetherAI.py - Fixed payload parameters to use OpenAI-compatible format (
model,max_tokens,top_pinstead ofmodelId,maxTokens,topP) - fix: OPENAI/TogetherAI.py - Removed self-activation endpoint logic that auto-fetched API keys from external service
✨ Added
- feat: TogetherAI.py - Implemented dynamic model loading from
https://api.together.xyz/v1/modelsAPI, similar to Groq provider - feat: TogetherAI.py - Added
get_models()andupdate_available_models()class methods for automatic model discovery - feat: OPENAI/TogetherAI.py - Added dynamic model loading support with automatic model list updates on initialization
- feat: OPENAI/TogetherAI.py - Now requires user-provided API key via
api_keyparameter, following Groq provider pattern
🔧 Maintenance
- refactor: TogetherAI.py - Changed
AVAILABLE_MODELSfrom hardcoded dictionary to dynamically populated list - refactor: TogetherAI.py - Updated model validation to handle empty model lists gracefully when API fetch fails
- refactor: OPENAI/TogetherAI.py - Removed
activation_endpointandget_activation_key()method for better security practices - refactor: OPENAI/TogetherAI.py - Updated
__init__to acceptapi_keyparameter and conditionally update models if key is provided
Release v2025.11.21.1
[2025.11.21.1] - 2025-11-21
📝 Changes since v2025.11.21
📦 Changes
- 🔖 Bump version to 2025.11.21.1 (250d6dd)
- feat: Add new providers for IBM Granite, ExaChat, Gemini Proxy, and FreeGemini, along with new test files and an updated changelog. (e7297d7)
📦 Installation
pip install --upgrade webscout==2025.11.21.1Release v2025.11.21
[2025.11.21] - 2025-11-21
🐛 Fixed
- fix: IBM.py - Fixed typo in
refresh_identitymethod wheres-elf.headerswas incorrectly used instead ofself.headers - fix: AIauto.py - Fixed critical bug where
chatmethod could return a generator whenstream=False, causingAssertionErrorin providers like AI4Chat - fix: AIauto.py - Added proper handling for providers that return generators even in non-streaming mode by consuming the generator to extract the return value
✨ Added
- feat: AIauto.py - Enhanced provider failover mechanism to "peek" at the first chunk of streaming responses, allowing automatic failover to next provider if current one fails immediately
- feat: AIauto.py - Split
chatmethod into_chat_streamand_chat_non_streamhelper methods for clearer separation of streaming vs non-streaming logic
🔧 Maintenance
- refactor: AIauto.py - Improved robustness of AUTO provider to work seamlessly with all providers in webscout.Provider package
- refactor: AIauto.py - Added generator type checking and handling to prevent type mismatches between streaming and non-streaming responses
Release v2025.11.20.2
Release v2025.11.20.1
Release v2025.11.20
[2025.11.20] - 2025-11-20
🐛 Fixed
- fix: sanitize.py - Fixed critical async stream processing logic error where variable
idxwas used outside its conditional scope, causing potentialUnboundLocalError - fix: sanitize.py - Fixed Python 3.9+ compatibility issue by replacing
Patternfrom typing withre.Patternfor proper isinstance() checks
🔧 Maintenance
- refactor: sanitize.py - Reorganized imports for better structure (moved chain, functools, asyncio to top level)
- chore: sanitize.py - Added
__all__export list for explicit public API definition - docs: sanitize.py - Added comprehensive module docstring
- refactor: sanitize.py - Updated all type hints to use modern syntax with
re.Pattern[str] - refactor: Apriel.py - Simplified raw mode streaming logic for better performance
Release v2025.11.19
[2025.11.19] - 2025-11-19
🔧 Maintenance
- chore: Bard - added
gemini-3-promodel with appropriate headers toBardModelenum - GEMINI - added
gemini-3-promodel support inGEMINIclass - feat: Updated search engines to use dataclass objects from results.py for better type safety and consistency
- refactor: Updated all Providers to use
rawflag of sanatize_stream for easy debugging - removed: Removed Cloudflare Provider
🐛 Fixed
- fix: ChatGPT provider - Fixed OpenAI compatibility issues in
webscout/Provider/OPENAI/chatgpt.pyby updating streaming and non-streaming implementations to properly handle Server-Sent Events format and match OpenAI's response structure exactly - fix: ChatGPT provider - Enhanced error handling and parameter validation to follow OpenAI conventions
- fix: AkashGPT provider - Fixed authentication issue in
webscout/Provider/akashgpt.pyby updating API key handling to use cookies for authentication
✨ Added
- feat: ChatGPT provider - Added new models to AVAILABLE_MODELS including
gpt-5-1,gpt-5-1-instant,gpt-5-1-thinking,gpt-5,gpt-5-instant,gpt-5-thinking - feat: New Provider: Algion with
gpt-5.1and other models