写在前面

心血来潮,复试完结束很摆,研究点东西玩玩,之前之知道nonebot搭建qq机器人的方法和步骤,这次记录下自己使用openai,gpt3.5的api的代码,参考自openai的官网。

环境

要求 python 版本 >=3.8 && <4
安装openai的库

pip install openai

注意记得设置代理,可以使用api即可,通常来说,api比登录chatgpt的审核要求更加严格。

编写脚本

以下提供了两个版本,一个是没有上下文情境的版本,一个是加入情境的版本,一般来说,加入上下文情境会消耗更多的tokens,因为把历史对话导入了prompt中。

版本

helper.py

# 导入openai库
import openai
# 设置api-key
openai.api_key = "sk-xxx"

# 将openai chat封装成函数
def chat(prompt):
	# 核心的请求语句,prompt为问题内容
	# model可选{'gpt-3.5-turbo', 'gpt-3.5-turbo-0301', 'text-davinci-003', 'text-davinci-002', 'code-davinci-002'},model特色参考官方文档
	# role可选{'system', 'assistance', 'user'}
    completion = openai.ChatCompletion.create(
    model="gpt-3.5-turbo",
    messages=[
        {"role": "assistant", "content": prompt}
    ]
    )
    str = completion.choices[0].message.content
    print("@bot:" + str)

# 主函数,使用读入控制台输入的方式对话
if __name__=="__main__":
    print('使用"CTRL + C"退出')
    print('=========开始聊天=========')
    while True:        
        print('@您:', end = '')
        chat(input())

效果预览

helper_plus.py

import os
import openai

openai.api_key = "sk-xxx"

messages = []
print('使用"CTRL + C"退出')
print('=========开始聊天=========')
while True:
    content = input("@您: ")
    messages.append({"role": "user", "content": content})
    
    completion = openai.ChatCompletion.create(
      model="gpt-3.5-turbo-0301",
      messages=messages
    )

    chat_response = completion
    answer = chat_response.choices[0].message.content
    print(f'@bot: {answer}')
    messages.append({"role": "assistant", "content": answer})

这部分就不写注释了,具体是操作方法是,把新的问题append到上次对话的结尾以带入情境。
后续会补写搭建nonebot机器人的文章,但不涉及开发,等我学习完再进行记录(#`O’)

更多推荐

chatgpt api极简入门(参考官网教程)