LLM 就绪的降价很重要,因为代币浪费是真正的成本。典型的 API 文档页面包含 8,000 个 HTML 标记,但仅包含 2,500 个信号标记。本教程使用 Scavio 的提取端点来生成可用于代理上下文的令牌高效降价。
前置条件
- Python 3.10+ 或 Node 20+
- Scavio API 密钥
操作指南
步骤 1: 调用提取端点
Scavio 返回了去掉导航和 chrome 的 Markdown。
Python
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', '')步骤 2: 衡量代币节省
将原始 HTML 大小与 Markdown 进行比较。
Python
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))}步骤 3: 提交给LLM代理
Markdown 直接插入用户消息中。
Python
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].text步骤 4: 缓存频繁获取的页面
避免重复调用稳定的文档页面。
Python
from functools import lru_cache
@lru_cache(maxsize=500)
def cached_markdown(url):
return to_markdown(url)步骤 5: 批量转换站点地图
循环遍历 sitemap.xml 进行批量转换。
Python
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]}Python 示例
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])JavaScript 示例
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 || '';
}预期输出
JSON
Clean markdown representation of the page, stripped of nav and cookies. Token count drops 40 to 60% versus raw HTML.