ivanoctaviogaitansantos commited on
Commit
fcd1876
·
verified ·
1 Parent(s): b1a0f40

Update app.py

Browse files
Files changed (1) hide show
  1. app.py +8 -116
app.py CHANGED
@@ -1,122 +1,14 @@
 
1
  import os
2
- import gradio as gr
3
- from tavily import TavilyClient
4
- from openai import OpenAI
5
- import requests # Para MCP fallback
6
 
7
- # =======================================================
8
- # CONFIGURACIÓN (Secrets)
9
- # =======================================================
10
- TAVILY_API_KEY = os.getenv("TAVILY_API_KEY")
11
- OPENAI_API_KEY = os.getenv("OPENAI_API_KEY")
12
 
13
- if not TAVILY_API_KEY:
14
- raise gr.Error("Falta TAVILY_API_KEY en Secrets (usa tvly-...)")
15
- if not OPENAI_API_KEY:
16
- raise gr.Error("Falta OPENAI_API_KEY en Secrets (obtén en openai.com)")
17
-
18
- # Cliente Tavily (tu ejemplo exacto)
19
- tavily_client = TavilyClient(api_key=TAVILY_API_KEY)
20
-
21
- # Cliente OpenAI
22
- openai_client = OpenAI(api_key=OPENAI_API_KEY)
23
-
24
- # MCP endpoint de Tavily (de tu paste, para queries expert)
25
- MCP_URL = "https://mcp.tavily.com/mcp/?tavilyApiKey=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" # Tu dev key; cambia si es prod
26
-
27
- # =======================================================
28
- # Función LLM: OpenAI GPT-3.5-turbo (sustituye HF)
29
- # =======================================================
30
- def query_openai(prompt):
31
- try:
32
- response = openai_client.chat.completions.create(
33
- model="gpt-3.5-turbo",
34
- messages=[{"role": "user", "content": prompt}],
35
- max_tokens=500,
36
- temperature=0.7
37
- )
38
- return response.choices[0].message.content.strip()
39
- except Exception as e:
40
- return f"[Error OpenAI] {str(e)}"
41
-
42
- # =======================================================
43
- # Fallback MCP: Usa Tavily Expert via endpoint (de tu paste)
44
- # =======================================================
45
- def query_mcp(query, instructions="Summarize key facts"):
46
- try:
47
- payload = {"query": query, "instructions": instructions}
48
- response = requests.post(MCP_URL, json=payload, timeout=30)
49
- if response.status_code == 200:
50
- return response.json().get("summary", "[MCP vacío]")
51
- return "[Error MCP 404/500]"
52
- except Exception as e:
53
- return f"[Error MCP] {str(e)}"
54
-
55
- # =======================================================
56
- # Agente: Búsqueda Tavily + LLM OpenAI
57
- # =======================================================
58
- def agente_inteligente(pregunta):
59
- if not pregunta.strip():
60
- return "Escribe una pregunta."
61
-
62
- # 1. Búsqueda con Tavily (tu ejemplo: como "Who is Leo Messi?")
63
- try:
64
- resultados = tavily_client.search(query=pregunta, max_results=3)
65
- contexto = "\n\n".join([
66
- f"Título: {r['title']}\nContenido: {r['content'][:600]}...\nURL: {r['url']}"
67
- for r in resultados.get("results", [])
68
- ])
69
- except Exception as e:
70
- # Fallback a MCP si Tavily falla
71
- contexto = query_mcp(pregunta, "Extrae hechos clave de búsqueda web")
72
- if "Error" in contexto:
73
- return f"No se pudo buscar: {contexto}\n\nPregunta: {pregunta}"
74
-
75
- # 2. Prompt para OpenAI (claro, emocional, basado en búsqueda)
76
- prompt = f"""Eres un asistente experto y carismático. Usa SOLO la información de los resultados de búsqueda para responder de forma clara, interesante y emocionalmente rica. Hazlo vívido, como si contaras una historia cautivadora.
77
-
78
- Pregunta del usuario: {pregunta}
79
-
80
- Resultados de búsqueda:
81
- {contexto}
82
-
83
- Respuesta:"""
84
-
85
- # 3. Genera respuesta con OpenAI
86
- respuesta = query_openai(prompt)
87
- return respuesta
88
-
89
- # =======================================================
90
- # Interfaz Gradio
91
- # =======================================================
92
- with gr.Blocks(theme=gr.themes.Soft(), title="Bat_Tavily_OpenAI") as demo:
93
- gr.Markdown("# Bat_Tavily_OpenAI\n**Tavily + GPT-3.5. Sin HF. Respuestas correctas y rápidas.**")
94
-
95
- inp = gr.Textbox(
96
- label="Tu pregunta",
97
- placeholder="Ej: ¿Quién es Leo Messi? (prueba tu ejemplo de Tavily)",
98
- lines=3
99
- )
100
- out = gr.Textbox(
101
- label="Respuesta",
102
- interactive=False,
103
- lines=12,
104
- show_copy_button=True
105
- )
106
-
107
- gr.Examples(
108
- examples=[
109
- "¿Quién es Leo Messi?", # Tu ejemplo exacto
110
- "¿Cuáles son las últimas noticias sobre inteligencia artificial?",
111
- "Explica la relatividad de Einstein"
112
- ],
113
- inputs=inp
114
- )
115
-
116
- gr.Row([
117
- gr.Button("Enviar").click(agente_inteligente, inputs=inp, outputs=out),
118
- gr.Button("Limpiar").click(lambda: ("", ""), outputs=[inp, out])
119
- ])
120
 
 
121
  if __name__ == "__main__":
122
  demo.launch(debug=True)
 
1
+ # app.py - ESTE es el archivo que Hugging Face ejecuta automáticamente
2
  import os
3
+ from main import DevCreatorAI
 
 
 
4
 
5
+ # Obtener API key de las variables secretas de Hugging Face
6
+ TAVILY_API_KEY = os.getenv("TAVILY_API_KEY", "demo_key")
 
 
 
7
 
8
+ # Crear la aplicación
9
+ app = DevCreatorAI(TAVILY_API_KEY)
10
+ demo = app.create_interface()
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
11
 
12
+ # Hugging Face ejecuta esto automáticamente
13
  if __name__ == "__main__":
14
  demo.launch(debug=True)