- Buscar en la web en vivo con
/augment/search - Decidir cuáles de esos resultados vale la pena leer
- Convertir las páginas seleccionadas a Markdown con
/augment/scrape - Pedir a un modelo de chat que escriba el informe, citando las fuentes por número
- Conectar las cuatro etapas en un único script
venice_parameters.enable_web_search en una completion de chat. La guía Búsqueda y extracción web compara ambos enfoques.
Configuración
Necesitas Python 3.9 o posterior, el paqueterequests y una clave de API de Venice. Consulta Generación de una clave de API si aún no tienes una.
research.py y comienza con las importaciones y un bloque de encabezados compartido que reutilizará cada llamada:
1. Busca en la web
/augment/search toma una consulta y devuelve hasta 20 resultados clasificados. Brave es el proveedor predeterminado y aplica Zero Data Retention. Google también está disponible y se envía mediante proxy a través de Venice, de modo que la consulta nunca se vincula contigo.
content llega con HTML dentro, porque el proveedor envuelve los términos coincidentes en etiquetas <strong>. La sustitución HTML_TAG de arriba las elimina para que el fragmento llegue al modelo como texto sin formato.
El campo date suele ser una cadena vacía. Muchas páginas no publican una fecha legible por máquina, así que trata date como una pista que puedes usar cuando esté presente, más que como un campo por el que puedas ordenar o filtrar.
2. Elige qué fuentes leer
Extraer los diez resultados sería lento, costoso y en gran medida redundante. Los motores de búsqueda devuelven varias páginas del mismo sitio, y los sitios de documentación en particular devuelven la misma página en varios idiomas, así que el mismo contenido puede aparecer tres o cuatro veces bajo URL distintas. Conservar solo el resultado mejor clasificado por dominio elimina la mayor parte de esa duplicación en unas pocas líneas:date reciente. Cada filtro que apliques aquí es una decisión que el modelo ya no tendrá oportunidad de equivocar.
3. Extrae las páginas seleccionadas
/augment/scrape obtiene una URL pública y la devuelve como Markdown. Primero solicita al sitio una representación Markdown nativa y recurre a la extracción basada en navegador cuando no la hay.
Algunas páginas fallarán, y una herramienta de investigación debería tratar eso como algo rutinario en lugar de fatal:
200 pero entregan un banner de cookies o una envoltura vacía en lugar de un artículo.
Los fallos de extracción devuelven un cuerpo simple
{"error": "..."} con un mensaje legible, por ejemplo X (formerly Twitter) blocks automated access to their content. X y Reddit están bloqueados por completo. Para incluir publicaciones de X en una respuesta, utiliza en su lugar venice_parameters.enable_x_search en una completion de chat.4. Escribe el informe
Ahora entregamos al modelo las páginas que recopilamos, numeradas, y le pedimos citas que se refieran a esos números. La numeración en el prompt es lo que nos permite convertir después un[2] de la salida en una URL.
temperature baja mantiene la redacción cerca del texto de las fuentes. Establecer enable_web_search en off coincide con el valor predeterminado, pero decirlo explícitamente garantiza que el modelo no pueda introducir en silencio una fuente que no aparece en nuestra lista de referencias.
5. Únelo todo
La última pieza ejecuta las etapas en orden y añade la lista de referencias que resuelve los números de las citas:stderr, de modo que puedes redirigir solo el informe a un archivo:
Ajuste del pipeline
La mayor parte del tiempo de reloj se va a la completion de chat final, ya que cuatro páginas extraídas suman decenas de miles de tokens. Estas son las palancas por las que conviene empezar:Próximos pasos
El pipeline que ya tienes es una base más que un producto terminado. Algunas direcciones que vale la pena explorar:- Almacena en caché el Markdown extraído por URL para que las preguntas repetidas no vuelvan a descargar las mismas páginas.
- Guarda el Markdown como vectores con Embeddings y recupera pasajes en lugar de páginas enteras.
- Deja que el modelo planifique varias consultas antes de buscar, como hace la demo Agente de investigación privado.
- Lee el informe en voz alta canalizándolo a Narración de artículos con texto a voz.
Búsqueda y extracción web
Referencia de los endpoints Search y Scrape.
Narración de artículos con texto a voz
Convierte el texto que acabas de generar en audio.
Embeddings
Indexa el Markdown extraído en lugar de volver a descargarlo.
Agente de investigación privado
Un agente más grande que planifica sus propias búsquedas.