jjvelezo commited on
Commit
ae12037
·
verified ·
1 Parent(s): 9903381

Update agent.py

Browse files
Files changed (1) hide show
  1. agent.py +26 -27
agent.py CHANGED
@@ -1,33 +1,32 @@
1
  import requests
2
- from duckduckgo_search import DDGS
3
 
4
- # --- Clase de Agente ---
5
- class BasicAgent:
6
  def __init__(self):
7
- print("BasicAgent initialized.")
8
-
9
- def __call__(self, question: str) -> str:
10
- """
11
- Este agente ahora realizará una búsqueda en DuckDuckGo
12
- si detecta que la consulta parece una pregunta sobre búsqueda web.
13
- """
14
- print(f"Agent received question (first 50 chars): {question[:50]}...")
15
 
16
- # Si la pregunta contiene "buscar", realizamos una búsqueda en DuckDuckGo
17
- if "buscar" in question.lower():
18
- fixed_answer = self.web_search(question)
19
- else:
20
- fixed_answer = "This is a default answer."
21
 
22
- print(f"Agent returning answer: {fixed_answer}")
23
- return fixed_answer
 
 
 
 
 
 
 
 
 
 
 
24
 
25
- def web_search(self, query: str) -> str:
26
- """
27
- Realiza una búsqueda en DuckDuckGo y devuelve los primeros resultados.
28
- """
29
- try:
30
- results = DDGS().text(query, max_results=3)
31
- return "\n".join([r["body"] for r in results])
32
- except Exception as e:
33
- return f"Error en la búsqueda: {str(e)}"
 
1
  import requests
2
+ import urllib.parse
3
 
4
+ class DuckDuckGoAgent:
 
5
  def __init__(self):
6
+ print("DuckDuckGoAgent initialized.")
 
 
 
 
 
 
 
7
 
8
+ def get_duckduckgo_answer(self, query: str) -> str:
9
+ # Crear una consulta de búsqueda para DuckDuckGo
10
+ search_query = urllib.parse.quote(query)
11
+ url = f"https://api.duckduckgo.com/?q={search_query}&format=json&no_html=1&skip_disambig=1"
 
12
 
13
+ # Realizar la solicitud a DuckDuckGo
14
+ response = requests.get(url)
15
+ if response.status_code == 200:
16
+ data = response.json()
17
+ # Tomamos el primer resultado de la respuesta (si existe)
18
+ if 'AbstractText' in data and data['AbstractText']:
19
+ answer = data['AbstractText']
20
+ # Limitamos la respuesta a 200 caracteres
21
+ return answer[:200]
22
+ else:
23
+ return "No se encontró una respuesta adecuada en DuckDuckGo."
24
+ else:
25
+ return "Error al contactar con DuckDuckGo."
26
 
27
+ def __call__(self, question: str) -> str:
28
+ print(f"Agent received question (first 50 chars): {question[:50]}...")
29
+ # Obtener respuesta de DuckDuckGo
30
+ answer = self.get_duckduckgo_answer(question)
31
+ print(f"Agent returning answer: {answer}")
32
+ return answer