LlamaIndex
La búsqueda de noticias como herramienta para agentes y flujos de LlamaIndex.
Una herramienta sobre la API HTTP
Una herramienta de búsqueda de noticias es un pedido a nuestra API. Escríbela como una función con su
docstring —el agente la lee para decidir cuándo llamarla— y envuélvela en un FunctionTool:
pip install llama-index httpximport os
import httpx
from llama_index.core.agent.workflow import FunctionAgent
from llama_index.core.tools import FunctionTool
from llama_index.llms.openai import OpenAI
def search_news(query: str, days: int = 7) -> list[dict]:
"""Search recent news articles. Returns the title, URL, source, publication time
and a relevance score (0-1) of each one."""
res = httpx.post(
"https://api.typesearch.ai/v1/search",
headers={"Authorization": f"Bearer {os.environ['TYPESEARCH_API_KEY']}"},
json={"query": query, "days": days, "mode": "fast", "max_results": 8},
timeout=60,
)
res.raise_for_status()
fields = ("title", "url", "source", "published_at", "score", "snippet")
return [{k: r.get(k) for k in fields} for r in res.json()["results"]]
agent = FunctionAgent(
tools=[FunctionTool.from_defaults(fn=search_news)],
llm=OpenAI(model="gpt-4.1"),
system_prompt="Responde con noticias recientes. Cita la fuente y el enlace de cada dato.",
)
response = await agent.run("¿Qué cambió esta semana con las regalías al litio en Chile?")La búsqueda corre en modo fast, $1,40 cada 1.000 búsquedas. Cámbialo a "normal" para que los mejores
resultados se lean antes de ordenarlos ($2,20); todos los parámetros están en la
referencia de la API.
Como retriever
Para darle notas a un motor de consultas en vez de a un agente, convierte cada resultado en un Document,
con su fragmento como texto y lo demás como metadatos:
from llama_index.core import Document
docs = [
Document(text=r["snippet"] or r["title"], metadata={k: r[k] for k in ("title", "url", "source", "published_at")})
for r in search_news("regalías al litio en Chile")
]Devolvemos fragmentos breves, nunca páginas enteras. Para más texto sobre tu pregunta, agrega
"highlights": true y usa el modo normal o deep: los mejores resultados vuelven con fragmentos
textuales elegidos para tu consulta.