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()