ChatGPT Prompt 最佳指南四:给模型思考时间

本文是 ChatGPT Prompt 最佳指南系列的第四篇,全部系列文章:

  1. ChatGPT Prompt 最佳指南一:写清晰的说明
  2. ChatGPT Prompt 最佳指南二:提供参考文本
  3. ChatGPT Prompt 最佳指南三:复杂任务拆分
  4. ChatGPT Prompt 最佳指南四:给模型思考时间
  5. ChatGPT Prompt 最佳指南五:借助外部工具
  6. ChatGPT Prompt 最佳指南六:系统基准评测

在我们的生活中,当面临复杂问题时,通常需要花费一些时间来深思熟虑。正如一位作家在撰写一篇文章时需要时间来组织思路和打磨措辞,或者一位棋手在对弈时需要时间来分析局势和制定策略一样,深思熟虑是一种必要的过程。人工智能也有类似的需求,确切地说,GPT 也需要一些时间来为我们提供更深入、更精确的答案。

您可能会疑惑:“机器怎么会需要时间来思考?”这是一个很好的问题。事实上,给GPT-4模型“思考”的时间,并不是字面意义上的让它思考,而是给它更多的机会来搜索、分析和优化它的回答。这与给一位作家时间来组织思路和打磨措辞,或者给一位棋手时间来分析局势和制定策略是类似的。在这些情况下,时间成为了提升结果质量的关键因素。

接下来通过示例,我们一起来看下如何通过提示词,让 GPT-4 模型有更多的“思考时间”。

阅读全文

Redis Issue 分析:流数据读写导致的“死锁”问题(2)

Redis Issue 分析:流数据读写导致的“死锁”问题(1) 中,我们成功复现了 Issue 中提到的 bug,观察到 Redis Server CPU 飙慢,无法建立新的连接,现有的连接也不能执行任何读写操作。借助强大的 ebpf profile 工具,我们观察到了 CPU 时间主要消耗在哪里,接下来我们一起来看下这个 BUG 的调试过程和修复方法。

调试 bug

考虑到 Redis server 进程还在,我们可以用 GDB attach 到进程上,打断点看下具体的执行过程。在火焰图上看到的比较耗时的 handleClientsBlockedOnKey 函数里面有 while 循环语句。而 CPU 飙满的话一般都是死循环,为了验证是不是有死循环在这个 while 里,可以在 whil 前面的 565 行和里面的 569 行打上断点,然后 continue 多次进行观察。

1
2
3
4
5
while((ln = listNext(&li))) {
client *receiver = listNodeValue(ln);
robj *o = lookupKeyReadWithFlags(rl->db, rl->key, LOOKUP_NOEFFECTS);
...
}

阅读全文

ChatGPT Prompt 最佳指南三:复杂任务拆分

本文是 ChatGPT Prompt 最佳指南系列的第三篇,全部系列文章:

  1. ChatGPT Prompt 最佳指南一:写清晰的说明
  2. ChatGPT Prompt 最佳指南二:提供参考文本
  3. ChatGPT Prompt 最佳指南三:复杂任务拆分
  4. ChatGPT Prompt 最佳指南四:给模型思考时间
  5. ChatGPT Prompt 最佳指南五:借助外部工具
  6. ChatGPT Prompt 最佳指南六:系统基准评测

在我们日常生活中,无论是烹饪一道复杂的菜肴,还是组装一台复杂的机器,我们都会自然而然地将复杂的任务拆分成一系列更简单、更易于管理的子任务。这种策略也同样适用于计算机领域。想象一下,如果没有函数这种工具,我们如何能够有效地编写和管理复杂的代码呢?函数的发明,实际上就是为了将复杂的任务拆分成更小、更具体的子任务,使得代码更易于理解和维护。

同样,对于人工智能,特别是像 GPT 这样的模型来说,拆分子任务的策略也同样重要。将复杂任务拆分成更简单的子任务可以帮助 GPT 更好地回答问题,原因主要有以下几点:

  • 理解上的优势:GPT 通过处理一系列简单的任务,可以更好地理解和处理复杂的问题。每个子任务都可以被看作是一个独立的问题,GPT 可以专注于解决这个问题,而不是同时处理多个问题。
  • 上下文的限制:GPT 的上下文窗口有限,也就是说,它只能看到最近的一定数量的输入和输出。如果一个任务太复杂,可能会超出这个窗口,导致 GPT 无法看到所有的相关信息。通过将任务拆分,可以确保每个子任务都在 GPT 的上下文窗口内。
  • 减少错误的可能性:如果一个任务非常复杂,GPT 可能会在尝试解决它的过程中犯错误。通过将任务拆分成更简单的子任务,可以减少这种错误的可能性。
  • 更好的反馈:当你将一个复杂任务拆分成子任务时,你可以在每个子任务完成后给予 GPT 反馈,这可以帮助 GPT 更好地理解你的需求,从而提供更好的答案。

阅读全文