在 OpenAI 的开发过程中,程序员需要理解一些核心概念。本文将介绍一些开发 OpenAI/ChatGPT 过程中常用的术语和概念。

Prompt

Prompt 是 Chatgpt 的重要功能之一,指的是预设的输入提示,可以让用户根据提示进行输入,从而引导 Chatgpt 生成更加符合用户需求的回复。

举例来说,比如当用户想要和 Chatgpt 进行一次日常闲聊的时候,可以使用一些通用的 Prompt,如“你想聊什么呢?”、“今天有什么想说的吗?”等等。当用户输入了相应的文本后,Chatgpt 就会根据预设的输入提示生成类似于“嗯,其实最近我也有些烦恼,你有什么好的建议吗?”“哦,原来你是喜欢这种类型的电影啊,那我推荐给你一部……”等回复。

除此之外,Prompt 还可以通过不同的关键词,预测用户下一步会说出什么,引导 Chatgpt 更准确地理解用户的需求,生成更贴近用户胃口的回复。比如一个关于旅游的 Prompt,“你想去哪里旅游呢?”输入的是“海滨城市”,Chatgpt 就可能根据“海滨城市”的关键词,生成与沙滩度假、船出海岛等内容有关的回复。

总的来说,Prompt 是 Chatgpt 中非常实用的一项功能,可以帮助机器人更好地与用户互动,提升用户体验。

Token

Tokens 是将一段文本拆分成的单个单词、标点符号或其他语言单位的术语。

在 Chatgpt 中,Token 可以是单词或字符块。例如,hamburger 这个单词被分成了 hamburger 三个 Token,而像 pear 这样的短而常见的单词则是一个 Token。许多 Token 以空格开头,例如 hello bye

在 API 请求中处理的 Token 数量取决于输入和输出的长度。粗略的经验法则是,对于英文文本,1 个标记约等于 4 个字符或 0.75 个单词。

OpenAI 官方提供了一个在线分词工具,根据工具提供的分词结果看,1 个中文词语会分解为 2/3 个 Token

Hello World 的分词结果:2 个 Token,11 个字符。

Hello World

你好世界的分词结果:8 个 Token,4 个字符。

我本以为是 2 个 Token,或者是 4 个 Token,没想到居然是 8 个 Token。所以使用中文的时候一定要注意。

我用 API 试了一下,发送 你好世界,输出 \n\n你好,世界!,Token 信息:

接口响应
{
  "id": "chatcmpl-6w************************AjQ",
  "object": "chat.completion",
  "created": 1679369744,
  "model": "gpt-3.5-turbo-0301",
  "usage": {
      "prompt_tokens": 12,
      "completion_tokens": 8,
      "total_tokens": 20
  },
  "choices": [
    {
      "message": {
        "role": "assistant",
        "content": "\n\n你好,世界!"
      },
      "finish_reason": "stop",
      "index": 0
    }
  ]
}

对于这个结果,我不是很明白。为什么 prompt_tokens 是 12,completion_tokens 是 8,这个结果是怎么算出来的?

Model

OpenAI 致力于开发各种先进的深度学习模型,以解决人工智能领域的各种挑战。这些模型适用于不同的应用场景,如自然语言处理、计算机视觉、游戏AI等,并已在多个实用案例中取得了显著的成效。

目前,在 OpenAI 的众多模型中,最为知名的莫过于GPT-3(Generative Pre-trained Transformer 3)。该模型基于 Transformer 架构构建,是当前最先进、最强大的自然语言处理模型之一。它通过大规模的数据预训练,在吸收了大量的语料库信息后,能够达到极高的自然语言理解和生成能力。GPT-3 不仅可以完成常见的NLP任务,如理解语义、生成对话、自动翻译等,还能够创作文本和生成代码等高级应用。