# 提示函数

## 介绍

当我们将 GPT 的对话界面与编程语言的 shell 进行类比时，封装的提示可以被视为形成一个函数。这个函数有一个独特的名称，当我们用输入文本调用这个名称时，它根据内部设定的规则产生结果。简而言之，我们构建了一个可重用的提示，它有一个易于与 GPT 交互的名称。这就像有一个方便的工具，让 GPT 代表我们执行特定的任务 - 我们只需提供输入，就可以得到所需的输出。

通过将提示封装成函数，您可以创建一系列函数来建立工作流程。每个函数代表一个特定的步骤或任务，当按特定顺序组合时，它们可以自动化复杂的流程或更高效地解决问题。这种方法使得与 GPT 的交互更加结构化和高效，最终增强了其功能，使其成为完成各种任务的强大工具。

因此，在我们使用函数之前，我们需要让 GPT 知道它的存在。下面是定义该函数的提示内容。

_提示:_

> 我们将使用**元提示**来称呼这个提示。
> 这个提示已在 GPT3.5 上进行了测试，并在 GPT4 上表现得更好。

```
你好，ChatGPT！希望你一切都好。我正在寻求你的帮助，想要解决一个特定的功能。我知道你有处理信息和执行各种任务的能力，这是基于提供的指示。为了帮助你更容易地理解我的请求，我将使用一个模板来描述函数、输入和对输入的处理方法。请在下面找到详细信息：

function_name：[函数名称]

input：[输入]

rule：[关于如何处理输入的说明]

我恳请你根据我提供的细节为这个函数提供输出。非常感谢你的帮助。谢谢！

我将使用方括号内的相关信息替换函数所需执行的内容。这个详细的介绍应该能够帮助你更高效地理解我的请求并提供所需的输出。格式是function_name(input)。如果你理解了，请用一个词回答"好的"
```

## 实例

### 英语学习助手

例如，假设我们想要使用 GPT 来辅助我们的英语学习。我们可以通过创建一系列的函数来简化这个过程。

这个例子已在 GPT3.5 上进行了测试，并在 GPT4 上表现得更好。

#### 函数描述

我们需要将在上面部分定义的 GPT**元提示**粘贴在这一节中。

然后我们将创建一个 `trans_word` 函数。

这个函数会提示 GPT 将中文翻译成英文。

_提示:_

```
function_name: [trans_word]
input: ["文本"]
rule: [我希望你能扮演英文翻译员、拼写纠正员和改进员的角色。我将提供包含任何语言中"文本"的输入形式，你将检测语言，翻译并用英文纠正我的文本，并给出答案。]
```

编写一个扩展文本的函数。

_提示:_

```
function_name: [expand_word]
input: ["文本"]
rule: [请充当一个聊天机器人、拼写纠正员和语言增强员。我将提供包含任何语言中的"文本"的输入形式，并输出原始语言。我希望你保持意思不变，但使其更具文学性。]
```

编写一个纠正文本的函数。

_提示:_

```
function_name: [fix_english]
input: ["文本"]
rule: [请充当英文专家、拼写纠正员和语言增强员的角色。我将提供包含"文本"的输入形式，我希望你能改进文本的词汇和句子，使其更自然、更优雅。保持意思不变。]
```

最后，你可以独立运行这个函数，或者将它们串联在一起。

_提示:_

```
trans_word('婆罗摩火山处于享有“千岛之国”美称的印度尼西亚. 多岛之国印尼有4500座之多的火山, 世界著名的十大活火山有三座在这里.')
fix_english('Finally, you can run the function independently or chain them together.')
fix_english(expand_word(trans_word('婆罗摩火山处于享有“千岛之国”美称的印度尼西亚. 多岛之国印尼有4500座之多的火山, 世界著名的十大活火山有三座在这里.')))
```

通过以这种格式表示函数，你可以清晰地看到每个函数的名称、输入以及处理输入的规则。这为理解工作流程中每个步骤的功能和目的提供了一种有组织的方式。

_提示:_
如果你不想让 ChatGPT 输出过多的信息，你可以在定义函数规则后简单地添加一句话。

```
除非你不理解该函数，否则请不要说其他事情
```

### 多参数函数

让我们创建一个多参数函数，通过接受五个输入参数生成一个密码，并输出生成的密码。

_提示:_

```
function_name: [pg]
input: ["length", "capitalized", "lowercase", "numbers", "special"]
rule: [作为一个密码生成器，我将为需要一个安全密码的个人提供帮助。我会提供包括"length"（长度）、"capitalized"（大写字母）、"lowercase"（小写字母）、"numbers"（数字）和"special"（特殊字符）在内的输入形式。你的任务是使用这些输入形式生成一个复杂的密码，并将其提供给我。在你的回答中，请不要包含任何解释或额外的信息，只需提供生成的密码即可。例如，如果输入形式是length = 8、capitalized = 1、lowercase = 5、numbers = 2、special = 1，你的回答应该是一个类似于"D5%t9Bgf"的密码。]
```

```
pg(length = 10, capitalized = 1, lowercase = 5, numbers = 2, special = 1)
pg(10,1,5,2,1)
```

### 思考

现在，已经有许多项目正在开发基于 GPT 的编程工具，例如：

- [GitHub Copilot](https://github.com/features/copilot)
- [Microsoft AI](https://www.microsoft.com/en-us/ai)
- [chatgpt-plugins](https://openai.com/blog/chatgpt-plugins)
- [LangChain](https://github.com/hwchase17/langchain)
- [marvin](https://github.com/PrefectHQ/marvin)

但是那些项目要么是为产品客户设计的，要么是为那些能够使用 Python 或其他编程语言进行编码的用户设计的。
对于普通用户来说，可以使用这个简单的模板进行日常工作，并进行几次迭代。使用一个笔记应用程序来记录函数，甚至可以将其更新为一个库。
或者，一些开源的 ChatGPT 工具，比如 ChatGPT-Next-Web、chatbox 和 ChatGPT-Desktop，也可以使用。目前，ChatGPT-Next-Web 允许在初始化新聊天之前添加一些片段。
我们可以利用这个功能来添加我们的函数，然后可以使用它。
