フォーク元 g4f/gpt4free
Changement de structure pour éclaircir le code et que les agents soient prédéfinis
このコミットが含まれているのは:
コミット
d3fe365e23
|
@ -11,4 +11,6 @@
|
|||
config.ini
|
||||
secrets.txt
|
||||
app.py
|
||||
typing.py
|
||||
typing.py
|
||||
_init_.py
|
||||
you.py
|
||||
|
|
|
@ -1,19 +1,16 @@
|
|||
import os
|
||||
import json
|
||||
import time
|
||||
import subprocess
|
||||
from ..typing import get_type_hints
|
||||
|
||||
from ..typing import sha256, Dict, get_type_hints
|
||||
|
||||
url = 'https://you.com'
|
||||
model = 'gpt-3.5-turbo'
|
||||
|
||||
def _create_completion(model: str, messages: list, **kwargs):
|
||||
|
||||
def _create_completion(model, messages, **kwargs):
|
||||
path = os.path.dirname(os.path.realpath(__file__))
|
||||
config = json.dumps({
|
||||
'messages': messages}, separators=(',', ':'))
|
||||
|
||||
config = json.dumps({'messages': messages}, separators=(',', ':'))
|
||||
cmd = ['python3', f'{path}/helpers/you.py', config]
|
||||
|
||||
p = subprocess.Popen(cmd, stdout=subprocess.PIPE, stderr=subprocess.STDOUT)
|
||||
|
|
|
@ -1,16 +1,8 @@
|
|||
import sys
|
||||
|
||||
from .typing import MetaModels, Union
|
||||
from .typing import MetaModels
|
||||
from . import Providers
|
||||
|
||||
|
||||
class Models(metaclass=MetaModels):
|
||||
|
||||
class model:
|
||||
name: str
|
||||
base_provider: str
|
||||
best_site: str
|
||||
|
||||
class gpt_35_turbo:
|
||||
name: str = 'gpt-3.5-turbo'
|
||||
base_provider: str = 'openai'
|
||||
|
@ -20,28 +12,20 @@ class Models(metaclass=MetaModels):
|
|||
name: str = 'gpt-4'
|
||||
base_provider: str = 'openai'
|
||||
best_site: str = Providers.Phind
|
||||
|
||||
class Utils:
|
||||
convert: dict = {
|
||||
'gpt-3.5-turbo': Models.gpt_35_turbo,
|
||||
'gpt-4': Models.gpt_4
|
||||
}
|
||||
|
||||
|
||||
class ChatCompletion:
|
||||
@staticmethod
|
||||
def create(model: Models.model or str, messages: list, provider: Providers.Provider = None, stream: bool = False, **kwargs):
|
||||
def create(model, messages, provider=None, stream=False, **kwargs):
|
||||
try:
|
||||
if isinstance(model, str):
|
||||
model = Utils.convert[model]
|
||||
|
||||
engine = model.best_site if not provider else provider
|
||||
model_name = model.name if isinstance(model, Models) else model
|
||||
|
||||
return (engine._create_completion(model.name, messages, **kwargs)
|
||||
if stream else ''.join(engine._create_completion(model.name, messages, **kwargs)))
|
||||
|
||||
return (engine._create_completion(model_name, messages, **kwargs)
|
||||
if stream else ''.join(engine._create_completion(model_name, messages, **kwargs)))
|
||||
except TypeError as e:
|
||||
print(e)
|
||||
arg: str = str(e).split("'")[1]
|
||||
print(
|
||||
f"ValueError: {engine.__name__} does not support '{arg}' argument", file=sys.stderr)
|
||||
sys.exit(1)
|
||||
arg = str(e).split("'")[1]
|
||||
raise ValueError(f"{engine.__name__} does not support '{arg}' argument") from e
|
||||
|
||||
|
||||
# you.py
|
読み込み中…
新しいイシューから参照