Kimi K3 的 1M 上下文怎么用:整库代码、长文档与省钱技巧

Kimi K3 支持 100 万 token 上下文。这篇讲清 1M 能装多少、整库代码分析与长文档问答怎么组织 messages、缓存如何把长 prompt 价格打一折,以及何时该用 RAG 而不是硬塞。

Kimi K3 把上下文窗口拉到了 1,048,576 个 token —— 差不多是 K2 的四倍。很多原来必须切片、做 RAG、反复拼接的活儿,现在可以「一次性喂进去」。但 1M 不是让你无脑塞满的,用对了省事又省钱,用错了又贵又慢。这篇讲清楚 1M 上下文到底能怎么用。

1M token 能装下什么

粗略换算(中英文混排、按经验值),1M token 大约相当于:

  • 一个中型代码仓库:几百个源文件的核心部分;
  • 一本书:一本几百页的技术手册或长篇文档;
  • 几十份 PDF / 合同:整套项目文档一次读完;
  • 超长对话历史:长程 Agent 跑很多轮工具调用后的完整上下文。

换句话说,过去因为「装不下」而必须拆分的任务,K3 大多能在单轮请求的完整语境里完成 —— 模型看到全貌,答案的连贯性和少丢信息是最大收益。

整库代码分析怎么组织

把代码喂给 K3 时,结构比堆量重要。推荐的 messages 组织方式:

system_prompt = "你是资深工程师。下面是完整仓库,回答时引用具体文件与行号。"

repo_dump = "\n\n".join(
    f"### FILE: {path}\n```\n{code}\n```"
    for path, code in files
)

resp = client.chat.completions.create(
    model="kimi-k3",
    messages=[
        {"role": "system", "content": system_prompt},
        {"role": "user", "content": repo_dump + "\n\n问题:登录鉴权的逻辑在哪几个文件?有没有可以合并的重复代码?"},
    ],
)

几个要点:

  • 给每个文件加清晰的路径标记(### FILE: path),模型才能准确引用;
  • 把不变的部分(仓库内容)放前面,把每次不同的问题放后面 —— 这样固定前缀能吃到缓存;
  • 让模型引用文件 / 行号,输出可核查,而不是泛泛而谈。

长文档问答与缓存

长文档场景(法律合同、论文、手册)是 1M 上下文最省心的用法:把整份文档放进 system 或第一条 user 消息,后面直接连着问,不用自己切块检索。

关键省钱点:K3 默认开启上下文缓存。 同一份长文档反复问不同问题时,文档这段前缀会命中缓存,输入价从 ¥20/M 降到 ¥2/M。所以组织顺序是:

[system: 角色 + 指令]  ← 固定
[user: 整份文档]        ← 固定,命中缓存
[user: 本轮具体问题]     ← 每轮变化

把固定内容前置、变化内容后置,是长上下文省钱的第一原则。定价与缓存的详细算法见 Kimi K3 价格详解

什么时候还是该用 RAG

1M 很大,但不是万能:

  • 知识库远超 1M(比如整个公司 wiki、百万行代码):还是得先检索再喂,RAG 不会过时;
  • 只需要少量相关片段:全塞进去是浪费 —— 输入 token 白花钱、延迟也上去了;
  • 强实时 / 高并发:上下文越长单次越慢越贵,高频场景该精简就精简。

实用原则:能一次装下、且大部分内容都相关,就直接塞;否则先检索、再把命中片段交给 K3。 两种做法也能叠加 —— 用 RAG 把范围缩到几十万 token,再让 K3 在这个「大但相关」的上下文里深度作答。

注意事项

  • 越长越贵越慢:1M 是上限不是目标,按需使用;
  • 利用缓存:固定前缀前置,长文 / 多轮务必吃缓存;
  • 视觉也算上下文:图片 / 视频 token 同样占预算,多模态长任务注意总量;
  • 别只留 content:多轮 / 工具调用把完整 assistant message 原样回传,别丢状态。

完整的接入代码和报错排查见 Kimi K3 API 接入教程。想用一个 Key 同时调 K3 和别家模型、按任务分流长文与短任务,从 GetModel 控制台开始最省事。