Cristobal299 commited on
Commit
389708a
·
verified ·
1 Parent(s): 40dca31

Upload app.py with huggingface_hub

Browse files
Files changed (1) hide show
  1. app.py +15 -62
app.py CHANGED
@@ -1,19 +1,20 @@
1
  # -*- coding: utf-8 -*-
2
  import os
3
  import json
4
- import requests
5
  import tempfile
 
6
  import gradio as gr
7
 
8
  # ----------------------------------------------------------------------
9
- # Configuracion
10
  # ----------------------------------------------------------------------
11
  GROQ_API_KEY = os.environ.get("GROQ_API_KEY")
12
  GROQ_ENDPOINT = "https://api.groq.com/openai/v1/chat/completions"
13
  MODEL_NAME = os.environ.get("MODEL_NAME", "llama-3.1-8b-instant")
14
 
15
  # ----------------------------------------------------------------------
16
- # CSS (se pasa a demo.launch)
17
  # ----------------------------------------------------------------------
18
  CSS = """
19
  #business-input textarea {
@@ -29,68 +30,20 @@ CSS = """
29
  #generate-btn:hover {
30
  background-color: #1C86EE;
31
  }
32
- #problems-card, #solutions-card, #explanation-card, #prompt-card {
33
- padding: 15px;
34
- border-radius: 8px;
35
- margin-top: 10px;
36
- }
37
- #problems-card {
38
- background-color: #F0F8FF;
39
- }
40
- #solutions-card {
41
- background-color: #E6F7FF;
42
- }
43
- #explanation-card {
44
- background-color: #FFFFFF;
45
- }
46
- #prompt-card {
47
- background-color: #F5F5F5;
48
- }
49
- #download-btn {
50
- margin-top: 10px;
51
- }
52
  """
53
 
54
  # ----------------------------------------------------------------------
55
- # Funciones auxiliares
56
  # ----------------------------------------------------------------------
57
- def call_groq(business_name: str) -> dict:
58
  """
59
- Llama a la API de Groq y devuelve un dict con:
60
- problems, solutions, explanation, eos_prompt.
61
  """
62
- if not GROQ_API_KEY:
63
- raise RuntimeError("GROQ_API_KEY no esta definida en el entorno")
64
-
65
- user_prompt = f"""Eres un analista de negocios experto. Dado el nombre del negocio "{business_name}", enumera los 5 problemas clasicos mas comunes, propone una solucion para cada uno, brinda una explicacion combinada detallada, y finalmente genera un prompt EOS listo para usar en el siguiente formato JSON:
66
- {{
67
- "problems": ["..."],
68
- "solutions": ["..."],
69
- "explanation": "...",
70
- "eos_prompt": "Title: ...\\nContext: ...\\nInstructions: ..."
71
- }}
72
- Devuelve SOLO el objeto JSON, sin texto adicional."""
73
-
74
- payload = {
75
- "model": MODEL_NAME,
76
- "messages": [{"role": "user", "content": user_prompt}],
77
- "temperature": 0.7,
78
- "max_tokens": 1024,
79
- }
80
- headers = {
81
- "Authorization": f"Bearer {GROQ_API_KEY}",
82
- "Content-Type": "application/json",
83
- }
84
-
85
- response = requests.post(
86
- GROQ_ENDPOINT,
87
- headers=headers,
88
- json=payload,
89
- timeout=30,
90
- )
91
- response.raise_for_status()
92
- data = response.json()
93
- content = data["choices"][0]["message"]["content"].strip()
94
-
95
- # El modelo a veces envuelve el JSON en bloques de codigo
96
- if content.startswith("
 
1
  # -*- coding: utf-8 -*-
2
  import os
3
  import json
4
+ import re
5
  import tempfile
6
+ import requests
7
  import gradio as gr
8
 
9
  # ----------------------------------------------------------------------
10
+ # Configuracion de la API
11
  # ----------------------------------------------------------------------
12
  GROQ_API_KEY = os.environ.get("GROQ_API_KEY")
13
  GROQ_ENDPOINT = "https://api.groq.com/openai/v1/chat/completions"
14
  MODEL_NAME = os.environ.get("MODEL_NAME", "llama-3.1-8b-instant")
15
 
16
  # ----------------------------------------------------------------------
17
+ # CSS para la aplicacion (se pasa a demo.launch)
18
  # ----------------------------------------------------------------------
19
  CSS = """
20
  #business-input textarea {
 
30
  #generate-btn:hover {
31
  background-color: #1C86EE;
32
  }
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
33
  """
34
 
35
  # ----------------------------------------------------------------------
36
+ # Utilidades
37
  # ----------------------------------------------------------------------
38
+ def extract_json(text: str) -> dict:
39
  """
40
+ Extrae el primer bloque JSON valido del texto recibido.
 
41
  """
42
+ # Busca el primer { y el ultimo }
43
+ start = text.find("{")
44
+ end = text.rfind("}")
45
+ if start == -1 or end == -1:
46
+ raise ValueError("No JSON found in response")
47
+ json_str = text[start:end + 1]
48
+ # Elimina posibles bloques de codigo markdown
49
+ json_str = re.sub(r"^