原文:深度揭秘:如何用一句话让 DeepSeek 优化你的代码
今天,我以 DeepSeek 的官方提示词文档为例,和大家分享一下如何通过优化提示词,让大模型更好地理解和优化代码。
🌵https://api-docs.deepseek.com/zh-cn/prompt-library/
一、初探:含糊需求与初步尝试
在探索的过程中,我首先参考了 DeepSeek 的官方文档,尝试了一个有问题的斐波那契数列的递归函数的优化需求。我把自己当成一个编程小白,没有明确说明问题及需求,直接将代码给 DeepSeek:
请先解释这段代码的问题与解决方法,然后进行优化:
```
def fib(n):
if n <= 2:
return n
return fib(n-1) + fib(n-2)
```
DeepSeek 直接判断出这是斐波那契数列的递归函数,并指出当 N=2 时结果不正确,同时存在效率低下的问题。这让我对 DeepSeek 的能力刮目相看,但也引发了我进一步探究的欲望,为什么DeepSeek会判断我提供的函数想实现斐波那契数列?
二、进阶:增加需求,明确问题
在初步尝试的基础上,我意识到仅仅提出含糊的需求是不够的。于是,我调整了提示词,增加了明确的提示:“下面这段代码的效率很低,且没有处理边界情况。” 再次将代码交给 DeepSeek:
下面这段的代码的效率很低,且没有处理边界情况。请先解释这段代码的问题与解决方法,然后进行优化:
```
def fib(n):
if n <= 2:
return n
return fib(n-1) + fib(n-2)
```
这次,DeepSeek 的回答明显是根据我提示的两个问题进行分析的。
然而,它并没有识别出 F(2) 不符合斐波那契数列的定义。我使用“深度思考”模式,看到 DeepSeek 推测过程,DeepSeek将这种不符合斐波那契数列定义的情况视为一种变体,所以保持了原来的逻辑,仅处理了边界及效率问题。但如果我确实是想实现的是斐波那契数列,这不就错了吗?
三、深入:明确背景,精准优化
为了进一步引导 DeepSeek,我决定明确背景,让其清楚我的目标是实现标准的斐波那契数列,而非某种变种序列。于是,我给出了更清晰的提示:“下面这段代码是斐波那契数列的递归函数,但效率很低,且没有处理边界情况。”再次将代码提交给 DeepSeek:
下面这段的代码是斐波那契数列的递归函数,但效率很低,且没有处理边界情况。请先解释这段代码的问题与解决方法,然后进行优化:
```
def fib(n):
if n <= 2:
return n
return fib(n-1) + fib(n-2)
```
这次,DeepSeek 成功识别出我的代码不符合标准的斐波那契数列定义,并给出了修复方案。它不仅解决了效率问题,还纠正了 F(2) 的错误,使代码更加符合斐波那契数列的定义。
最终给出完整的修复方案
四、总结
通过这次与 DeepSeek 的互动,我发现 DeepSeek 的深度思考非常厉害,但避免让大模型进行过多的猜测,日常使用时还是需要我们提供更准确的提示词。
还有一点,大模型为我们的编程工作带来了诸多便利,但要充分发挥其效能,还需要我们具备一定的数据结构知识和程序思维,不然如何识别大模型是真的做对呢?
相关阅读