使用Codeium编写提示词时,最令人困扰的并非模型理解能力不足,而是它仅能捕捉到部分指令。许多人精心撰写长段提示,最终输出的内容却残缺不全。根本原因往往只有一个:提示词长度超出了上下文窗口限制,后半部分被直接截断。
那么,如何将提示词压缩至1800字符以内?不必急于删除内容,首先要明确哪些信息是真正需要保留的。
删除客套用语与冗余描述
首要任务是剔除所有客气用语。“请”、“麻烦”、“希望你”、“辛苦了”等词汇,Codeium的解析器并不会识别,它只关注动词、宾语和约束条件。
同理,类似“写一个功能完整、结构清晰、符合Python最佳实践的函数”这样的套话,听起来不错,但实际约束力有限。要改就直接给出函数签名:
def fetch_data(url: str, payload: dict) → str: 发送POST请求,状态码非2xx时重试2次,返回CSV字符串。
这种方法称为“函数签名锚定类型和行为”——为模型设定明确目标,它才知道如何发力。
还需注意避免重复。例如“必须用Type Hints”、“一定要加类型注解”、“请确保函数签名含类型声明”,三句话表达同一含义,保留一句即可。多余的句子只会消耗宝贵的Token,不会增加任何约束力。
用符号和标记语法替代自然语言
自然语言虽然易懂,但写提示词时每个字都可能成为“陷阱”。想节省字符,可以改用符号:用冒号替代说明,用斜杠分隔并列项,用括号包裹约束条件。
示例:
原句:“请写一个函数,功能是读取本地CSV文件,跳过第一行标题,把第2列和第4列提取出来,转换为整数列表,如果某单元格为空或非数字,就跳过它。”
压缩后:read_csv_col(file: str, cols=[2,4]) → list[int]:跳过首行;忽略空值/非数字;强制int转换。
操作很简单,直接替换标点即可。但要注意:中文标点不能换成英文标点,否则Codeium可能误判语法结构,得不偿失。
分阶段提交,每步只做一件事
提示词越长,Codeium出错的概率越高。与其将所有指令塞进一段话,不如拆成几步,让模型分阶段执行。
Step 1:先让Codeium生成函数名、参数签名、返回类型及docstring大纲。
Step 2:等上一步输出完成,再追加HTTP请求与状态码判断分支。
Step 3:最后加入重试机制,间隔1秒,最多尝试2次,捕获ConnectionError和Timeout。
关键在于每次只提交一个Step,确认完成后才发送下一步。这样做,比塞进一个800字符的长提示更稳定,也更容易定位哪一步出了问题。如果漏掉Step标识,Codeium会将其视为新任务从头生成,导致之前的工作白费。
换句话说,这其实就是“将大任务分解为小任务”的编程思维——写提示词同样适用。
预校验长度,主动控制字符数
写完提示词后不要急着发送,先校验长度。在VS Code中打开终端,将提示词粘贴到变量中,运行:len("你的提示词")。
Codex CLI默认上下文窗口约2048–4096 token,纯ASCII提示词按经验每1.3字符≈1 token,中文则接近1:1。目标是将提示词压缩到【1800字符以内】,超过该阈值,优先砍掉解释性句子、合并同类约束、用缩写替代全称——例如“Type Hints”直接写成“typing”。
这一步必须执行。否则你永远在调试“为什么它没按我说的做”,而真正原因很可能只是后半句指令被截断了。
从删除客套用语,到用符号替代自然语言,再到分阶段执行和预校验长度——完成这几步,大概率能解决提示词过长的痛点。归根结底,写好提示词不在于写得长,而在于写得精。

