Commit graph

48 commits

Author SHA1 Message Date
H Lohaus
0a070bdf10
feat: introduce AnyProvider & LM Arena, overhaul model/provider logic (#2925)
* feat: introduce AnyProvider & LM Arena, overhaul model/provider logic

- **Provider additions & removals**
  - Added `Provider/LMArenaProvider.py` with full async stream implementation and vision model support
  - Registered `LMArenaProvider` in `Provider/__init__.py`; removed old `hf_space/LMArenaProvider.py`
  - Created `providers/any_provider.py`; registers `AnyProvider` dynamically in `Provider`
- **Provider framework enhancements**
  - `providers/base_provider.py`
    - Added `video_models` and `audio_models` attributes
  - `providers/retry_provider.py`
    - Introduced `is_content()` helper; now treats `AudioResponse` as stream content
- **Cloudflare provider refactor**
  - `Provider/Cloudflare.py`
    - Re‑implemented `get_models()` with `read_models()` helper, `fallback_models`, robust nodriver/curl handling and model‑name cleaning
- **Other provider tweaks**
  - `Provider/Copilot.py` – removed `"reasoning"` alias and initial `setOptions` WS message
  - `Provider/PollinationsAI.py` & `PollinationsImage.py`
    - Converted `audio_models` from list to dict, adjusted usage checks and labels
  - `Provider/hf/__init__.py` – applies `model_aliases` remap before dispatch
  - `Provider/hf_space/DeepseekAI_JanusPro7b.py` – now merges media before upload
  - `needs_auth/Gemini.py` – dropped obsolete Gemini model entries
  - `needs_auth/GigaChat.py` – added lowercase `"gigachat"` alias
- **API & client updates**
  - Replaced `ProviderUtils` with new `Provider` map usage throughout API and GUI server
  - Integrated `AnyProvider` as default fallback in `g4f/client` sync & async flows
  - API endpoints now return counts of providers per model and filter by `x_ignored` header
- **GUI improvements**
  - Updated JS labels with emoji icons, provider ignore logic, model count display
- **Model registry**
  - Renamed base model `"GigaChat:latest"` ➜ `"gigachat"` in `models.py`
- **Miscellaneous**
  - Added audio/video flags to GUI provider list
  - Tightened error propagation in `retry_provider.raise_exceptions`

* Fix unittests

* fix: handle None conversation when accessing provider-specific data

- Modified `AnyProvider` class in `g4f/providers/any_provider.py`
- Updated logic to check if `conversation` is not None before accessing `provider.__name__` attribute
- Wrapped `getattr(conversation, provider.__name__, None)` block in an additional `if conversation is not None` condition
- Changed `setattr(conversation, provider.__name__, chunk)` to use `chunk.get_dict()` instead of the object directly
- Ensured consistent use of `JsonConversation` when modifying or assigning `conversation` data

* ```
feat: add provider string conversion & update IterListProvider call

- In g4f/client/__init__.py, within both Completions and AsyncCompletions, added a check to convert the provider from a string using convert_to_provider(provider) when applicable.
- In g4f/providers/any_provider.py, removed the second argument (False) from the IterListProvider constructor call in the async for loop.
```

---------

Co-authored-by: hlohaus <983577+hlohaus@users.noreply.github.com>
2025-04-18 14:10:51 +02:00
hlohaus
c97ba0c88e Add audio transcribing example and support
Add Grok Chat provider
Rename images parameter to media
Update demo homepage
2025-03-21 03:17:45 +01:00
hlohaus
10d32a4c5f Improve TypeGPT, GizAI, Goabror and LambdaChat provider
Update conversation body in OpenaiChat provider
Update ThinkingProcessor in run_tools
Add unittests for ThinkingProcessor
Update default headers in requests module
Add AuthFileMixin to base_provider
2025-03-20 21:45:59 +01:00
hlohaus
e53483d85b Improve tools support in OpenaiTemplate and GeminiPro
Update models in DDG, PerplexityLabs, Gemini
Fix issues with curl_cffi in new versions
2025-02-21 04:36:54 +01:00
hlohaus
b86bf0dcf7 Fix include in mocks.py 2025-02-03 21:24:37 +01:00
hlohaus
8bae5dd8d3 Fix unittests 2025-01-25 12:07:42 +01:00
hlohaus
fd97cceab0 Restore AsyncClient streaming return type
Improve error handling in DDG
use OpenaiAPI provider in DeepInfraChat
Support api_base and response_type parameters in API
2025-01-24 04:56:26 +01:00
kqlio67
9def1aa71f
Update model configurations, provider implementations, and documentation (#2577)
* Update model configurations, provider implementations, and documentation

- Updated model names and aliases for Qwen QVQ 72B and Qwen 2 72B (@TheFirstNoob)
- Revised HuggingSpace class configuration, added default_image_model
- Added llama-3.2-70b alias for Llama 3.2 70B model in AutonomousAI
- Removed BlackboxCreateAgent class
- Added gpt-4o alias for Copilot model
- Moved api_key to Mhystical class attribute
- Added models property with default_model value for Free2GPT
- Simplified Jmuz class implementation
- Improved image generation and model handling in DeepInfra
- Standardized default models and removed aliases in Gemini
- Replaced model aliases with direct model list in GlhfChat (@TheFirstNoob)
- Removed trailing slash from image generation URL in PollinationsAI (https://github.com/xtekky/gpt4free/issues/2571)
- Updated llama and qwen model configurations
- Enhanced provider documentation and model details

* Removed from (g4f/models.py) 'Yqcloud' provider from Default due to error 'ResponseStatusError: Response 429: 文字过长,请删减后重试。'

* Update docs/providers-and-models.md

* refactor(g4f/Provider/DDG.py): Add error handling and rate limiting to DDG provider

- Add custom exception classes for rate limits, timeouts, and conversation limits
- Implement rate limiting with sleep between requests (0.75s minimum delay)
- Add model validation method to check supported models
- Add proper error handling for API responses with custom exceptions
- Improve session cookie handling for conversation persistence
- Clean up User-Agent string and remove redundant code
- Add proper error propagation through async generator

Breaking changes:
- New custom exceptions may require updates to error handling code
- Rate limiting affects request timing and throughput
- Model validation is now stricter

Related:
- Adds error handling similar to standard API clients
- Improves reliability and robustness of chat interactions

* Update g4f/models.py g4f/Provider/PollinationsAI.py

* Update g4f/models.py

* Restored provider which was not working and was disabled (g4f/Provider/DeepInfraChat.py)

* Fixing a bug with Streaming Completions

* Update g4f/Provider/PollinationsAI.py

* Update g4f/Provider/Blackbox.py g4f/Provider/DDG.py

* Added another model for generating images 'ImageGeneration2' to the 'Blackbox' provider

* Update docs/providers-and-models.md

* Update g4f/models.py g4f/Provider/Blackbox.py

* Added a new OIVSCode provider from the Text Models and Vision (Image Upload) model

* Update docs/providers-and-models.md

* docs: add Conversation Memory class with context handling requested by @TheFirstNoob

* Simplified README.md documentation added new docs/configuration.md documentation

* Update add README.md docs/configuration.md

* Update README.md

* Update docs/providers-and-models.md g4f/models.py g4f/Provider/PollinationsAI.py

* Added new model deepseek-r1 to Blackbox provider. @TheFirstNoob

* Fixed bugs and updated docs/providers-and-models.md etc/unittest/client.py g4f/models.py g4f/Provider/.

---------

Co-authored-by: kqlio67 <>
Co-authored-by: H Lohaus <hlohaus@users.noreply.github.com>
2025-01-24 03:47:57 +01:00
Heiner Lohaus
486e9a9122 Add login_url to authed providers
Create a home page for the GUI
Fix CopyButton in Code Highlight
2025-01-03 02:40:21 +01:00
Heiner Lohaus
5b74a22cf9 Fix unittests 2025-01-02 03:19:39 +01:00
Heiner Lohaus
7893a0835e Add filessupport, scrape and refine your data
Remove Webdriver usages
Add continue messages for other providers
2025-01-01 04:20:02 +01:00
H Lohaus
86e36efe6b
Add Path and PathLike support when uploading images (#2514)
* Add Path and PathLike support when uploading images
Improve raise_for_status in special cases
Move ImageResponse to providers.response module
Improve OpenaiChat and OpenaiAccount providers
Add Sources for web_search in OpenaiChat
Add JsonConversation for import and export conversations to js
Add RequestLogin response type
Add TitleGeneration support in OpenaiChat and gui
* Improve Docker Container Guide in README.md
* Add tool calls api support, add search tool support
2024-12-28 16:50:08 +01:00
Heiner Lohaus
315a2f2595 Add streaming and system messages support in Airforce 2024-12-14 23:34:13 +01:00
H Lohaus
335c971f6a
Add multiple images support (#2478)
* Add multiple images support

* Add multiple images support in gui

* Support multiple images in legacy client and in the api
Fix some model names in provider model list

* Fix unittests

* Add vision and providers docs
2024-12-13 22:20:58 +01:00
H Lohaus
76c3683403
Remove webview js api, Add unittest for provider has model, Use cooki… (#2470)
* Remove webview js api, Add unittest for provider has model, Use cookies dir for cache
2024-12-08 20:39:40 +01:00
Heiner Lohaus
20ad08021a Fix deprecated construct method, fix unittests 2024-12-07 20:07:11 +01:00
H Lohaus
79c407b939
IterListProvider support for generating images (#2441)
* IterListProvider support for generating images
* Add missing get_har_files import in Copilot
* Fix typo in dall-e-3 model name
* Add image client unittests
* Add MicrosoftDesigner provider
* Import MicrosoftDesigner and add it to the model list
2024-11-29 13:56:11 +01:00
Heiner Lohaus
c31f5435c4 Fix api with default providers, add unittests for RetryProvider 2024-11-28 17:46:46 +01:00
Heiner Lohaus
cab71ca8b6 Add duckduckgo-search to slim requirements,
Add pass provider as model in the client,
Fix missing @property in version utils
2024-11-26 16:36:45 +01:00
Heiner Lohaus
2fe43166cc Update unittests 2024-11-18 18:23:16 +01:00
kqlio67
c7ff15cd94 Update (etc/unittest/backend.py) 2024-11-17 15:50:02 +02:00
H Lohaus
6ce493d4df
Fix api streaming, fix AsyncClient (#2357)
* Fix api streaming, fix AsyncClient, Improve Client class, Some providers fixes, Update models list, Fix some tests, Update model list in Airforce provid
er, Add OpenAi image generation url to api, Fix reload and debug in api arguments, Fix websearch in gui

* Fix Cloadflare and Pi and AmigoChat provider

* Fix conversation support in DDG provider, Add cloudflare bypass with nodriver

* Fix unittests without curl_cffi
2024-11-16 13:19:51 +01:00
H Lohaus
61428de4f3
Update asyncio.py 2024-11-16 13:00:02 +01:00
kqlio67
e1e37b34a5 refactor(etc/unittest): update async client test structure 2024-10-15 12:03:20 +03:00
kqlio67
6a2e83c6c3 Refactor async tests for chat completions (etc/unittest/async_client.py) 2024-09-26 21:38:34 +03:00
abc
0c4d218c2c . 2024-06-11 15:51:35 +01:00
Heiner Lohaus
db2d6cffd9 Fix Bing Provider, Add Account Support for Meta AI
Use default headers in OpenaiChat
2024-04-21 07:22:59 +02:00
Heiner Lohaus
db00480153 Disable Bing integration test 2024-04-20 20:11:09 +02:00
H Lohaus
11cb4f12f3
Update integration.py 2024-04-19 15:16:48 +02:00
H Lohaus
7d0197dc2e
Update integration.py 2024-04-12 21:17:03 +02:00
H Lohaus
0b712c2bde
Add unittests for async client (#1830)
* Add unittests for async client

* Add pollyfill for anext

* Update integration tests
2024-04-12 18:01:54 +02:00
Heiner Lohaus
0de9ca2004 Add Installation Guide for Windows
Improve Contributors list in Readme
2024-04-06 10:47:43 +02:00
Heiner Lohaus
a4ca5773bd Fix unittests 2024-04-06 01:18:45 +02:00
Heiner Lohaus
d44b39b31c Add Groq and Openai interfaces, Add integration tests 2024-04-06 01:05:00 +02:00
Heiner Lohaus
2a3880ac2f Fix unit test with missing requirements 2024-03-12 02:15:22 +01:00
Heiner Lohaus
d733930a2b Fix unittests, use Union typing 2024-02-23 02:51:10 +01:00
Heiner Lohaus
1b4a86a857 Update client docs, Enable some tests 2024-02-22 04:35:11 +01:00
Heiner Lohaus
e5b7f72b71 Move some modules, create providers dir
Set min version for duckduckgo
Make duckduckgo search async
Remove get_lastet_version
2024-02-22 00:16:58 +01:00
Heiner Lohaus
e1a0b3ffa2 Add unitests for the client
Fix: async generator ignored GeneratorExit
Fix: ResourceWarning: unclosed event loop
2024-02-14 09:21:57 +01:00
Heiner Lohaus
770bdc54fc Improve readme / unittests 2024-01-29 20:13:54 +01:00
Heiner Lohaus
1eb7dc05e5 Fix: ChromeDriver only supports characters in the BMP
Add set_cookies helper, Show last used model
2024-01-26 12:49:52 +01:00
H Lohaus
feb83c168b
New minimum requirements (#1515)
* New minimum requirements
* Add ConversationStyleOptionSets to Bing
* Add image.ImageRequest
* Improve python version support
* Improve unittests
2024-01-26 07:54:13 +01:00
Heiner Lohaus
e4f743881c Fix: Model sometimes not converted #1507 2024-01-23 12:17:16 +01:00
Heiner Lohaus
46a8019e1f First checkout repo 2024-01-21 17:31:57 +01:00
Heiner Lohaus
9cbe9c1ccb Improve tests 2024-01-21 02:20:23 +01:00
Heiner Lohaus
782edbdb6a Improve asserts in unittests 2024-01-20 18:16:45 +01:00
H Lohaus
42709f55b2
Fix unittests (#1472)
* Fix unittests

* Fix missing distutils, install setuptools

* Fix version not found

* Remove deprecation in get_event_loop
2024-01-14 16:37:21 +01:00
Heiner Lohaus
32252def15 Change doctypes style to Google
Fix typo in latest_version
Fix Phind Provider
Add unittest worklow and main tests
2024-01-14 15:04:37 +01:00