The official gpt4free repository | various collection of powerful language models

Tekky 5f49264768 ~ gui system prompt spacing 8 months ago
.github aba4b96f23 Add new Client API with Docs 9 months ago
docker a28bab9387 Add aiohttp_socks to requirements 10 months ago
docs cbfa5ee7e9 Fix some typos 9 months ago
etc 5b45478319 Change uses of whitelist to allowlist in translate_readme.py. 9 months ago
g4f 5f49264768 ~ gui system prompt spacing 8 months ago
.gitattributes 0faeb0b59c ~ 1 year ago
.gitignore adf16fff4b ~ 8 months ago
.gitpod.yml 509a2b077a Create .gitpod.yml 1 year ago
CODE_OF_CONDUCT.md 0faeb0b59c ~ 1 year ago
CONTRIBUTING.md 0faeb0b59c ~ 1 year ago
LEGAL_NOTICE.md f38b0636d0 ~ 10 months ago
LICENSE 0faeb0b59c ~ 1 year ago
MANIFEST.in 65695f4510 make sure npm is added to lib 1 year ago
README-DE.md 5e9a95a58e Change GeekGPT and FakeGPT status to inactive as owner statement: https://linux.do/t/topic/1051 9 months ago
README.md eb48299195 Enable Liaobots, disable Phind provider 8 months ago
SECURITY.md 0faeb0b59c ~ 1 year ago
docker-compose.yml b2d02ed624 Change default port for gui 11 months ago
requirements-min.txt feb83c168b New minimum requirements (#1515) 10 months ago
requirements.txt ccac427ac1 Fiy unittests with duckduckgo-search 5.0 8 months ago
setup.py ccac427ac1 Fiy unittests with duckduckgo-search 5.0 8 months ago

README-DE.md

<img src="https://img.shields.io/badge/open in-🇬🇧 english-blue.svg" alt="Open in EN">

248433934-7886223b-c1d1-4260-82aa-da5741f303bb

Kauf mir einen Kaffee auf ko-fi.com

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

📚 Inhaltsverzeichnis

🛠️ Erste Schritte

Voraussetzungen:

  1. Python herunterladen und installieren (Version 3.10+ wird empfohlen).

Projekt einrichten:

Installation über pypi
pip install -U g4f
oder
  1. Klonen Sie das GitHub-Repository:
git clone https://github.com/xtekky/gpt4free.git
  1. Navigieren Sie zum Projektverzeichnis:
cd gpt4free
  1. (Empfohlen) Erstellen Sie eine Python-Virtual-Umgebung: Sie können der Python-Offiziellen Dokumentation für virtuelle Umgebungen folgen.
python3 -m venv venv
  1. Aktivieren Sie die virtuelle Umgebung:
    • Unter Windows: .\venv\Scripts\activate
    • Unter macOS und Linux: source venv/bin/activate
  2. Installieren Sie die erforderlichen Python-Pakete aus requirements.txt:
pip install -r requirements.txt
  1. 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.

  1. Stellen Sie zunächst sicher, dass sowohl Docker als auch Docker Compose installiert sind.

  2. Klonen Sie das GitHub-Repo:

git clone https://github.com/xtekky/gpt4free.git
  1. Navigieren Sie zum Projektverzeichnis:
cd gpt4free
  1. Erstellen Sie das Docker-Image:
docker-compose build
  1. 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 mit docker-compose build neu erstellen.

💡 Verwendung

Das g4f Paket

ChatCompletion

import 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)
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 ✔️ ✔️ Active
chat.geekgpt.org g4f.Provider.GeekGpt ✔️ ✔️ ✔️ Inactive
gptchatly.com g4f.Provider.GptChatly ✔️ ✔️ Unknown
liaobots.site g4f.Provider.Liaobots ✔️ ✔️ ✔️ Unknown
www.phind.com g4f.Provider.Phind ✔️ ✔️ Unknown
raycast.com g4f.Provider.Raycast ✔️ ✔️ ✔️ Unknown ✔️

GPT-3.5

Website Provider GPT-3.5 GPT-4 Stream Status Auth
www.aitianhu.com g4f.Provider.AItianhu ✔️ ✔️ Unknown
chat3.aiyunos.top g4f.Provider.AItianhuSpace ✔️ ✔️ Unknown
e.aiask.me g4f.Provider.AiAsk ✔️ ✔️ Unknown
chat-gpt.org g4f.Provider.Aichat ✔️ Unknown
www.chatbase.co g4f.Provider.ChatBase ✔️ ✔️ Active
chatforai.store g4f.Provider.ChatForAi ✔️ ✔️ Unknown
chatgpt.ai g4f.Provider.ChatgptAi ✔️ ✔️ Active
chatgptx.de g4f.Provider.ChatgptX ✔️ ✔️ Unknown
chat-shared2.zhile.io g4f.Provider.FakeGpt ✔️ ✔️ Inactive
freegpts1.aifree.site g4f.Provider.FreeGpt ✔️ ✔️ Active
gptalk.net g4f.Provider.GPTalk ✔️ ✔️ Active
ai18.gptforlove.com g4f.Provider.GptForLove ✔️ ✔️ Active
gptgo.ai g4f.Provider.GptGo ✔️ ✔️ Active
hashnode.com g4f.Provider.Hashnode ✔️ ✔️ Active
app.myshell.ai g4f.Provider.MyShell ✔️ ✔️ Unknown
noowai.com g4f.Provider.NoowAi ✔️ ✔️ Unknown
chat.openai.com g4f.Provider.OpenaiChat ✔️ ✔️ Unknown ✔️
theb.ai g4f.Provider.Theb ✔️ ✔️ Unknown ✔️
sdk.vercel.ai g4f.Provider.Vercel ✔️ ✔️ Unknown
you.com g4f.Provider.You ✔️ ✔️ Active
chat9.yqcloud.top g4f.Provider.Yqcloud ✔️ ✔️ Unknown
chat.acytoo.com g4f.Provider.Acytoo ✔️ ✔️ Inactive
aibn.cc g4f.Provider.Aibn ✔️ ✔️ Inactive
ai.ls g4f.Provider.Ails ✔️ ✔️ Inactive
chatgpt4online.org g4f.Provider.Chatgpt4Online ✔️ ✔️ Inactive
chat.chatgptdemo.net g4f.Provider.ChatgptDemo ✔️ ✔️ Inactive
chatgptduo.com g4f.Provider.ChatgptDuo ✔️ Inactive
chatgptfree.ai g4f.Provider.ChatgptFree ✔️ Inactive
chatgptlogin.ai g4f.Provider.ChatgptLogin ✔️ ✔️ Inactive
cromicle.top g4f.Provider.Cromicle ✔️ ✔️ Inactive
gptgod.site g4f.Provider.GptGod ✔️ ✔️ Inactive
opchatgpts.net g4f.Provider.Opchatgpts ✔️ ✔️ Inactive
chat.ylokh.xyz g4f.Provider.Ylokh ✔️ ✔️ Inactive

Andere

Website Provider GPT-3.5 GPT-4 Stream Status Auth
bard.google.com g4f.Provider.Bard Unknown ✔️
deepinfra.com g4f.Provider.DeepInfra ✔️ Active
huggingface.co g4f.Provider.HuggingChat ✔️ Active ✔️
www.llama2.ai g4f.Provider.Llama2 ✔️ Unknown
open-assistant.io g4f.Provider.OpenAssistant ✔️ Inactive ✔️

Modelle

Model Base Provider Provider Website
palm Google 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 Stars Forks Issues Pull Requests
gpt4free-ts Stars Forks Issues Pull Requests
Free AI API's & Potential Providers List Stars Forks Issues Pull Requests
ChatGPT-Clone Stars Forks Issues Pull Requests
ChatGpt Discord Bot Stars Forks Issues Pull Requests
Nyx-Bot (Discord) Stars Forks Issues Pull Requests
LangChain gpt4free Stars Forks Issues Pull Requests
ChatGpt Telegram Bot Stars Forks Issues Pull Requests
ChatGpt Line Bot Stars Forks Issues Pull Requests
Action Translate Readme Stars Forks Issues Pull Requests
Langchain Document GPT Stars Forks Issues Pull Requests

🤝 Mitwirken

Erstellen Sie einen Anbieter mit AI-Tool

Rufen Sie im Terminal das Skript create_provider.py auf:

python etc/tool/create_provider.py
  1. Geben Sie Ihren Namen für den neuen Anbieter ein.
  2. Kopieren Sie den cURL-Befehl aus den Entwicklertools Ihres Browsers und fügen Sie ihn ein.
  3. Lassen Sie die KI den Anbieter für Sie erstellen.
  4. Passen Sie den Anbieter nach Ihren Bedürfnissen an.

Anbieter erstellen

  1. Überprüfen Sie die aktuelle Liste potenzieller Anbieter oder finden Sie Ihre eigene Anbieterquelle!
  2. Erstellen Sie eine neue Datei in g4f/Provider mit dem Namen des Anbieters.
  3. 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 ""
  1. Hier können Sie die Einstellungen anpassen, zum Beispiel, wenn die Website Streaming unterstützt, setzen Sie supports_stream auf True...
  2. Schreiben Sie Code, um den Anbieter in 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.
  3. Fügen Sie den Namen des Anbieters in g4f/Provider/__init__.py hinzu.
from .HogeService import HogeService

__all__ = [
  HogeService,
]
  1. 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

    <img width="500" alt="Star History Chart" src="https://api.star-history.com/svg?repos=xtekky/gpt4free&type=Date">

📄 Lizenz


Dieses Projekt steht unter der GNU_GPL_v3.0-Lizenz.

(🔼 Zurück nach oben)