前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >手把手教你接入ChatGpt微信聊天机器人

手把手教你接入ChatGpt微信聊天机器人

作者头像
make a bug
发布2023-07-15 13:59:41
2.6K0
发布2023-07-15 13:59:41
举报

聊天机器人一直是人工智能领域最令人着迷的应用之一。现在,借助OpenAI的ChatGPT模型,我们可以创建一个非常强大的聊天机器人,只用几行代码就可以用Python来接入它!本文会介绍接入公众号或者个人微信的方法

✨ 前提条件

1.python开发环境(python3.8)

2.需要在OpenAI的网站上获取API Key。注册OpenAI账号后,进入Dashboard,在API Keys选项卡中可以找到自己的API Key。自行百度,也加入我的知识星球看详细教程,在文章最下方,完全免费。

✨ 接入公众号

这样可以更加灵活地控制聊天机器人的行为和输出,而不受第三方库的限制。同时,这种方式也可以方便地集成到您的其他 Python 项目中,从而实现更多的自动化任务

1.我们需要先安装 openai 和 wechatpy 这两个库

2.接下来,我们需要先获取公众号的 appid 和 appsecret,并且设置好接口的访问权限。在微信公众平台后台,我们需要进行以下操作

a.在 “开发 -> 基本配置” 页面获取 appid 和 appsecretb.在 “开发 -> 接口权限” 页面,启用 “消息管理权限” 和 “网页服务权限”

3.接下来,我们就可以开始编写代码了。我们需要先实现一个函数,用于发送消息到公众号:

代码语言:javascript
复制
  from wechatpy import WeChatClient
  appid = "YOUR_APP_ID"
  appsecret = "YOUR_APP_SECRET"
  def send_message_to_wechat(access_token, openid, content):
      client = WeChatClient(appid, appsecret, access_token)
      client.message.send_text(openid, content)

在函数中,我们使用 WeChatClient 类初始化了一个客户端,并且使用 message.send_text 方法发送了一条文本消息到指定用户的 openid。

4.接下来,我们需要调用 OpenAI GPT API 来生成回复的文本内容。我们可以实现一个函数,用于调用 OpenAI GPT API:

代码语言:javascript
复制
  import openai
  import json

  def generate_response(api_key, prompt):
      openai.api_key = api_key
      response = openai.Completion.create(engine="text-davinci-002", prompt=prompt, max_tokens=128, n=1,stop=None,temperature=0.7)
      return response.choices[0].text

在函数中,我们使用 openai.Completion.create 方法调用了 OpenAI GPT API,生成回复的文本内容。在调用时,我们需要传递 API 密钥和调用参数,例如使用的 GPT 引擎、输入的文本提示、最大 token 数、生成的样本数等。

5.最后,我们可以编写一个主函数,用于从微信服务器接收消息,调用 OpenAI GPT API 生成回复,然后将回复发送回用户。整体代码如下:

代码语言:javascript
复制
  import openai
  from flask import request
  from wechatpy import parse_message
  from wechatpy.utils import check_signature
  from wechatpy import WeChatClient
  from wechatpy.exceptions import InvalidSignatureException

  appid = "your_wechat_appid"
  appsecret = "your_wechat_appsecret"
  token = "your_wechat_token"
  api_key = "your_openai_api_key"
  access_token = "your_wechat_access_token"
  openid = "your_wechat_openid"

  def send_message_to_wechat(access_token, openid, content):
      client = WeChatClient(appid, appsecret, access_token)
      client.message.send_text(openid, content)

  def generate_response(api_key, prompt):
      openai.api_key = api_key
      response = openai.Completion.create(engine="text-davinci-002", prompt=prompt, max_tokens=128, n=1,stop=None,temperature=0.7)
      return response.choices[0].text

  def main():
      while True:
          try:
              signature = request.args.get("signature", "")
              timestamp = request.args.get("timestamp", "")
              nonce = request.args.get("nonce", "")
              echo_str = request.args.get("echostr", "")
              check_signature(token, signature, timestamp, nonce)
              if request.method == "GET":
                  return echo_str
              else:
                  msg = parse_message(request.data)
                  if msg.type == "text":
                      prompt = msg.content
                      response_text = generate_response(api_key, prompt)
                      send_message_to_wechat(access_token, openid, response_text)
                  else:
                      send_message_to_wechat(access_token, openid, "Sorry, I can only reply text")
          except InvalidSignatureException as e:
              return e

✨ 接入个人微信

在之前的内容中,我们用itchat很容易的讲图灵机器人api接入了我们的个人微信。实现代码很简单,简单回顾一下:

代码语言:javascript
复制
 import itchat
 import requests

 # 上传获得消息内容到图灵机器人
 # api_key里面填你在图灵机器人里面获得的机器人的apiKey,可以为多个

 class wechatRobot:
     api_key = ['your_api_key']
     flag = 0

     success_code = [100000, 200000]
     error_code = [40001]
 
     def setApikey(self, api_key):
         wechatRobot.api_key = api_key
         return wechatRobot

     @staticmethod
     def getMessage(msg):
         apiURL = 'https://www.tuling123.com/openapi/api'
         data = {'key': wechatRobot.api_key[wechatRobot.flag],
                 'info': msg,
                 'userid': 'yancy'
                 }
         r = requests.post(apiURL, data=data).json()
         rst = r.get('text')
         print('答text:' + str(r))
         if r.get('url'):
             rst = r.get('text') + "\n" + r.get('url')
         return {'code': r.get('code'), 'data': rst}

     # 监听个人微信聊天
     @staticmethod
     @itchat.msg_register(itchat.content.TEXT)
     def return_message(msg):
         try:
             print('问:' + msg['Text'])
         except Exception as e:
             print(e)
         return wechatRobot.getMessage(msg['Text'])


 # 监听微信群聊天
 # @itchat.msg_register([itchat.content.TEXT],isGroupChat=True)
 # def return_message(msg):
 #   print('问:'+msg['Text'])
 #   return getMessage(msg['Text'])

 if __name__ == '__main__':
     wechatRobot()
     itchat.auto_login(hotReload=True)
     itchat.run()

现在我们尝试将它接入openai

1.我们需要先安装 openai 和 itchat 这两个库

2.在Python代码中导入itchat库,并使用itchat.auto_login()函数登录自己的微信账号

代码语言:javascript
复制
  import itchat

  itchat.auto_login()

3.编写函数,将itchat收到的文本消息作为OpenAI的输入,调用OpenAI的API生成回复。 4.将OpenAI生成的回复通过itchat发送到个人微信账号上。实现代码如下:

代码语言:javascript
复制
  import openai
  import itchat
 
  # 配置 openai
  openai.api_key = "YOUR_API_KEY"
 
  # 配置 itchat
  itchat.auto_login(hotReload=True)
  
  # 创建微信好友聊天窗口
  friend = itchat.search_friends(name="FRIEND_NAME")[0]
  friend_username = friend["UserName"]
 
  # 监听微信消息,收到消息时自动回复
  @itchat.msg_register(itchat.content.TEXT)
  def reply_to_message(msg):
      # 从微信消息获取用户输入
      user_input = msg["Text"]
 
      # 使用 openai 进行文本生成
      model_engine = "text-davinci-002"
      prompt = "我想问" + user_input + ",答案是什么?"
      response = openai.Completion.create(
          engine=model_engine,
          prompt=prompt,
          max_tokens=100,
          n=1,
          stop=None,
          temperature=0.7,
      )
      answer = response.choices[0].text
 
      # 将 openai 返回的答案回复给用户
      itchat.send_msg(answer, friend_username)

  # 开始监听微信消息
  itchat.run()

✨补充:

•对python有兴趣的小伙伴可以加入我的知识星球,最近将分享很多关于ChatGpt的有趣知识。

本文参与 腾讯云自媒体同步曝光计划,分享自微信公众号。
原始发表:2023-03-16,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 AI懒人星球 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • ✨ 前提条件
  • ✨ 接入公众号
  • ✨ 接入个人微信
  • ✨补充:
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档