File size: 2,138 Bytes
b36c7d9
9b71c73
acdfb2b
9b71c73
1d010bc
9b71c73
acdfb2b
 
 
 
1d010bc
acdfb2b
 
 
9b71c73
 
 
 
acdfb2b
9b71c73
acdfb2b
9b71c73
acdfb2b
 
9b71c73
acdfb2b
 
9b71c73
 
 
 
 
 
acdfb2b
 
9b71c73
 
acdfb2b
 
 
9b71c73
acdfb2b
9b71c73
 
acdfb2b
 
9b71c73
acdfb2b
9b71c73
 
acdfb2b
 
 
 
9b71c73
 
 
 
 
b36c7d9
9b71c73
 
b36c7d9
acdfb2b
1d010bc
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
# app.py (Slight modification)
from config import Flask, pipeline_dict, Response, convHandler, get_user_id
from application.chat_inference import ChatInference
from flask import render_template, request, make_response
from application.utils.image_captioning import ImageCaptioning
from application.utils.text_to_speech import generate_tts  # Import

app = Flask(__name__, template_folder='application/templates', static_folder='application/static')

chat_inference = ChatInference()
image_captioning = ImageCaptioning()

@app.route('/')
def home():
    user_id = get_user_id()
    response = make_response(render_template('index.html'))
    response.set_cookie('user_id', user_id)  # Set the cookie
    return response

@app.route('/completions', methods=['POST'])
def completeions():
    user_id = get_user_id()
    data = request.json
    models = pipeline_dict['api']['models']
    if data.get('model', None) not in models:
        return "Model Not Found", 404
    model_info = models[data['model']]
    data.update({
        "base_url": model_info['api_url'],
        "type": model_info['type']
    })
    return chat_inference.chat(data=data, handle_stream=pipeline_dict['handle_stream'], user=user_id)

@app.route('/convs')
def get_conv():
    user_id = get_user_id()
    return convHandler.get_conv(user_id)

@app.route('/create', methods=['POST'])
def create_conv():
    user_id = get_user_id()
    sysPrompt = request.json.get('system_prompt', '')
    return convHandler.create_conv(ip=user_id, sysPrompt=sysPrompt)

@app.route('/fetch', methods=['POST'])
def fetch():
    user_id = get_user_id()
    convId = request.json.get('convId')
    return convHandler.fetch_conv(convId=convId, ip=user_id)

@app.route('/models')
def models():
    return list(pipeline_dict['api']['models'].keys())

@app.route('/tts')  # New route for TTS
def tts():
    text = request.args.get('text')
    if not text:
        return "No text provided", 400
    audio_stream = generate_tts(text)  # Await the result
    return Response(audio_stream, mimetype="audio/wav")


if __name__ == "__main__":
    app.run(host="0.0.0.0", port=7860, debug=False)