想调教好Codex写代码,关键是把提示词拆成三段——角色、任务、约束。这样做的好处是让模型从一开始就锁定“思考路径”,省去反复调试提示词的时间。直接看公式:

用自然语言随意堆砌描述,Codex很可能跑偏。而结构化提示词通过明确身份、目标和边界,把它的发挥空间限制在你想要的方向上。下面拆开来讲。
第一段:定义角色与能力边界
用一句话告诉Codex它应该扮演什么角色,重点强调擅长什么、不碰什么。比如:“你是一位专注Python后端开发的工程师,熟悉FastAPI框架和PostgreSQL数据库操作,【不处理前端Ja vaScript逻辑或UI样式】。”
这一步别跳过。没有角色锚点,Codex会默认启用通用知识库,可能给你塞进过时语法或者混进其他语言的建议。
第二段:清晰陈述任务目标
这里有三种常用写法,你可以根据场景灵活选:
方法一:动词开头 + 可验证结果。例如:“编写一个函数,接收用户邮箱字符串,返回True当且仅当该邮箱格式合法且域名在白名单中(白名单为['gmail.com', 'outlook.com'])。”
方法二:输入→输出映射式描述。例如:“输入:字典列表,每个字典含'name'和'age'键;输出:按'age'升序排序后,只保留age≥18的项。”
方法三:带错误示例的反向约束。“不要用正则表达式校验手机号,应调用phonenumbers库的is_valid_number()方法;若输入为空字符串,直接返回False。”
第三段:补充关键约束与格式要求
这一步细分成三个小点:
第一,指定编程语言和版本。比如“使用Python 3.9+语法,禁用类型注解中的Union[str, None],改用Optional[str]。”
第二,限定输出格式。“只输出可执行代码,不加解释、不加注释、不加测试用例;函数名必须为validate_user_email。”
第三,排除干扰项。“【禁止引入requests、pandas等未提及的第三方依赖】;若需日期处理,仅使用datetime标准库。”
把这三段拼起来,就是一份让Codex精准执行的提示词。核心原则是:角色定基调,任务定方向,约束定细节。少写一段,都可能被模型绕进去。
