快捷搜索: 王者荣耀 脱发

Python调用GPT3.5接口的最新方法

GPT3.5接口调用方法主要包括openai安装、api_requestor.py替换、接口调用、示例程序说明四个部分。

1 openai安装

Python openai库可直接通过pip install openai安装。如果已经安装openai,但是后续提示找不到ChatCompletion,那么请使用命令“pip install -U openai”来升级openai。

2 api_requestor.py替换

3 接口调用说明

接口调用方式不变,与openai自身调用方式一致。输入主要有7个参数。

(1)model:模型名称,gpt-3.5-turbo或gpt-3.5-turbo-0301

(2)messages:问题或待补全内容,下面重点介绍。

(3)temperature:控制结果随机性,0.0表示结果固定,随机性大可以设置为0.9。

(4)max_tokens:最大返回字数(包括问题和答案),通常汉字占两个token。假设设置成100,如果prompt问题中有40个汉字,那么返回结果中最多包括10个汉字。ChatGPT API允许的最大token数量为4096,即max_tokens最大设置为4096减去问题的token数量。

(5)top_p:设置为1即可。

(6)frequency_penalty:设置为0即可。

(7)presence_penalty:设置为0即可。

(8)stream:控制连续输出或完整输出。

需要注意,上述输入参数增加stream,即是否采用控制流的方式输出。

如果stream取值为False,那么完全返回全部文字结果,可通过response.choices[0].delta[content]进行读取。但是,字数越多,等待返回时间越长,时间可参考控制流读出时的4字/每秒。如果steam取值为True时,那么返回结果是一个Python generator,需要通过迭代获取结果,平均大约每秒钟4个字(33秒134字,39秒157字)。读取程序如下所示.

4 message

messages字段组成部分包括角色role和content问题两个部分组成,如下所示:

model="gpt-3.5-turbo",
  messages=[
        {"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."},
        {"role": "user", "content": "Where was it played?"}
    ]

5 示例程序

(1)stream = False

import openai

def openai_reply(content, apikey):
    openai.api_key = apikey
    response = openai.ChatCompletion.create(
    model="gpt-3.5-turbo-0301",#gpt-3.5-turbo-0301
    messages=[
    {"role": "user", "content": content}
    ],
    temperature=0.5,
    max_tokens=1000,
    top_p=1,
    frequency_penalty=0,
    presence_penalty=0,
    )
    # print(response)
    return response.choices[0].message.content


if __name__ == __main__:
    content = 你是谁?
    ans = openai_reply(content, 你的APIKEY)
    print(ans)

(2)stream = True

import time
import openai

openai.api_key = "你的APIKEY"
response = openai.ChatCompletion.create(
  model="gpt-3.5-turbo",
  messages=[
    {"role": "user", "content": how are you}
    ],
  temperature=0,
  max_tokens=1000,
  stream=True,
  top_p=1,
  frequency_penalty=0,
  presence_penalty=0,
  user=RdFast智能创作机器人小程序
)

print(response)
print(response["choices"][0]["text"]结果如下所示:)
ans = 
for r in response:
    if content in r.choices[0].delta:
      ans += r.choices[0].delta[content]
      print(ans)

print(ans)

 3 API调用效果

经验分享 程序员 微信小程序 职场和发展