Batuto_Deep / app.py
ivanoctaviogaitansantos's picture
Update app.py
302e2f8 verified
import os
import gradio as gr
from sambanova import SambaNova
# Configuración
API_KEY = os.getenv("SAMBANOVA_API_KEY")
def chat_with_sambanova(message, history):
if not API_KEY:
return "❌ Error: Configura SAMBANOVA_API_KEY en los Secrets de Hugging Face"
try:
# Inicializar cliente SambaNova
client = SambaNova(
api_key=API_KEY,
base_url="https://api.sambanova.ai/v1",
)
# Construir mensajes
messages = [{"role": "system", "content": "Eres un asistente útil que responde en español de forma clara y concisa."}]
# Agregar historial
for user_msg, bot_msg in history:
messages.append({"role": "user", "content": user_msg})
if bot_msg: # Solo agregar si no está vacío
messages.append({"role": "assistant", "content": bot_msg})
# Agregar mensaje actual
messages.append({"role": "user", "content": message})
# Llamar a la API
response = client.chat.completions.create(
model="DeepSeek-V3.1",
messages=messages,
temperature=0.7,
top_p=0.9,
max_tokens=1024
)
return response.choices[0].message.content
except Exception as e:
return f"❌ Error: {str(e)}"
# Crear interfaz Gradio
with gr.Blocks(title="🚀 Batuto Deep - SambaNova", theme=gr.themes.Soft()) as demo:
gr.Markdown("""
# 🚀 Batuto Deep
### Chat con DeepSeek-V3.1 via SambaNova API
""")
chatbot = gr.Chatbot(
label="💬 Conversación",
height=500,
show_copy_button=True
)
with gr.Row():
msg = gr.Textbox(
label="Tu mensaje",
placeholder="Escribe tu mensaje aquí...",
scale=4,
container=False
)
with gr.Row():
submit_btn = gr.Button("📤 Enviar", variant="primary")
clear_btn = gr.Button("🗑️ Limpiar")
# Event handlers
def respond(message, chat_history):
if not message.strip():
return "", chat_history
bot_message = chat_with_sambanova(message, chat_history)
chat_history.append((message, bot_message))
return "", chat_history
submit_btn.click(
respond,
[msg, chatbot],
[msg, chatbot]
)
msg.submit(
respond,
[msg, chatbot],
[msg, chatbot]
)
clear_btn.click(
lambda: ([], ""),
None,
[chatbot, msg]
)
if __name__ == "__main__":
demo.launch(share=False)