通常,访问chatgpt需要通过浏览器登录官方网站进行使用,如何在代码中通过调用接口的形式,使其部署在移动端设备(如机器人)上呢?
在python中调用chatgpt接口主要有2种形式:①通过openai的API进行调用;②通过token模拟浏览器访问进行调用。
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()
如果觉得我的文章对您有用,请随意打赏。你的支持将鼓励我继续创作!