这个基于Python的项目将向您介绍Slack API,OpenAI的GPT-3 API和Blask Web框架。我们将创建一个命令,允许用户使用Slack中的简单 /chatgpt命令与机器人进行交互。完成本教程后,您将拥有一个功能齐全的松弛机器人,能够理解自然语言并提供智能响应。
导入所需的库
在本节中,我们导入应用程序中将使用的所有必需库。这些库允许我们与文件系统进行交互,管理环境变量,创建Web服务器,与Slack API进行交互,处理线程并与OpenAI API进行交互。
# Import required libraries
import os
from dotenv import load_dotenv
from flask import Flask, render_template, request, jsonify
from slack_sdk import WebClient
from slack_sdk.errors import SlackApiError
from slack_bolt import App
from slack_bolt.adapter.socket_mode import SocketModeHandler
from slack_bolt.context.say import Say
from threading import Thread
import openai
加载环境变量
在这里,我们从.env文件加载环境变量。这对于管理敏感信息(例如API键和令牌)很有用,我们不想将其用于脚本。
# Load environment variables from a .env file
load_dotenv()
创建烧瓶应用程序
我们创建了烧瓶应用程序的新实例。烧瓶是Python中的轻量级Web服务器框架。
# Create a new Flask web server instance
app = Flask(__name__)
设置API键和令牌
我们从环境变量中检索OpenAI API密钥,Slack Bot令牌和Slack App令牌,并为OpenAI库设置OpenAI API键。
# Load environment variables
api_key = os.environ.get('OPENAI_API_KEY')
SLACK_BOT_TOKEN = os.environ.get('SLACK_BOT_TOKEN')
SLACK_APP_TOKEN = os.environ.get('SLACK_APP_TOKEN')
# Set the OpenAI API key
openai.api_key = api_key
创建一个Slack应用程序
我们使用机器人令牌创建一个新的Slack应用程序。这使我们能够与Slack API进行互动并聆听事件。
# Create a new Slack app with the bot token
slack_app = App(token=SLACK_BOT_TOKEN)
定义命令处理程序
在这里,我们为Slack中的 /chatgpt命令定义了一个命令处理程序。当用户键入此命令后面是消息时,将触发此功能。它确认命令,提取消息,将消息发送给OpenAI API,提取AI的响应,并将用户的消息和AI的响应发布回频道。
# Define a command handler for the /chatgpt command
@slack_app.command("/chatgpt")
def command(ack, say, command):
# Acknowledge the command right away
ack()
# Extract the user's message
text = command['text']
# Query the OpenAI API
response = openai.ChatCompletion.create(
model="gpt-3.5-turbo",
messages=[
{"role": "system", "content": "You are a helpful assistant."},
{"role": "user", "content": text}
]
)
# Extract the AI's response
response_text = response['choices'][0]['message']['content']
# Post the user's message, the response, and a dashed line back to the same channel
say(f"*User's message:* {text}\n*AI's response:* {response_text}\n----------------")
启动烧瓶应用程序
if __name__ == "__main__":
app.run(host='0.0.0.0', port=3333)
设置您的松弛机器人
您需要创建和配置Slack Bot。这是这样做的方法:
创建一个Slack App
启用机器人令牌示波器
导航到侧边栏中的“ Oauth&Permissions”,然后向下滚动至“ Bot令牌示波器”。在这里,您需要为机器人添加所需的范围。要读取和写消息,您至少需要以下范围:
- app_mentions:阅读
- 频道:历史
- 频道:阅读
- 聊天:写
- 命令
启用插座模式
转到“插座模式”部分并启用它。这将允许您的应用程序使用套接字模式,该模式允许您的应用程序直接通过WebSocket连接接收事件。复制“应用程序级令牌”(以“ XAPP - ”开头)。
安装应用
导航返回“ OAuth&Permissions”,然后单击“安装应用程序到工作区”。请按照提示授权您的工作区中的机器人。
检索您的令牌
安装应用程序后,您将重定向回到“ OAuth&Permissions”页面。在这里,您会看到“为工作空间的代币”部分。复制“ bot用户oauth令牌”(应该以“ xoxb-”开头)和“应用程序级令牌”(应该以“ xapp-”开头)。您需要这些用于Python代码。
创建斜线命令
单击侧边栏中的“斜杠命令”,然后单击“创建新命令”。输入 /chatgpt作为命令。填写其余表格,然后单击“保存”。
更新您的python代码
在您的Python代码中,用您的实际令牌替换Slack_bot_token,Slack_app_token和Openai_api_key。
将机器人邀请到通道
最后,转到您的Slack Workspace,并通过从集成选项卡中添加他来邀请您的机器人进入频道。您的机器人现在应该准备好响应 /chatgpt命令。< /p>
github repo :https://github.com/alexbobes/chatgpt-slack-bot
就是这样!现在,您拥有与Slack Workspace集成的全部功能AI聊天机器人,所有这些都由OpenAI的GPT-3型号提供动力。
我希望您对此教程有所帮助。如果您有任何疑问,评论或建议,请随时将它们留在下面。
感谢您的阅读和愉快的编码!