Skip to content
BotServBotServ
RechercheAgentes IABúsqueda webFlujo de agentesIA local

Flujos de Recherche con Agentes IA

Construye flujos de recherche con agentes IA. Búsqueda web, evaluación de fuentes, resumen y verificación de hechos.

S

schutzgeist

10 min read
Flujos de Recherche con Agentes IA

Flujos de búsqueda con agentes de IA

Qué cubre este artículo sobre flujos de búsqueda con agentes de IA

  • Cómo construir flujos de búsqueda con agentes de IA.
  • Cómo los agentes automatizan búsqueda web, evaluación de fuentes y síntesis.
  • Cómo implementar verificación de hechos y control de calidad.
  • Ejemplos prácticos para investigación temática, análisis de mercado e investigación bibliográfica.
  • Mejores prácticas para fiabilidad, evitar alucinaciones y seguridad.

Introducción: Flujos de búsqueda con agentes de IA explicados

La búsqueda consume tiempo. Lees fuentes, comparas información, evalúas credibilidad, sintetizas hallazgos. Los agentes de IA pueden automatizar este proceso: buscan en la web, leen páginas, evalúan fuentes, sintetizan y verifican hechos. Con IA local, todo se ejecuta en tu hardware sin enviar datos de investigación a proveedores en la nube.

Este artículo está dirigido a desarrolladores que quieren construir flujos de búsqueda con agentes de IA. Deberías entender qué son los agentes de IA y cómo ejecutarlos localmente con Ollama. Encontrarás fundamentos de programación Python en IRC-Coding.de.

¿Por qué necesito flujos de búsqueda con agentes de IA?

Imagina que necesitas escribir un informe sobre un tema nuevo. Pasas horas en Google, Wikipedia, artículos especializados. Lees, comparas, sintetizas. Un agente de IA puede hacerlo en minutos: busca, lee, evalúa, sintetiza y te entrega un informe estructurado con fuentes.

Los flujos de búsqueda son especialmente valiosos cuando investigas regularmente temas nuevos, cuando necesitas procesar muchas fuentes o cuando quieres hacer búsquedas reproducibles.

Flujos de búsqueda con agentes de IA en resumen

Un flujo de búsqueda es un bucle de agente que repite estos pasos: entender pregunta → formular búsqueda → buscar web → leer resultados → evaluar fuentes → extraer hechos → verificar → sintetizar. El agente utiliza herramientas para búsqueda web y obtención de páginas, el modelo de lenguaje toma las decisiones.

La idea central es esta: el agente es el investigador, las herramientas son el buscador y navegador, el modelo es el cerebro.

¿Para quién es este artículo?

  • Investigadores que quieren automatizar búsqueda bibliográfica.
  • Periodistas que necesitan investigar temas nuevos rápidamente.
  • Analistas que crean análisis de mercado o competencia.
  • Desarrolladores que quieren construir agentes de búsqueda.

Se requieren conocimientos previos en Python, agentes de IA y Ollama.

Términos clave en flujos de búsqueda

  • Agente de búsqueda - Agente de IA que realiza investigaciones. Cuándo es útil: para búsqueda automatizada.
  • Herramienta de búsqueda web - Herramienta que ejecuta consultas de búsqueda. Cuándo es útil: para que el agente encuentre fuentes.
  • Evaluación de fuentes - Valorar la credibilidad de una fuente. Cuándo es útil: para separar fuentes confiables de no confiables.
  • Verificación cruzada de hechos - Comprobar hechos contra múltiples fuentes. Cuándo es útil: para evitar alucinaciones.
  • Agentes de IA - Programas que resuelven tareas de forma autónoma. Cuándo es útil: como base para agentes de búsqueda.
  • Ollama - Servidor de modelos local. Cuándo es útil: como cerebro del agente.
  • Function Calling - Respuestas de IA estructuradas. Cuándo es útil: para uso de herramientas.
  • Alucinación - Cuando el modelo inventa hechos falsos. Cuándo es útil: el problema principal en agentes de búsqueda.

Arquitectura de un flujo de búsqueda

Un flujo de búsqueda típico consta de varias fases:

  1. Entender la pregunta: El agente analiza la pregunta y formula búsquedas.
  2. Búsqueda web: El agente busca fuentes relevantes.
  3. Obtener páginas: El agente descarga las páginas más relevantes.
  4. Extraer contenido: El agente extrae el texto de las páginas.
  5. Evaluar fuentes: El agente valora credibilidad y relevancia.
  6. Extraer hechos: El agente extrae hechos de las fuentes.
  7. Verificar: El agente compara hechos entre múltiples fuentes.
  8. Sintetizar: El agente sintetiza los resultados.
  9. Crear informe: El agente genera un informe estructurado con fuentes.

Herramientas para agentes de búsqueda

Búsqueda web

Para búsqueda web puedes utilizar varias APIs:

import requests

def search_web(query, num_results=5):
    # DuckDuckGo (gratuito, sin API key)
    response = requests.get(
        "https://html.duckduckgo.com/html/",
        params={"q": query}
    )
    # Analizar resultados
    return parse_results(response.text)

# Alternativas:
# - SearXNG (auto-hospedado)
# - Tavily API (diseñado para agentes de IA)
# - Google Custom Search (requiere API key)
# - Brave Search API

Para auto-hospedaje recomendamos SearXNG porque no tiene costos de API y es privado.

Obtención de páginas

import trafilatura

def fetch_page(url):
    # Descarga la página y extrae el texto
    downloaded = trafilatura.fetch_url(url)
    text = trafilatura.extract(downloaded)
    return text

trafilatura es una librería Python que descarga páginas web y extrae el texto principal, sin navegación, publicidad ni pie de página.

Evaluación de fuentes

def evaluate_source(url, content):
    prompt = f"""
Evalúa la credibilidad de esta fuente:
URL: {url}
Contenido (extracto): {content[:1000]}

Criterios:
1. ¿Autor u organización identificable?
2. ¿Fecha visible?
3. ¿Hechos verificados?
4. ¿Lenguaje neutral?
5. ¿Fuente citada adecuadamente?

Responde en formato JSON:
{{"credibility": "high|medium|low", "reason": "..."}}
"""
    response = call_ollama([
        {"role": "system", "content": "Eres un experto en evaluación de fuentes."},
        {"role": "user", "content": prompt}
    ])
    return parse_json(response)

Ejemplo práctico 1: Investigación temática

Un agente que investiga un tema y crea un informe con fuentes.

def research_topic(topic):
    # Fase 1: Formular búsquedas
    queries = generate_search_queries(topic)

    # Fase 2: Búsqueda web
    all_results = []
    for query in queries:
        results = search_web(query)
        all_results.extend(results)

    # Fase 3: Obtener resultados principales
    top_results = all_results[:10]
    pages = []
    for result in top_results:
        content = fetch_page(result["url"])
        if content:
            pages.append({
                "url": result["url"],
                "title": result["title"],
                "content": content
            })

    # Fase 4: Evaluar fuentes
    for page in pages:
        page["evaluation"] = evaluate_source(page["url"], page["content"])

    # Fase 5: Extraer hechos
    facts = []
    for page in pages:
        if page["evaluation"]["credibility"] in ["high", "medium"]:
            page_facts = extract_facts(page["content"], topic)
            facts.extend(page_facts)

    # Fase 6: Verificar
    verified_facts = cross_check_facts(facts)

    # Fase 7: Crear informe
    report = generate_report(topic, verified_facts, pages)
    return report

Formulación de consultas de búsqueda

def generate_search_queries(topic):
    response = call_ollama([
        {"role": "system", "content": "Formuliere 5 Suchanfragen für eine Recherche. Antworte als JSON-Array."},
        {"role": "user", "content": f"Thema: {topic}"}
    ])
    return parse_json(response)

Extracción de hechos

def extract_facts(content, topic):
    response = call_ollama([
        {"role": "system", "content": "Extrahiere Fakten zum Thema. Antworte als JSON-Array von Fakten."},
        {"role": "user", "content": f"Thema: {topic}\nInhalt: {content[:3000]}"}
    ])
    return parse_json(response)

Verificación cruzada

def cross_check_facts(facts):
    verified = []
    for fact in facts:
        # Prüfe, ob der Fakt in mehreren Quellen bestätigt wird
        confirmations = count_confirmations(fact, facts)
        if confirmations >= 2:
            verified.append({
                "fact": fact,
                "confirmations": confirmations,
                "status": "verified"
            })
        else:
            verified.append({
                "fact": fact,
                "confirmations": confirmations,
                "status": "unverified"
            })
    return verified

Generación de reportes

def generate_report(topic, facts, sources):
    response = call_ollama([
        {"role": "system", "content": "Schreibe einen strukturierten Bericht mit Quellenangaben."},
        {"role": "user", "content": f"""
Thema: {topic}
Verifizierte Fakten: {facts}
Quellen: {[{"url": s["url"], "title": s["title"]} for s in sources]}
"""}
    ])
    return response

Caso práctico 2: Análisis de mercado

Un agente que analiza un mercado: competidores, tendencias, precios.

def market_analysis(product_category):
    # Wettbewerber finden
    competitors = research_topic(f"Wettbewerber im Markt: {product_category}")

    # Trends recherchieren
    trends = research_topic(f"Aktuelle Trends: {product_category}")

    # Preise vergleichen
    prices = research_topic(f"Preisvergleich: {product_category}")

    # Bericht kombinieren
    report = combine_reports([competitors, trends, prices])
    return report

Caso práctico 3: Revisión de literatura

Un agente que busca literatura científica sobre un tema.

def literature_review(topic):
    # Suchanfragen für wissenschaftliche Quellen
    queries = [
        f"{topic} site:arxiv.org",
        f"{topic} site:pubmed.ncbi.nlm.nih.gov",
        f"{topic} site:doi.org"
    ]

    # Suche ausführen
    results = []
    for query in queries:
        results.extend(search_web(query))

    # Abstracts extrahieren
    papers = []
    for result in results:
        content = fetch_page(result["url"])
        if content:
            abstract = extract_abstract(content)
            papers.append({
                "title": result["title"],
                "url": result["url"],
                "abstract": abstract
            })

    # Zusammenfassung erstellen
    summary = call_ollama([
        {"role": "system", "content": "Erstelle eine Literaturübersicht."},
        {"role": "user", "content": f"Papers: {papers}"}
    ])
    return summary

Evitación de alucinaciones

Las alucinaciones son el mayor problema en agentes de investigación. El modelo inventa hechos que no aparecen en las fuentes.

Estrategias contra alucinaciones

  • Solo hechos de fuentes: El agente solo puede usar hechos que haya encontrado en fuentes documentadas.
  • Atribución de fuentes: Cada hecho necesita una fuente.
  • Verificación cruzada: Los hechos deben confirmarse en al menos dos fuentes.
  • Indicación de confianza: El agente debe indicar cuál es su nivel de certeza.
  • Comunicación de incertidumbre: Si el agente no está seguro, debe decirlo explícitamente.
def extract_facts_safe(content, topic):
    response = call_ollama([
        {"role": "system", "content": """
Extrahiere nur Fakten, die explizit im Text stehen.
Erfinde keine Fakten.
Wenn Du unsicher bist, sage "unsicher".
Jeder Fakt braucht eine Quellenangabe (Zitat aus dem Text).
Antworte als JSON-Array:
[{"fact": "...", "quote": "...", "confidence": "high|medium|low"}]
"""},
        {"role": "user", "content": f"Thema: {topic}\nInhalt: {content[:3000]}"}
    ])
    return parse_json(response)

Control de calidad

Métricas para la calidad de investigación

  • Número de fuentes: ¿Cuántas fuentes se encontraron?
  • Calidad de fuentes: ¿Cuán confiables son las fuentes?
  • Cobertura de hechos: ¿Cuántos hechos fueron verificados?
  • Confianza: ¿Qué tan seguro está el agente sobre los hechos?
  • Contradicciones: ¿Hay hechos contradictorios?
def quality_report(facts, sources):
    return {
        "total_sources": len(sources),
        "high_credibility_sources": sum(1 for s in sources if s["evaluation"]["credibility"] == "high"),
        "verified_facts": sum(1 for f in facts if f["status"] == "verified"),
        "unverified_facts": sum(1 for f in facts if f["status"] == "unverified"),
        "average_confidence": calculate_average_confidence(facts)
    }

Notas de seguridad

  • Rate-Limits: Respeta los rate-limits de las APIs de búsqueda. Consulta API-Schlüssel.
  • Sin datos sensibles: No investigues temas sensibles a través de APIs en la nube. Usa IA local.
  • Audit Logging: Registra todos los pasos de investigación. Consulta Audit Logging.
  • Prompt Injection: Protege el agente contra inyección de prompts desde contenido web. Consulta Prompt Injection Schutz.
  • Guardrails: Usa guardrails para prevenir investigaciones dañinas. Consulta Guardrails konfigurieren.

Trampas comunes

  • Alucinaciones: El agente inventa hechos. Usa atribución de fuentes y verificación cruzada.
  • Fuentes deficientes: El agente usa fuentes poco confiables. Implementa evaluación de fuentes.
  • Bucles infinitos: El agente sigue buscando indefinidamente. Limita el número de pasos de búsqueda.
  • Longitud de contexto: Muchas fuentes desbordan el contexto. Usa Summary Memory.
  • Información desactualizada: La búsqueda web devuelve resultados antiguos. Usa filtros de fecha.
  • Sesgo: El agente favorece ciertas fuentes. Usa consultas de búsqueda diversas.

Enlaces adicionales e información sobre workflows de investigación

Puntos clave:

  • Los workflows de investigación automatizan la búsqueda web, evaluación de fuentes y síntesis.
  • El agente usa herramientas para búsqueda web y obtención de páginas; el modelo toma decisiones.
  • Contra alucinaciones: solo hechos de fuentes, atribución de fuentes, verificación cruzada.
  • Casos prácticos: investigación temática, análisis de mercado, revisión de literatura.
  • Seguridad: rate-limits, audit logging, protección contra inyección de prompts.

FAQ: Flujos de trabajo de investigación con agentes de IA - Preguntas frecuentes

¿Qué es un agente de investigación?

Un agente de investigación es un agente de IA que automatiza búsquedas. Consulta la web, lee páginas, evalúa fuentes, extrae hechos, realiza validación cruzada y elabora resúmenes.

¿Cómo evito alucinaciones?

Utiliza únicamente hechos provenientes de fuentes, requiere citas de referencias, valida cruzadamente los hechos en múltiples fuentes, haz que el agente indique el nivel de confianza y comunique incertidumbre.

¿Qué API de búsqueda debo utilizar?

DuckDuckGo es gratuita y no requiere API Key. SearXNG se aloja por cuenta propia y es privada. Tavily está diseñada específicamente para agentes de IA. Google Custom Search requiere un API Key.

¿Cómo evalúo las fuentes?

Criterios: autor identificable, fecha identificable, hechos respaldados, lenguaje objetivo, referencias citadas. El agente puede evaluar estos criterios y asignar una puntuación de credibilidad.

¿Qué es una validación cruzada de hechos?

Una validación cruzada de hechos verifica si un hecho está confirmado en múltiples fuentes independientes. Solo se consideran verificados los hechos que cuentan con al menos dos confirmaciones.

¿Puedo ejecutar agentes de investigación localmente?

Sí. Con Ollama como backend, el modelo de lenguaje se ejecuta localmente. Solo la búsqueda web requiere internet, pero el procesamiento de resultados permanece local.

¿Qué hacer en caso de bucles infinitos?

Limita el número de pasos de búsqueda. Si el agente no obtiene resultado después de N pasos, detén la ejecución. También utiliza Summary Memory para mantener el contexto reducido.

¿Qué modelo es apropiado para investigación?

Modelos con contexto amplio y buen razonamiento: qwen2.5:32b, llama3.1:70b, mistral-large. Para investigaciones simples, llama3.1:8b es suficiente.

¿Cómo aseguro los agentes de investigación?

Respeta los límites de velocidad, registra todos los pasos en bitácoras de auditoría, protege contra inyección de prompts desde contenido web y utiliza guardrails contra investigaciones dañinas.

¿Cuál es el costo de operar un agente de investigación?

Con IA local, solo los costos de hardware. Si utilizas una API de búsqueda, pueden generarse costos de API. DuckDuckGo y SearXNG son gratuitas.

Referencias y lecturas complementarias

Volver al blog
Share:

Entradas relacionadas