| | import os |
| | import gradio as gr |
| | from gtts import gTTS |
| | import tempfile |
| | from together import Together |
| |
|
| | |
| | TOGETHER_API_KEY = os.getenv("TOGETHER_API_KEY") |
| | client = Together(api_key=TOGETHER_API_KEY) |
| |
|
| | def speak_text(text): |
| | tts = gTTS(text) |
| | with tempfile.NamedTemporaryFile(delete=False, suffix=".mp3") as fp: |
| | tts.save(fp.name) |
| | return fp.name |
| |
|
| | def respond(message, history): |
| | history = history or [] |
| | prompt = "" |
| | for user_msg, bot_msg in history: |
| | prompt += f"<|user|> {user_msg}\n<|assistant|> {bot_msg}\n" |
| | prompt += f"<|user|> {message}\n<|assistant|>" |
| |
|
| | response = client.chat.completions.create( |
| | model="meta-llama/Llama-3-8B-Instruct", |
| | messages=[{"role": "user", "content": prompt}], |
| | max_tokens=512, |
| | temperature=0.7, |
| | top_p=0.95 |
| | ) |
| |
|
| | answer = response.choices[0].message.content.strip() |
| | history.append((message, answer)) |
| | audio_path = speak_text(answer) |
| | return history, history, audio_path |
| |
|
| | with gr.Blocks() as demo: |
| | gr.Markdown("# Sambit AI 🤖") |
| | chatbot = gr.Chatbot([], label="Chat with AI", type="messages") |
| | msg = gr.Textbox(label="Type your message here") |
| | audio_output = gr.Audio(label="AI Voice", interactive=False) |
| | clear = gr.Button("Clear Chat") |
| | state = gr.State([]) |
| |
|
| | msg.submit(respond, [msg, state], [chatbot, state, audio_output]) |
| | clear.click(lambda: ([], [], None), None, [chatbot, state, audio_output]) |
| |
|
| | demo.launch() |
| |
|