From c617b18d12c2f9d82ce7c73aae46d353b83f625a Mon Sep 17 00:00:00 2001 From: Heiner Lohaus Date: Mon, 1 Jan 2024 17:48:57 +0100 Subject: Add support for all models Add AbstractProvider class Add ProviderType type Add get_last_provider function Add version module and VersionUtils Display used provider in gui Fix error response in api --- g4f/gui/server/backend.py | 32 +++++++++++++++++++++----------- 1 file changed, 21 insertions(+), 11 deletions(-) (limited to 'g4f/gui/server') diff --git a/g4f/gui/server/backend.py b/g4f/gui/server/backend.py index 105edb43..1aa506b2 100644 --- a/g4f/gui/server/backend.py +++ b/g4f/gui/server/backend.py @@ -4,7 +4,7 @@ from g4f.Provider import __providers__ import json from flask import request, Flask from .internet import get_search_message -from g4f import debug +from g4f import debug, version debug.logging = True @@ -53,8 +53,8 @@ class Backend_Api: def version(self): return { - "version": debug.get_version(), - "lastet_version": debug.get_latest_version(), + "version": version.utils.current_version, + "lastet_version": version.utils.latest_version, } def _gen_title(self): @@ -65,7 +65,7 @@ class Backend_Api: def _conversation(self): #jailbreak = request.json['jailbreak'] messages = request.json['meta']['content']['parts'] - if request.json['internet_access']: + if request.json.get('internet_access'): messages[-1]["content"] = get_search_message(messages[-1]["content"]) model = request.json.get('model') model = model if model else g4f.models.default @@ -74,20 +74,30 @@ class Backend_Api: def try_response(): try: - yield from g4f.ChatCompletion.create( + first = True + for chunk in g4f.ChatCompletion.create( model=model, provider=provider, messages=messages, stream=True, ignore_stream_and_auth=True - ) + ): + if first: + first = False + yield json.dumps({ + 'type' : 'provider', + 'provider': g4f.get_last_provider(True) + }) + "\n" + yield json.dumps({ + 'type' : 'content', + 'content': chunk, + }) + "\n" + except Exception as e: - print(e) yield json.dumps({ - 'code' : 'G4F_ERROR', - '_action': '_ask', - 'success': False, - 'error' : f'{e.__class__.__name__}: {e}' + 'type' : 'error', + 'error': f'{e.__class__.__name__}: {e}' }) + raise e return self.app.response_class(try_response(), mimetype='text/event-stream') \ No newline at end of file -- cgit v1.2.3