在python中调用Chatgpt接口

通过2种不同方式在python中调用chatgpt

通常,访问chatgpt需要通过浏览器登录官方网站进行使用,如何在代码中通过调用接口的形式,使其部署在移动端设备(如机器人)上呢?

在python中调用chatgpt接口主要有2种形式:①通过openai的API进行调用;②通过token模拟浏览器访问进行调用。

①直接调用API

1.每个新申请的chatgpt账号均会赠送一些API调用额度。如何注册账号、获取API密钥此处不进行演示

2.Openai官方提供了调用其服务的模块,名为openai,直接import就可通过其接口进行调用,该方法的优点访问稳定缺点是每轮对话都会消耗计费额度

以下是具体实现:



import openai

import json

import os

import time


openai.api_key = 'key' #此处填写用户API密钥



#定义ChatGPT类

class ChatGPT:

def __init__(self, user):

self.user = user

self.messages = [{"role": "system", "content": "一个有10年问答经验的资深陪伴机器人"}]#此处可设置聊天机器人扮演的角色及具体信息

self.filename="./user_messages.json" #此处可设置对话内容保存路径


def ask_gpt(self):

rsp = openai.ChatCompletion.create(

model="gpt-3.5-turbor", #此处设置需要调用的模型

messages=self.messages

)

return rsp.get("choices")[0]["message"]["content"]


def main():

user = input("请输入用户名称: ") #用户名,通过不同用户名可实现多用户访问

chat = ChatGPT(user)


# 提问

q = input(f"【{chat.user}】")


# 提问-回答-记录

chat.messages.append({"role": "user", "content": q})

answer = chat.ask_gpt()

print(f"【ChatGPT】{answer}")

chat.messages.append({"role": "assistant", "content": answer})#下一轮种通过将历史对话输入实现多轮



if __name__ == '__main__':

main()

②模拟浏览器访问


借助第三方模块revChatGPTv1中的接口和浏览器访问chatgpt形成的用户token,模拟浏览器行为的访问。

token获取链接:https://chat.openai.com/api/auth/session

该方法的优点不消耗计费额度缺点访问不够稳定

以下是具体实现:

from revChatGPT.V1 import Chatbot

import time


chatbot = Chatbot(config={

"access_token": "token" #此处填写用户token

})


def main():

conversation_id = 0 #通过会话id控制某一轮对话

q = input(f"【user】")

# print(q)

start = time.time()

for data in chatbot.ask(q,conversation_id=conversation_id):

response = data['message']

print(f"【ChatGPT】{response}")

#chatbot.reset_chat() #重置对话

#chatbot.clear_conversations() #清楚所有会话


if __name__ == "__main__":

main()


你可能感兴趣的文章

相关问题

0 条评论

请先 登录 后评论
卞浩羽
卞浩羽

4 篇文章

作家榜 »

  1. 解弘艺 17 文章
  2. 高曾谊 16 文章
  3. 胡中天 14 文章
  4. 旺仔牛奶opo 14 文章
  5. LH 14 文章
  6. 罗柏荣 13 文章
  7. Panda-admin 13 文章
  8. 林晨 12 文章