59API

← Back to all guides

减少代码生成幻觉:开发者半小时上手的六步验证法

Guides · ZH · 2026-10-29

AI生成的代码能编译,却调用了不存在的方法;测试全部通过,却遗漏了权限检查。这些都是代码生成幻觉的常见表现。减少幻觉,关键是让模型根据可查证的信息修改代码,再用独立检查验证结果。下面以“为现有接口增加分页”为例,建立一套约半小时即可开始使用的流程。

1. 先给证据,再给任务

花五分钟准备上下文:目标文件、直接调用方、依赖清单与锁文件、相关类型定义,以及一个现有测试。只提供与任务有关的片段,并保留文件路径,方便模型说明依据。

例如,项目使用某个数据库客户端,就提供当前安装版本对应的查询接口。官方最新文档可能与项目版本不同;仓库中已有的调用方式也可能已经过时,两者都需要核对。对于JavaScript项目,可先用npm ls --depth=0查看实际安装的顶层依赖。

2. 把“不要编造”变成可执行约束

单独写“请确保代码正确”帮助有限。直接约定修改范围、证据要求和遇到缺失信息时的处理方式。下面的提示词可以按项目替换后使用:

任务:为现有列表接口增加分页。先阅读提供的路由、数据库调用和测试,列出将使用的函数及其定义位置。仅使用已确认存在的接口,不新增依赖。保留现有鉴权逻辑和响应字段。缺少关键定义时,指出需要查看的文件;无法确认的行为标为待验证。先给修改计划,再生成最小补丁。

补充可验收的边界,例如页码必须为正整数、每页最多100条、超出末页返回空列表。约束越明确,模型越少需要自行补全业务规则。

3. 让补丁小到可以逐行审查

一次只修改一个行为。先实现参数校验,再接入查询,最后补测试。避免把分页、重命名、依赖升级和目录调整放进同一轮生成,否则很难判断错误来自哪里。

模型给出的文件路径和文档说明也可能有误,需要实际打开确认。若工具支持仓库搜索,可以让模型先搜索再修改;检索到的注释和文档应作为参考资料,不能覆盖你的任务约束。

4. 用三层检查暴露错误

第一层检查语法和类型。TypeScript项目可运行项目已有的类型检查命令;已配置TypeScript时,也可使用tsc --noEmit。这能发现不少不存在的属性和错误参数,但不能证明业务逻辑正确。

第二层运行针对性测试。分页场景至少覆盖默认参数、非法页码、每页数量上限、空结果,以及原有鉴权行为。预期结果应根据需求独立写出,避免测试照搬生成代码里的错误假设。

第三层验证真实边界。使用测试数据库或隔离环境执行一次接口请求,确认响应结构和查询行为。涉及外部SDK时,模拟对象只能证明代码符合你的模拟,仍需核对实际接口契约。

还可以临时破坏一处关键逻辑,例如移除数量上限,确认对应测试确实失败,然后恢复代码。这样能判断测试是否具有识别错误的能力。

5. 失败后回传证据,每次只修一个原因

不要只说“代码不能运行”。给模型完整报错、触发输入、预期结果、实际结果及相关代码位置,并要求先解释原因,再提出修复。修复后重复运行失败的检查,以及可能受影响的测试。

若同一问题连续两轮没有进展,暂停生成,重新检查依赖版本和接口定义。换模型有时能提供新思路,但缺失的事实仍然需要补齐。也可以让另一个模型只审查补丁,重点找不存在的API、遗漏的边界和未经证实的假设。

6. 用低成本调用建立自己的评测集

保存五到十个真实任务及验收条件,记录首次通过率、人工修复时间和总调用成本。例如,让Claude Sonnet 5.5与GPT-6 Astra处理同一组任务,用相同测试比较结果。模型之间意见一致,也不能代替测试证据。

59API提供低价、按量计费的AI API中转,使用原生官方品质模型,不做模型降级,适合控制多轮修复和模型对比的成本。它兼容Claude Code、Codex、Gemini CLI及OpenAI SDK;API基础地址为https://api.59api.com,接入时按所用工具的配置要求填写地址,并核对是否需要版本路径。

如果你准备把这套流程用于日常开发,可以注册59API,先用一个小任务验证接入与效果,再按实际表现选择模型;有分享需求时,也可了解其推荐返利机制。

Pricing · Docs

Ready to get started?

Connect Claude & GPT in minutes at the lowest prices — full-power, never downgraded. Sign up to get your API key.

Sign up free