在 W5100S-EVB-Pico 上集成 ChatGPT 和 Slack API:制作英语学习机器人

项目介绍

Slack 是一种流行的团队沟通平台,企业使用它来改善协作和生产力。 将人工智能支持的语言模型 ChatGPT 与 Slack 集成,可以自动执行各种任务并改进工作流程。

在本文中,我将引导您完成在 PC 环境中使用 Python 请求和在 W5100S-EVB-Pico 开发板环境中使用 Micropython urequests 设置 Slack 应用程序和集成 ChatGPT 的步骤。

我把题目定为学习英语单词。

先决条件

  • OpenAI 帐户和 API 密钥
  • Slack 帐户
  • W5100S-EVB-Pico
  • Thonny:Micropython 环境

创建一个 Slack 应用程序

应用程序创建和 API 令牌发行

将 ChatGPT 与 Slack 集成的第一步是创建一个新的 Slack 应用程序。 按照以下步骤创建一个新的 Slack 应用程序:

转到 Slack API 主页并登录您的帐户。

单击“创建应用程序”按钮开始应用程序创建过程。

为您的应用程序命名并选择要安装它的工作区。

创建应用程序后,您将被重定向到“基本信息”页面。 在这里,您可以找到您的“应用凭证”,例如“客户端 ID”、“客户端密码”和“验证令牌”。 这些凭据将用于验证您的应用程序并与 Slack API 交互。

接下来,单击左侧菜单中的“OAuth & Permissions”选项卡。 在这里,您会找到“机器人令牌”部分。 单击“添加机器人用户”按钮以将机器人添加到您的应用程序。

为您的机器人设置一个显示名称,然后单击“添加机器人用户”按钮以保存更改。

您现在将看到生成了一个新的“机器人用户 OAuth 访问令牌”。 此令牌将用于验证您的机器人并与 Slack API 交互。

发送消息测试

通过使用以下代码向频道发送消息来测试我的 Slack 应用程序是否正常工作。

import requests
import time

# Slack API Token and URL
SLACK_API_TOKEN = "<Slack API Token>"
SLACK_API_URL = "https://slack.com/api/chat.postMessage"

# Message to send
message = {
    "channel": "#general",
    "text": "Hello, World!"
}

for i in range(0, 2):
    # Send message using Slack API
    response = requests.post(
        SLACK_API_URL,
        headers={
            "Authorization": "Bearer " + SLACK_API_TOKEN,
            "Content-type": "application/json"
        },
        json=message
    )
    # Print response
    print(response.json())
    # Wait for seconds before sending the message again
    time.sleep(30)

PC环境下使用Python请求的ChatGPT提示测试

基于用于邮件传输的ChatGPT提示修改

我以前使用 ChatGPT API 发送有用的电子邮件。 我是根据当时使用的提示修改的。

在生成要通过电子邮件发送的内容时,我请求使用 HTML 格式。

但是,当我按原样将其发送到频道时,标签并未应用如下:

经过检查,我发现为了使用 Slack API 发布降价格式的消息,它需要使用一种称为块的格式。

因此,需要将其转换为适合 Slack API 的块格式。

将消息格式转换为适合 Slack API 的块格式

有几种方法可以将现有的 HTML 格式转换为块格式。

您可以直接执行此操作或使用库,但您也可以请求 ChatGPT 为您执行此操作。

我在提示中添加了以下内容以请求可用于 Slack API 请求的块格式响应。

# ChatGPT Prompt part
...
Please set the format as a 'blocks' value for Slack API
...
## RETURN ONLY THE MAIN RESPONSE. REMOVE PRE-TEXT AND POST-TEXT.

以这种方式请求时,以block格式给出,但解析时需要在前后加上解释或变量名。 解析可以在代码中实现,比较简单。

下面是一个响应示例。

在 W5100S-EVB-Pico 开发板环境中使用 Slack 和 ChatGPT API,使用 Micropython urequests

添加 urequests.py

您需要添加 urequests 库。 有几种安装库的方法,但我只是从下面的链接中复制了库文件。

在 Thonny 中创建一个新文件,然后从上面的链接复制并粘贴整个库代码。 将其保存为 urequests.py.

修改 Micropython 的不兼容代码

要在 W5100S-EVB-Pico 板环境中使用 Slack 和 ChatGPT API,您需要修改 Python 代码以与 Micropython 兼容,Micropython 是为微控制器设计的 Python 轻量级实现。

您需要添加一个初始化函数才能在 W5100S-EVB-Pico 板上使用以太网。 然后,您可以通过将请求更改为 urequests 并在运行时修复任何兼容性问题来修改 Python 代码。

主要问题是在使用 urequest 时设置标题和正文。

下面是urequests的基本操作代码。 json和ujson都可以,可以使用值为json dump的data参数。

from machine import Pin, SPI
import network
import utime
import urequests
import ujson

# Slack API Token and URL
SLACK_API_TOKEN = "<Slack API Token>"
SLACK_API_URL = "https://slack.com/api/chat.postMessage"

# W5x00 init
def init_ethernet():
    spi = SPI(0, 2_000_000, mosi=Pin(19), miso=Pin(16), sck=Pin(18))
    nic = network.WIZNET5K(spi, Pin(17), Pin(20))   # spi, cs, reset pin
    # Using DHCP
    nic.active(True)
    while not nic.isconnected():
        utime.sleep(1)
        # print(nic.regs())
        print('Connecting ethernet...')
    print(f'Ethernet connected. IP: {nic.ifconfig()}')

def main():
    init_ethernet()

    # Message to send
    message = {
        "channel": "#general",
        "text": "Hello, World!"
    }

    # Repeat message every 30 seconds
    for i in range(0, 1):
        # Send message using Slack API
        response = urequests.post(
            SLACK_API_URL,
            headers={
                "Authorization": "Bearer " + SLACK_API_TOKEN,
                "Content-type": "application/json"
            },
            data=ujson.dumps(message)
        )

        # Print response
        print(response.json())
        # Wait for seconds before sending the message again
        utime.sleep(30)

main()

测试并得到结果

我编写了一个代码来使用 ChatGPT API 获取要发送到 Slack 频道的正文并将其发布到 Slack 频道。

我已经使用时间库将其设置为每小时发送一次消息。

代码已经分享到 Github 上。

以下是发布在 Slack 频道上的结果:

最初发布在#general 频道,但后来创建了#daily-english 频道并继续在那里发布。

我在 Thonny 上编写和执行代码。

检查在 Slack web 或 PC 应用程序上收到的消息。

消息的格式不一致。 需要及时改进。

结论

将 ChatGPT 与 Slack 集成可以自动执行各种任务并改进工作流程。 在本文中,我向您介绍了在 PC 环境中使用 Python 请求和在 W5100S-EVB-Pico 开发板环境中使用 Micropython urequests 设置 Slack 应用程序和集成 ChatGPT 的步骤。 按照本文概述的步骤,您可以轻松设置 ChatGPT 与 Slack 的集成并简化您的工作流程。

最后,这是 ChatGPT 写的关于这个项目的常见问题解答。 我把它留在这里,因为它可能有助于理解。

常见问题解答

  1. 什么是 ChatGPT,它是如何工作的?
    1. ChatGPT 是一种人工智能语言模型,它使用深度学习算法对自然语言提示生成类似人类的响应。 它的工作原理是在大型人类语言数据集上进行训练,并使用这些数据根据给定的输入生成新文本。
  2. 什么是 Slack,它在商业中的用途是什么?
    • Slack 是企业用来改善协作和生产力的团队交流平台。 它允许团队成员实时沟通、共享文件和文档,并与其他工具和服务集成。
  3. 什么是 Micropython,它如何用于微控制器?
    • Micropython 是为微控制器设计的 Python 的轻量级实现。 它允许开发人员编写可在微控制器等小型设备上运行的 Python 代码,从而使他们能够构建物联网设备和嵌入式系统。
  4. ChatGPT 在商业中的用例有哪些?
    • ChatGPT 可用于广泛的业务应用程序,包括客户支持、内容创建、语言翻译等。 它可以自动执行重复性任务,并为员工腾出宝贵时间专注于更高级别的任务。
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值