全面了解GPT Open API,轻松打造你的个人ChatGPT
当今社会,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/chat
中 chat
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-001 or code-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 | 否 | 要生成的图像的大小,例如:“1024x1024”。默认值是“512x512”。 |
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 | 否 | 要生成的图像的大小,例如:“1024x1024”。默认值是“512x512”。 |
response_format |
string | 否 | 服务器返回文件的格式。可以是:“url”(以URL的形式返回)或“base64”(以base64编码的形式返回)。默认是“url”。 |
user |
int | 否 | 用户唯一标识符,用的很少 |
响应同上
5、embeddings
根据给定的输入,计算出一个向量,常被用于搜索,聚合,分类等领域
地址: api.openai.com/v1/embeddin…
方法: POST
参数列表:
参数名 | 类型 | 是否必须 | 描述 |
model |
string | 是 | 这里支持的模型有text-davinci-edit-001 or code-davinci-edit-001
|
input |
string | 否 | 一个可选的显式提示,将引导API生成特定类型的文本。 |
响应
{ "object": "list", "data": [ {