El descuento listo para LLM es importante porque el desperdicio de tokens es un costo real. Una página de documento API típica incluye 8000 tokens de HTML pero solo 2500 tokens de señal. Este tutorial utiliza el punto final de extracción de Scavio para producir rebajas con token eficiente y listas para el contexto del agente.
Requisitos previos
- Python 3.10+ o Nodo 20+
- Una clave API de Scavio
Guia paso a paso
Paso 1: Llame al punto final de extracción
Scavio devuelve el descuento sin navegación ni cromo.
import requests, os
API_KEY = os.environ['SCAVIO_API_KEY']
def to_markdown(url):
r = requests.post('https://api.scavio.dev/api/v1/extract',
headers={'x-api-key': API_KEY},
json={'url': url, 'format': 'markdown'})
return r.json().get('markdown', '')Paso 2: Medir el ahorro de tokens
Compare el tamaño HTML sin formato con el descuento.
import tiktoken
enc = tiktoken.get_encoding('cl100k_base')
def compare(url):
md = to_markdown(url)
raw = requests.get(url).text
return {'raw_tokens': len(enc.encode(raw)), 'md_tokens': len(enc.encode(md))}Paso 3: Introducir a un agente LLM
Markdown se ubica directamente en un mensaje de usuario.
import anthropic
client = anthropic.Anthropic()
def summarize(url):
md = to_markdown(url)
msg = client.messages.create(
model='claude-sonnet-4-6',
max_tokens=512,
messages=[{'role': 'user', 'content': f'Summarize in 5 bullets:\n{md[:6000]}'}])
return msg.content[0].textPaso 4: Caché de páginas buscadas con frecuencia
Evite llamadas repetidas para páginas de documentos estables.
from functools import lru_cache
@lru_cache(maxsize=500)
def cached_markdown(url):
return to_markdown(url)Paso 5: Convertir por lotes un mapa del sitio
Recorra un sitemap.xml para una conversión masiva.
from xml.etree import ElementTree
def bulk(sitemap_url):
r = requests.get(sitemap_url)
urls = [e.text for e in ElementTree.fromstring(r.text).iter('{*}loc')]
return {u: to_markdown(u) for u in urls[:50]}Ejemplo en Python
import os, requests
API_KEY = os.environ['SCAVIO_API_KEY']
def to_markdown(url):
r = requests.post('https://api.scavio.dev/api/v1/extract',
headers={'x-api-key': API_KEY},
json={'url': url, 'format': 'markdown'})
return r.json().get('markdown', '')
print(to_markdown('https://docs.prisma.io')[:500])Ejemplo en JavaScript
const API_KEY = process.env.SCAVIO_API_KEY;
export async function toMarkdown(url) {
const r = await fetch('https://api.scavio.dev/api/v1/extract', {
method: 'POST',
headers: { 'x-api-key': API_KEY, 'Content-Type': 'application/json' },
body: JSON.stringify({ url, format: 'markdown' })
});
return (await r.json()).markdown || '';
}Salida esperada
Clean markdown representation of the page, stripped of nav and cookies. Token count drops 40 to 60% versus raw HTML.