Construirea unui Chatbot Slack folosind API-ul OpenAI

Cuprins
Bună ziua! Sunt Alex Bobes, un pasionat de tehnologie și director tehnic, aflat în prezent în al doilea deceniu de experimentare cu tehnologia, dezvăluind complexitatea codurilor și, ocazional, arzându-mi degetele pe fierul încins al inovației. Dar astăzi nu sunt aici pentru a vorbi despre cicatricile mele de război; în schimb, vreau să vă duc într-o călătorie captivantă de construire a unui chatbot Slack care se integrează perfect cu API-ul OpenAI. Sună interesant, nu-i așa? Să începem.
Mai întâi, să vă spun de ce facem asta. Slack este o platformă fantastică care a revoluționat comunicarea la locul de muncă. Este un hub pentru echipa dvs., unde conversațiile, ideile și fluxurile de lucru apar și se dezvoltă în mod organic. Acum, imaginați-vă îmbogățirea acestui instrument deja puternic cu capacitatea AI prin OpenAI's GPT-3. Acest lucru ar putea însemna răspunsuri automate, gestionarea mai inteligentă a sarcinilor, mesaje personalizate și multe altele!
Pasul 1: Pregătiți-vă instrumentele
Veți avea nevoie de câteva lucruri înainte de a începe. Asigurați-vă că aveți:
- Un cont Slack cu privilegii administrative
- O cheie API OpenAI
- Cunoștințe de bază despre Python și JavaScript
De asemenea, asigurați-vă că aveți instalat software-ul necesar, cum ar fi Node.js și Ngrok (pentru dezvoltare și testare locală), împreună cu bibliotecile Python slack_sdk
și openai
.
Pasul 2: Creați o aplicație Slack
Pentru a crea un chatbot, trebuie mai întâi să creăm o aplicație Slack. Este simplu: accesați site-ul web Slack API, navigați la „Aplicațiile dvs.” și faceți clic pe „Creați o aplicație nouă”. Completați detaliile, cum ar fi numele aplicației și spațiul de lucru în care veți dezvolta aplicația. Odată terminat, veți obține „ID-ul aplicației” și „ ID client”, de care vom avea nevoie mai târziu.
Pasul 3: Configurați componentele interactive
Vrem ca chatbotul nostru să fie interactiv, receptiv și dinamic – în esență, să pară viu! Pentru asta, va trebui să ne uităm în secțiunea „Componente interactive” din setările aplicației Slack.
Când ajungeți în această secțiune, veți observa un comutator marcat cu „Interactivitate”. Activați-l. Astfel, practic îi permitem chatbotului nostru să înceapă să reacționeze la comenzile utilizatorului dincolo de simplele comenzi textuale.
Apoi, ne confruntăm cu câmpul marcat cu „URL cerere” . Aici îi spunem aplicației noastre unde să trimită toate informațiile utile atunci când se utilizează o componentă interactivă în cadrul aplicației noastre. Cei dintre noi care joacă acasă sau pe un server local s-ar putea să se întrebe cum se configurează un URL. Nu vă faceți griji, vă ajut eu.
Ngrok este un instrument excelent care ne poate ajuta în acest sens. Când rulați Ngrok pe computerul local, acesta vă oferă o adresă URL unică care este redirecționată direct către computerul dvs. Așadar, instalați Ngrok și rulați-l pe același port ca serverul local. Luați adresa URL furnizată de Ngrok (va fi ceva de genul https://abc123.ngrok.io
) și lipiți-o în câmpul „Request URL”.
Rețineți că de fiecare dată când reporniți Ngrok, veți obține o nouă adresă URL, așa că poate fi necesar să actualizați periodic acest câmp în setările aplicației dacă efectuați multe teste și dezvoltări.
Odată ce ați configurat acest lucru, sunteți gata să adăugați câteva opțiuni de interacțiune. În secțiunea „ Blocuri de acțiune”, faceți clic pe „Adăugați o acțiune nouă”. Aici puteți configura diverse componente interactive, cum ar fi butoane, meniuri de selecție, selectoare de date și multe altele. Fiecare componentă interactivă va avea un „ID de acțiune” care va fi inclus în încărcătura trimisă la adresa URL de solicitare atunci când componenta este utilizată. Acest lucru permite aplicației dvs. să știe cu ce componentă s-a interacționat și să acționeze în consecință.
Cu componentele interactive configurate corespunzător, botul dvs. este acum echipat pentru a avea interacțiuni dinamice cu utilizatorii. Nu mai este doar un bot; este un instrument, un companion, o parte integrantă a echipei dvs. Să continuăm!
Pasul 4: Abonamente la evenimente
Abonamentele la evenimente sunt esențiale pentru chatbotul tău. Acestea îi permit să intre în acțiune atunci când se întâmplă ceva în spațiul de lucru Slack. Acest „ceva” poate fi un utilizator care menționează botul, un mesaj nou într-un canal, o reacție adăugată – orice specifici tu.
Pentru a începe, să navigăm la secțiunea „Abonamente la evenimente” din setările aplicației. Aici vom găsi un alt comutator pe care să îl activăm – „Enable Events” (Activați evenimentele). Când facem acest lucru, chatbotul nostru devine foarte atent, gata să răspundă la anumite declanșatoare.
Următorul pas este câmpul „ URL solicitare”, care s-ar putea să vă fie familiar. La fel ca în cazul componentelor interactive, va trebui să furnizați o adresă URL la care pot fi trimise datele evenimentului atunci când acestea apar. Dacă lucrați pe un server local, aceasta este o altă ocazie pentru Ngrok să strălucească. Pur și simplu utilizați aceeași adresă URL pe care ați folosit-o pentru configurarea componentelor interactive.
După introducerea URL-ului solicitării, Slack va trimite o solicitare de verificare pentru a confirma că serverul dvs. este pregătit să primească evenimente. Asigurați-vă că serverul dvs. este configurat să accepte solicitări POST la calea specificată și răspundeți cu parametrul de verificare. Odată ce ați făcut acest lucru, ar trebui să vedeți o etichetă verde „Verificat”.
Acum vine partea interesantă – alegerea evenimentelor pe care botul nostru le va asculta. În secțiunea "Subscribe to Bot Events" (Abonați-vă la evenimentele botului), veți găsi un buton "Add Bot User Event" (Adăugați evenimentul utilizatorului botului) . Faceți clic pe acesta și vi se va afișa o serie de evenimente la care vă puteți abona.
Iată un sfat util: abonarea la evenimentul message.channels
este un început bun, deoarece va permite botului dvs. să asculte mesajele din canalele publice. Dacă doriți ca botul dvs. să asculte mesaje directe sau canale private, luați în considerare adăugarea message.im
și, respectiv, message.groups
. Pentru a vă asigura că botul dvs. intră în acțiune atunci când este menționat, nu uitați să adăugați evenimentul app_mention
.
Rețineți că, de fiecare dată când adăugați un eveniment nou, aplicația dvs. trebuie să fie reinstalată în spațiul dvs. de lucru pentru ca modificările să aibă efect. Dar, după ce faceți acest lucru, botul dvs. este acum gata să asculte și să răspundă la evenimente. Spațiul dvs. de lucru Slack începe deja să pară puțin mai inteligent, nu-i așa?
Pasul 5: Permisiuni
Pasul privind permisiunile este unul crucial, în primul rând deoarece stabilește limitele a ceea ce poate și nu poate face botul nostru. Să îl considerăm regulamentul de conduită al botului nostru. Cu permisiuni bine configurate, botul dvs. poate coexista armonios în spațiul dvs. de lucru, fără a-și depăși limitele.
Pentru a începe, accesați secțiunea „OAuth și permisiuni” din setările aplicației. Aici veți vedea secțiunea „Domenii de aplicare”, care este, practic, lista permisiunilor solicitate de aplicația dvs.
Scopurile sunt de două tipuri: scopuri ale utilizatorului și scopuri ale botului. Scopurile utilizatorului descriu ce poate face aplicația în numele utilizatorilor, cum ar fi citirea informațiilor din profilul lor sau postarea de mesaje în numele lor. Scopurile botului, pe de altă parte, determină ce poate face aplicația ca utilizator bot în sine.
Deoarece ne concentrăm pe crearea unui chatbot, ne vom ocupa în principal de domeniile de aplicare ale botului. Faceți clic pe „Adăugați un domeniu de aplicare OAuth” în secțiunea „Domenii de aplicare ale tokenului botului”. Aici veți găsi o gamă largă de permisiuni pe care le puteți solicita.
Un bun punct de plecare este să adăugați chat:write
, care permite botului să trimită mesaje, și app_mentions:read
, care permite botului să citească mesajele în care a fost @menționat. Dacă doriți ca botul dvs. să reacționeze la mesaje, puteți adăuga și reactions:write
.
Rețineți că principiul privilegiului minim ar trebui să ne ghideze în configurarea acestor permisiuni – botul dvs. ar trebui să aibă doar permisiunile necesare pentru a-și îndeplini funcțiile, dar nu mai mult. Aceasta este o bună practică pentru a asigura securitatea și confidențialitatea spațiului dvs. de lucru.
După ce ați adăugat toate domeniile necesare, derulați până în partea de sus a paginii și faceți clic pe „Instalați aplicația în spațiul de lucru”. Va trebui să reinstalați aplicația de fiecare dată când modificați domeniile, pentru a vă asigura că noile permisiuni intră în vigoare.
În cele din urmă, veți vedea secțiunea „OAuth Tokens & Redirect URLs” , unde veți găsi „Bot User OAuth Access Token”. Păstrați acest token în siguranță, deoarece veți avea nevoie de el pentru a autentifica interacțiunile botului dvs. cu Slack API.
Gata, asta e tot! Botul dvs. cunoaște acum limitele sale și este gata să le respecte. Astfel, ne-am asigurat că botul nostru va fi un membru responsabil al spațiului nostru de lucru Slack. Acum, să trecem la pasul următor.
Pasul 6: Scrie codul botului
Acum, vom scrie codul pentru botul nostru. Vom folosi Node.js pentru gestionarea evenimentelor Slack și Python pentru comunicarea cu API-ul OpenAI. Rețineți că vom avea două părți: una pentru gestionarea evenimentelor Slack și alta pentru procesarea mesajelor utilizatorilor și răspunsul folosind API-ul OpenAI.
O interacțiune tipică ar putea arăta astfel:
const { WebClient, App } = require(„@slack/bolt”); const app = new App({
token: process.env.SLACK_BOT_TOKEN,
signingSecret: process.env.SLACK_SIGNING_SECRET
}); app.event(„app_mention”, async ({ event, client }) => {
try {
const result = await client.chat.postMessage({
channel: event.channel,
text: `<@${event.user}>`, // acesta este un substituent. Îl vom înlocui în curând.
}); console.log(result);
}
catch (error) {
console.error(error);
}
}); (async () => {
await app.start(process.env.PORT || 3000);
console.log(«⚡️ Aplicația Bolt rulează!»);
})();
În codul de mai sus, botul nostru ascultă evenimentele app_mention
și trimite un mesaj în care menționează utilizatorul. Dar, în loc să menționăm doar utilizatorul, haideți să îl facem mai inteligent folosind API-ul OpenAI.
import os
import openai
from slack_sdk import WebClient
from slack_sdk.errors import SlackApiError slack_token = os.getenv(„SLACK_API_TOKEN”)
openai_key = os.getenv(„OPENAI_API_KEY”) client = WebClient(token=slack_token)
openai.api_key = openai_key def respond_to_message(event):
conversation_id = event[«channel»]
user_message = event[«text»] # Generează un răspuns folosind OpenAI
openai_response = openai.Completion.create(
engine=„text-davinci-003”,
prompt=user_message,
temperature=0.5,
max_tokens=150
) # Trimite răspunsul OpenAI înapoi la Slack
try:
response = client.chat_postMessage(
channel=conversation_id,
text=openai_response.choices[0].text.strip()
)
except SlackApiError as e:
assert e.response[„ok”] is False
assert e.response[„error”]
print(f„A apărut o eroare: {e.response[«error»]}”)
Funcția respond_to_message
preia un eveniment Slack (care conține mesajul utilizatorului), utilizează API-ul OpenAI pentru a genera un răspuns și trimite acel răspuns înapoi la Slack.
Pasul 7: Implementare
Odată ce codul botului este gata, sunteți gata de start. Dacă ați dezvoltat local, acum este momentul să implementați botul pe un server. Puteți utiliza servicii precum Heroku sau AWS pentru implementare. Nu uitați să actualizați URL-ul de solicitare în setările aplicației Slack.
Și gata! Ați creat propriul chatbot Slack care comunică cu API-ul OpenAI. Acum vă puteți bucura de interacțiuni captivante, adecvate contextului și dinamice în spațiul de lucru Slack.
Crearea unui chatbot Slack care utilizează OpenAI poate părea descurajantă la început. Dar, după cum tocmai am văzut, este o sarcină ușor de gestionat, împărțită în pași simpli. Este o experiență fascinantă, iar rezultatul este pur și simplu extraordinar.
Sunt încântat că am împărtășit această călătorie cu voi și aștept cu nerăbdare să văd modurile inovatoare în care veți folosi aceste cunoștințe. Până data viitoare, programare plăcută!