这时,就需要给出「非常明确的指令(问题)」,来获得更优的结果。
巴克斯特发现,将指令(问题)放在输入的开头和结尾效果最好,可以确保AI不会「遗忘」重要的上下文。
最好是,能够提供代码库示例,供AI参考。特别是,在编写单元测试、处理样板代码时,AI表现特别好。
通过示例,AI还可以学习如何使用代码库中的内部工具函数。
让AI掌舵
令人惊讶的是,这与常见的建议完全相反,即一次只向AI提出一个问题。
尤其是,在巴克斯特不熟悉的领域,AI往往在任务分解方面表现得尤为出色。
渐渐地,巴克斯特开始建立起一种非常好的直觉,AI能正确处理哪些事情,以及哪些事情仍需要人类做。
了解这种区别,让他在两个方向上都避免了很多挫败感。
他学会了哪些地方可以进行简化处理:
- 「我正在使用一个名为pygame的Python库……」 简化为 「在pygame中……」
- 「当我运行你的代码时,我收到了这个错误信息……你认为我现在应该怎么做」 简化为直接复制堆栈追踪(stack trace)。
他甚至还学会了,转换或重构大块代码可以带来显著效果。例如,在每一行之间添加计时器(timing instrumentation)。
另一方面,巴克斯特学到如果一个AI在两次尝试中,无法修复一个错误,那么它永远也不能修复。这时就需要自己动手了。
他还对AI可能会犯的错误,有了很好的直觉。
有一次,AI给了一段代码,它循环遍历motor1, motor2, motor2, motor4,遗漏了motor3。
作者的朋友注意到这一点,并说 「这一定是幻觉」!但巴克斯特能感觉到,「AI绝不会犯这种错误」。
果然,当他们检查输入时,发现这个错误确实存在于最初放入AI的原始代码中。
巴克斯特将AI编程划分为三个阶段:
过去1-2年,AI在软件工程中的最大用途是,在IDE中使用AI自动补代码,或是通过AI查询代码知识(以往需要去StackOverflow寻找答案)。以及,通过一些AI智能体,在没有人类监督情况下辅助编程,执行多个步骤,但这些并不实用。
今年,这三个领域都在发生变革。诸如Zed、Cursor和各种VSCode扩展这样的IDE,深入地整合了大模型,拥有更完美的上下文,还能处理更大块的代码生成。
未来1-3年,会出现真正的「AI程序员」。也就是说,这三个领域可能会融合成一个产品——「AI程序员」,一个可以在自主模式和同步模式之间连续工作的系统:
1. 自主模式适用于范围明确的任务
AI将完全独立工作,具备编写和运行代码、使用外部工具、搜索网络信息、访问内部文档以及从过去错误中学习的能力。它会不断迭代任务,直到完成或遇到瓶颈。这将占据80%的工作量。
2. 配对编程模式适用于最难的任务
人类将在高层次上指导AI,而AI负责处理低层次的实现细节。互动将是高度多模态的,人类和AI将在文本描述、视觉图表、口头讨论和直接操作彼此代码之间无缝切换。你可能会共享屏幕,让AI跟随并给出建议和意见,或者AI共享它的屏幕,而你在它操作时给予指导。
最近,我向 「海投AI- python专家」 提问:“使用 python3 完成一份 MACD 技术指标的交易代码。”它会帮助我完成代码的基础部分,并根据我们的具体需求,进一步的优化代码。详情:5分钟用AI写出1000%收益率的交易策略

