Codestral 是 Mistral AI 发布的代码生成大模型,2024 年 5 月首发 22B 稠密版本,2025 年 1 月更新为 Codestral 25.01。它与通用聊天模型的区别在于:模型权重、上下文组织方式(Fill-in-the-Middle,FIM)和推理接口都针对“代码补全”这一高频低延迟场景做了专门设计,而不是简单地把对话模型拿来做续写。官方提供两种消费方式:一是通过 La Plateforme 托管 API 直接调用,数分钟接入,无需 GPU;二是从 Hugging Face 下载权重,用 vLLM、llama.cpp 等后端私有化部署。25.01 起许可证改为 Apache 2.0,允许商用与二次分发,初版则使用 Mistral 非生产许可证(MNPL)。本篇按“速览 → 安装配置 → 快速上手 → 核心能力 → 生产部署 → 选型对比 → 常见误区 → 面试题 → 学习资源”的顺序组织,目标是让读者读完就能把 Codestral 跑起来,同时知道什么时候该选它、什么时候不该选它。

岗位关联

对 AI 从业者而言,Codestral 是掌握“代码补全即服务”的低门槛入口:官方托管 API 让 FIM 能力开箱即用,Apache 2.0 权重又为私有化代码助手保留了完整退路,适合作为团队代码智能基建的起点。

目录
  1. 为什么需要 Codestral:通用模型做代码补全的延迟与建模缺陷
  2. 安装与环境配置:3 步就绪
  3. 快速上手:5 分钟跑通补全与 FIM
  4. 核心能力详解:4 大支柱
  5. 生产部署与监控:从上线到运维
  6. 版本迭代
  7. AI 应用场景
  8. 常见误区
  9. 面试题
  10. 参考来源
工具类型
代码生成大模型(开源权重 + 托管 API 双形态)
开发商
Mistral AI(法国·巴黎)
开源协议
Apache 2.0(Codestral 25.01 起);初版为 Mistral 非生产许可证
GitHub Stars
github.com/mistralai(Mistral AI 组织)
主要语言
Python(官方 SDK);权重支持 vLLM / llama.cpp / Ollama 等多后端
当前版本
Codestral 25.01(2025-01,模型标识 codestral-2501)
安装方式
pip install mistralai(API 调用);Hugging Face 权重 + vLLM(自托管)
下载地址
官方文档
上手难度
★★☆☆☆(较低:API 数分钟可用;自托管需 GPU 显存规划)
适合人群
后端/全栈工程师、IDE 插件开发者、私有化代码助手建设者
同类工具
DeepSeek-Coder-V2、Qwen2.5-Coder、Code Llama

速览卡是工具类内容的固定首屏模块:30 秒判断「这工具是什么、能不能商用、适不适合我」。

为什么需要 Codestral:通用模型做代码补全的延迟与建模缺陷

传统做法是用通用大模型做代码生成:把整段代码作为提示词丢给聊天模型,让它续写。问题有三个:一是首字延迟高,通用模型的参数量动辄百亿以上,部署成本与推理延迟对 IDE 逐键补全场景不友好;二是缺乏中间填充(FIM)建模,聊天模型只会“顺藤摸瓜”往后写,一旦光标停在代码中间,就难以同时参考光标前后的代码;三是价格,按 token 计费的高频调用,成本会快速累积。

Codestral 的解法是做一个 22B 的专用代码模型:参数量刚好落在“质量够用、延迟可接受”的区间;训练阶段就引入 FIM 任务,API 层直接暴露 prompt(前缀)和 suffix(后缀)两个参数,模型只生成二者之间的代码;同时覆盖 80 余种语言,25.01 把上下文窗口扩到 256K,并针对工具调用/编码 Agent 场景做了专项微调。它同时提供托管 API 与开源权重,团队既可以在不碰 GPU 的情况下把补全能力集成进编辑器插件,也可以把权重拉回内网做私有化部署。

与同类代码模型相比,Codestral 最突出的气质差异是“API 优先、FIM 开箱即用”:官方 Python SDK 中一个 server_url 参数即可切换到 Codestral 端点,FIM 接口是产品级的一等公民;而多数竞品虽也支持 FIM,但要么需要自己拼接特殊 token,要么没有官方托管端点。它的代价是模型只有单档 22B(外加 7B Mamba 变体),不具备 DeepSeek-Coder-V2 那样的大规模 MoE 上限。

安装与环境配置:3 步就绪

步骤一·安装 SDK。 环境要求 Python 3.8+,执行 pip install -U mistralai 安装官方 Python 客户端;不想装 SDK 也可以直接用 curl 调 REST 接口。

步骤二·获取并配置 API Key。 打开 console.mistral.ai 注册账号,进入 API Keys 页面创建 Key,复制后写入环境变量。Key 只显示一次,丢失需重建。注意:官方文档中 Codestral 相关示例使用独立端点 https://codestral.mistral.ai,与主 API(api.mistral.ai)不同,SDK 初始化时需要显式传入 server_url。

步骤三·验证连通性。 用一次最小 FIM 请求验证:模型标识用 codestral-latest(跟随最新版)或 codestral-2501(锁定 25.01 版本)。返回 choices[0].message.content 即成功。

bash18 行
# 1. 安装官方 Python SDKpip install -U mistralai # 2. 配置 API Key(在 console.mistral.ai 创建)export MISTRAL_API_KEY="your-api-key" # 3. 验证连通性:调用一次 FIM 补全python -c "from mistralai import Mistralclient = Mistral(api_key='$MISTRAL_API_KEY', server_url='https://codestral.mistral.ai')r = client.fim.complete(    model='codestral-latest',    prompt='def is_prime(n):',    suffix='print(is_prime(7))',    max_tokens=100,)print(r.choices[0].message.content)"

快速上手:5 分钟跑通补全与 FIM

最小可用流程:① 确认环境变量 MISTRAL_API_KEY 已配置;② 跑一段聊天式代码生成,验证模型可用;③ 跑 FIM 补全,验证“光标在中间”场景;④ 把相同逻辑搬进你的服务或编辑器插件。

1. 打开终端,执行 echo $MISTRAL_API_KEY 确认 Key 已导出。

2. 将下面的代码保存为 codestral_demo.py,运行 python codestral_demo.py。

3. 检查输出:chat 段应给出完整函数;FIM 段应只输出函数体中间部分,且与后缀 print(factorial(5)) 衔接自然。

4. 进阶技巧:把 stream=True 传入 complete() 观察流式输出;将 model 换成 codestral-2501 固定版本,避免 codestral-latest 漂移导致行为变化。

python28 行
import osfrom mistralai import Mistral client = Mistral(    api_key=os.getenv("MISTRAL_API_KEY"),    server_url="https://codestral.mistral.ai",)model = "codestral-latest" # 1) 聊天式代码生成:生成完整函数chat = client.chat.complete(    model=model,    messages=[        {"role": "user", "content": "用 Python 写一个快速排序函数,要求原地排序"}    ],)print("=== chat ===")print(chat.choices[0].message.content) # 2) FIM:给定前缀与后缀,补全中间fim = client.fim.complete(    model=model,    prompt="def factorial(n: int) -> int:\n    ",    suffix="\n\nprint(factorial(5))",    temperature=0.2,)print("=== FIM ===")print(fim.choices[0].message.content)

核心能力详解:4 大支柱

Codestral 与通用模型最大的差异在 FIM(Fill-in-the-Middle,中间填充):接口同时接收 prompt(光标前代码)与 suffix(光标后代码),模型只生成二者之间的片段。这与前缀续写是两种建模方式——前缀续写只能顺延生成,而 FIM 在训练阶段就学会了同时参考前文和后文。底层通过 [FIM_PRE]、[FIM_SUFFIX]、[FIM_MID] 等特殊 token 组织训练样本;API 层直接暴露 prompt/suffix 两个参数,调用者无需关心特殊 token。IDE 补全大多属于“光标在行中间”的场景,这正是 FIM 的典型应用位置。

模型支持 80 余种编程语言,覆盖 Python、TypeScript/JavaScript、Java、Go、Rust、C++、SQL、Bash 等主流栈;25.01 在训练数据与后训练阶段强化了仓库级任务,包括跨文件理解和真实工程中 FIM 补全的分布。对团队而言,同一模型可以同时服务前后端代码、脚本与 SQL 生成,无需按语言分别维护多套模型。

25.01 针对 function calling 与编码 Agent 场景做了专项微调,模型可以在一次响应中输出结构化工具调用参数,配合 stream=True 的 SSE 流式返回,适合接入 CI 机器人、自动修 bug、批量生成测试等流水线任务。注意职责划分:工具调用走 chat 接口,FIM 接口只负责纯文本中间填充,两者不通用。

25.01 以 Apache 2.0 发布权重,可在 Hugging Face 下载后接入 vLLM、SGLang、llama.cpp、Ollama 等推理后端,官方支持 bf16 与量化部署。由于许可证允许修改与商用,可以在自有权重上继续微调,产出面向垂直领域(如特定框架、内部规范)的定制代码模型——这是闭源 API 不具备的能力。

生产部署与监控:从上线到运维

部署方式一·官方托管 API。 生产级接入最省事的方式是直接用 Mistral 官方 API:在 console.mistral.ai 创建组织与 Key,模型标识用 codestral-latest(跟随最新版)或 codestral-2501(锁定版本);所有请求走 https://codestral.mistral.ai,chat 用 /v1/chat/completions,FIM 用 /v1/fim/completions;生产环境开启 stream=True 降低首字延迟;控制台提供组织维度的配额与用量视图。该方式的成本是 token 单价与网络延迟,适合快速上线、对数据出境无强约束的团队。

部署方式二·vLLM 自托管。 需要数据不出内网、或想规避按 token 计费时,用 vLLM 自托管。22B BF16 权重约 44GB,加上 KV Cache,建议从 2×80GB GPU 起步,并按显存把 --max-model-len 收敛到 32K–64K 防止 OOM。vLLM 提供 OpenAI 兼容的 /v1/chat/completions 接口,FIM 可用扩展接口或经提示词模板实现。启动命令如下:

可观测性。 无论 API 还是自托管,都要盯四个指标:成功率(4xx/5xx 占比)、时延(首 token 与总时长 P50/P95)、token 吞吐(自托管用 vLLM 的 /metrics 接 Prometheus 抓取)、成本(官方控制台按组织统计 token 用量)。自托管额外开启请求日志,记录 model、prompt 长度与 max_tokens,便于定位超时与 OOM。流式场景要为 SSE 中断单独设置告警,避免用户端静默缺尾。

<p class=“para-label“>避坑清单:</p><ul class=”dash-list”><li>版本与许可证混用:初版 Codestral 用 Mistral 非生产许可证(MNPL),商用只能在 25.01(Apache 2.0)之上,先核对 LICENSE 再谈合规。</li><li>忘记独立端点:Codestral 的官方域名为 codestral.mistral.ai,误用 api.mistral.ai 会报错或路由异常,SDK 中务必设置 server_url。</li><li>自托管不看显存:22B BF16 权重约 44GB、KV Cache 另计,单卡 24GB 直接 OOM,先用 --max-model-len 与 --gpu-memory-utilization 做显存预算。</li><li>FIM 后缀不准确:suffix 必须与真实文件光标后的内容一致,传入错误后缀会让补全偏离上下文。</li></ul>

bash8 行
pip install -U vllm huggingface_hubhuggingface-cli login                # 接受 mistralai/Codestral-25.01 的下载条款huggingface-cli download mistralai/Codestral-25.01vllm serve mistralai/Codestral-25.01 \  --tensor-parallel-size 2 \  --max-model-len 32768 \  --gpu-memory-utilization 0.9 \  --port 8000
维度Codestral(25.01)DeepSeek-Coder-V2Qwen2.5-Coder-32BCode Llama
定位Mistral 代码模型,API 优先深度求索代码大模型(MoE)阿里通义多档位代码模型Meta 代码模型
参数规模22B(稠密)236B MoE(激活 21B)0.5B–32B 多档7B / 13B / 34B / 70B
上下文窗口256K128K32K(可扩展 128K)16K(基础)
补全/FIM 能力原生 FIM 接口,官方 API 开箱即用支持 FIM(特殊 token)支持 FIM(专用 token)7B/13B 支持 infill,34B/70B 不支持
许可证Apache 2.0(25.01)DeepSeek 许可证(商用需遵守条款)Apache 2.0Llama 社区许可证
生态集成mistralai SDK / La Plateforme / vLLMvLLM / HF / 官方 APIvLLM / Ollama / 多平台,生态最广Ollama / HF / 老牌生态
生产部署官方 API 或 vLLM 自托管官方 API 或自托管(集群要求高)轻量到旗舰均可自托管自托管为主(70B 需大显存)
适合谁想快速接入托管补全服务的团队能接受大模型集群、追求最强代码智能者需要多档位、本地部署优先的团队对 Llama 生态/合规有硬性要求的机构

选型建议:需要最短时间把 FIM 补全跑起来、不愿管 GPU,选 Codestral 官方 API;要本地多档位与最大生态,选 Qwen2.5-Coder;追求单模型极致智能且有 8 卡以上集群,看 DeepSeek-Coder-V2;受 Llama 合规体系约束的机构选 Code Llama。

版本迭代

Codestral 的演进主线是“单点补全能力 → 高效架构变体 → 全维度升级”。2024 年 5 月首发 22B 稠密模型(32K 上下文、原生 FIM);同年 7 月推出 Mamba-2 架构的 7B 版本,降低长序列推理成本;2025 年 1 月发布 25.01,将上下文扩到 256K、HumanEval 提升至 90.3%,并把许可证切换为 Apache 2.0(截至本文编写,25.01 为最新正式版)。

版本时间变化提升
Codestral v0.1(Codestral-22B-v0.1)2024-05首发 22B 代码模型32K 上下文、原生 FIM、80+ 语言、MNPL 许可证
Codestral Mamba(7B)2024-07引入 Mamba-2 架构线性复杂度推理、Apache 2.0、长序列显存占用更低
Codestral 25.01(codestral-2501)2025-01全维度升级256K 上下文、HumanEval 90.3%、Apache 2.0、Agent/函数调用强化
基准Codestral v0.1(2024-05)Codestral 25.01(2025-01)
HumanEval pass@181.1%90.3%官方发布报告的单次生成通过率
MBPP pass@1—88.6%25.01 官方报告;初版未公布一致口径
结论

25.01 的核心提升来自上下文窗口(32K→256K)与指令/工具调用微调,HumanEval 提升约 9 个百分点属于跨代改进。选型上:生产补全直接用 25.01;若对推理成本敏感且任务偏简单,Codestral Mamba 7B 可作为降档选项。

AI 应用场景

场景一:IDE 智能补全插件(FIM)

阶段:代码补全 / Fill-in-the-Middle 推理

解决的问题:前缀续写只能补光标后方,无法处理“光标在文件中间”的编辑场景;Codestral 原生 FIM 接口一次请求同时接收 prompt 与 suffix,官方 API 免 GPU 运维,适合把补全能力嵌入编辑器插件。

具体案例:一个内部代码助手把 Codestral 接入 VS Code 扩展,触发时机设为“缓冲区内键入停顿后的 FIM 请求”。按官方基准,25.01 的 HumanEval pass@1 为 90.3%(初版 81.1%),FIM 输出的中间片段可直接插入光标处,不需要模型重写整段文件,显著减少 diff 噪声。

场景二:私有化代码助手(合规与数据隔离)

阶段:模型自托管 / 私有化推理

解决的问题:金融、军工等企业对代码出网有硬性限制,SaaS API 不可用;Codestral 25.01 为 Apache 2.0,权重可下载,vLLM 可部署在内网 GPU 集群,数据不出内网即可提供补全服务。

具体案例:某团队用 2×80GB GPU 部署 Codestral 25.01,--max-model-len 设为 32K,通过 vLLM 的 OpenAI 兼容接口接入内部 GitLab CI。相比商业 API 按 token 计费,自托管在长期高频调用下边际成本更低,且模型版本可锁定、行为可复现。

场景三:编码 Agent 与 CI 自动化

阶段:Agent 编排(function calling)

解决的问题:人工写单元测试、修 lint 报错耗时且重复;25.01 针对编码 Agent 场景做了函数调用微调,模型可以在一次响应中输出结构化工具调用参数,适合放进自动化流水线。

具体案例:CI 脚本通过 mistralai SDK 以 stream=True 调用 codestral-latest,让模型生成 pytest 用例并输出 JSON 结构化的测试列表,再由脚本落盘执行。官方基准中 25.01 的 MBPP 通过率为 88.6%,实测中可覆盖大部分常规函数级测试用例,人工只需处理边界条件。

常见误区

误区我用惯了 api.mistral.ai,直接把 model 改成 codestral-latest 应该就能用,报错就是官方服务的问题。

正解官方文档中 Codestral 的端点是独立的 https://codestral.mistral.ai。用默认的 api.mistral.ai 调用 codestral-latest 会得到模型不存在或路由错误;在 mistralai SDK 中要显式传入 server_url,用 curl 则直接打 codestral 域名。接入前先核对 base URL 与模型标识(codestral-2501 / codestral-latest)。

为何常见:Mistral 全家桶共用同一个 La Plateforme 控制台和同一套 API Key,很多人默认所有模型走同一个网关,忽略了 Codestral 是独立域名路由。

误区Codestral 在 Hugging Face 上能下载,宣传也是“开放模型”,那我直接集成到商业产品里卖就行。

正解许可证要按版本区分:初版 Codestral-22B-v0.1 采用 Mistral 非生产许可证(MNPL),明确限制生产与商业用途;Codestral Mamba 与 25.01 才是 Apache 2.0,允许商用和修改,但仍需保留版权声明与修改说明。商用前必须核对所用版本目录下的 LICENSE 文件。

为何常见:25.01 转 Apache 2.0 后,社区传播时往往只说“开源了”,容易让人把历史版本也误当成 Apache 2.0。

误区我调用 chat.complete,把要补全的代码放在 message 里,再让它不要改动别的地方,效果应该和 FIM 一样。

正解FIM 是训练阶段专门设计的能力:接口显式接收 prompt(前缀)和 suffix(后缀),模型在二者之间生成中间代码,并配合专属特殊 token 组织输入。聊天接口没有后缀约束,长输入下容易改写前文或生成无关内容。要获得稳定的中间补全,必须走 FIM 接口并把后缀传准确。

为何常见:模型对外都是“输入文本→输出文本”,初学者容易忽略输入组织方式对生成质量的决定性影响,以为“模型足够聪明就能猜到意图”。

误区25.01 有 256K 上下文,我把整个仓库源码都丢进去,它就能回答任意工程问题。

正解256K 是最大输入窗口,不代表长上下文中每个位置的注意力都同样精准,也不等于模型“记住”了全部细节;同时 token 成本和首字延迟随上下文线性增长。仓库级任务仍建议先检索出相关文件片段再补全,把长上下文留给确实需要全局信息的场景。

为何常见:上下文窗口数字被简单理解为“模型的知识容量”,忽略了注意力质量、成本与时延的三重约束。

误区22B 比 70B 小多了,买张 4090 应该能直接部署,不行就加量化。

正解22B BF16 权重约 44GB,加上 KV Cache 和激活值,单张 24GB 显卡连权重都放不下;生产环境通常需要 2×80GB(如 A100/H100),或使用 4-bit 量化把权重压到约 12GB,但量化会带来轻微质量损失。部署前先用 vLLM 按 --max-model-len 与 --gpu-memory-utilization 做显存预算。

为何常见:参数量到显存需求的换算(约 2 字节/参数)没有形成直觉,且厂商演示大多跑在云端,用户看不到本地资源账单。

面试题

Q1. Codestral 25.01 的参数量约为多少?

单选题 · easy

  • A.7B
  • B.22B← 正确答案
  • C.70B
  • D.236B

答案:B。22B 是 Codestral 25.01 的稠密 Transformer 参数规模;7B 对应同为 Mistral 系但采用 Mamba-2 架构的 Codestral Mamba;70B 接近 Llama 系规模;236B 是 DeepSeek-Coder-V2 的 MoE 总参数(激活仅 21B)。故选 B。

Q2. 初版 Codestral(2024 年 5 月发布)采用的许可证是?

单选题 · easy

  • A.Apache 2.0
  • B.MIT
  • C.Mistral 非生产许可证(MNPL)← 正确答案
  • D.CC BY-NC 4.0

答案:C。初版 Codestral 使用 Mistral 非生产许可证(MNPL),限制生产与商业用途,是当时社区争议的焦点;Apache 2.0 是 25.01 采用的许可证。MNPL 是 Mistral 自定义条款,既不是 MIT 也不是 CC BY-NC,故选 C。

Q3. Codestral 的 FIM 接口要求调用方提供哪两类输入?

单选题 · mid

  • A.系统提示词和用户消息
  • B.前缀 prompt 与后缀 suffix← 正确答案
  • C.函数名称和参数列表
  • D.目标语言和代码风格

答案:B。FIM 接口的核心是 prompt(前缀)与 suffix(后缀)两个入参,模型生成二者之间的中间代码;只传前缀等于前缀续写,失去“看后缀”的约束。系统提示词、函数名列表都不是 FIM 的输入结构,故选 B。

Q4. 以下哪些方式可以合法使用 Codestral 25.01?(多选)

多选题 · mid

  • A.通过 mistralai Python SDK 调用官方 API← 正确答案
  • B.下载 Hugging Face 权重后用 vLLM 自托管并在公司内部商用← 正确答案
  • C.通过 Ollama 在本地机器运行← 正确答案
  • D.将权重直接打包进闭源商业产品且不保留任何版权声明

答案:ABC。25.01 为 Apache 2.0,官方 API、自托管商用、Ollama 本地运行均合规;但 Apache 2.0 要求保留版权声明与修改说明,“不保留任何版权声明”违反许可条款,故 D 错误。

Q5. Codestral 25.01 的上下文窗口扩大到了多少?

单选题 · mid

  • A.8K
  • B.32K
  • C.128K
  • D.256K← 正确答案

答案:D。25.01 将上下文从初版的 32K 扩至 256K,可覆盖仓库级长文件补全;8K 属于过旧规格,128K 是部分竞品的配置,故选 D。

Q6. 使用 mistralai 官方 Python SDK 调用 Codestral 时,需要配置的 server_url 是?

单选题 · mid

  • A.https://api.mistral.ai
  • B.https://codestral.mistral.ai← 正确答案
  • C.https://platform.openai.com
  • D.无需任何 URL 配置

答案:B。官方文档中 Codestral 的示例端点为 codestral.mistral.ai,与主 API(api.mistral.ai)不同,在 SDK 中通过 server_url 参数指定。A 是 Mistral 主 API 地址但不服务 Codestral,C 是 OpenAI 地址,故选 B。

Q7. Codestral 25.01 官方公布的 HumanEval pass@1 成绩约为?

单选题 · mid

  • A.61.2%
  • B.71.9%
  • C.81.1%
  • D.90.3%← 正确答案

答案:D。25.01 官方报告 HumanEval pass@1 为 90.3%,较初版的 81.1%(C 选项是初版成绩)提升约 9 个百分点;61.2% 与 71.9% 不是官方公布值,故选 D。

Q8. 关于初版 Codestral 的许可证争议,下列说法正确的有?(多选)

多选题 · hard

  • A.初版采用非生产许可证,明确限制在生产环境/商业场景中使用← 正确答案
  • B.初版因此不适合直接商业化部署在对外服务中← 正确答案
  • C.25.01 改为 Apache 2.0,放宽为可商用、可修改← 正确答案
  • D.初版许可证与 Apache 2.0 完全等同

答案:ABC。初版 MNPL 明确限制生产/商业用途,争议焦点正在于此;25.01 改为 Apache 2.0 后才允许商用与修改。D 把两种许可证等同,错误,故选 A、B、C。

Q9. 自托管 Codestral 25.01(22B)到生产环境时,应该做哪些事情?(多选)

多选题 · hard

  • A.按显存设置 max-model-len,避免 KV Cache 溢出← 正确答案
  • B.接入 vLLM 的 Prometheus 指标监控吞吐和延迟← 正确答案
  • C.为推理服务添加超时、重试与 429/5xx 告警← 正确答案
  • D.必须使用 OpenAI 兼容层才能对外提供服务

答案:ABC。自托管 22B 必须做显存预算(max-model-len)、用 vLLM 的 /metrics 监控并配置超时重试;vLLM 提供 OpenAI 兼容接口但不是唯一选择,“必须”表述错误,故选 A、B、C。

Q10. 关于 Codestral Mamba(7B),下列说法正确的是?

单选题 · hard

  • A.与 Codestral 22B 架构完全相同,只是参数量更小
  • B.采用 Mamba-2 结构化状态空间架构,长序列推理复杂度增长更慢← 正确答案
  • C.不支持任何代码补全任务
  • D.许可证为 CC BY-NC 4.0

答案:B。Codestral Mamba 基于 Mamba-2 架构,推理复杂度随序列长度线性增长,长序列下比稠密注意力更省显存;它不是 22B 的缩小版,仍然支持代码补全,且许可证为 Apache 2.0。故选 B。

参考来源