python调用chatgpt的三种方法

      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

  • Methodpost

Headers parameter

参数

类型

Content-Type

application/json

Authorization

Bearer $OPENAI_API_KEY

请求参数

参数

是否必须

类型

备注

messages

List

迄今为止对话的信息列表

model

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

frequency_penalty

float

介于 -2.0 和 2.0 之间的数值。正值会根据新标记在文本中的现有频率对其进行惩罚,从而降低模型逐字重复同一行的可能性

max_tokens

Int

要生成的最大令牌数

stream

Boolean

是否使用流式响应,使用流式响应把这个字段加上,默认为False

temperature

Float

默认值为1。

采样温度,介于 0 和 2 之间。0.8 等较高值会使输出更加随机,而 0.2 等较低值则会使输出更加集中和确定。

通常建议改变该值或 top_p,但不要同时改变这两个值。

top_p

Float

默认值为1。

模型从概率递减排序且概率和为 top_p 的候选中选取token。

阈值设置的越大,如0.9,可选择的单词就越多

Message的属性说明

参数名称

是否必须

类型

备注

content

String

信息内容。所有信息都必须包含内容,对于带有函数调用的助理信息,内容可能为空。

role

String

该信息作者的角色,从以下三个中选择:

system, user, assistant, function

二、普通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 timeimport openaiimport 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 openaiimport 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小新