发布日期:2023-09-06浏览次数:393 来源:福州网站建设 标签: chatgpt
ChatCompletion是OpenAI中最核心的一个接口,顾名思义,你可以利用该接口构建自己的应用,用在与AI有交互的场景,例如聊天机器人、智能客服等,该接口具有连续对话的能力,因为它可以携带上下文信息。
https://api.openai.com/v1/chat/completions
参数名 | 必选 | 类型 | 说明 |
---|---|---|---|
model | 是 | string | 支持的模型为:gpt-4, gpt-3.5-turbo, gpt-3.5-turbo-0301 |
messages | 是 | array | 字典组成的列表对象 |
temperature | 否 | float | 采样温度,随机因子,控制输出结果的随机性,介于0到2之间,值越大随机性越高,默认为1 |
max_tokens | 否 | integer | 指定返回结果的token最大长度,默认是最大值,不同模型的最大token数不一样,例如gpt-3.5的最大长度支持4096 |
messages 是一个数组,数组中的元素是一个字典对象,包含两个必选字段,分别是role和content
参数名 | 必选 | 类型 | 说明 |
---|---|---|---|
role | 是 | string | 该条消息由哪个角色生成,可选值:system, user, assistant |
content | 是 | string | 该条消息对应的内容 |
为什么messages要作为一个数组参数传递呢?
因为我们实现多轮对话时,必须把上一轮的对话内容传递给模型,模型才知道如何联系上下文来生成更精确的内容。
message中每个元素必须指定一个角色,用来告诉该消息是谁生成的,目前该接口预设了3个值,分别是:
通常每次对话以一条系统消息作为开始(系统消息也可以不指定),然后用户消息和助理消息交替
Python代码:
response = openai.ChatCompletion.create( model="gpt-3.5-turbo", messages=[ {"role": "system", "content": "你是一个上知天文下知地理的百晓生"}, {"role": "user", "content": "中国首都在哪里"}, {"role": "assistant", "content": " 中国的首都是北京。"}, {"role": "user", "content": "人口是多少?"} ], temperature=0.6 )
助理消息是上一轮对话AI生成的内容,提取出来后作为下一轮的消息内容发送给AI,这样就可以实现多轮对话联系上下文语境生成内容。
{ "choices": [ { "finish_reason": "stop", "index": 0, "message": { "content": "根据2020年的统计数据,北京市的常住人口为2171.6万人。", "role": "assistant" } } ], "created": 1683639817, "id": "chatcmpl-7EHuru5wKKpZ2CsEfjVa2z11DzqhJ", "model": "gpt-3.5-turbo-0301", "object": "chat.completion", "usage": { "completion_tokens": 27, "prompt_tokens": 486, "total_tokens": 513 } }
助理回复的内容可以从response['choices'][0]['message']['content']提取。
以上是由福州网站建设的小编为你分享了"OpenAI接口介绍- ChatCompletion"文章,如果你在这方面有什么问题,随时联系我们