Va voi prezenta in acest articol cum decurge dezvoltarea unui chatbot Slack care se integreaza perfect cu API-ul OpenAI.
Slack este o platforma fantastica care a revoluționat comunicarea la locul de munca. Este un hub pentru echipa ta, unde conversatiile, ideile si fluxurile de lucru se dezvolta in mod natural. Vom imbunatati acest instrument deja puternic cu capacitatile AI prin GPT-3 de la OpenAI. Asta ar putea insemna raspunsuri automate, management mai inteligent al sarcinilor, mesaje personalizate si multe altele!
Pasul 1: Pregateste-ti instrumentele
Vei avea nevoie de cateva lucruri inainte sa incepem. Asigura-te ca ai:
- Un cont Slack cu privilegii administrative
- O cheie API OpenAI
- Cunostinte de baza in Python si JavaScript
De asemenea, asigura-te ca ai instalat software-ul necesar, cum ar fi Node.js si Ngrok (pentru dezvoltare si testare locala), impreuna cu bibliotecile Python slack_sdk
si openai
.
Pasul 2: Creeaza o aplicatie Slack
Pentru a construi un chatbot, mai intai trebuie sa cream o aplicatie Slack. Este simplu: mergi pe site-ul API-ului Slack, navigheaza la „Aplicatiile tale” si apasa pe „Creeaza o aplicatie noua”. Completeaza detaliile, precum Numele aplicatiei si spatiul de lucru in care vei dezvolta aplicatia. Odata terminat, vei primi „ID-ul aplicatiei” si „ID-ul clientului”, de care vom avea nevoie mai tarziu.
Pasul 3: Configureaza componentele interactive
Dorim ca chatbotul nostru sa fie interactiv, receptiv si dinamic. Pentru asta, va trebui sa ne adancim putin in sectiunea „Componente interactive” din setarile aplicatiei Slack.
Cand ajungi in aceasta sectiune, vei observa un comutator marcat „Interactivitate”. Activeaza-l. Astfel, practic, vom da putere chatbotului nostru sa inceapa sa reactioneze la inputul utilizatorului dincolo de comenzile simple pe baza de text.
Urmatorul pas este campul marcat „Request URL“. Aici ii spunem aplicatiei noastre unde sa trimita toate informatiile de incarcare atunci cand o componenta interactiva este utilizata in aplicatia noastra. Pentru cei dintre noi care lucreaza local sau pe un server local, poate va intrebati cum sa configurati un URL. Nu va faceti griji, sunt aici sa va ajut.
Ngrok este un instrument excelent care ne ajuta aici. Cand rulezi Ngrok pe masina ta locala, iti ofera un URL unic care este redirectionat direct catre computerul tau. Asa ca, instaleaza Ngrok si ruleaza-l pe acelasi port cu serverul tau local. Ia URL-ul pe care ti-l ofera Ngrok (va fi ceva de genul https://abc123.ngrok.io
) si lipeste-l in campul „Request URL”.
Tine minte ca de fiecare data cand repornesti Ngrok, vei primi un nou URL, asa ca va trebui sa actualizezi periodic acest camp in setarile aplicatiei tale daca faci multe teste si dezvoltari.
Odata ce ai configurat asta, esti gata sa adaugi cateva optiuni de interactiune. In sectiunea „Action Blocks”, apasa pe „Adauga o actiune noua”. Aici poti configura diverse componente interactive, cum ar fi butoane, meniuri de selectie, selectoare de data si multe altele. Fiecare componenta interactiva va avea un „ID al actiunii” care va fi inclus in payload-ul trimis catre URL-ul de cerere atunci cand componenta este utilizata. Acest lucru permite aplicatiei tale sa stie cu ce componenta s-a interactionat si sa actioneze in consecinta.
Cu componentele interactive configurate corect, botul tau este acum pregatit sa aiba interactiuni dinamice cu utilizatorii. Nu mai este doar un bot; este un instrument, un companion, o parte integranta a echipei tale. Sa continuam!
Pasul 4: Abonamente la evenimente
Abonamentele la evenimente sunt esentiale pentru chatbotul tau. Ele il permit sa intre in actiune atunci cand se intampla ceva in spatiul tau de lucru Slack. Acest „ceva” poate fi o mentiune a botului de catre un utilizator, un mesaj nou intr-un canal, o reactie adaugata – orice specifici tu.
Pentru a incepe, sa navigam la sectiunea „Abonamente la evenimente” din setarile aplicatiei tale. Aici, vom gasi un alt comutator de activat – „Activeaza evenimentele”. Cand facem acest lucru, chatbotul nostru capata o ureche atenta, gata sa raspunda la anumite declansatoare.
Urmatorul camp este „Request URL”, care s-ar putea sa-ti para familiar. La fel ca si in cazul componentelor interactive, va trebui sa oferi un URL unde sa fie trimise payload-urile evenimentelor atunci cand acestea au loc. Daca lucrezi pe un server local, aceasta este o alta ocazie pentru Ngrok sa straluceasca. Foloseste acelasi URL pe care l-ai folosit pentru configurarea componentelor interactive.
Dupa ce introduci „Request URL”, Slack va trimite o cerere de verificare pentru a confirma ca serverul tau este pregatit sa primeasca evenimente. Asigura-te ca serverul tau este configurat pentru a accepta cereri POST la calea specificata si ca raspunde cu parametrul de verificare. Odata ce acest lucru este facut, ar trebui sa vezi eticheta verde „Verificat”.
Acum vine partea interesanta – alegerea evenimentelor la care botul nostru va asculta. In sectiunea „Abonamente la evenimentele botului”, vei gasi un buton „Adauga eveniment bot user”. Apasa pe el si vei fi prezentat cu o selectie variata de evenimente la care te poti abona.
Iata un sfat profesionist: abonarea la evenimentul message.channels
este un inceput bun, deoarece ii va permite botului tau sa asculte mesajele din canale publice. Daca vrei ca botul tau sa asculte mesaje directe sau canale private, ia in considerare adaugarea evenimentelor message.im
si message.groups
in mod corespunzator. Pentru a te asigura ca botul tau intra in actiune atunci cand este mentionat, nu uita sa adaugi si evenimentul app_mention
.
Aminteste-ti, de fiecare data cand adaugi un nou eveniment, aplicatia ta trebuie sa fie reinstalata in spatiul tau de lucru pentru ca modificarile sa aiba efect. Dar, dupa ce acest pas este finalizat, botul tau este acum gata sa asculte, pregatit si asteptand evenimente la care sa raspunda. Spatiul tau de lucru Slack incepe deja sa devina putin mai inteligent, nu-i asa?
Pasul 5: Permisiuni
Pasul permisiunilor este un pas crucial, in principal pentru ca stabilește limitele a ceea ce botul nostru poate și nu poate face. Sa-l consideram manualul de reguli pentru comportamentul botului nostru. Cu permisiuni configurate corect, botul tau poate coexista armonios in spatiul tau de lucru fara a depasi limitele impuse.
Pentru a incepe, mergi la sectiunea „OAuth & Permisiuni” din setarile aplicatiei tale. Aici, vei vedea sectiunea „Scope-uri”, care este, practic, lista de permisiuni pe care aplicatia ta le solicita.
Scope-urile vin in doua variante: scope-uri de utilizator si scope-uri de bot. Scope-urile de utilizator definesc ce poate face aplicatia in numele utilizatorilor, cum ar fi citirea informatiilor lor de profil sau postarea de mesaje ca ei. Scope-urile de bot, pe de alta parte, stabilesc ce poate face aplicatia in calitate de bot.
Avand in vedere ca focusul nostru este pe construirea unui chatbot, vom lucra in principal cu scope-urile de bot. Apasa pe „Adauga un OAuth Scope” sub sectiunea „Bot Token Scopes”. Aici, vei gasi o gama larga de permisiuni pe care le poti solicita.
Un bun punct de pornire este sa adaugi chat:write
, care permite botului tau sa trimita mesaje, si app_mentions:read
, care ii permite botului sa citeasca mesajele in care a fost mentionat. Daca vrei ca botul tau sa reactioneze la mesaje, poti adauga si reactions:write
.
Tine minte ca principiul celor mai mici privilegii ar trebui sa ne ghideze atunci cand configuram aceste permisiuni – botul tau ar trebui sa aiba doar permisiunile necesare pentru a-si indeplini functiile, dar nimic mai mult. Aceasta este o practica buna pentru a asigura securitatea si confidentialitatea spatiului tau de lucru.
Dupa ce ai adaugat toate scope-urile necesare, deruleaza in sus pe pagina si apasa pe „Instaleaza aplicatia in spatiul de lucru”. Va trebui sa reinstalezi aplicatia de fiecare data cand modifici scope-urile pentru a te asigura ca noile permisiuni au efect.
In final, vei vedea sectiunea „OAuth Tokens & Redirect URLs”, unde vei gasi „Bot User OAuth Access Token”. Salveaza acest token intr-un loc sigur, deoarece il vei folosi pentru a autentifica interactiunile botului tau cu Slack API.
Botul tau acum cunoaste limitarile sale si este pregatit sa le respecte.
Pasul 6: Scrie Codul pentru Bot
Acum, vom scrie codul pentru botul nostru. Vom folosi Node.js pentru a gestiona evenimentele Slack si Python pentru a comunica cu API-ul OpenAI. Aminteste-ti ca vor fi doua parti: una pentru a gestiona evenimentele Slack si alta pentru a procesa mesajele utilizatorilor si a raspunde folosind API-ul OpenAI.
O interactiune tipica ar putea arata 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}>`, // this is a placeholder. We'll replace it soon.
});
console.log(result);
}
catch (error) {
console.error(error);
}
});
(async () => {
await app.start(process.env.PORT || 3000);
console.log('⚡️ Bolt app is running!');
})();
In codul de mai sus, botul nostru asculta evenimentele de tip app_mention
si trimite un mesaj mentionand inapoi utilizatorul. Dar in loc sa mentionam doar utilizatorul inapoi, hai sa-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']
# Generate a response using OpenAI
openai_response = openai.Completion.create(
engine="text-davinci-003",
prompt=user_message,
temperature=0.5,
max_tokens=150
)
# Send the OpenAI response back to 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"Got an error: {e.response['error']}")
Functia respond_to_message
preia un eveniment Slack (care contine mesajul utilizatorului), foloseste API-ul OpenAI pentru a genera un raspuns si trimite acest raspuns inapoi catre Slack.
Pasul 7: Deploy
Cu codul botului gata, esti pregatit sa il lansezi. Daca ai dezvoltat local, acum este momentul sa iti depui botul pe un server. Poti folosi servicii precum **Heroku** sau **AWS** pentru a-l implementa. Nu uita sa actualizezi URL-ul de Request in setarile aplicatiei tale Slack.
Ai reusit sa construiesti propriul tau Slack chatbot care comunica cu OpenAI API. Acum poti sa te bucuri de interactiuni captivante, contextuale si dinamice in cadrul spatiului tau de lucru Slack.
Building a Slack chatbot that leverages OpenAI can seem daunting initially. But as we’ve just seen, it’s a manageable task, broken down into straightforward steps. It’s a fascinating experience, and the result is nothing short of extraordinary.
I’m thrilled to have shared this journey with you, and I look forward to the innovative ways you’ll use this knowledge. Until next time, happy coding!