Skip to content
🔗 分享本题
查看我的学习进度 →

AI编程工具专题第7题机制与工程取舍图解

🧠 图解记忆: FIM 用前缀和后缀约束中间缺口,让补全同时理解代码两侧语义。

💡 答案要点

FIM = Fill-in-the-Middle(中间填充)

传统自回归模型的局限:

传统方法:从头预测到尾
代码:[def foo()] → [x = 1] → [return x]
问题:需要完整读完前半部分才知道后半部分

FIM 方法:同时看前后,中间填入
代码:[def foo(] → [x = 1, y = 2] ← 中间填充
优点:利用双向上下文

FIM 实现方式:

python
# 三种 FIM 策略
# 1. SPM(Same Prefix Middle)
prefix = "def calculate(a, b):"
middle = "    result = a * b\n    return result"
suffix = ""
output = prefix + middle + suffix

# 2. PSM(Prefix Suffix Middle)
prefix = "def calculate("
middle = "a, b"
suffix = "):\n    result = a * b"
output = prefix + middle + suffix

# 3. XML-style(用特殊 Token)
<PRE> prefix <MID> middle <SUF> suffix

为什么对代码重要:

  • 代码有很强的中缀结构(函数签名在两边,实现在中间)
  • 传统 LTR(从左到右)模型无法有效利用未来上下文
  • FIM 让模型同时看到函数签名和已有实现,生成更准确的中间代码

面试话术:

"FIM 是代码补全的关键技术。代码不像自然语言,它的结构是'双向'的——函数签名告诉你需要什么参数,函数实现告诉你做什么,中间的逻辑需要同时看到两边才能生成准确。FIM 让模型同时理解前后上下文,补全准确率大幅提升。"

📚 参考:DeepSeek-Coder(FIM 补全目标设计见论文)