summaryrefslogtreecommitdiffstats
path: root/README.md
diff options
context:
space:
mode:
Diffstat (limited to 'README.md')
-rw-r--r--README.md73
1 files changed, 48 insertions, 25 deletions
diff --git a/README.md b/README.md
index 927e5c93..542f92fb 100644
--- a/README.md
+++ b/README.md
@@ -224,19 +224,15 @@ from g4f.Provider import (
Bing,
ChatBase,
ChatgptAi,
- ChatgptLogin,
- CodeLinkAva,
DeepAi,
H2o,
HuggingChat,
- Opchatgpts,
OpenAssistant,
OpenaiChat,
Raycast,
Theb,
Vercel,
Vitalentum,
- Wewordle,
Ylokh,
You,
Yqcloud,
@@ -284,19 +280,18 @@ _providers = [
g4f.Provider.Aichat,
g4f.Provider.ChatBase,
g4f.Provider.Bing,
- g4f.Provider.CodeLinkAva,
g4f.Provider.DeepAi,
g4f.Provider.GptGo,
- g4f.Provider.Wewordle,
g4f.Provider.You,
g4f.Provider.Yqcloud,
]
-async def run_provider(provider: g4f.Provider.AsyncProvider):
+async def run_provider(provider: g4f.Provider.BaseProvider):
try:
- response = await provider.create_async(
- model=g4f.models.default.name,
+ response = await g4f.ChatCompletion.create_async(
+ model=g4f.models.default,
messages=[{"role": "user", "content": "Hello"}],
+ provider=provider,
)
print(f"{provider.__name__}:", response)
except Exception as e:
@@ -311,6 +306,22 @@ async def run_all():
asyncio.run(run_all())
```
+##### Proxy Support:
+
+All providers support specifying a proxy in the create function.
+
+```py
+import g4f
+
+response = await g4f.ChatCompletion.create(
+ model=g4f.models.default,
+ messages=[{"role": "user", "content": "Hello"}],
+ proxy="http://host:port",
+ # or socks5://user:pass@host:port
+)
+print(f"Result:", response)
+```
+
### interference openai-proxy api (use with openai python package)
#### run interference from pypi package:
@@ -521,38 +532,50 @@ if __name__ == "__main__":
## Contribute
-to add another provider, its very simple:
+####Create Provider with AI Tool
+
+Call in your terminal the "create_provider" script:
+```bash
+$ python etc/tool/create_provider.py
+```
+1. Enter your name for the new provider.
+2. Copy&Paste a cURL command from your browser developer tools.
+3. Let the AI ​​create the provider for you.
+4. Customize the provider according to your needs.
+
+####Create Provider
0. Check out the current [list of potential providers](https://github.com/zukixa/cool-ai-stuff#ai-chat-websites), or find your own provider source!
1. Create a new file in [g4f/provider](./g4f/provider) with the name of the Provider
2. Implement a class that extends [BaseProvider](./g4f/provider/base_provider.py).
```py
-from .base_provider import BaseProvider
-from ..typing import CreateResult, Any
+from __future__ import annotations
+from ..typing import AsyncResult, Messages
+from .base_provider import AsyncGeneratorProvider
-class HogeService(BaseProvider):
- url = "http://hoge.com"
- working = True
+class HogeService(AsyncGeneratorProvider):
+ url = "https://chat-gpt.com"
supports_gpt_35_turbo = True
+ working = True
- @staticmethod
- def create_completion(
+ @classmethod
+ async def create_async_generator(
+ cls,
model: str,
- messages: list[dict[str, str]],
- stream: bool,
- **kwargs: Any,
- ) -> CreateResult:
- pass
+ messages: Messages,
+ proxy: str = None,
+ **kwargs
+ ) -> AsyncResult:
+ yield ""
```
-3. Here, you can adjust the settings, for example if the website does support streaming, set `working` to `True`...
-4. Write code to request the provider in `create_completion` and `yield` the response, _even if_ its a one-time response, do not hesitate to look at other providers for inspiration
+3. Here, you can adjust the settings, for example if the website does support streaming, set `supports_stream` to `True`...
+4. Write code to request the provider in `create_async_generator` and `yield` the response, _even if_ its a one-time response, do not hesitate to look at other providers for inspiration
5. Add the Provider Name in [g4f/provider/**init**.py](./g4f/provider/__init__.py)
```py
-from .base_provider import BaseProvider
from .HogeService import HogeService
__all__ = [