Spaces:
Sleeping
Sleeping
Commit
β’
4518e15
1
Parent(s):
fd17307
Speed up chat display
Browse files- app.py +14 -8
- llm.py +7 -6
- options.py +1 -1
app.py
CHANGED
@@ -2,6 +2,7 @@ import os
|
|
2 |
|
3 |
import gradio as gr
|
4 |
|
|
|
5 |
from llm import end_interview, get_problem, read_last_message, send_request, speech_to_text, test_connection, text_to_speech
|
6 |
from options import fixed_messages, topics_list
|
7 |
|
@@ -33,6 +34,11 @@ def add_interviewer_message(message):
|
|
33 |
return f
|
34 |
|
35 |
|
|
|
|
|
|
|
|
|
|
|
36 |
def hide_solution():
|
37 |
solution_acc = gr.Accordion("Solution", open=False)
|
38 |
end_btn = gr.Button("Finish the interview", interactive=False)
|
@@ -76,22 +82,22 @@ with gr.Blocks() as demo:
|
|
76 |
with gr.Column(scale=1):
|
77 |
try:
|
78 |
audio_test = text_to_speech("Handshake")
|
79 |
-
gr.Markdown("TTS status:
|
80 |
except:
|
81 |
-
gr.Markdown("TTS status:
|
|
|
82 |
try:
|
83 |
text_test = speech_to_text(audio_test, False)
|
84 |
-
gr.Markdown("STT status:
|
85 |
except:
|
86 |
-
gr.Markdown("STT status:
|
87 |
|
88 |
try:
|
89 |
test_connection()
|
90 |
-
gr.Markdown("LLM status:
|
91 |
except:
|
92 |
-
gr.Markdown("LLM status:
|
93 |
|
94 |
-
pass
|
95 |
with gr.Tab("Coding") as coding_tab:
|
96 |
chat_history = gr.State([])
|
97 |
previous_code = gr.State("")
|
@@ -164,7 +170,7 @@ with gr.Blocks() as demo:
|
|
164 |
|
165 |
audio_input.stop_recording(fn=speech_to_text, inputs=[audio_input], outputs=[message]).then(
|
166 |
fn=lambda: None, inputs=None, outputs=[audio_input]
|
167 |
-
).then(
|
168 |
fn=send_request,
|
169 |
inputs=[code, previous_code, message, chat_history, chat],
|
170 |
outputs=[chat_history, chat, message, previous_code],
|
|
|
2 |
|
3 |
import gradio as gr
|
4 |
|
5 |
+
from config import LLM_NAME, STT_NAME, TTS_NAME
|
6 |
from llm import end_interview, get_problem, read_last_message, send_request, speech_to_text, test_connection, text_to_speech
|
7 |
from options import fixed_messages, topics_list
|
8 |
|
|
|
34 |
return f
|
35 |
|
36 |
|
37 |
+
def add_candidate_message(message, chat):
|
38 |
+
chat.append((message, None))
|
39 |
+
return chat
|
40 |
+
|
41 |
+
|
42 |
def hide_solution():
|
43 |
solution_acc = gr.Accordion("Solution", open=False)
|
44 |
end_btn = gr.Button("Finish the interview", interactive=False)
|
|
|
82 |
with gr.Column(scale=1):
|
83 |
try:
|
84 |
audio_test = text_to_speech("Handshake")
|
85 |
+
gr.Markdown(f"TTS status: π’. Model: {TTS_NAME}")
|
86 |
except:
|
87 |
+
gr.Markdown(f"TTS status: π΄. Model: {TTS_NAME}")
|
88 |
+
|
89 |
try:
|
90 |
text_test = speech_to_text(audio_test, False)
|
91 |
+
gr.Markdown(f"STT status: π’. Model: {STT_NAME}")
|
92 |
except:
|
93 |
+
gr.Markdown(f"STT status: π΄. Model: {STT_NAME}")
|
94 |
|
95 |
try:
|
96 |
test_connection()
|
97 |
+
gr.Markdown(f"LLM status: π’. Model: {LLM_NAME}")
|
98 |
except:
|
99 |
+
gr.Markdown(f"LLM status: π΄. Model: {LLM_NAME}")
|
100 |
|
|
|
101 |
with gr.Tab("Coding") as coding_tab:
|
102 |
chat_history = gr.State([])
|
103 |
previous_code = gr.State("")
|
|
|
170 |
|
171 |
audio_input.stop_recording(fn=speech_to_text, inputs=[audio_input], outputs=[message]).then(
|
172 |
fn=lambda: None, inputs=None, outputs=[audio_input]
|
173 |
+
).then(fn=add_candidate_message, inputs=[message, chat], outputs=[chat]).then(
|
174 |
fn=send_request,
|
175 |
inputs=[code, previous_code, message, chat_history, chat],
|
176 |
outputs=[chat_history, chat, message, previous_code],
|
llm.py
CHANGED
@@ -89,7 +89,7 @@ def send_request(code, previous_code, message, chat_history, chat_display, clien
|
|
89 |
reply = response.choices[0].message.content.strip()
|
90 |
|
91 |
chat_history.append({"role": "assistant", "content": reply})
|
92 |
-
chat_display
|
93 |
|
94 |
return chat_history, chat_display, "", code
|
95 |
|
@@ -117,7 +117,7 @@ def text_to_speech(text):
|
|
117 |
|
118 |
if TTS_TYPE == "OPENAI_API":
|
119 |
client = OpenAI(base_url=TTS_URL, api_key=os.getenv(f"{TTS_TYPE}_KEY"))
|
120 |
-
response = client.audio.speech.create(model=TTS_NAME, voice="alloy", input=text)
|
121 |
elif TTS_TYPE == "HF_API":
|
122 |
headers = {"Authorization": "Bearer " + os.getenv(f"{STT_TYPE}_KEY")}
|
123 |
response = requests.post(TTS_URL, headers=headers)
|
@@ -127,8 +127,9 @@ def text_to_speech(text):
|
|
127 |
|
128 |
|
129 |
def read_last_message(chat_display):
|
130 |
-
|
131 |
-
|
132 |
-
|
133 |
-
|
|
|
134 |
return None
|
|
|
89 |
reply = response.choices[0].message.content.strip()
|
90 |
|
91 |
chat_history.append({"role": "assistant", "content": reply})
|
92 |
+
chat_display[-1][1] = reply
|
93 |
|
94 |
return chat_history, chat_display, "", code
|
95 |
|
|
|
117 |
|
118 |
if TTS_TYPE == "OPENAI_API":
|
119 |
client = OpenAI(base_url=TTS_URL, api_key=os.getenv(f"{TTS_TYPE}_KEY"))
|
120 |
+
response = client.audio.speech.create(model=TTS_NAME, voice="alloy", response_format="opus", input=text)
|
121 |
elif TTS_TYPE == "HF_API":
|
122 |
headers = {"Authorization": "Bearer " + os.getenv(f"{STT_TYPE}_KEY")}
|
123 |
response = requests.post(TTS_URL, headers=headers)
|
|
|
127 |
|
128 |
|
129 |
def read_last_message(chat_display):
|
130 |
+
if len(chat_display) > 0:
|
131 |
+
last_message = chat_display[-1][1]
|
132 |
+
if last_message is not None:
|
133 |
+
audio = text_to_speech(last_message)
|
134 |
+
return audio
|
135 |
return None
|
options.py
CHANGED
@@ -25,7 +25,7 @@ fixed_messages = {
|
|
25 |
"intro": "Welcome to the coding interview! I am your AI interview assistant. For the start select the difficulty and topic of the problem you would like to solve. Then click on the 'Generate a problem' button. Good luck!",
|
26 |
"start": (
|
27 |
"Please take a moment to read the problem statement. Then you can share you initial thoughts and ask any questions you may have. "
|
28 |
-
"Please use the record button to communicate with me. Try to think out loud and record all you comments and questions as if it is the real interview."
|
29 |
),
|
30 |
"end": "The interview has concluded. Thank you for your participation! In a moment I will provide a detailed feedback on your performance.",
|
31 |
"error": "An error occurred. Please try again.",
|
|
|
25 |
"intro": "Welcome to the coding interview! I am your AI interview assistant. For the start select the difficulty and topic of the problem you would like to solve. Then click on the 'Generate a problem' button. Good luck!",
|
26 |
"start": (
|
27 |
"Please take a moment to read the problem statement. Then you can share you initial thoughts and ask any questions you may have. "
|
28 |
+
# "Please use the record button to communicate with me. Try to think out loud and record all you comments and questions as if it is the real interview."
|
29 |
),
|
30 |
"end": "The interview has concluded. Thank you for your participation! In a moment I will provide a detailed feedback on your performance.",
|
31 |
"error": "An error occurred. Please try again.",
|