Heiner Lohaus 139f68af4f Improve code style | 10 kuukautta sitten | |
---|---|---|
.github | 11 kuukautta sitten | |
docker | 10 kuukautta sitten | |
etc | 10 kuukautta sitten | |
g4f | 10 kuukautta sitten | |
.gitattributes | 1 vuosi sitten | |
.gitignore | 1 vuosi sitten | |
.gitpod.yml | 1 vuosi sitten | |
CODE_OF_CONDUCT.md | 1 vuosi sitten | |
CONTRIBUTING.md | 1 vuosi sitten | |
LEGAL_NOTICE.md | 1 vuosi sitten | |
LICENSE | 1 vuosi sitten | |
MANIFEST.in | 1 vuosi sitten | |
README-DE.md | 11 kuukautta sitten | |
README.md | 11 kuukautta sitten | |
SECURITY.md | 1 vuosi sitten | |
docker-compose.yml | 11 kuukautta sitten | |
requirements.txt | 10 kuukautta sitten | |
setup.py | 11 kuukautta sitten |
<img src="https://img.shields.io/badge/open in-🇬🇧 english-blue.svg" alt="Open in EN">
Durch die Nutzung dieses Repositories oder jeglichen damit verbundenen Code stimmen Sie dem Rechtshinweis zu. Der Autor ist nicht verantwortlich für Kopien, Forks, erneute Uploads durch andere Benutzer oder sonstige mit GPT4Free verbundene Aktivitäten. Dies ist das einzige Konto und Repository des Autors. Um Identitätsdiebstahl oder unverantwortliche Handlungen zu verhindern, halten Sie sich bitte an die GNU GPL-Lizenz, die dieses Repository verwendet.
pip install -U g4f
pip install -U g4f
git clone https://github.com/xtekky/gpt4free.git
cd gpt4free
python3 -m venv venv
.\venv\Scripts\activate
source venv/bin/activate
requirements.txt
:pip install -r requirements.txt
test.py
im Stammverzeichnis und beginnen Sie mit der Verwendung des Repositories. Weitere Anweisungen finden Sie untenimport g4f
...
Wenn Docker installiert ist, können Sie das Projekt ohne manuelle Installation von Abhängigkeiten einfach einrichten und ausführen.
Stellen Sie zunächst sicher, dass sowohl Docker als auch Docker Compose installiert sind.
Klonen Sie das GitHub-Repo:
git clone https://github.com/xtekky/gpt4free.git
cd gpt4free
docker-compose build
docker-compose up
Ihr Server wird jetzt unter http://localhost:1337
ausgeführt. Sie können mit der API interagieren oder Ihre Tests wie gewohnt ausführen.
Um die Docker-Container zu stoppen, führen Sie einfach aus:
docker-compose down
[!Note] Wenn Sie Docker verwenden, werden alle Änderungen, die Sie an Ihren lokalen Dateien vornehmen, im Docker-Container durch die Volumenabbildung in der
docker-compose.yml
-Datei widergespiegelt. Wenn Sie jedoch Abhängigkeiten hinzufügen oder entfernen, müssen Sie das Docker-Image mitdocker-compose build
neu erstellen.
g4f
Paketimport g4f
g4f.debug.logging = True # Aktiviere das Protokollieren
g4f.debug.check_version = False # Deaktiviere die automatische Versionsüberprüfung
print(g4f.debug.get_version()) # Überprüfe die Version
print(g4f.Provider.Bing.params) # Unterstützte Argumente
# Automatische Auswahl des Anbieters
# Gestreamte Vervollständigung
response = g4f.ChatCompletion.create(
model="gpt-3.5-turbo",
messages=[{"role": "user", "content": "Hallo"}],
stream=True,
)
for message in response:
print(message, flush=True, end='')
# Normale Antwort
response = g4f.ChatCompletion.create(
model=g4f.models.gpt_4,
messages=[{"role": "user", "content": "Hallo"}],
) # Alternative Modellkonfiguration
print(response)
import g4f
erlaubte_modelle = [
'code-davinci-002',
'text-ada-001',
'text-babbage-001',
'text-curie-001',
'text-davinci-002',
'text-davinci-003'
]
response = g4f.Completion.create(
model='text-davinci-003',
prompt='sage, dass dies ein Test ist'
)
print(response)
import g4f
from g4f.Provider import (
AItianhu,
Aichat,
Bard,
Bing,
ChatBase,
ChatgptAi,
OpenaiChat,
Vercel,
You,
Yqcloud,
)
# Festlegen des Anbieters
response = g4f.ChatCompletion.create(
model="gpt-3.5-turbo",
provider=g4f.Provider.Aichat,
messages=[{"role": "user", "content": "Hallo"}],
stream=True,
)
for message in response:
print(message)
Einige Anbieter verwenden einen Browser, um den Bot-Schutz zu umgehen. Sie verwenden den Selenium-Webtreiber, um den Browser zu steuern. Die Browsereinstellungen und die Anmeldedaten werden in einem benutzerdefinierten Verzeichnis gespeichert. Wenn der Headless-Modus aktiviert ist, werden die Browserfenster unsichtbar geladen. Aus Leistungsgründen wird empfohlen, die Browserinstanzen wiederzuverwenden und sie am Ende selbst zu schließen:
import g4f
from undetected_chromedriver import Chrome, ChromeOptions
from g4f.Provider import (
Bard,
Poe,
AItianhuSpace,
MyShell,
Phind,
PerplexityAi,
)
options = ChromeOptions()
options.add_argument("--incognito")
browser = Chrome(options=options, headless=True)
for idx in range(10):
response = g4f.ChatCompletion.create(
model=g4f.models.default,
provider=g4f.Provider.Phind,
messages=[{"role": "user", "content": "Schlage mir einen Namen vor."}],
browser=browser
)
print(f"{idx}:", response)
browser.quit()
Cookies sind für die ordnungsgemäße Funktion einiger Dienstanbieter unerlässlich. Es ist unerlässlich, eine aktive Sitzung aufrechtzuerhalten, die in der Regel durch das Anmelden in Ihrem Konto erreicht wird.
Wenn Sie das g4f-Paket lokal ausführen, ruft das Paket automatisch Cookies aus Ihrem Webbrowser ab, indem es die get_cookies
-Funktion verwendet. Wenn Sie es jedoch nicht lokal ausführen, müssen Sie die Cookies manuell bereitstellen, indem Sie sie als Parameter unter Verwendung des cookies
-Parameters übergeben.
import g4f
from g4f.Provider import (
Bing,
HuggingChat,
OpenAssistant,
)
# Verwendung
response = g4f.ChatCompletion.create(
model=g4f.models.default,
messages=[{"role": "user", "content": "Hallo"}],
provider=Bing,
#cookies=g4f.get_cookies(".google.com"),
cookies={"cookie_name": "value", "cookie_name2": "value2"},
auth=True
)
Um die Geschwindigkeit und Gesamtleistung zu verbessern, führen Sie Anbieter asynchron aus. Die Gesamtausführungszeit wird durch die Dauer der langsamsten Anbieterausführung bestimmt.
import g4f
import asyncio
_providers = [
g4f.Provider.Aichat,
g4f.Provider.ChatBase,
g4f.Provider.Bing,
g4f.Provider.GptGo,
g4f.Provider.You,
g4f.Provider.Yqcloud,
]
async def run_provider(provider: g4f.Provider.BaseProvider):
try:
response = await g4f.ChatCompletion.create_async(
model=g4f.models.default,
messages=[{"role": "user", "content": "Hallo"}],
provider=provider,
)
print(f"{provider.__name__}:", response)
except Exception as e:
print(f"{provider.__name__}:", e)
async def run_all():
calls = [
run_provider(provider) for provider in _providers
]
await asyncio.gather(*calls)
asyncio.run(run_all())
Alle Anbieter unterstützen das Angeben eines Proxy und das Erhöhen des Timeouts in den Erstellungsfunktionen.
import g4f
response = g4f.ChatCompletion.create(
model=g4f.models.default,
messages=[{"role": "user", "content": "Hallo"}],
proxy="http://host:port",
# oder socks5://user:pass@host:port
timeout=120, # in Sekunden
)
print(f"Ergebnis:", response)
from g4f.api import run_api
run_api()
Wenn Sie die Einbettungsfunktion verwenden möchten, benötigen Sie einen Hugging Face-Token. Sie können einen unter Hugging Face Tokens erhalten. Stellen Sie sicher, dass Ihre Rolle auf Schreiben eingestellt ist. Wenn Sie Ihren Token haben, verwenden Sie ihn einfach anstelle des OpenAI-API-Schlüssels.
Server ausführen:
g4f api
oder
python -m g4f.api
import openai
# Setzen Sie Ihren Hugging Face-Token als API-Schlüssel, wenn Sie Einbettungen verwenden
# Wenn Sie keine Einbettungen verwenden, lassen Sie es leer
openai.api_key = "IHR_HUGGING_FACE_TOKEN" # Ersetzen Sie dies durch Ihren tatsächlichen Token
# Setzen Sie die API-Basis-URL, falls erforderlich, z.B. für eine lokale Entwicklungsumgebung
openai.api_base = "http://localhost:1337/v1"
def main():
chat_completion = openai.ChatCompletion.create(
model="gpt-3.5-turbo",
messages=[{"role": "user", "content": "schreibe ein Gedicht über einen Baum"}],
stream=True,
)
if isinstance(chat_completion, dict):
# Nicht gestreamt
print(chat_completion.choices[0].message.content)
else:
# Gestreamt
for token in chat_completion:
content = token["choices"][0]["delta"].get("content")
if content is not None:
print(content, end="", flush=True)
if __name__ == "__main__":
main()
Website | Provider | GPT-3.5 | GPT-4 | Stream | Status | Auth |
---|---|---|---|---|---|---|
bing.com | g4f.Provider.Bing |
❌ | ✔️ | ✔️ | ❌ | |
chat.geekgpt.org | g4f.Provider.GeekGpt |
✔️ | ✔️ | ✔️ | ❌ | |
gptchatly.com | g4f.Provider.GptChatly |
✔️ | ✔️ | ❌ | ❌ | |
liaobots.site | g4f.Provider.Liaobots |
✔️ | ✔️ | ✔️ | ❌ | |
www.phind.com | g4f.Provider.Phind |
❌ | ✔️ | ✔️ | ❌ | |
raycast.com | g4f.Provider.Raycast |
✔️ | ✔️ | ✔️ | ✔️ |
Website | Provider | GPT-3.5 | GPT-4 | Stream | Status | Auth |
---|---|---|---|---|---|---|
www.aitianhu.com | g4f.Provider.AItianhu |
✔️ | ❌ | ✔️ | ❌ | |
chat3.aiyunos.top | g4f.Provider.AItianhuSpace |
✔️ | ❌ | ✔️ | ❌ | |
e.aiask.me | g4f.Provider.AiAsk |
✔️ | ❌ | ✔️ | ❌ | |
chat-gpt.org | g4f.Provider.Aichat |
✔️ | ❌ | ❌ | ❌ | |
www.chatbase.co | g4f.Provider.ChatBase |
✔️ | ❌ | ✔️ | ❌ | |
chatforai.store | g4f.Provider.ChatForAi |
✔️ | ❌ | ✔️ | ❌ | |
chatgpt.ai | g4f.Provider.ChatgptAi |
✔️ | ❌ | ✔️ | ❌ | |
chatgptx.de | g4f.Provider.ChatgptX |
✔️ | ❌ | ✔️ | ❌ | |
chat-shared2.zhile.io | g4f.Provider.FakeGpt |
✔️ | ❌ | ✔️ | ❌ | |
freegpts1.aifree.site | g4f.Provider.FreeGpt |
✔️ | ❌ | ✔️ | ❌ | |
gptalk.net | g4f.Provider.GPTalk |
✔️ | ❌ | ✔️ | ❌ | |
ai18.gptforlove.com | g4f.Provider.GptForLove |
✔️ | ❌ | ✔️ | ❌ | |
gptgo.ai | g4f.Provider.GptGo |
✔️ | ❌ | ✔️ | ❌ | |
hashnode.com | g4f.Provider.Hashnode |
✔️ | ❌ | ✔️ | ❌ | |
app.myshell.ai | g4f.Provider.MyShell |
✔️ | ❌ | ✔️ | ❌ | |
noowai.com | g4f.Provider.NoowAi |
✔️ | ❌ | ✔️ | ❌ | |
chat.openai.com | g4f.Provider.OpenaiChat |
✔️ | ❌ | ✔️ | ✔️ | |
theb.ai | g4f.Provider.Theb |
✔️ | ❌ | ✔️ | ✔️ | |
sdk.vercel.ai | g4f.Provider.Vercel |
✔️ | ❌ | ✔️ | ❌ | |
you.com | g4f.Provider.You |
✔️ | ❌ | ✔️ | ❌ | |
chat9.yqcloud.top | g4f.Provider.Yqcloud |
✔️ | ❌ | ✔️ | ❌ | |
chat.acytoo.com | g4f.Provider.Acytoo |
✔️ | ❌ | ✔️ | ❌ | |
aibn.cc | g4f.Provider.Aibn |
✔️ | ❌ | ✔️ | ❌ | |
ai.ls | g4f.Provider.Ails |
✔️ | ❌ | ✔️ | ❌ | |
chatgpt4online.org | g4f.Provider.Chatgpt4Online |
✔️ | ❌ | ✔️ | ❌ | |
chat.chatgptdemo.net | g4f.Provider.ChatgptDemo |
✔️ | ❌ | ✔️ | ❌ | |
chatgptduo.com | g4f.Provider.ChatgptDuo |
✔️ | ❌ | ❌ | ❌ | |
chatgptfree.ai | g4f.Provider.ChatgptFree |
✔️ | ❌ | ❌ | ❌ | |
chatgptlogin.ai | g4f.Provider.ChatgptLogin |
✔️ | ❌ | ✔️ | ❌ | |
cromicle.top | g4f.Provider.Cromicle |
✔️ | ❌ | ✔️ | ❌ | |
gptgod.site | g4f.Provider.GptGod |
✔️ | ❌ | ✔️ | ❌ | |
opchatgpts.net | g4f.Provider.Opchatgpts |
✔️ | ❌ | ✔️ | ❌ | |
chat.ylokh.xyz | g4f.Provider.Ylokh |
✔️ | ❌ | ✔️ | ❌ |
Website | Provider | GPT-3.5 | GPT-4 | Stream | Status | Auth |
---|---|---|---|---|---|---|
bard.google.com | g4f.Provider.Bard |
❌ | ❌ | ❌ | ✔️ | |
deepinfra.com | g4f.Provider.DeepInfra |
❌ | ❌ | ✔️ | ❌ | |
huggingface.co | g4f.Provider.HuggingChat |
❌ | ❌ | ✔️ | ✔️ | |
www.llama2.ai | g4f.Provider.Llama2 |
❌ | ❌ | ✔️ | ❌ | |
open-assistant.io | g4f.Provider.OpenAssistant |
❌ | ❌ | ✔️ | ✔️ |
Model | Base Provider | Provider | Website |
---|---|---|---|
palm | g4f.Provider.Bard | bard.google.com | |
h2ogpt-gm-oasst1-en-2048-falcon-7b-v3 | Hugging Face | g4f.Provider.H2o | www.h2o.ai |
h2ogpt-gm-oasst1-en-2048-falcon-40b-v1 | Hugging Face | g4f.Provider.H2o | www.h2o.ai |
h2ogpt-gm-oasst1-en-2048-open-llama-13b | Hugging Face | g4f.Provider.H2o | www.h2o.ai |
claude-instant-v1 | Anthropic | g4f.Provider.Vercel | sdk.vercel.ai |
claude-v1 | Anthropic | g4f.Provider.Vercel | sdk.vercel.ai |
claude-v2 | Anthropic | g4f.Provider.Vercel | sdk.vercel.ai |
command-light-nightly | Cohere | g4f.Provider.Vercel | sdk.vercel.ai |
command-nightly | Cohere | g4f.Provider.Vercel | sdk.vercel.ai |
gpt-neox-20b | Hugging Face | g4f.Provider.Vercel | sdk.vercel.ai |
oasst-sft-1-pythia-12b | Hugging Face | g4f.Provider.Vercel | sdk.vercel.ai |
oasst-sft-4-pythia-12b-epoch-3.5 | Hugging Face | g4f.Provider.Vercel | sdk.vercel.ai |
santacoder | Hugging Face | g4f.Provider.Vercel | sdk.vercel.ai |
bloom | Hugging Face | g4f.Provider.Vercel | sdk.vercel.ai |
flan-t5-xxl | Hugging Face | g4f.Provider.Vercel | sdk.vercel.ai |
code-davinci-002 | OpenAI | g4f.Provider.Vercel | sdk.vercel.ai |
gpt-3.5-turbo-16k | OpenAI | g4f.Provider.Vercel | sdk.vercel.ai |
gpt-3.5-turbo-16k-0613 | OpenAI | g4f.Provider.Vercel | sdk.vercel.ai |
gpt-4-0613 | OpenAI | g4f.Provider.Vercel | sdk.vercel.ai |
text-ada-001 | OpenAI | g4f.Provider.Vercel | sdk.vercel.ai |
text-babbage-001 | OpenAI | g4f.Provider.Vercel | sdk.vercel.ai |
text-curie-001 | OpenAI | g4f.Provider.Vercel | sdk.vercel.ai |
text-davinci-002 | OpenAI | g4f.Provider.Vercel | sdk.vercel.ai |
text-davinci-003 | OpenAI | g4f.Provider.Vercel | sdk.vercel.ai |
llama13b-v2-chat | Replicate | g4f.Provider.Vercel | sdk.vercel.ai |
llama7b-v2-chat | Replicate | g4f.Provider.Vercel | sdk.vercel.ai |
🎁 Projects | ⭐ Stars | 📚 Forks | 🛎 Issues | 📬 Pull requests |
gpt4free | gpt4free-ts | |||
Free AI API's & Potential Providers List | ||||
ChatGPT-Clone | ||||
ChatGpt Discord Bot | ||||
Nyx-Bot (Discord) | ||||
LangChain gpt4free | ||||
ChatGpt Telegram Bot | ||||
ChatGpt Line Bot | ||||
Action Translate Readme | ||||
Langchain Document GPT |
Rufen Sie im Terminal das Skript create_provider.py
auf:
python etc/tool/create_provider.py
cURL
-Befehl aus den Entwicklertools Ihres Browsers und fügen Sie ihn ein.from __future__ import annotations
from ..typing import AsyncResult, Messages
from .base_provider import AsyncGeneratorProvider
class HogeService(AsyncGeneratorProvider):
url = "https://chat-gpt.com"
supports_gpt_35_turbo = True
working = True
@classmethod
async def create_async_generator(
cls,
model: str,
messages: Messages,
proxy: str = None,
**kwargs
) -> AsyncResult:
yield ""
supports_stream
auf True
...create_async_generator
anzufordern und die Antwort mit yield
zurückzugeben, selbst wenn es sich um eine einmalige Antwort handelt. Zögern Sie nicht, sich bei anderen Anbietern inspirieren zu lassen.g4f/Provider/__init__.py
hinzu.from .HogeService import HogeService
__all__ = [
HogeService,
]
import g4f
response = g4f.ChatCompletion.create(model='gpt-3.5-turbo', provider=g4f.Provider.PROVIDERNAME,
messages=[{"role": "user", "content": "test"}], stream=g4f.Provider.PROVIDERNAME.supports_stream)
for message in response:
print(message, flush=True, end='')
Eine Liste der Mitwirkenden ist hier verfügbar.
Die Datei Vercel.py
enthält Code von vercel-llm-api von @ading2210, der unter der GNU GPL v3 lizenziert ist.
Top 1 Mitwirkender: @hlohaus
This program is licensed under the GNU GPL v3
xtekky/gpt4free: Copyright (C) 2023 xtekky
This program is free software: you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by
the Free Software Foundation, either version 3 of the License, or
(at your option) any later version.
This program is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
GNU General Public License for more details.
You should have received a copy of the GNU General Public License
along with this program. If not, see <https://www.gnu.org/licenses/>.
<img width="500" alt="Star History Chart" src="https://api.star-history.com/svg?repos=xtekky/gpt4free&type=Date">
|
Dieses Projekt steht unter der GNU_GPL_v3.0-Lizenz. |