Discordi serveris on väga lihtne ehitada juturobotit tänu sellistele suurepärastele AI-mudelitele nagu GPT-3, GPT-J ja GPT-NeoX. Selles artiklis näitame teile, kuidas kodeerida oma vestlusrobot Node.jsis, kasutades GPT-J ja GPT-NeoXi läbi NLP Cloud API.

Discord on laialt levinud sõnumivahetusplatvorm. Üha sagedamini näeme, et inimesed loovad oma projekti jaoks oma Discord-serveri, et kogukond saaks hõlpsasti kokku saada. Paljud ettevõtted on tegelikult loonud oma Discord-serveri, et edendada oma kasutajaskonda.
Discordi saab kas ise hostida või kasutada Discordi veebirakenduse kaudu. Discordi suurepärane asi on see, et sellel on ulatuslik API serveriga suhtlemiseks ja on väga lihtne luua juturobot, mis suhtleb kasutajatega Discordis.
Paljud inimesed loovad Discordis juturobotid, et kasutajad saaksid AI-ga arutleda paljude asjade üle. Vestlusroboti on väga lihtne integreerida oma Discordi serverisse. Vaatame, kuidas seda teha!
Viimase kahe aasta jooksul on välja antud mitu suurepärast AI-mudelit: GPT-3, GPT-J ja GPT-NeoX. Need mudelid on väga muljetavaldavad ja on eriti head vestlusliku tehisintellekti (st juturobotid) käsitlemisel.
Nende mudelite abil saab pidada suurepäraseid arutelusid sõna otseses mõttes ükskõik mille üle ja neid mudeleid on üsna lihtne kohandada konkreetsele olukorrale. Näiteks saate seadistada oma GPT-põhise juturoboti nii, et see oleks empaatiline, sarkastiline või isegi hea vastamaks konkreetsetele küsimustele teie enda tööstusharu kohta (meditsiin, õigus, turundus jne).
Ainus probleem on see, et need mudelid nõuavad palju arvutusvõimsust, nii et vähesed inimesed saavad endale lubada nende rakendamist oma serveris. NLP Cloud pakub nii GPT-J kui ka GPT-NeoXi API kaudu, seega kasutame neid mudeleid järgmises näites NLP Cloud API kaudu.
Oletame, et olete loonud konto Discord.com'is. Mine arendajate portaali: siin. Valige "Uus rakendus", andke oma rakendusele nimi ja looge see:

Nüüd klõpsa "Lisa bott" ja otsi välja oma bot-token.
Viimane samm: ühendage oma bott oma Discordi serveriga. Selleks klõpsa kõigepealt menüüsse "OAuth2" ja otsi välja oma kliendi ID:

Seejärel lubage oma botile ligipääs teie serverile, külastades järgmist URL-i: https://discord.com/oauth2/authorize?scope=bot&permissions=8&client_id=CLIENT_ID (asendage CLIENT_ID eelnevalt saadud kliendi ID-ga).
Discordi poolel on kõik korras. Nüüd hangime NLP Cloud API tokeni!
Oletame, et olete loonud konto NLP Cloudis. Lihtsalt otsige oma API-token oma armatuurlaual välja:

Seejärel tellige tasuline plaan, mis annab teile juurdepääsu GPT-J ja GPT-NeoX mudelitele (esimesed 100k tokenit on tasuta, mis teeb teie testid lihtsamaks).

Nüüd võite alustada oma Node.js boti kodeerimist!
Nii Discordil kui ka NLP Cloudil on Node.js kliendid, seega on arendus väga lihtne.
Siin on esimene versioon:
const NLPCloudClient = require('nlpcloud');
const { Client, Intents } = require('discord.js');
// Load NLP Cloud token and Discord Bot token.
const nlpcloudToken = process.env.NLPCLOUD_TOKEN;
if (nlpcloudToken == null) {
console.error('No NLP Cloud token received');
process.exit();
}
const discordBotToken = process.env.DISCORD_BOT_TOKEN;
if (discordBotToken == null) {
console.error('No Discord bot token received');
process.exit();
}
// Initialize the NLP Cloud and Discord clients.
const nlpCloudClient = new NLPCloudClient('fast-gpt-j', nlpcloudToken, true)
const discordClient = new Client({intents: [Intents.FLAGS.GUILDS, Intents.FLAGS.GUILD_MESSAGES]});
let history = [];
discordClient.on("messageCreate", function(message) {
if (message.author.bot) return;
(async () => {
// Send request to NLP Cloud.
const response = await nlpCloudClient.chatbot(`${message.content}`, '', history);
// Send response to Discord bot.
message.reply(`${response.data['response']}`);
// Add the request and response to the chat history.
history.push({'input':`${message.content}`,'response':`${response.data['response']}`});
})();
});
Nagu näete, otsime esmalt keskkonnamuutujatest välja Discordi ja NLP Cloudi sümboli. Seega eksportige esmalt oma tokenid 2 keskkonnamuutujasse nimega "NLPCLOUD_TOKEN" ja "DISCORD_BOT_TOKEN". Te võite ka lihtsalt kopeerida oma tokeni otse koodis oma testide ajal, kui soovite.
Me kasutame NLP Cloudi Fast GPT-J mudelit - GPT-J kiiremat rakendamist - mis on huvitav juturobotite jaoks, sest me tahame tavaliselt, et vastamisaeg oleks võimalikult lühike. Kui soovite kasutada GPT-NeoX 20B, kasutage lihtsalt "fast-gpt-j" asemel "gpt-neox-20b".
NLP Cloudi funktsioon "chatbot()" teeb GPT-mudelil põhineva chatroboti käsitsemise lihtsaks, ilma et peaks vaeva nägema keeruliste parameetrite, küsitluse, mõne pildi õppimise jne. abil. Ainus trikk on see, et pärast iga chatbot'i vastuse saamist tuleb vastus mällu jätta ja lisada see järgnevate päringute ajalukku. Kui me seda ei tee, ei mäleta vestlusrobot kunagi vestluse ajalugu!
Meie juturobot töötab nüüd. Lihtsalt käivitage oma skript (näiteks "node my_script.js") ja te peaksite nägema, et teie juturobot on teie Discordi serveris võrgus. Võite hakata sellega päriselt rääkima!
Meie näide toimib, kuid selles on üks nõrkus: GPT-mudelid ei saa korraga käsitleda rohkem kui 2048 märki (2048 märki on enam-vähem võrdne 1700 sõnaga). Nii et mingil hetkel võib teie vestlusroboti ajalugu muutuda liiga suureks ja te peate selle kärpima! Siin on, kuidas seda teha:
const NLPCloudClient = require('nlpcloud');
const { Client, Intents } = require('discord.js');
// Load NLP Cloud token and Discord Bot token.
const nlpcloudToken = process.env.NLPCLOUD_TOKEN;
if (nlpcloudToken == null) {
console.error('No NLP Cloud token received');
process.exit();
}
const discordBotToken = process.env.DISCORD_BOT_TOKEN;
if (discordBotToken == null) {
console.error('No Discord bot token received');
process.exit();
}
// Initialize the NLP Cloud and Discord clients.
const nlpCloudClient = new NLPCloudClient('fast-gpt-j', nlpcloudToken, true)
const discordClient = new Client({intents: [Intents.FLAGS.GUILDS, Intents.FLAGS.GUILD_MESSAGES]});
let history = [];
let charsCount = 0;
discordClient.on("messageCreate", function(message) {
if (message.author.bot) return;
(async () => {
charsCount += `${message.content}`.length;
// Send request to NLP Cloud.
const response = await nlpCloudClient.chatbot(`${message.content}`, '', history);
charsCount += `${response.data['response']}`.length;
// Send response to Discord bot.
message.reply(`${response.data['response']}`);
// Add the request and response to the chat history.
history.push({'input':`${message.content}`,'response':`${response.data['response']}`});
// If the chat history is bigger than 1500 tokens, we remove the oldest elements from
// the history. We consider that 1 token = 4 characters.
// The theoretical GPT context limit is 2048 tokens but we choose 1500 tokens instead
// in order to be safe since the tokens count is not perfectly accurate.
while (charsCount > 1500 * 4) {
charsCount -= history[0]['input'].length + history[0]['response'].length;
history.shift();
}
})();
});
discordClient.login(discordBotToken);
Nagu näete, hoolitseme lihtsalt selle eest, et ajalugu ei oleks liiga suur, ja kui see on, siis eemaldame vanimad elemendid!
Praktikas on see harva probleemiks, sest ajaloo vanimad elemendid on vestluse jaoks harva asjakohased. Kuid kui nad on, saate rakendada ka edasijõudnumat strateegiat, mis on mõne elemendi valikuline säilitamine ja eemaldamine nende asjakohasuse alusel.
Tänu Discordile ja GPT-mudelitele ei ole täiustatud juturobotite loomine kunagi varem olnud nii lihtne.
Peamine väljakutse on see, et neid kaasaegseid tehisintellekti mudeleid on nende tohutu suuruse tõttu üha raskem kasutada, mistõttu võib olla palju lihtsam ja palju kulutasuvam kasutada selle asemel API-d nagu NLP Cloud.
Kui soovid rakendada oma juturobotit, kuid ei ole kindel, kuidas seda teha, siis võta meiega julgelt ühendust!
Julien Salinas
NLP Cloud tehnoloogiajuht