mirror of
https://github.com/xtekky/gpt4free.git
synced 2026-04-22 23:57:17 +08:00
e83282fc4b
- **Docs**
- `docs/file.md`: update upload instructions to use inline `bucket` content parts instead of `tool_calls/bucket_tool`.
- `docs/media.md`: add asynchronous audio transcription example, detailed explanation, and notes.
- **New audio provider**
- Add `g4f/Provider/audio/EdgeTTS.py` implementing Edge Text‑to‑Speech (`EdgeTTS`).
- Create `g4f/Provider/audio/__init__.py` for provider export.
- Register provider in `g4f/Provider/__init__.py`.
- **Refactor image → media**
- Introduce `generated_media/` directory and `get_media_dir()` helper in `g4f/image/copy_images.py`; add `ensure_media_dir()`; keep back‑compat with legacy `generated_images/`.
- Replace `images_dir` references with `get_media_dir()` across:
- `g4f/api/__init__.py`
- `g4f/client/stubs.py`
- `g4f/gui/server/api.py`
- `g4f/gui/server/backend_api.py`
- `g4f/image/copy_images.py`
- Rename CLI/API config field/flag from `image_provider` to `media_provider` (`g4f/cli.py`, `g4f/api/__init__.py`, `g4f/client/__init__.py`).
- Extend `g4f/image/__init__.py`
- add `MEDIA_TYPE_MAP`, `get_extension()`
- revise `is_allowed_extension()`, `to_input_audio()` to support wider media types.
- **Provider adjustments**
- `g4f/Provider/ARTA.py`: swap `raise_error()` parameter order.
- `g4f/Provider/Cloudflare.py`: drop unused `MissingRequirementsError` import; move `get_args_from_nodriver()` inside try; handle `FileNotFoundError`.
- **Core enhancements**
- `g4f/providers/any_provider.py`: use `default_model` instead of literal `"default"`; broaden model/provider matching; update model list cleanup.
- `g4f/models.py`: safeguard provider count logic when model name is falsy.
- `g4f/providers/base_provider.py`: catch `json.JSONDecodeError` when reading auth cache, delete corrupted file.
- `g4f/providers/response.py`: allow `AudioResponse` to accept extra kwargs.
- **Misc**
- Remove obsolete `g4f/image.py`.
- `g4f/Provider/Cloudflare.py`, `g4f/client/types.py`: minor whitespace and import tidy‑ups.
32 lines
978 B
Python
32 lines
978 B
Python
from __future__ import annotations
|
|
|
|
import os
|
|
|
|
from .stubs import ChatCompletion, ChatCompletionChunk
|
|
from ..providers.types import BaseProvider
|
|
from typing import Union, Iterator, AsyncIterator
|
|
|
|
Proxies = Union[dict, str]
|
|
IterResponse = Iterator[Union[ChatCompletion, ChatCompletionChunk]]
|
|
AsyncIterResponse = AsyncIterator[Union[ChatCompletion, ChatCompletionChunk]]
|
|
|
|
class Client():
|
|
def __init__(
|
|
self,
|
|
api_key: str = None,
|
|
proxies: Proxies = None,
|
|
**kwargs
|
|
) -> None:
|
|
self.api_key: str = api_key
|
|
self.proxies = proxies
|
|
self.proxy: str = self.get_proxy()
|
|
|
|
def get_proxy(self) -> Union[str, None]:
|
|
if isinstance(self.proxies, str):
|
|
return self.proxies
|
|
elif self.proxies is None:
|
|
return os.environ.get("G4F_PROXY")
|
|
elif "all" in self.proxies:
|
|
return self.proxies["all"]
|
|
elif "https" in self.proxies:
|
|
return self.proxies["https"] |