# 快速开始

OpenAI已经训练了先进的语言模型，非常擅长理解和生成文本。我们的API提供对这些模型的访问，并可用于解决几乎涉及处理语言的任何任务。在这个快速入门教程中，您将构建一个简单的示例应用程序。在此过程中，您将学习到使用API进行任何任务所必需的关键概念和技术，包括：

* 内容生成
* 摘要分类
* 归类和情感分析
* 数据提取
* 翻译
* 更多！

## 介绍

“completions” 端点是我们 API 的核心，提供了一个简单而极其灵活和强大的接口。您输入一些文本作为提示，API 将返回一个文本完成，试图匹配您给出的任何指令或上下文。

```
提示：为冰淇淋店写一个标语。
完成：我们每勺都带来微笑！
```

您可以将其视为非常高级的自动完成功能 - 模型处理您的文本提示，并尝试预测最有可能出现的内容。

> 注意：文中涉及的例子请在ChatGPT聊天窗口执行查看效果

## 从一个指令开始

想象一下，你想创建一个宠物名字生成器。从零开始想出名字很难！首先，您需要一个明确表明您要求的提示。让我们从一条指令开始。提交此提示以生成第一个完成。

```
为马建议一个名称。
```

不错！现在，请尝试使您的指令更具体。

```
为黑马建议一个名称。
```

正如您所看到的，将简单形容词添加到我们的提示中会改变结果完成情况。设计您的提示基本上就是对模型编程的过程。

## 增加一些例子

制作好的说明对于获得良好的结果非常重要，但有时这还不够。让我们尝试使您的指示更加复杂。

```
为一只超级英雄马建议三个名字。
```

这个完成度还不太符合我们的要求。这些名称相当通用，似乎模型没有理解我们指令中的“马”的部分。让我们看看是否可以得到一些更相关的建议。在许多情况下，向模型展示和告诉您想要什么是有帮助的。将示例添加到提示中可以帮助传达模式或细微差别。尝试提交包含几个示例的此提示。

```
为一只超级英雄动物建议三个名字。
动物：猫
名字：锐爪队长，毛球特工，惊奇猫咪
动物：狗
名字：保护者拉夫，奇妙小犬，吠叫大师巴克斯
动物：马
名字：
```

> 注意：上面例子给出的结果比较像漫威英雄的名字了

不错！为给定的输入添加输出示例有助于模型提供我们正在寻找的名称类型。

## 调整你的设置

提示设计并不是你可以使用的唯一工具。您还可以通过调整设置来控制完成度。其中最重要的设置之一称为温度(Temperature)。您可能已经注意到，如果在上面的示例中多次提交相同的提示，则模型将始终返回相同或非常相似的完成。这是因为您的温度设置为0。请尝试使用温度设置为1重新提交相同的提示几次。

> 不像官网可以支持调节温度看不同温度下的输出结果，这边略过案例

看到发生了什么吗？当温度高于0时，提交相同的提示会导致每次不同的完成。请记住，模型预测哪个文本最有可能跟在前面的文本后面。温度是一个介于0和1之间的值，它实际上让您控制模型在进行这些预测时应该有多大信心。降低温度意味着它将冒更少的风险，并且完成将更准确和确定性。增加温度将导致更多样化的完成。

### 理解词元和概率

我们的模型通过将文本分解为称为词元的较小单元来处理文本。 词元可以是单词，单词块或单个字符。 编辑下面的文本以查看它如何被标记化(略过例子，因为没办法动态调节)。

```
I have an orange cat named Butterscotch.
```

![](/files/GDopdLMTCrzHQYADlKcO)

像“猫(cat)”这样的常见词是一个单一的词元，而不太常见的词通常被分解成多个词元。例如，“Butterscotch”翻译为四个词元：“But”，“ters”，“cot”和“ch”。许多词元以空格开头，例如“ hello”和“ bye”。给定一些文本，模型确定下一个最有可能出现的词元。例如，“Horses are my favorite”的文本最有可能跟随词元“ animal”。

![](/files/Tg7xvE8WgsmziVmTeYes)

这就是温度发挥作用的地方。如果您将此提示提交4次，并将温度设置为0，则模型始终会返回“动物(animal)”，因为它具有最高的概率。如果您增加温度，它将更冒险并考虑概率较低的词元。

![](/files/Ky3giiuiDWocMby6Z2Q3)

通常情况下，对于需要定义明确输出的任务，最好设置较低的温度。如果需要多样性或创造力，则较高的温度可能会有用；或者如果您想为最终用户或人类专家生成几个变体以供选择，则也可以使用较高的温度。

## 构建你的应用

> 仅展示基于NODE.js的方式，官网还有python的方式，如果要查看使用python的方式请到官方查看

现在你已经找到了一个好的提示和设置，准备构建你的宠物名字生成器！我们编写了一些代码来帮助你入门 - 按照下面的说明下载代码并运行应用程序。

### 设置

如果您没有安装Node.js，请从此处安装。然后通过克隆该存储库来下载代码。

```
git clone https://github.com/openai/openai-quickstart-node.git
```

如果您不想使用git，您也可以通过此[zip文件](https://github.com/openai/openai-quickstart-node/archive/refs/heads/master.zip)下载代码。

### 添加你的API key

进入项目目录并复制示例环境变量文件。

```
cd openai-quickstart-node
cp .env.example .env
```

复制您的秘密 API 密钥，并将其设置为新创建的 .env 文件中的 OPENAI\_API\_KEY。如果您尚未创建秘密密钥，则可以到OpenAI官网个人中心->View API keys添加。

> 重要提示：在使用Javascript时，所有API调用应仅在服务器端进行，因为在客户端浏览器代码中进行调用将会暴露您的API密钥。请参阅[此处](https://platform.openai.com/docs/api-reference/authentication)以获取更多详细信息。

### 运行应用

在项目目录中运行以下命令以安装依赖项并运行应用程序。

```
npm install
npm run dev
```

在浏览器中打开 [http://localhost:3000，您应该会看到宠物名字生成器！](https://openaidoc.kaimingwan.com/readme/http:/localhost:3000，您应该会看到宠物名字生成器！)

### 理解代码

在openai-quickstart-node/pages/api文件夹中打开generate.js。 在底部，您将看到生成我们上面使用的提示的函数。 由于用户将输入其宠物类型，因此它会动态替换指定动物部分的提示。

```javascript
function generatePrompt(animal) {
  const capitalizedAnimal = animal[0].toUpperCase() + animal.slice(1).toLowerCase();
  return `Suggest three names for an animal that is a superhero.

Animal: Cat
Names: Captain Sharpclaw, Agent Fluffball, The Incredible Feline
Animal: Dog
Names: Ruff the Protector, Wonder Canine, Sir Barks-a-Lot
Animal: ${capitalizedAnimal}
Names:`;
}
```

在generate.js的第9行，您将看到发送实际API请求的代码。如上所述，它使用温度为0.6的完成端点。

```javascript
const completion = await openai.createCompletion({
  model: "text-davinci-003",
  prompt: generatePrompt(req.body.animal),
  temperature: 0.6,
});
```

就是这样！现在你应该完全了解你的（超级英雄）宠物名字生成器如何使用OpenAI API了！

## 结尾

这些概念和技术将有助于您构建自己的应用程序。话虽如此，这个简单的例子只展示了可能性的一小部分！完成端点足够灵活，可以解决几乎任何语言处理任务，包括内容生成、摘要、语义搜索、主题标记、情感分析等等。需要注意的一个限制是，在大多数模型中，单个API请求只能在提示和完成之间处理最多2048个词元（大约1500个词）。

> 关于模型和价格：
>
> 我们提供一系列不同能力和[价格](https://openai.com/api/pricing/)的模型。在本教程中，我们使用了text-davinci-003，这是我们最强大的自然语言模型。我们建议在实验时使用此模型，因为它将产生最佳结果。一旦您使事情正常运行，您可以查看其他模型是否可以以更低的延迟和成本产生相同的结果。单个请求（提示和完成）处理的词元总数不能超过该模型的最大上下文长度。对于大多数模型而言，这是2,048个词元或约1,500个单词左右。作为一个粗略的经验法则，在英文文本中，1个词元约等于4个字符或0.75个单词。定价按每1000词元计费，并提供$5免费信用额度，在前3个月内可用。了解[更多信息](https://openai.com/api/pricing/).

## 接下来

获取灵感并了解如何为不同任务设计提示的方法：&#x20;

* 阅读我们的完成指南。&#x20;
* 浏览我们的示例提示库。&#x20;
* 在 Playground 中开始尝试。&#x20;
* 在开始构建之前，请牢记我们的[使用政策](https://platform.openai.com/docs/usage-policies)。


---

# Agent Instructions: Querying This Documentation

If you need additional information that is not directly available in this page, you can query the documentation dynamically by asking a question.

Perform an HTTP GET request on the current page URL with the `ask` query parameter:

```
GET https://openaidoc.kaimingwan.com/readme/kuai-su-kai-shi.md?ask=<question>
```

The question should be specific, self-contained, and written in natural language.
The response will contain a direct answer to the question and relevant excerpts and sources from the documentation.

Use this mechanism when the answer is not explicitly present in the current page, you need clarification or additional context, or you want to retrieve related documentation sections.
