当今社会,AI技能的开展进入了迸发期,而其间最为有目共睹的便是GPT(Generative Pre-trained Transformer)模型,这一模型凭借其强壮的生成才能和智能化让人惊叹,ChatGPT的诞生,也意味着在AI从人工智障到智能的一个巨大的前进。随着GPT-3.5接口的开放,越来越多的开发者能够利用这一接口进行自然言语处理和文本生成等方面的创新运用。本文将介绍GPT-3.5接口的根本特性、运用场景以及相关技能细节,旨在让读者更好地了解GPT-3.5接口的强壮功用。本文由chatGPT辅助写作。

什么是GPT以及chatGPT?

GPT(Generative Pre-trained Transformer)是一种依据Transformer架构的自然言语处理模型,由OpenAI公司开发。它的中心思维是在大规模的文本语料库上进行无监督的预练习学习,以此构建一个通用的言语了解模型。这个模型能够用于各种下流使命,如文本分类、摘要生成、对话体系等。

而ChatGPT则是依据GPT模型的一种特定运用,它专注于对话体系范畴。ChatGPT经过前期的大规模预练习,在输入对话文本后,能够主动生成与用户对话内容相符合的回复。与传统的对话体系不同,ChatGPT不需求设计特定的规则和逻辑,也不需求对数据进行符号,由于它现已依据海量的数据进行了模型的练习,能够主动学习到言语的各种规律和逻辑关系。经过与用户不断的交互,ChatGPT能够逐渐加深对用户意图和需求的了解,从而愈加精确地答复用户问题。

总的来说,GPT和ChatGPT是一种新型的自然言语处理技能,它们利用大数据和先进的算法,能够实现自然、流通、智能的自然言语交流。这两种技能在各种范畴都有广泛的运用前景,包括客服机器人、智能帮手、智能家居等等。

GPT以及Open API

两个公共中心参数 (重要)
temperature

用来调整生成模型中文本言语的多样性和随机性的。它会在每一步骤中重新缩放模型中每个单词的概率散布,使得常见的词更有或许被选择,一起也让不太常见的单词呈现的或许性更高。较高的temperature值通常会生成更斗胆、更具创造性的文本,而较低的temperature值则会依据模型现已学到的内容生成更保守的文本。通常情况下,temperature的取值范围在0到2之间,值越大,生成的成果越随机,值越小,生成的成果越保守。

top_p

用于在生成模型中对概率进行剪枝。它核算一个累积概率散布,并在该散布超过top_p值时立即中止。例如,top_p为0.3表示只要占总概率散布前30%的符号被考虑。这样能够防止输出过于随机和不合适的文本,进步输出的合理性和可控性。

1、chat

地址: api.openai.com/v1/chat/com…

办法: POST

该API主要是用于对话,由于众所周知的原因,咱们不能运用OpenAI官网提供的ChatGPT服务,但是咱们还是能够在国内的许多网站去运用国内版的ChatGPT的服务,这其实便是依据此API所搭建的服务,恳求参数以及呼应列表如下:
当然能够,以下是 https://platform.openai.com/docs/api-reference/chatchat API 的参数列表:

恳求参数
参数称号 类型 是否必填 参数阐明
model string 要运用的模型称号,到今日,支撑的模型有gpt-4, gpt-4-0314, gpt-4-32k, gpt-4-32k-0314, gpt-3.5-turbo, gpt-3.5-turbo-0301,留意4的模型需求请求权限
messages array 对话的开始文本
temperature float 生成文本的随机衡量程度。值越高,则生成成果更随机
max_tokens int 生成文本中最大的 token 数量
n int 生成文本的数量
stop string 生成文本的标志,当生成的文本中呈现该标志时,主动中止生成

message参数,是最重要的内容,咱们看一下官网的事例

[
    {
        "role":"system",
        "content":"You are a helpful assistant."
    },
    {
        "role":"user",
        "content":"Who won the world series in 2020?"
    },
    {
        "role":"assistant",
        "content":"The Los Angeles Dodgers won the World Series in 2020."
    }
]

从事例能够看出message的实质,便是role和conten字段组成的数组。role字段共有三个值,分别是system、user和assistant,system代表的是当前对话中AI的人物设定,事例中的意思是AI扮演的是个很有用的帮手,user则代表用户的发问,assistant,则代表帮手答复的内容。

你或许想问为什么一个message需求带这么多内容,这儿咱们回想一个场景,咱们在运用chatGPT的时候,它是能够记住上下文的,秘密便是在这儿,其实在ChatGPT的服务端,是不记载每次答复的内容的,而是每次都会把上下文内容带过去,这便是它能记住上下文的原因。这儿也有一个特别坑的当地,上下文也会被记载到token数量中,过长的上下文会导致费用上升。关于收费,能够参阅文章后边的内容。

response

{
  "id": "chatcmpl-123", 
  "object": "chat.completion",
  "created": 1677652288,
  "choices": [{
    "index": 0,
    "message": {
      "role": "assistant",
      "content": "\n\nHello there, how may I assist you today?",   // AI的答复内容
    },
    "finish_reason": "stop"
  }],
  "usage": {
    "prompt_tokens": 9,  // 恳求的token长度
    "completion_tokens": 12, // 呼应的token长度
    "total_tokens": 21  // 总长度
  }
}
2、completion

地址: api.openai.com/v1/completi…

办法: POST

依据用户的提示,来完结使命,主要是文本类型使命。这个和上面的chatAPI不同的是能够运用不同的模型,不同的模型才能不一样,以下是恳求参数列表

参数名 类型 是否有必要 阐明
model string 预备运用的模型,这儿支撑的模型都有text-davinci-003, text-davinci-002, text-curie-001, text-babbage-001, text-ada-001,除过这些还能够运用自己的fine-tunes模型
prompt string 需求生成文本的开始文本
max_tokens int 生成文本的最大长度。默以为16,最大值为2048。
temperature float 操控生成文本的随机程度。默以为1,越高则生成的文本越随机。
top_p float 与温度类似,操控生成文本的随机程度。默以为1,越高则生成的文本越随机。
n int 指定需求生成的文本的数量。默以为1。
stream bool 是否将生成的文本流式回来。默以为False。
stop list of string 中止生成文本的符号符号列表。
presence_penalty float 操控生成文本的重复程度。默以为0。
frequency_penalty float 操控生成文本中特定单词(比如人名)呈现的频率。默以为0。
best_of int 设定屡次调用API后,取成果中最佳的n个成果。默以为1。
logprobs int 操控需求回来每个符号符号的日志概率。默以为None。
echo bool 是否向生成的文本添加开始文本。默以为True。

response

{
  "id": "cmpl-uqkvlQyYK7bGYrRHQ0eXlWi7",
  "object": "text_completion",
  "created": 1589478378,
  "model": "text-davinci-003",
  "choices": [
    {
      "text": "\n\nThis is indeed a test",  // AI'的答复
      "index": 0,
      "logprobs": null,
      "finish_reason": "length"
    }
  ],
  "usage": {
    "prompt_tokens": 5, //同上
    "completion_tokens": 7,
    "total_tokens": 12
  }
}
3、edits

地址:api.openai.com/v1/edits

办法: POST

这个api通常被用作文本纠错,润饰。参数列表如下:

参数名 类型 是否有必要 描绘
model string 这儿支撑的模型有text-davinci-edit-001orcode-davinci-edit-001
input string 一个可选的显式提示,将引导API生成特定类型的文本。
instruction string 指令,指的是你要求ai做的事情
temperature float 操控生本钱文中的随机性的值。较高的温度会导致更出人意料的文本。默许值为1。
top_p int 生成文本的最大符号数。请留意,每个符号或许包括多个单词。
n int 生成回来的备选文本个数。默以为1。

response

{
  "object": "edit",
  "created": 1589478378,
  "choices": [
    {
      "text": "What day of the week is it?", // AI回复
      "index": 0,
    }
  ],
  "usage": {
    "prompt_tokens": 25,            // 同上
    "completion_tokens": 32,
    "total_tokens": 57
  }
}
4、images

(1)生成Image

地址:api.openai.com/v1/images/g…

办法: POST

参数列表

参数名 类型 是否有必要 描绘
prompt string 提示,将引导API生成特定类型的图画。
n int 生成图片的数量(最大为10)。默许是1。
size string 要生成的图画的大小,例如:“1024×1024”。默许值是“512×512”。
response_format string 服务器回来文件的格局。能够是:“url”(以URL的形式回来)或“base64”(以base64编码的形式回来)。默许是“url”。
user int 用户仅有标识符,用的很少

response

{
  "created": 1589478378,
  "data": [
    {
      "url": "https://..." // 图片地址
    },
    {
      "url": "https://..."
    }
  ]
}

(2)image edit

依据提示编辑图片

地址:api.openai.com/v1/images/e…

办法: POST

参数列表

参数名 类型 是否有必要 描绘
image string 包括图画数据的对象。现在支撑PNG格局,图片有必要小于4M
mask string 别的一张图片,依据官方解说,这儿是指定image中哪些当地呗编辑的(由于不搞图片处理,作者也不太明白的,懂的能够在谈论区讨论下)。
prompt string 一个可选的显式提示,将引导API生成特定类型的图画。
n int 生成图片的数量(最大为10)。默许是1。
size string 要生成的图画的大小,例如:“1024×1024”。默许值是“512×512”。
response_format string 服务器回来文件的格局。能够是:“url”(以URL的形式回来)或“base64”(以base64编码的形式回来)。默许是“url”。
user int 用户仅有标识符,用的很少

呼应同上

5、embeddings

依据给定的输入,核算出一个向量,常被用于查找,聚合,分类等范畴

地址:api.openai.com/v1/embeddin…

办法: POST

参数列表:

参数名 类型 是否有必要 描绘
model string 这儿支撑的模型有text-davinci-edit-001orcode-davinci-edit-001
input string 一个可选的显式提示,将引导API生成特定类型的文本。

呼应

{
  "object": "list",
  "data": [
    {
      "object": "embedding",
      "embedding": [
        0.0023064255,
        -0.009327292,
        .... (1536 floats total for ada-002)
        -0.0028842222,     
      ], // 向量
      "index": 0
    }
  ],
  "model": "text-embedding-ada-002",
  "usage": {
    "prompt_tokens": 8,
    "total_tokens": 8
  }
}

官方引荐的核算类似度的函数是余弦类似度函数,比如说用在查找时,咱们先将被查找的数据都求出上面的向量值,然后再把关键词求出向量,再运用余弦相关函数来比照,假如是专业的查找,引荐运用向量检索数据库来做。

6、fine-tunes

fine-tunes是深度学习中的一个术语,指的是在现已练习好的模型上,运用新的练习集进行微调,以使其适应新的使命或数据集。这个过程通常会调整模型的参数(例如权重和误差),以使其能够更好地拟合新的数据,并进步整体性能。这儿的API较多,这儿只列最重要的两个

(1)上传文件

地址:api.openai.com/v1/files

办法: POST

办法只要两个参数,一个是file,文件格局,别的一个是purpose,字符串类型,代表上传的意图是什么。咱们来看一组request和response的示例。
request

{
  "file": "mydata.jsonl",   // 文件途径
  "purpose": "create fine-tunes"
}

response

{
  "id": "file-XjGxS3KTG0uNmNOK362iJua3", // 文件Id,用于后边创立自己的fine-tunes模型
  "object": "file",
  "bytes": 140,
  "created_at": 1613779121,
  "filename": "mydata.jsonl",
  "purpose": "fine-tune"
}

(2)创立fine-tunes

地址:api.openai.com/v1/fine-tun…

办法: POST

参数列表(仅列出常用且重要的)

参数名 类型 是否有必要 描绘
model string 依据哪个模型去做微调,这儿仅支撑”ada”, “babbage”, “curie”, “davinci”这四种以及在2022-04-21之后fine-tunes的模型
training_file string 文件ID,即上个API回来值中的ID

留意,fine-tunes模型的创立,需求一定的时间,一般来说在半个小时以上。

呼应

{
  "id": "ft-AF1WoRqd3aJAHsqc9NY7iL8F",
  "object": "fine-tune",
  "model": "curie",
  "created_at": 1614807352,
  "events": [ // 这儿是创立fine-tune过程中的事件,假如创立完结,这儿也会对应信息
    {
      "object": "fine-tune-event",
      "created_at": 1614807352,
      "level": "info",
      "message": "Job enqueued. Waiting for jobs ahead to complete. Queue number: 0."
    }
  ],
  "fine_tuned_model": null,
  "hyperparams": {
    "batch_size": 4,
    "learning_rate_multiplier": 0.1,
    "n_epochs": 4,
    "prompt_loss_weight": 0.1,
  },
  "organization_id": "org-...",
  "result_files": [],
  "status": "pending",
  "validation_files": [],
  "training_files": [
    {
      "id": "file-XGinujblHPwGLSztz8cPS8XY",
      "object": "file",
      "bytes": 1547276,
      "created_at": 1610062281,
      "filename": "my-data-train.jsonl",
      "purpose": "fine-tune-train"
    }
  ],
  "updated_at": 1614807352,
}

现在支撑的模型

咱们能够调用api.openai.com/v1/models 来查看自己能够运用哪些model。下面是各个模型的详细介绍

GPT3.5
模型称号 描绘 最大 token 数 练习数据
gpt-3.5-turbo GPT-3.5 宗族中最具才能且本钱效益最高的模型,针对聊天进行了优化,也适用于传统的言语生成使命。 4,096 到2021年9月
gpt-3.5-turbo-0301 依据 gpt-3.5-turbo 的快照,适用于三个月的支撑期限,并不会再更新。 4,096 到2021年9月
text-davinci-003 能够完结任何言语使命,比 curie、babbage 或 ada 模型具有更好的质量、更长的输出和一致的指令跟从,支撑在文本中刺进主动完结功用。 4,097 到2021年6月
text-davinci-002 具有类似于 text-davinci-003 的功用,但经过有监督的微调而非强化学习进行练习。 4,097 到2021年6月
code-davinci-002 针对代码补全使命进行了优化的模型。 8,001 到2021年6月

其间,以上模型都是 GPT-3.5 模型,能够了解和生成自然言语或代码。其间 gpt-3.5-turbo 是最具才能且本钱效益最高的模型,适用于聊天和传统文本生成使命。text-davinci-003能够完结任何言语使命,并具有更好的质量、更长的输出和一致的指令跟从,一起支撑在文本中刺进主动完结功用。别的,code-davinci-002这个模型则是针对代码补全使命进行了优化。

GPT4
模型称号 描绘 最大 token 数 练习数据
gpt-4 现在最新的 GPT 模型,支撑文本生成和处理。相较于其它 GPT-3.5 模型,GPT-4 在更杂乱的推理场景下表现出更高的精确性,并且在聊天优化方面也进行了改进。 8,192 到2021年9月
gpt-4-0314 依据 GPT-4 的快照,不会再更新,并只支撑三个月的期限,将于2023年6月14日结束。 8,192 到2021年9月
gpt-4-32k 才能与根底的 GPT-4 模型相同,但上下文长度为其 4 倍。将依据最新的模型迭代进行更新。 32,768 到2021年9月
gpt-4-32k-0314 依据 gpt-4-32k 的快照,将不会再更新,并只支撑三个月的期限,将于2023年6月14日结束。 32,768 到2021年9月

虽然对于一些根底的使命而言,GPT-4 与 GPT-3.5 模型之间的差异并不明显,但在更杂乱的推理场景下,GPT-4 显得愈加强壮。需求留意的是,GPT-4 现在处于限制性测验阶段,只要被授权的用户才能够运用。

API Key的请求以及收费

上面每条API都需求经过ApI Key来调用,API key能够在platform.openai.com/account/api… 请求,至于token的核算,能够在OpenAI官网platform.openai.com/tokenizer 来核算。token收费能够参阅参阅官方这个页面openai.com/pricing 来看。