Agentes IA Nivel Intermedio Apache 2.0 · Gratis

Perplexity API
LLM + Búsqueda Web en Tiempo Real

Integración completa de la API de Perplexity AI para agentes Python con búsqueda web en vivo, citas verificadas y sesiones multi-turno. Caso real: agente de inteligencia competitiva para CULTIVA IA.

SDK
openai ≥ 1.0
Base URL
api.perplexity.ai
Modelos online
sonar · sonar-pro
Latencia media
2 – 5 segundos
Citas
URL verificadas
Compatibilidad
OpenAI-compatible
🏗️
Arquitectura del Agente
🤖
Agente Python
IntelAgente
📦
SDK OpenAI
base_url pplx
🔍
Perplexity API
sonar / sonar-pro
🌐
Web en vivo
búsqueda real-time
📊
Respuesta + Citas
texto + URLs fuente
$ pip install openai   # SDK compatible · export PERPLEXITY_API_KEY=pplx-...
Modelos Disponibles
Modelo Tipo Búsqueda Web Citas Razonamiento Mejor Para Latencia
sonar Online Consultas rápidas, dashboards ~2s
sonar-pro Online ✓ Multi Investigación profunda, análisis ~5s
sonar-reasoning Online CoT Decisiones complejas con evidencia ~8s
sonar-reasoning-pro Online ✓ Deep CoT+ Research avanzado + razonamiento ~12s
r1-1776 Offline Razonamiento sin web, código ~0.5s
🐍
Implementación — Agente de Inteligencia Competitiva
agente_inteligencia_competitiva.py
CULTIVA IA · Agentes-IA
"""
Agente de Inteligencia Competitiva — CULTIVA IA
Monitoriza el ecosistema LLM/IA para agencias en tiempo real.
Powered by Perplexity API (modelos Sonar online).
"""
import os
import time
from openai import OpenAI, RateLimitError


class IntelAgente:
    """Agente de inteligencia competitiva con búsqueda web en tiempo real."""

    def __init__(self):
        self.client = OpenAI(
            api_key=os.environ["PERPLEXITY_API_KEY"],
            base_url="https://api.perplexity.ai",
        )
        self.history = []  # para sesiones multi-turno

    # ── 1. CONSULTA RÁPIDA ─────────────────────────────────────────────
    def consulta_rapida(self, pregunta: str) -> str:
        """sonar: respuesta rápida con búsqueda web (latencia ~2s)."""
        resp = self.client.chat.completions.create(
            model="sonar",
            messages=[
                {"role": "system",
                 "content": "Eres analista de IA para agencias. Responde en español, conciso."},
                {"role": "user", "content": pregunta},
            ],
        )
        return resp.choices[0].message.content

    # ── 2. INVESTIGACIÓN PROFUNDA CON CITAS ────────────────────────────
    def investigacion(self, tema: str) -> dict:
        """sonar-pro: análisis exhaustivo + URLs de fuentes verificadas."""
        resp = self.client.chat.completions.create(
            model="sonar-pro",
            messages=[
                {"role": "system",
                 "content": "Analista senior de mercado IA. Cita siempre las fuentes. Español."},
                {"role": "user", "content": tema},
            ],
            max_tokens=2000,
        )
        contenido = resp.choices[0].message.content
        citas = getattr(resp, "citations", [])
        return {"respuesta": contenido, "citas": citas}

    # ── 3. SESIÓN MULTI-TURNO ──────────────────────────────────────────
    def chat(self, mensaje: str) -> str:
        """sonar-pro multi-turno: contexto acumulativo entre preguntas."""
        if not self.history:
            self.history.append({
                "role": "system",
                "content": "Asistente de research IA para CULTIVA IA. Cita fuentes. Español.",
            })
        self.history.append({"role": "user", "content": mensaje})
        resp = self.client.chat.completions.create(
            model="sonar-pro", messages=self.history
        )
        answer = resp.choices[0].message.content
        self.history.append({"role": "assistant", "content": answer})
        return answer

    def reset_chat(self): self.history = []

    # ── 4. STREAMING PARA DASHBOARD ────────────────────────────────────
    def stream(self, pregunta: str):
        """sonar: streaming token a token para UX reactiva."""
        stream = self.client.chat.completions.create(
            model="sonar",
            messages=[{"role": "user", "content": pregunta}],
            stream=True,
        )
        for chunk in stream:
            delta = chunk.choices[0].delta.content
            if delta:
                yield delta  # → enviar a WebSocket / SSE

    # ── 5. RETRY CON BACKOFF EXPONENCIAL ───────────────────────────────
    def buscar_con_retry(self, query: str, reintentos: int = 3) -> str:
        """Producción: manejo automático de rate-limiting."""
        for intento in range(reintentos):
            try:
                resp = self.client.chat.completions.create(
                    model="sonar",
                    messages=[{"role": "user", "content": query}],
                    timeout=30,
                )
                return resp.choices[0].message.content
            except RateLimitError:
                wait = 2 ** intento
                print(f"Rate limit. Reintentando en {wait}s...")
                time.sleep(wait)
        raise RuntimeError("Máximo de reintentos alcanzado")


# ── DEMO ──────────────────────────────────────────────────────────────
if __name__ == "__main__":
    agente = IntelAgente()

    # 1. Consulta rápida
    print(agente.consulta_rapida("¿Qué modelos LLM han lanzado esta semana?"))

    # 2. Investigación con citas
    resultado = agente.investigacion("Precios actuales GPT-4o vs Claude 3.7 vs Gemini 2.5 Pro")
    print(resultado["respuesta"])
    for i, url in enumerate(resultado["citas"], 1):
        print(f"[{i}] {url}")

    # 3. Sesión multi-turno
    print(agente.chat("¿Qué labs publican modelos en 2025?"))
    print(agente.chat("¿Cuál tiene mejor precio por millón de tokens?"))

    # 4. Streaming
    for token in agente.stream("Tendencias IA para agencias de marketing en Q3 2025"):
        print(token, end="", flush=True)
🎯
5 Casos de Uso para CULTIVA IA
1
Monitor Semanal de Mercado

Consulta automática cada lunes: qué modelos/herramientas nuevas hay, cambios de pricing, noticias regulatorias EU AI Act.

sonar
2
Análisis Comparativo de APIs

Informe profundo comparando precios, context window y capacidades de los top LLMs. Múltiples búsquedas, fuentes verificadas.

sonar-pro
3
Sesión de Research Progresivo

Multi-turno: empieza con visión global del sector, profundiza en competidores específicos, extrae datos de pricing en conversación continua.

sonar-pro (multi-turno)
4
Dashboard Live con Streaming

Respuesta token a token para widgets de inteligencia en tiempo real. Conecta vía WebSocket o Server-Sent Events a una UI React.

sonar (stream=True)
5
Pipeline de Producción con Retry Automático

Para workflows batch (reportes nocturnos, alertas automáticas): manejo de rate limits con backoff exponencial. Sin intervención manual, nunca pierde una query.

sonar · RateLimitError + backoff 2^n
📤
Output Simulado — Investigación con Citas
Llamada: agente.investigacion("Precios actuales GPT-4o vs Claude 3.7 vs Gemini 2.5 Pro")
RESPUESTA SONAR-PRO
Comparativa de precios LLM — Junio 2026

A fecha de hoy, los tres modelos líderes tienen la siguiente estructura de precios por millón de tokens (MTok):

GPT-4o (OpenAI): $2.50 entrada / $10.00 salida [1]. Ofrece contexto de 128K tokens y visión nativa. Con batch API, el precio de entrada cae a $1.25/MTok.

Claude 3.7 Sonnet (Anthropic): $3.00 entrada / $15.00 salida [2]. Destaca en coding y razonamiento extendido. Contexto de 200K tokens. Extended thinking disponible con sobrecargo.

Gemini 2.5 Pro (Google): $1.25 entrada / $10.00 salida [3] hasta 200K tokens; $2.50 / $15.00 para prompts más largos. Mayor contexto del mercado (2M tokens). Precio más competitivo en entradas.

Para agencias de IA con alto volumen, Gemini 2.5 Pro ofrece la mejor relación coste/contexto. Claude 3.7 es preferible para tareas de código complejo.
1
https://openai.com/api/pricing
2
https://www.anthropic.com/pricing
3
https://ai.google.dev/gemini-api/docs/pricing
Streaming en Tiempo Real
STREAMING › sonar › "Tendencias IA para agencias de marketing en Q3 2025"
Las agencias de marketing están adoptando tres vectores clave de IA en Q3 2025:

1. Generación de contenido multimodal — Modelos como GPT-4o y Gemini 2.5 Flash permiten crear copy + imagen + vídeo corto en un solo pipeline, reduciendo tiempos de producción hasta un 73%...

2. Hiperpersonalización en tiempo real — Agentes conectados a CRM sincronizan mensajes por segmento dinámicamente. Tasa de conversión media mejora un 31% respecto a campañas estáticas...

3. Análisis de competencia automatizado — Exactamente lo que hace este agente: monitorización continua con Perplexity
📋
Guía de Uso en Producción
Buenas Prácticas
  • Usa sonar para lookups rápidos y sonar-pro para research exhaustivo
  • Accede a citas vía getattr(resp, "citations", [])
  • Implementa siempre retry con backoff exponencial para producción
  • Para dashboards en vivo, usa stream=True + WebSocket/SSE
  • Combina con APIs directas para datos precisos (precios, cotizaciones)
Consideraciones
  • Latencia 2–5s por búsqueda web — no usar en rutas síncronas críticas
  • El system prompt no puede desactivar la búsqueda en modelos online
  • Los costes incluyen overhead de búsqueda — presupuestar con margen
  • La búsqueda es English-centric aunque responda en español
  • Para datos financieros exactos, combinar con APIs dedicadas (Yahoo Finance, etc.)