Daniel00611 commited on
Commit
57df3b5
verified
1 Parent(s): d87fa11

Update app.py

Browse files
Files changed (1) hide show
  1. app.py +33 -25
app.py CHANGED
@@ -30,15 +30,11 @@ def obtener_extractos(pregunta):
30
  docs_relevantes = retriever.invoke(pregunta)
31
  return [(doc.page_content, doc.metadata.get("url", "URL no disponible")) for doc in docs_relevantes]
32
 
33
- def respond(message, history: list[tuple[str, str]], system_message, max_tokens, temperature, top_p):
34
- """Genera una respuesta basada en el historial y documentos relevantes."""
35
-
36
  # Obtener documentos relevantes desde ChromaDB
37
  contexto = obtener_extractos(message)
38
 
39
- # Construir el mensaje del sistema con el contexto directamente incluido
40
  system_message_final = f"""{system_message}
41
-
42
  Informaci贸n relevante extra铆da de los documentos, en caso de que estos documentos tenga la informacion que necesitas, no olvides tomar
43
  el historial de conversacion con el usuario:
44
  {contexto}
@@ -46,33 +42,45 @@ def respond(message, history: list[tuple[str, str]], system_message, max_tokens,
46
 
47
  messages = [{"role": "system", "content": system_message_final}]
48
 
49
- # Agregar historial del chat
50
- for val in history:
51
- if val[0]:
52
- messages.append({"role": "user", "content": val[0]})
53
- if val[1]:
54
- messages.append({"role": "assistant", "content": val[1]})
55
 
56
- # Agregar la nueva pregunta del usuario
57
  messages.append({"role": "user", "content": message})
58
 
59
- # Llamar a la API de OpenAI con streaming
 
 
 
 
 
 
 
 
 
60
  stream = client.responses.create(
61
- model="gpt-5-nano",
62
- input=messages,
63
- #max_tokens=max_tokens,
64
  stream=True,
65
- reasoning={ "effort": "low" },
66
- text={ "verbosity": "low" },
67
- #temperature=temperature,
68
- #top_p=top_p,
 
69
  )
70
 
71
- response = ""
72
- for chunk in stream:
73
- if chunk.choices and chunk.choices[0].delta.content:
74
- response += chunk.choices[0].delta.content
75
- yield response
 
 
 
76
 
77
 
78
  # Configuraci贸n de la interfaz Gradio
 
30
  docs_relevantes = retriever.invoke(pregunta)
31
  return [(doc.page_content, doc.metadata.get("url", "URL no disponible")) for doc in docs_relevantes]
32
 
33
+ def respond(message, history, system_message, max_tokens=2048, temperature=0.7, top_p=0.95):
 
 
34
  # Obtener documentos relevantes desde ChromaDB
35
  contexto = obtener_extractos(message)
36
 
 
37
  system_message_final = f"""{system_message}
 
38
  Informaci贸n relevante extra铆da de los documentos, en caso de que estos documentos tenga la informacion que necesitas, no olvides tomar
39
  el historial de conversacion con el usuario:
40
  {contexto}
 
42
 
43
  messages = [{"role": "system", "content": system_message_final}]
44
 
45
+ # Historial
46
+ for user_msg, assistant_msg in history:
47
+ if user_msg:
48
+ messages.append({"role": "user", "content": user_msg})
49
+ if assistant_msg:
50
+ messages.append({"role": "assistant", "content": assistant_msg})
51
 
52
+ # Nueva pregunta
53
  messages.append({"role": "user", "content": message})
54
 
55
+ # 鈿狅笍 Recomendado: adaptar al formato de 'input' de Responses
56
+ inputs = [
57
+ {
58
+ "type": "message",
59
+ "role": m["role"],
60
+ "content": m["content"],
61
+ }
62
+ for m in messages
63
+ ]
64
+
65
  stream = client.responses.create(
66
+ model="gpt-5-nano", # verifica que este modelo exista en tu cuenta
67
+ input=inputs,
 
68
  stream=True,
69
+ reasoning={"effort": "low"},
70
+ text={"verbosity": "low"},
71
+ # max_output_tokens=max_tokens, # si lo quieres usar, el nombre del par谩metro en Responses es este
72
+ # temperature=temperature, # (depende del modelo/SDK si lo soporta en responses)
73
+ # top_p=top_p,
74
  )
75
 
76
+ respuesta = ""
77
+ for event in stream:
78
+ # Cada trozo de texto viene en eventos tipo 'response.output_text.delta'
79
+ if event.type == "response.output_text.delta":
80
+ # En la doc actual el texto viene en event.delta (string) :contentReference[oaicite:1]{index=1}
81
+ delta = event.delta or ""
82
+ respuesta += delta
83
+ yield respuesta
84
 
85
 
86
  # Configuraci贸n de la interfaz Gradio