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