Commit graph

60 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
06546649db feat: add LM Arena provider, async‑ify Copilot & surface follow‑up suggestions
* **Provider/Blackbox.py**
  * Raise `RateLimitError` when `"You have reached your request limit for the hour"` substring is detected
* **Provider/Copilot.py**
  * Convert class to `AsyncGeneratorProvider`; rename `create_completion` → `create_async_generator`
  * Swap `curl_cffi.requests.Session` for `AsyncSession`; reduce default timeout to **30 s**
  * Fully async websocket flow (`await session.ws_connect`, `await wss.send/recv/close`)
  * Emit new response types: `TitleGeneration`, `SourceLink`, aggregated `Sources`
  * Track request completion with `done` flag; collect citations in `sources` dict
* **Provider/DuckDuckGo.py**
  * Replace `duckduckgo_search.DDGS` with `duckai.DuckAI`
  * Change base class to `AbstractProvider`; drop nodriver‑based auth
* **Provider/PollinationsAI.py**
  * Re‑build text/audio model lists ensuring uniqueness; remove unused `extra_text_models`
  * Fix image seed logic (`i==1` for first retry); propagate streaming `error` field via `ResponseError`
* **Provider/hf_space**
  * **New file** `LMArenaProvider.py` implementing async queue/stream client
  * Register `LMArenaProvider` in `hf_space/__init__.py`; delete `G4F` import
* **Provider/needs_auth/CopilotAccount.py**
  * Inherit order changed to `Copilot, AsyncAuthedProvider`
  * Refactor token & cookie propagation; add `cookies_to_dict` helper
* **Provider/needs_auth/OpenaiChat.py**
  * Parse reasoning thoughts/summary; yield `Reasoning` responses
  * Tighten access‑token validation and nodriver JS evaluations (`return_by_value`)
  * Extend `Conversation` with `p` and `thoughts_summary`
* **providers/response.py**
  * Add `SourceLink` response class returning single formatted citation link
* **providers/base_provider.py**
  * Serialize `AuthResult` with custom `json.dump` to handle non‑serializable fields
  * Gracefully skip empty cache files when loading auth data
* **image/copy_images.py**
  * Ignore file extensions longer than 4 chars when inferring type
* **requests/__init__.py**
  * Use `return_by_value=True` for `navigator.userAgent` extraction
* **models.py**
  * Remove `G4F` from model provider lists; update `janus_pro_7b` best providers
* **GUI server/api.py**
  * Stream `SuggestedFollowups` to client (`"suggestions"` event)
* **GUI static assets**
  * **style.css**: bold chat title, add `.suggestions` styles, remove padding from `.chat-body`
  * **chat.v1.js**
    * Capture `suggestions` packets, render buttons, and send as quick replies
    * Re‑order finish‑reason logic; adjust token count placement and system‑prompt toggling
  * **chat-top-panel / footer** interactions updated accordingly
* **gui/client/static/js/chat.v1.js** & **css** further UI refinements (scroll handling, token counting, hide prompt toggle)
* Minor updates across multiple files to match new async interfaces and headers (`userAgent`, `raise_for_status`)
2025-04-17 01:21:58 +02:00
kqlio67
2e13110e37 feat: enhance commit tool with advanced options and error handling
- Added command-line argument parsing with options for model selection, editing, and no-commit mode
- Implemented fallback mechanism with multiple AI models if the primary model fails
- Added spinner display to indicate progress during API calls
- Created functions to filter sensitive data from diffs before sending to API
- Added diff truncation capabilities for handling large changesets
- Implemented commit message editing in user's configured editor
- Added model listing functionality to show available AI options
- Enhanced error handling with retries and better error reporting
- Added keyboard interrupt handling for graceful termination
- Improved type annotations throughout the codebase
- Added constants for configuration parameters like retry delay and max diff size
2025-04-04 14:47:01 +03:00
kqlio67
54ef1a511c docs: update providers documentation and enhance support for Blackbox HAR auth
- Added "No auth / HAR file" authentication type in providers-and-models.md
- Added "Video generation" column to provider tables for future capability
- Updated model counts and provider capabilities throughout documentation
- Fixed ARTA provider with improved error handling and response validation
- Enhanced AllenAI provider with vision model support and proper image handling
- Significantly improved Blackbox provider:
  - Added HAR file authentication support
  - Added subscription status checking
  - Added premium/demo model differentiation
  - Improved session handling and error recovery
- Enhanced DDG provider with better error handling for challenges
- Improved PollinationsAI and PollinationsImage providers' model handling
- Added VideoModel class in g4f/models.py
- Added audio/video generation indicators in GUI components
- Added new Ai2 models: olmo-1-7b, olmo-2-32b, olmo-4-synthetic
- Added new commit message generation tool in etc/tool/commit.py
2025-04-04 13:36:28 +03:00
H Lohaus
3784f6edf4
Update copilot.py 2025-01-09 09:56:54 +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
74a289ae64 Add Anthropic provider 2025-01-02 02:33:09 +01:00
Heiner Lohaus
75cb6163ae Use other model for copilot 2024-12-16 19:34:22 +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
H Lohaus
3f93d34cbf
Add more contributers, add link to Swagger UI (#2443)
* Add more contributers, add link to Swagger UI
* Update Dockerfile-slim
* Update retry_provider.py
* Add html preview to gui, fix urls in website manifest
* Missing chunks in OpenaiChat
2024-11-30 22:11:18 +01:00
Heiner Lohaus
2114520ed2 Improve slim docker build, Add openapi.json to release 2024-11-24 22:20:08 +01:00
H Lohaus
2b60af8797
Update copilot.py 2024-11-18 10:33:38 +01: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
kqlio67
f1ad883f94 update etc/tool/copilot.py 2024-10-20 18:15:34 +03:00
kqlio67
84bbedf31b update etc/tool/copilot.py 2024-10-20 17:48:04 +03:00
kqlio67
294b25de7e update etc/tool/copilot.py 2024-10-20 17:16:49 +03:00
kqlio67
3dcacd842d refactor(etc/tool/create_provider.py): enhance provider template and functionality 2024-10-19 12:52:36 +03:00
kqlio67
34e1dc7326 refactor(provider): use default model for code improvement prompt 2024-09-06 17:45:17 +03:00
kqlio67
fbfe7bfcb7 refactor(provider): use default model in code generation 2024-09-06 17:44:31 +03:00
Heiner Lohaus
6e064adb09 Add gemini-1.5-pro-latest model 2024-04-22 18:08:04 +02:00
Heiner Lohaus
4bc4d635bc Add vision models to readme 2024-04-22 01:27:48 +02:00
Heiner Lohaus
a26421bcd8 Add image model list 2024-04-21 15:15:55 +02:00
Heiner Lohaus
0de9ca2004 Add Installation Guide for Windows
Improve Contributors list in Readme
2024-04-06 10:47:43 +02:00
JSon
5b45478319 Change uses of whitelist to allowlist in translate_readme.py.
Change uses of blacklist to blocklist in translate_readme.py.
Change uses of blacklisted to blocklisted in translate_readme.py.
2024-02-26 15:28:28 +08:00
Heiner Lohaus
7953560303 Improve readme, add smartphone guide 2024-02-23 17:21:10 +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
H Lohaus
5c75972c50
Update provider and model list (#1568)
Move bing.create_images and cookies helper
Disable some providers
2024-02-09 14:24:15 +01:00
Heiner Lohaus
8864b70ee4 Add aiohttp_socks support 2024-01-23 23:48:11 +01:00
Heiner Lohaus
b6feec9e7d Check for comments in copilot 2024-01-23 05:03:26 +01:00
Heiner Lohaus
55695eda39 Fix create copilot comment 2024-01-23 02:13:36 +01:00
Heiner Lohaus
04a5e33ebe Fix error in copilot 2024-01-21 20:04:43 +01:00
Heiner Lohaus
d9386946cf Fix error in copilot 2024-01-21 20:01:53 +01:00
Heiner Lohaus
270bc8a44a Check for existing comments 2024-01-21 19:35:10 +01:00
Heiner Lohaus
04ec265ba0 Cast pr number 2024-01-21 17:41:40 +01:00
Heiner Lohaus
f5ab6f8531 No PR number found 2024-01-21 17:38:26 +01:00
Heiner Lohaus
f720105953 Save pr number 2024-01-21 17:26:26 +01:00
Heiner Lohaus
fd0507a422 Improve doctypes in copilot 2024-01-21 15:07:29 +01:00
Heiner Lohaus
de993f539c Fix offset_line in copilot 2024-01-20 18:54:32 +01:00
Heiner Lohaus
8787db385e Check access from chromedriver 2024-01-20 18:36:04 +01:00
Heiner Lohaus
7f4d9ba82b Add copilot github action 2024-01-20 18:16:18 +01:00
abc
9140541179 ~ | improve compatibility 2023-11-20 18:40:55 +00:00
Heiner Lohaus
ba9d5ed6ba Add translate readme module
Translate readme to german
2023-11-20 14:02:12 +01:00
Heiner Lohaus
cadc507fad Add AiChatOnline, ChatgptDemoAi, ChatgptNext Providers
Add OnlineGpt and TalkAi Provider
Add get_random_string and get_random_hex helper
Remove funcaptcha package
2023-11-18 04:38:31 +01:00
Heiner Lohaus
2fb932220d Add Berlin and Koala Provider 2023-11-12 18:03:04 +01:00
Heiner Lohaus
745ea57c63 Add auto_continue to OpenaiChat
Update readme provider tables
2023-11-12 10:12:05 +01:00
ⲘrṨhส∂ow
3982f39424
'Refactored by Sourcery' (#1125)
Co-authored-by: Sourcery AI <>
2023-10-23 09:46:25 +02:00
abc
d185488b2b ~ 2023-10-22 18:53:52 +01:00
abc
6c424ce5fe ~ 2023-10-16 14:34:45 +01:00
abc
df92b32e98 ~ 2023-10-12 14:49:07 +01:00