揭示了高流量推荐系统中LLM带来的token成本爆炸问题,给出了通过架构优化、智能检索和定价模型降本的具体方法。
基于 LLM 的推荐系统可以利用丰富的物品元数据和用户上下文,获得优于传统协同过滤的效果,但也会带来明显的成本风险。如果每次推荐请求都携带完整的用户历史记录、产品目录描述和 few-shot 示例,token 数量会迅速增长。对于运行大规模个性化流水线的团队来说,这会导致支出难以预测,并受到吞吐量限制。解决办法是将更智能的架构、激进的检索策略,以及不会惩罚长输入的定价模式结合起来。
推荐系统天然属于输入密集型应用。一次 reranking 调用可能会拼接几十条物品描述、用户交互日志和系统指令。在按 token 计费的推理模式下,这意味着成本会随着上下文长度线性增长。更糟糕的是,Agent 化推荐系统会反复遍历候选集合或调用工具,从而成倍放大这种增长。如果流水线在每个用户会话中发送大量请求,而每个 prompt 平均包含数千个 token,那么按 token 计费的账单很快就会膨胀。优化的第一步,是认识到并非每个 token 都需要交给最昂贵的模型处理,而且也并非所有服务商都按 token 收费。
两阶段设计可以将检索与生成分离。先使用 embeddings 模型把数千个候选项缩小到 top-K 集合,再调用 LLM 进行 reranking 或生成解释。
Oxlo.ai 提供 BGE-Large 和 E5-Large 的 embedding endpoint,可以通过同一套兼容 OpenAI 的 SDK 进行查询。检索得到的 top-K 物品随后会被传入启用了 JSON mode 的 chat/completions 调用,通过强制输出结构化结果,避免因解析失败而重试。
缓存压缩后的用户画像。不要在每次请求中发送原始交互历史,而是维护一份由较小模型或后台任务生成的滚动摘要。这份摘要可以存储在键值缓存中,并注入 prompt,从而将输入规模降低一个数量级。
from openai import OpenAI
import os
client = OpenAI(
base_url="https://api.oxlo.ai/v1",
api_key=os.environ["OXLO_API_KEY"]
)
# Stage 1: Embed user query and retrieve top-K
embed_resp = client.embeddings.create(
model="BGE-Large",
input="sci-fi movies with strong world-building"
)
# ... retrieval logic ...
candidates = [
{"id": 101, "title": "Dune", "desc": "Desert planet epic with political intrigue"},
{"id": 102, "title": "Blade Runner 2049", "desc": "Neo-noir sequel exploring AI and memory"}
]
# Stage 2: Rerank with structured output
prompt = f"""Rank these candidates for the user.
Return only JSON: {{"ranked_ids": [int]}}.
Candidates: {candidates}"""
chat_resp = client.chat.completions.create(
model="Llama 3.3 70B",
messages=[{"role": "user", "content": prompt}],
response_format={"type": "json_object"}
)
ranking = chat_resp.choices[0].message.content
即使经过检索,上下文窗口仍可能变得很长。可以使用动态截断:保留最近的交互记录并丢弃较旧的内容,或者通过语义压缩来概括过时的历史记录。如果确实需要长上下文,就选择专门为此设计的模型。Oxlo.ai 上的 DeepSeek V4 Flash 支持 1M 上下文窗口,Kimi K2.6 则可以处理 131K token。在按请求计费的模式下,发送完整的 128K 上下文并不会改变单次调用的成本。这会改变 zero-shot 推荐的成本结构,使其从昂贵变为切实可行。
避免发送原始目录数据。可以把物品映射为紧凑的属性标签,只发送这些标签。例如,用精心整理的 20 个单词属性字符串,替代一段 200 个单词的产品描述。这样可以同时减少噪声与成本。
按 token 计费的服务商会让成本随着 prompt 长度增长。对于推荐系统来说,这实际上是在惩罚准确性,因为更丰富的用户历史和更完整的物品元数据虽然能改善推荐结果,却也会导致 token 数量暴增。Oxlo.ai 采用固定的按请求计费模式:无论输入多长,每次 API 调用的费用都相同。对于长上下文和 Agent 化推荐系统,与 Together AI、Fireworks AI、OpenRouter、Replicate 或 Anyscale 等按 token 计费的替代方案相比,这种模式可以显著节省成本。
由于 Oxlo.ai 完全兼容 OpenAI SDK,因此切换时只需修改一行 base_url。热门模型没有冷启动,所以即使请求规模从每分钟数百次增长到数千次,延迟仍然可以保持稳定且可预测。
你可以在 https://oxlo.ai/pricing 查看具体的套餐详情。
并非每个阶段都需要旗舰级推理模型。可以使用 Qwen 3 Coder 30B 或 Oxlo.ai Coder Fast 等快速且具备代码能力的模型,完成结构化评分和过滤逻辑。把 DeepSeek R1 671B、GLM 5 或 Kimi K2.6 等大型推理模型留给最终阶段的解释生成,或者用于高价值用户群体。
Oxlo.ai 还支持 function calling 和工具调用,因此可以把实时数据查询交给外部 API,而不必用过时的数据库快照撑大 prompt。应让 LLM 专注于排序,而不是承担存储职责。
下面是在 Oxlo.ai 上构建成本优化型推荐流水线的一种简洁模式:
通过 embeddings endpoint,使用 BGE-Large 对用户信号进行 embedding。
从向量存储中检索 top-20 候选项。
将每个候选项的元数据截断或总结到 50 个单词以内。
使用 JSON mode 调用 Llama 3.3 70B 或 DeepSeek V3.2,返回排序列表和简短理由。
在当前会话中缓存结果。
由于 Oxlo.ai 按请求收费,你可以尝试更大的上下文窗口和更全面的候选集合,而不必盯着 token 计量器不断上涨。这种自由度会直接转化为更好的推荐质量。
优化 LLM 推荐系统,并不只是使用一些 prompt 技巧。真正重要的是设计一条流水线:有意识地控制上下文长度,让检索承担主要工作,并选择一种奖励准确性而非惩罚准确性的推理定价模式。Oxlo.ai 的按请求计费方式、丰富的模型目录以及兼容 OpenAI 的 API,使其非常适合需要大规模构建输入密集型推荐系统的团队。
如需采取进一步措施,可以考虑屏蔽此人和/或举报滥用行为。