Un agente de investigación que navega por la web
Combine una herramienta de búsqueda, una herramienta de obtención y un LLM para investigar un tema y redactar un resumen con fuentes.
Un agente de investigación que navega por la web es una lección gratuita de AI Agents en CoddyKit. Esta es la lección 3 de 4. Puedes leer la lección completa abajo gratuitamente — luego la practicas en el navegador con un editor de código integrado y un tutor de IA 24/7. Forma parte de la ruta de aprendizaje de AI Agents, y tu progreso se sincroniza en la web y la app de CoddyKit. El curso de AI Agents incluye 4 lecciones en total.
Partes de esta lección aún no han sido traducidas y se muestran en inglés.
Objetivo del proyecto
Construya un agente que investigue un tema buscando en la web, recuperando páginas y redactando un resumen con fuentes, como una versión diminuta de Perplexity.
Herramientas necesarias
- search: consulta una API de búsqueda (Tavily, Serper o Brave) y devuelve resultados
- fetch_url: descarga una página y devuelve el texto limpio
- answer: el agente redacta el resumen final con citas
Step 1: Search Tool
import requests
def search(query: str, k: int = 5) -> list[dict]:
r = requests.post(
'https://api.tavily.com/search',
json={'api_key': TAVILY_KEY, 'query': query, 'max_results': k}
)
return r.json()['results'] # list of {url, title, snippet}Step 2: Fetch Tool
from bs4 import BeautifulSoup
def fetch_url(url: str) -> str:
r = requests.get(url, timeout=10)
soup = BeautifulSoup(r.text, 'html.parser')
for tag in soup(['script', 'style', 'nav', 'footer']):
tag.decompose()
return soup.get_text(separator='\n', strip=True)[:5000] # truncateStep 3: Tool Definitions
tools = [
{'type': 'function', 'function': {
'name': 'search',
'description': 'Search the web for a query, return top results with URLs',
'parameters': {'type': 'object', 'properties': {'query': {'type': 'string'}}, 'required': ['query']}
}},
{'type': 'function', 'function': {
'name': 'fetch_url',
'description': 'Download the text of a URL',
'parameters': {'type': 'object', 'properties': {'url': {'type': 'string'}}, 'required': ['url']}
}}
]
import json
print(json.dumps(tools, indent=2))
Step 4: The Agent Loop
def research(question, max_steps=8):
messages = [
{'role': 'system', 'content': 'You are a research agent. Use search and fetch_url to gather facts. Cite each claim with a URL.'},
{'role': 'user', 'content': question}
]
for _ in range(max_steps):
r = oai.chat.completions.create(model='gpt-4o-mini', messages=messages, tools=tools)
msg = r.choices[0].message
messages.append(msg)
if not msg.tool_calls:
return msg.content
for tc in msg.tool_calls:
result = dispatch(tc)
messages.append({'role': 'tool', 'tool_call_id': tc.id, 'content': json.dumps(result)})
return 'Step limit reached'Tool Dispatcher
def dispatch(tc):
args = json.loads(tc.function.arguments)
if tc.function.name == 'search':
return search(**args)
if tc.function.name == 'fetch_url':
return fetch_url(**args)
return {'error': 'unknown tool'}Añada un límite de pasos
Sin un límite, el agente puede ejecutarse indefinidamente. max_steps=8 es un valor predeterminado razonable.
Trunque las páginas recuperadas
La mayoría de las páginas tienen más de 50 KB, demasiado para procesarlas. Trúnquelas a 5000 caracteres (unos 1300 tokens). El modelo rara vez necesita más.
Respete robots.txt
La navegación en producción debe respetar robots.txt y los Términos de servicio del sitio. En caso de duda, utilice un servicio administrado de búsqueda y recuperación.
Almacene los resultados en caché
La misma consulta y la misma URL se solicitarán con frecuencia. Almacene los resultados en Redis durante una hora:
@lru_cache(maxsize=1000)
def cached_fetch(url):
return fetch_url(url)Gestione los fallos
Los errores de red son habituales. Devuelva el error al modelo para que pueda probar otra fuente:
try:
return fetch_url(url)
except Exception as e:
return {'error': f'Could not fetch {url}: {e}'}Fuerce las citas
Termine el prompt del sistema con: "Su respuesta final debe incluir las URL de cada afirmación, como [1] https://..." y considere comprobar el esquema de salida.
Vigile el coste
Los agentes de investigación son caros: entre 5 y 15 llamadas a herramientas por pregunta, cada una de las cuales recupera varios kilobytes. Establezca un límite de presupuesto por consulta.
Límite de pasos
¿Por qué establecer un límite max_steps en el bucle del agente?
Resumen
Búsqueda + recuperación + LLM + un límite de pasos = un agente de investigación funcional en 50 líneas. Excelente proyecto 3.
Preguntas frecuentes
¿La lección «Un agente de investigación que navega por la web» es gratis?
Sí — el texto completo de «Un agente de investigación que navega por la web» es gratis para leer aquí en la web. Para practicarla de forma interactiva (editor de código integrado y tutor de IA 24/7) y desbloquear el resto del curso de AI Agents, actualiza a CoddyKit PRO. El curso de AI Agents incluye 4 lecciones en total.
¿Qué aprenderé en «Un agente de investigación que navega por la web»?
Combine una herramienta de búsqueda, una herramienta de obtención y un LLM para investigar un tema y redactar un resumen con fuentes. Practicas AI Agents con código real que ejecutas directamente en el navegador, y un tutor de IA 24/7 responde tus preguntas mientras trabajas en la lección.
¿Necesito experiencia previa para empezar AI Agents?
No se requiere experiencia previa. AI Agents en CoddyKit está estructurado para principiantes hasta estudiantes avanzados, así que puedes empezar aquí o desde el inicio y avanzar a tu ritmo. Esta es la lección 3 de 4.
¿Cuánto tiempo toma la lección «Un agente de investigación que navega por la web»?
La mayoría de las lecciones de CoddyKit toman alrededor de 5–10 minutos. Cada una es compacta e interactiva, así que avanzas constantemente y retomas exactamente por donde dejaste en la web y la app.
¿Puedo escribir y ejecutar código en esta lección de AI Agents?
Sí. Cada lección de AI Agents incluye un editor de código integrado, así que escribes y ejecutas código real directamente en tu navegador y obtienes retroalimentación instantánea de IA — sin configuración local necesaria.
Todas las lecciones de este curso
- Un bot de preguntas y respuestas sobre sus documentos
- Un agente que explica código
- Un agente de investigación que navega por la web
- Un asistente SQL para su base de datos