Dnes vytvoríme jednoduchého chatbota. Pôjde v podstate o web stránku, ktorá sa bude správať ako chatbot. Všetko sa pokúsim zrozumiteľne vysvetliť, preto verím, že to zvládnete aj bez programátorských skúseností. Ak však aspoň trošku poznáte HTML, CSS prípadne JavaScript bude to pre vás určite malina.
Mimochodom, takto bude vyzerať náš výsledný chatbot:
Ak si aj napriek môjmu ubezpečeniu netrúfate, chatbota urobiť sami, ale nejakého toho bota by ste na svoj web chceli, stačí ak mi napíšete. Chatbota vám rád pripravím podľa vašich požiadaviek.
Skôr než začneme, budete potrebovať nejaký editor - program v ktorom chatbota vytvoríme. Ak ste programátor, tak určite máte svoje obľúbené IDE. Ak programátor nie ste, vystačíte si s tým najjednoduchším editorom textu, ktorý na počítači máte. Môže to byť aplikácia "Poznamkový blok" - bežná výbava Windows, resp. „TextEdit" bežná výbava Macu. Ak ste na Macu a rozhodli ste sa pre TextEdit, tak v jeho nastavení si zaškrtnite položku „Zobraziť HTML ako HTML Kód, a nie ako formátovaný text“ štandardne to takto nastavené nie je.
Ak chcete mať z písania kódu trošku lepší zážitok, odporúčam stiahnuť si napríklad Sublimetext. Tento program je dostupný aj pre Windows aj pre Mac. Je to malý a rýchly editor, ktorý vám kód bude prehľadne vyfarbovať. Vďaka tomu bude všetko zrozumiteľnejšie.
Ak ste si svoj editor už vybrali, môžeme sa pustiť do kódovania. Vytvorme si prázdny súbor, ktorý nazveme index.html. Do súboru nakopírujte nasledovný kód:
<html lang="sk">
<head>
<meta charset="UTF-8" />
<meta http-equiv="X-UA-Compatible" content="IE=edge" />
<meta name="viewport" content="width=device-width, initial-scale=1.0" />
<title>Chatbot Anička</title>
</head>
<body>
</body>
</html>
Čo sme to vlastne do súboru vložili? Ide o kód, ktorý obsahuje
takmer každá html web stránka. Kód hovorí prehliadaču, že
stránka bude v slovenčine, nájdete tu názov stranky a pár
ďalších vecí, ktoré ale pre tento článok nie sú dôležité.
Doležité
však sú značky
<body>náš kód</body>
, pretože primárne medzi ne budeme písať náš kód.
Medzi vyššie spomínané značky "body" vložte nasledujúci kód:
<div class="container">
<div id="chat">
<div class="msg bot">
Ahoj, ja som chatbot Anička.
</div>
</div>
<form id="myForm">
<input id="myInput" type="text" />
</form>
</div>
Značky, o ktorých píšem voláme „tágy“. Vačšina html tágov existuje vo dvojici - začiatočný otvárací tag a koncový uzatvárací tag. Ukončovací tág obsahuje lomítko. Reálny obsah, ktorý zobrazujú prehliadače a môžeme ho vidieť na stránke, sa potom vkladá medzi takéto tágy. V našom prípade to je úvodná hlaska chatbota "Ahoj, ja som chatbot Anička."
Čo sme to ale do našeho súboru vložili? Tento kód vytvoril 4 veci.
<div class="container">
v ktorom bude chat prebiehať. Tento kontajner si môžete
predstaviť ako nejaký hárok papiera.
<div id="chat">
. Do
tohoto štvorca budeme ukladať jednotlivé správy.
V tagoch môžete vidieť parametre ako "class" a "id". Tieto služia na presné označenie jednotlivých elementov resp. skupín elementov. Keď budeme potrebovať dať príkaz konkretne len jednému elementu, vdaka parametru "id" ho budeme vedieť pesne adresovať.
Ak by ste sa teraz súbor index.html otvorili, už by ste vo vašom prehliadači videli úvodnú hlášku chatbota. Stránka by však ako chatbot ešte nevyzerala. Vzhľad vyriešime v ďalšom kroku.
Teraz do nášho kódu vložíme tzv. "CSS štýly".
Ide o niečo, čo dá webu farby, fonty a iné dizajnové prvky. Tieto
štýly sa nevkladajú do <body>
elementu, ale do hlavičky stránky. Konkrétne do elementu <head>
. Štýlom sa
viac venovať nebudeme, lebo by to bolo na samostatný kurz. Zatiaľ
si ich do stránky len vložíme. Nasledujúci kód vložíme
hneď pred koncový tág
</head>
.
<style>
body {
margin: 0;
padding: 0;
box-sizing: border-box;
font-family: Arial, sans-serif;
font-size: 16px;
line-height: 20px;
color: #666;
background-color: #e5dcd7;
}
.container {
width: 320px;
margin: 0 auto;
}
#chat {
width: 100%;
display: flex;
flex-direction: column;
padding: 20px 0 0 0;
}
.msg {
padding: 10px;
margin-bottom: 10px;
max-width: 250px;
width: fit-content;
border: 1px solid #666;
border-radius: 12px;
}
.bot {
background-color: #fff;
color: #666;
align-self: flex-start;
}
.user {
background-color: #4a9ba9;
color: #fff;
align-self: flex-end;
}
input {
width: 100%;
padding: 8px;
border: 1px solid #666;
border-radius: 12px;
font-size: 16px;
}
input {
outline: none;
}
</style>
Ak otvoríte súbor index.html teraz, už uvidíte niečo čo sa na
chatbota už začína podobať.
Keďže ale potrebujeme, aby nám chatbot
aj odpovedal na naše správy, budeme potrebovať ešte jednu
technológiu, tou bude "JavaScript".
Nasledujúci kód vložíme na koniec
"body" elementu. Teda hneď pred uzatvárací tag
</body>
:
<script>
document
.getElementById("myForm")
.addEventListener("submit", function (e) {
e.preventDefault();
var question = document.getElementById("myInput").value;
showMessage("user", question);
createAnswer(question);
document.getElementById("myInput").value = "";
});
function createAnswer(q) {
var answer = "";
if (q == "Ahoj") {
answer = "Ahoj";
} else if (q == "Ako sa máš?") {
answer = "Super";
}
// sem vlož svoju odpoveď
else {
// táto odpoveď sa zobrazí ak bot nevie reagovať:
answer = "Je mi ľúto, ale na takéto otázky nesmiem reagovať.";
}
showMessage("bot", answer);
}
function showMessage(who, text) {
document.getElementById("chat").innerHTML +=
"<div class='msg " + who + "'> " + text + "</div> ";
}
</script>
Ak si teraz znovu načítate vašu stranku, chatbot už bude
fungovať.
Keď napísete „Ahoj“ chatbot vám slušne odzdraví. Ak sa ho
opýtate "Ako sa máš?" rovnako dokáže reagovať. Na akúkoľvek inú
otázku vám však len tajomne odpíše, že o téme nesmie hovoriť.
Skôr ale než ukážem ako chatbota naučíme nové odpovede, krátko
vysvetlím, čo vlastne ten vložený script robí.
Ak chceme chatbota naučiť nové odpovede, urobíme to tak, že
tieto doplníme do funkcie
"createAnswer".
Teraz naučme "Aničku"
reagovať na otázku koľko máš rokov. Do kódu hneď pod poznámku
"//sem vlož svoju odpoveď" vložíme nasledujúci kód:
else if (q == "Koľko máš rokov?") {
answer = "Dámam sa takéto otázky nekladú.";
}
Každú daľšiu odpoveď doplníme rovnakým spôsobom.
Teraz si
už môžete vymyslieť vlastné otázky a odpovede a tak chatbota
naučiť, čo len budete chcieť.
Áno, takýto chatbot je veľmi jednoduchý a má veľa obmedzení. Mojim cieľom však nebolo naprogramovať nejakú umelú inteligenciu. Chcel som len ukázať, že chatbot je po stránke frontendu (tej časti programu, ktorú vidíme na displeji) relatívne jednoduchý program.
Ak sa vám nechce chatbota skladať podľa uvedeného postupu,
prikladám aj link kde si ho možete stiahnuť.
chatbot-anicka.zip
Chatbota si tiež môžete vyskúšať na tejto stránke Chatbot Anna.
Viem, že nie všade sa dá chatbot zmysluplne aplikovať. Pred časom som ale vytvoril jednoduchú aplikáciu, ktorá ako chatbot môže dávať zmysel.
Má dnes na Slovensku zmysel hlasový asistent? Pre koho je toto zariadenie určené a ako ho vlastne využiť? Práve týmto témam sa venuje tento článok.
©2023 | Hurtis.sk