37 KiB
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
🆕 Was gibt es Neues
- Tritt unserem Telegram-Kanal bei: t.me/g4f_channel
- Tritt unserer Discord-Gruppe bei: discord.gg/XfybzPXPH5
- Erkunde die g4f-Dokumentation (unvollständig): g4f.mintlify.app | Trage zur Dokumentation bei: github.com/xtekky/gpt4free-docs
📚 Inhaltsverzeichnis
- 🆕 Was ist neu
- 📚 Inhaltsverzeichnis
- 🛠️ Erste Schritte
- 💡 Verwendung
- 🚀 Anbieter und Modelle
- 🔗 Verwandte GPT4Free-Projekte
- 🤝 Mitwirken
- 🙌 Mitwirkende
- ©️ Urheberrecht
- ⭐ Sternenhistorie
- 📄 Lizenz
🛠️ Erste Schritte
Voraussetzungen:
- Python herunterladen und installieren (Version 3.10+ wird empfohlen).
Projekt einrichten:
Installation über pypi
pip install -U g4f
oder
- Klonen Sie das GitHub-Repository:
git clone https://github.com/xtekky/gpt4free.git
- Navigieren Sie zum Projektverzeichnis:
cd gpt4free
- (Empfohlen) Erstellen Sie eine Python-Virtual-Umgebung: Sie können der Python-Offiziellen Dokumentation für virtuelle Umgebungen folgen.
python3 -m venv venv
- Aktivieren Sie die virtuelle Umgebung:
- Unter Windows:
.\venv\Scripts\activate
- Unter macOS und Linux:
source venv/bin/activate
- Installieren Sie die erforderlichen Python-Pakete aus
requirements.txt
:
pip install -r requirements.txt
- Erstellen Sie eine Datei
test.py
im Stammverzeichnis und beginnen Sie mit der Verwendung des Repositories. Weitere Anweisungen finden Sie unten
import g4f
...
Einrichten mit Docker:
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
- Navigieren Sie zum Projektverzeichnis:
cd gpt4free
- Erstellen Sie das Docker-Image:
docker-compose build
- Starten Sie den Dienst mit Docker Compose:
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.
💡 Verwendung
Das g4f
Paket
ChatCompletion
import g4f
g4f.debug.logging = True # Aktiviere das Protokollieren
g4f.check_version = False # Deaktiviere die automatische Versionsüberprüfung
print(g4f.version) # Überprüfe die Version
print(g4f.Provider.Ails.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)
Completion
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)
Anbieter
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)
Verwendung des Browsers
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()
Erforderliche Cookies
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
)
Unterstützung für asynchrone Ausführung
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())
Unterstützung für Proxy und Timeout
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)
Interference openai-proxy API (Verwendung mit dem openai Python-Paket)
Führen Sie die Interference API aus dem PyPi-Paket aus
from g4f.api import run_api
run_api()
Führen Sie die Interference API aus dem Repository aus
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()
🚀 Anbieter und Modelle
GPT-4
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 |
✔️ | ✔️ | ✔️ | ✔️ |
GPT-3.5
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 |
✔️ | ❌ | ✔️ | ❌ |
Andere
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 |
❌ | ❌ | ✔️ | ✔️ |
Modelle
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 |
🔗 Verwandte GPT4Free-Projekte
🎁 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 |
🤝 Mitwirken
Erstellen Sie einen Anbieter mit AI-Tool
Rufen Sie im Terminal das Skript create_provider.py
auf:
python etc/tool/create_provider.py
- Geben Sie Ihren Namen für den neuen Anbieter ein.
- Kopieren Sie den
cURL
-Befehl aus den Entwicklertools Ihres Browsers und fügen Sie ihn ein. - Lassen Sie die KI den Anbieter für Sie erstellen.
- Passen Sie den Anbieter nach Ihren Bedürfnissen an.
Anbieter erstellen
- Überprüfen Sie die aktuelle Liste potenzieller Anbieter oder finden Sie Ihre eigene Anbieterquelle!
- Erstellen Sie eine neue Datei in g4f/Provider mit dem Namen des Anbieters.
- Implementieren Sie eine Klasse, die von BaseProvider erbt.
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 ""
- Hier können Sie die Einstellungen anpassen, zum Beispiel, wenn die Website Streaming unterstützt, setzen Sie
supports_stream
aufTrue
... - Schreiben Sie Code, um den Anbieter in
create_async_generator
anzufordern und die Antwort mityield
zurückzugeben, selbst wenn es sich um eine einmalige Antwort handelt. Zögern Sie nicht, sich bei anderen Anbietern inspirieren zu lassen. - Fügen Sie den Namen des Anbieters in
g4f/Provider/__init__.py
hinzu.
from .HogeService import HogeService
__all__ = [
HogeService,
]
- Sie sind fertig! Testen Sie den Anbieter, indem Sie ihn aufrufen:
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='')
🙌 Mitwirkende
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
©️ Urheberrecht
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/>.
⭐ Sternenverlauf
📄 Lizenz
|
Dieses Projekt steht unter der GNU_GPL_v3.0-Lizenz. |