File size: 1,641 Bytes
f57a45f a80c040 fbf955a a80c040 f57a45f a80c040 fbf955a a80c040 fbf955a a80c040 f57a45f fbf955a a80c040 f57a45f a80c040 | 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 | import gradio as gr
from main import (
graph_app,
HumanMessage,
AIMessage,
SystemMessage,
DEFAULT_SYSTEM_PROMPT,
app as fastapi_app
)
def chat_fn(message, history):
messages = [SystemMessage(content=DEFAULT_SYSTEM_PROMPT)]
if history:
for turn in history:
if isinstance(turn, dict):
role = turn.get("role", "user")
content = turn.get("content", "")
if role == "assistant":
messages.append(AIMessage(content=content))
else:
messages.append(HumanMessage(content=content))
elif isinstance(turn, (list, tuple)) and len(turn) == 2:
if turn[0]:
messages.append(HumanMessage(content=str(turn[0])))
if turn[1]:
messages.append(AIMessage(content=str(turn[1])))
messages.append(HumanMessage(content=message))
output = graph_app.invoke({"messages": messages})
return output["messages"][-1].content
# Interfaz interactiva de Chat de Gradio (Modo Ilimitado 24/7 en CPU Basic)
demo = gr.ChatInterface(
fn=chat_fn,
title="⚡ Qwen 2.5 (0.5B) • Intelecto Conciso",
description="Chatbot superinteligente, hiperpreciso y conciso en español. Ilimitado 24/7 con LangGraph y llama-cpp-python en Hugging Face Spaces (16 GB RAM).",
examples=["¿Qué es la entropía?", "¿Por qué el cielo es azul?", "¿Qué es la vida?"],
)
# Integrar las rutas de FastAPI (/chat, /healthz, /docs) en la misma app
demo.app.include_router(fastapi_app.router)
if __name__ == "__main__":
demo.launch()
|