Spaces:
Runtime error
Runtime error
import os | |
import time | |
import json | |
import random | |
from g4f import Model, ChatCompletion, Provider | |
from flask import Flask, request, Response | |
from flask_cors import CORS | |
app = Flask(__name__) | |
CORS(app) | |
def chat_completions(): | |
streaming = request.json.get('stream', False) | |
model = request.json.get('model', 'gpt-3.5-turbo') | |
messages = request.json.get('messages') | |
response = ChatCompletion.create(model=model, stream=streaming, | |
messages=messages) | |
if not streaming: | |
while 'curl_cffi.requests.errors.RequestsError' in response: | |
response = ChatCompletion.create(model=model, stream=streaming, | |
messages=messages) | |
completion_timestamp = int(time.time()) | |
completion_id = ''.join(random.choices( | |
'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789', k=28)) | |
return { | |
'id': 'chatcmpl-%s' % completion_id, | |
'object': 'chat.completion', | |
'created': completion_timestamp, | |
'model': model, | |
'usage': { | |
'prompt_tokens': None, | |
'completion_tokens': None, | |
'total_tokens': None | |
}, | |
'choices': [{ | |
'message': { | |
'role': 'assistant', | |
'content': response | |
}, | |
'finish_reason': 'stop', | |
'index': 0 | |
}] | |
} | |
def stream(): | |
for token in response: | |
completion_timestamp = int(time.time()) | |
completion_id = ''.join(random.choices( | |
'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789', k=28)) | |
completion_data = { | |
'id': f'chatcmpl-{completion_id}', | |
'object': 'chat.completion.chunk', | |
'created': completion_timestamp, | |
'model': 'gpt-3.5-turbo-0301', | |
'choices': [ | |
{ | |
'delta': { | |
'content': token | |
}, | |
'index': 0, | |
'finish_reason': None | |
} | |
] | |
} | |
yield 'data: %s\n\n' % json.dumps(completion_data, separators=(',' ':')) | |
time.sleep(0.1) | |
return app.response_class(stream(), mimetype='text/event-stream') | |
if __name__ == '__main__': | |
config = { | |
'host': '0.0.0.0', | |
'port': 1337, | |
'debug': True | |
} | |
app.run(**config) | |