OpenAI 是一个人工智能研究实验室和公司,而 ChatGPT 是 OpenAI 开发的一种基于语言模型的对话系统。ChatGPT 是 OpenAI 在自然语言处理领域的重要成果之一,它使用了大规模的预训练数据和强化学习方法来生成流畅、有逻辑的对话回复。
本文内容主要分为四个部分:
一、chatgpt接口参数说明
二、普通request调用chatgpt的方法
三、利用openai工具包正常调用
四、利用openai工具包流式调用
前提条件:
1、需要开启魔法上网
2、需要有openai的key
一、chatgpt接口参数说明
OpenAI API 接口地址
-
URL:https://api.openai.com/v1/chat/completions
-
URL:https://api.openai.com/v1
-
Method:
post
Headers parameter
参数 |
类型 |
|
|
|
|
请求参数
参数 |
是否必须 |
类型 |
备注 |
|
是 |
List |
迄今为止对话的信息列表 |
|
是 |
String |
要使用的模型的 ID: gpt-4, gpt-4-0613, gpt-4-32k, gpt-4-32k-0613, gpt-3.5-turbo, gpt-3.5-turbo-0613, gpt-3.5-turbo-16k, gpt-3.5-turbo-16k-0613 |
|
否 |
float |
介于 -2.0 和 2.0 之间的数值。正值会根据新标记在文本中的现有频率对其进行惩罚,从而降低模型逐字重复同一行的可能性 |
|
否 |
Int |
要生成的最大令牌数 |
|
否 |
Boolean |
是否使用流式响应,使用流式响应把这个字段加上,默认为False |
|
否 |
Float |
默认值为1。 采样温度,介于 0 和 2 之间。0.8 等较高值会使输出更加随机,而 0.2 等较低值则会使输出更加集中和确定。 通常建议改变该值或 |
|
否 |
Float |
默认值为1。 模型从概率递减排序且概率和为 阈值设置的越大,如0.9,可选择的单词就越多 |
Message的属性说明
参数名称 |
是否必须 |
类型 |
备注 |
|
是 |
String |
信息内容。所有信息都必须包含内容,对于带有函数调用的助理信息,内容可能为空。 |
|
是 |
String |
该信息作者的角色,从以下三个中选择: |
二、普通request调用chatgpt的方法
#!/usr/bin/env python# -*- coding: UTF-8 -*- """ @Project :chatgpt @File :openai_function.py @Author :aixiaoxin @Date :2023/10/11 18:28 """ import requests def request_chatgpt_function(): url="https://api.openai.com/v1/chat/completions" #可以替换为任何代理的接口 OPENAI_API_KEY="sk-LECc8U0BcVAQWx1VE23aB8B5595f4963929d799b712382E3" # openai官网获取key header={"Content-Type": "application/json","Authorization": "Bearer " +OPENAI_API_KEY} data={ "model": "gpt-3.5-turbo", "messages": [ { "role": "system", "content": "You are a helpful assistant." }, { "role": "user", "content": "Hello!" } ], "temperature":0, "stream":False } response=requests.post(url=url,headers=header,json=data).json() print(response) return response if __name__ == "__main__": openai_chatgpt_function() # 利用openai正常调用
结果:
三、利用openai工具包正常调用
等待所有答案生成结束后,再返回,比较耗时!
1、安装openai工具包
python版本>=3.7 即可。
安装命令:
pip install openai
2、代码如下
#!/usr/bin/env python# -*- coding: UTF-8 -*- """ @Project :chatgpt @File :openai_function.py @Author :aixiaoxin @Date import time import openai import requests def openai_chatgpt_function(): question="西游记是谁写的?" print("问题:{}".format(question)) url="https://api.openai.com/v1" #可以替换为任何代理的接口 OPENAI_API_KEY="sk-LECc8U0BcVAQWx1VE23aB8B5595f4963929d799b712382E3" # openai官网获取key openai.api_key = OPENAI_API_KEY openai.api_base = openai_url response = openai.ChatCompletion.create( model="gpt-3.5-turbo",messages=[{"role": "user", "content": question}],stream=False) print("完整的响应结果:{}".format(response)) answer=response.choices[0].message.content print("答案:{}".format(answer)) if __name__ == "__main__": request_chatgpt_function() # 通用方法:利用requests 正常请求调用
运行结果:
四、利用openai工具包流式调用
流式地一个字一个字的吐出来,适合问答场景的实时展示答案!
代码如下:
#!/usr/bin/env python# -*- coding: UTF-8 -*- """ @Project :chatgpt @File :openai_function.py @Author :aixiaoxin @Date :2023/10/11 18:28 """ import openai import requests def openai_chatgpt_function_stream(): question="西游记是谁写的?" print("问题:{}".format(question)) url="https://api.openai.com/v1" #可以替换为任何代理的接口 OPENAI_API_KEY="sk-LECc8U0BcVAQWx1VE23aB8B5595f4963929d799b712382E3" # openai官网获取key openai.api_key = OPENAI_API_KEY openai.api_base = openai_url response = openai.ChatCompletion.create( model="gpt-3.5-turbo",messages=[{"role": "user", "content": question}],stream=True) for single_result in response: # print("single_result:{}".format(single_result)) finish_reason=single_result.choices[0].finish_reason if finish_reason is None: single_char = single_result.choices[0].delta.content print("single_char:{}".format(single_char)) if __name__ == "__main__": openai_chatgpt_function_stream() # 利用openai工具包 流式请求调用
流式请求结果:
以上就是今天的所有内容了!
本文转自:AI小新