HirCoir commited on
Commit
a3db64e
·
verified ·
1 Parent(s): 7c79a91

Update app.py

Browse files
Files changed (1) hide show
  1. app.py +1 -77
app.py CHANGED
@@ -1,5 +1,4 @@
1
  import os
2
- import json
3
  import random
4
  import string
5
  import subprocess
@@ -11,22 +10,17 @@ import markdown
11
  import threading
12
  from queue import Queue
13
  import time
14
- import uuid
15
 
16
  app = Flask(__name__)
17
 
18
  # Define directories
19
  file_folder = os.path.dirname(os.path.abspath(__file__))
20
  temp_audio_folder = os.path.join(file_folder, 'temp_audio')
21
- chats_folder = os.path.join(file_folder, 'chats')
22
- sessions_folder = os.path.join(file_folder, 'sessions')
23
  model_folder = None
24
  piper_binary_path = os.path.join(file_folder, 'piper')
25
 
26
  # Create necessary directories
27
  os.makedirs(temp_audio_folder, exist_ok=True)
28
- os.makedirs(chats_folder, exist_ok=True)
29
- os.makedirs(sessions_folder, exist_ok=True)
30
 
31
  # Check default user folder
32
  default_user_folder = "./"
@@ -57,27 +51,6 @@ def get_ollama_models(base_host=DEFAULT_BASE_HOST):
57
  except:
58
  return []
59
 
60
- def load_chat_history(session_id):
61
- try:
62
- session_file = os.path.join(sessions_folder, f'{session_id}.json')
63
- with open(session_file, 'r', encoding='utf-8') as f:
64
- return json.load(f).get('messages', [])
65
- except:
66
- return []
67
-
68
- def save_chat(session_id, messages):
69
- if not messages:
70
- return None
71
-
72
- session_file = os.path.join(sessions_folder, f'{session_id}.json')
73
- with open(session_file, 'w', encoding='utf-8') as f:
74
- json.dump({
75
- 'timestamp': datetime.now().strftime('%Y-%m-%d %H:%M:%S'),
76
- 'messages': messages
77
- }, f, ensure_ascii=False, indent=2)
78
-
79
- return session_id
80
-
81
  def remove_markdown(text):
82
  html_content = markdown.markdown(text)
83
  soup = BeautifulSoup(html_content, 'html.parser')
@@ -119,68 +92,22 @@ def convert_to_speech(text, model_name, remove_md=False):
119
 
120
  return None
121
 
122
- def set_default_models():
123
- tts_models = get_available_models()
124
- ollama_models = get_ollama_models()
125
-
126
- default_tts_model = "RecomendacionesConMiau" if "RecomendacionesConMiau" in tts_models else None
127
- default_ollama_model = "llama3.2:1b" if "llama3.2:1b" in ollama_models else None
128
-
129
- return default_tts_model, default_ollama_model
130
-
131
  @app.route('/')
132
  def index():
133
- session_id = str(uuid.uuid4())
134
  tts_models = get_available_models()
135
- chat_files = sorted([f for f in os.listdir(chats_folder) if f.endswith('.json')], reverse=True)
136
- default_tts_model, default_ollama_model = set_default_models()
137
- return render_template('index.html', tts_models=tts_models, chat_files=chat_files, default_tts_model=default_tts_model, default_ollama_model=default_ollama_model, session_id=session_id)
138
 
139
  @app.route('/api/list_ollama_models')
140
  def list_ollama_models():
141
  base_host = request.args.get('base_host', DEFAULT_BASE_HOST)
142
  return jsonify(models=get_ollama_models(base_host))
143
 
144
- @app.route('/api/load_chat/<session_id>')
145
- def load_chat(session_id):
146
- messages = load_chat_history(session_id)
147
- return jsonify(messages=messages)
148
-
149
- @app.route('/api/update_message', methods=['POST'])
150
- def update_message():
151
- data = request.json
152
- session_id = data.get('session_id')
153
- message_index = data.get('message_index')
154
- new_content = data.get('content')
155
- is_user = data.get('is_user', False)
156
-
157
- if not session_id or message_index is None or not new_content:
158
- return jsonify(error="Missing required parameters"), 400
159
-
160
- messages = load_chat_history(session_id)
161
- if message_index >= len(messages):
162
- return jsonify(error="Invalid message index"), 400
163
-
164
- # Update the message content
165
- messages[message_index]['content'] = new_content
166
-
167
- # If it's a user message, regenerate all subsequent responses
168
- if is_user:
169
- # Keep messages up to and including the edited message
170
- messages = messages[:message_index + 1]
171
-
172
- # Save the updated chat
173
- save_chat(session_id, messages)
174
-
175
- return jsonify(success=True, messages=messages)
176
-
177
  @app.route('/api/chat', methods=['POST'])
178
  def chat():
179
  data = request.json
180
  base_host = data.get('base_host', DEFAULT_BASE_HOST)
181
  model = data.get('model')
182
  messages = data.get('messages', [])
183
- session_id = data.get('session_id')
184
 
185
  def generate():
186
  queue = Queue()
@@ -200,9 +127,6 @@ def chat():
200
  complete_response = content
201
  yield f"data: {json.dumps({'chunk': content})}\n\n"
202
  elif msg_type == "done":
203
- # Save chat history
204
- messages.append({"role": "assistant", "content": complete_response})
205
- save_chat(session_id, messages)
206
  yield f"data: {json.dumps({'done': complete_response})}\n\n"
207
  break
208
 
 
1
  import os
 
2
  import random
3
  import string
4
  import subprocess
 
10
  import threading
11
  from queue import Queue
12
  import time
 
13
 
14
  app = Flask(__name__)
15
 
16
  # Define directories
17
  file_folder = os.path.dirname(os.path.abspath(__file__))
18
  temp_audio_folder = os.path.join(file_folder, 'temp_audio')
 
 
19
  model_folder = None
20
  piper_binary_path = os.path.join(file_folder, 'piper')
21
 
22
  # Create necessary directories
23
  os.makedirs(temp_audio_folder, exist_ok=True)
 
 
24
 
25
  # Check default user folder
26
  default_user_folder = "./"
 
51
  except:
52
  return []
53
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
54
  def remove_markdown(text):
55
  html_content = markdown.markdown(text)
56
  soup = BeautifulSoup(html_content, 'html.parser')
 
92
 
93
  return None
94
 
 
 
 
 
 
 
 
 
 
95
  @app.route('/')
96
  def index():
 
97
  tts_models = get_available_models()
98
+ return render_template('index.html', tts_models=tts_models)
 
 
99
 
100
  @app.route('/api/list_ollama_models')
101
  def list_ollama_models():
102
  base_host = request.args.get('base_host', DEFAULT_BASE_HOST)
103
  return jsonify(models=get_ollama_models(base_host))
104
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
105
  @app.route('/api/chat', methods=['POST'])
106
  def chat():
107
  data = request.json
108
  base_host = data.get('base_host', DEFAULT_BASE_HOST)
109
  model = data.get('model')
110
  messages = data.get('messages', [])
 
111
 
112
  def generate():
113
  queue = Queue()
 
127
  complete_response = content
128
  yield f"data: {json.dumps({'chunk': content})}\n\n"
129
  elif msg_type == "done":
 
 
 
130
  yield f"data: {json.dumps({'done': complete_response})}\n\n"
131
  break
132