Kaip sukurti asmeninį AI chatbot’ą su Ollama

Kas yra Ollama ir kodėl verta apie ją kalbėti

Jei sekate AI pasaulį bent iš tolo, turbūt pastebėjote, kad pastaraisiais metais kalbos modeliai tapo prieinami ne tik didelėms korporacijoms. Šiandien bet kas su normaliu kompiuteriu gali paleisti savo lokalų AI – be mokesčių, be duomenų siuntimo į debesis, be priklausomybės nuo OpenAI serverių. Ir čia į sceną įžengia Ollama.

Ollama – tai atviro kodo įrankis, leidžiantis paleisti didelius kalbos modelius (LLM) tiesiai ant savo mašinos. Viskas veikia lokaliai: jūsų pokalbiai niekur nekeliauja, modelis dirba jūsų procesoriuje arba vaizdo plokštėje, o interneto ryšys reikalingas tik pradiniam atsisiuntimui. Tai reiškia, kad galite kalbėtis su AI net ir be interneto, o jūsų duomenys lieka tik pas jus.

Kodėl tai įdomu technologijų entuziastams? Nes Ollama suteikia tą patį jausmą, kurį kažkada davė pirmasis Linux diegimas ant savo kompiuterio – jūs kontroliuojate viską. Galite rinktis modelį, konfigūruoti jo elgesį, integruoti į savo projektus per API. Ir visa tai be jokio mėnesinio mokesčio.

Ko jums reikės prieš pradedant

Prieš šokant į diegimą, verta žinoti, su kuo susiduriate techniniu požiūriu. Ollama nėra kažkoks lengvas įrankėlis – kalbos modeliai yra dideli ir reikalauja resursų. Štai ką reikėtų turėti:

Minimalūs reikalavimai:

  • 8 GB RAM (bet rimtai – su 8 GB dirbsite su mažesniais modeliais ir kantrybė bus išbandyta)
  • 16 GB RAM – jau kur kas komfortabiliau
  • SSD diskas, nes modeliai gali sverti nuo 4 iki 40+ GB
  • macOS, Linux arba Windows (su WSL2)

Rekomenduojama:

  • NVIDIA GPU su CUDA palaikymu arba Apple Silicon (M1/M2/M3) – tai iš esmės keičia greitį
  • 32 GB RAM jei norite žaisti su didesniais modeliais
  • Bent 50 GB laisvos vietos diske

Jei turite Apple Silicon Mac – jums pasisekė. Ollama ant M serijos procesorių veikia tiesiog puikiai, nes šie procesoriai turi unifikuotą atmintį, kurią gali naudoti ir GPU dalis. Praktiškai tai reiškia, kad net 13 colių MacBook Pro su M2 gali paleisti gana solidžius modelius.

Windows vartotojams situacija taip pat neblogai, ypač jei turite NVIDIA GPU. AMD GPU palaikymas egzistuoja, bet kartais reikia papildomo konfigūravimo.

Diegimas ir pirmasis paleidimas

Diegimas yra stebėtinai paprastas – tai vienas iš dalykų, už kuriuos Ollama kūrėjai nusipelno pagyrimo. Eikite į ollama.com ir atsisiųskite diegiklį savo operacinei sistemai.

macOS ir Windows: Tiesiog atsisiųskite .dmg arba .exe failą, įdiekite kaip bet kurią kitą programą. Viskas.

Linux: Viena komanda terminale:

curl -fsSL https://ollama.com/install.sh | sh

Po diegimo Ollama paleiskite terminalą ir išbandykite pirmąjį modelį. Rekomenduoju pradėti nuo Llama 3.2 – tai Meta sukurtas modelis, kuris puikiai balansą tarp kokybės ir resursų naudojimo:

ollama run llama3.2

Pirmą kartą ši komanda atsisiųs modelį (apie 2 GB 3B versija), o po to iš karto atidaro interaktyvų pokalbį terminale. Galite tiesiog rašyti klausimus ir gauti atsakymus. Jei viskas veikia – sveikinu, jūs ką tik paleidote savo pirmąjį lokalų AI.

Keli naudingi komandų pavyzdžiai:

# Pamatyti visus atsisiųstus modelius
ollama list

# Ištrinti modelį
ollama rm llama3.2

# Pamatyti modelio informaciją
ollama show llama3.2

# Paleisti modelį kaip serverį (veikia fone)
ollama serve

Modelių pasaulis – ką rinktis ir kodėl

Čia prasideda tikras įdomumas. Ollama palaiko dešimtis skirtingų modelių, ir kiekvienas turi savo stipriąsias puses. Pasirinkimas priklauso nuo to, ką norite daryti ir kiek resursų turite.

Llama 3.2 (3B arba 1B) – puikus pradžiamokslis. Greitas, neblogas lietuvių kalbos supratimas (nors ne tobulas), tinka bendriems pokalbiams ir paprastoms užduotims. 3B versija sveria apie 2 GB.

Llama 3.1 (8B) – žymiai galingesnis, bet jau reikia solidesnio kompiuterio. Sveria apie 4.7 GB. Jei turite 16 GB RAM – tai geras pasirinkimas kasdieniam naudojimui.

Mistral 7B – prancūzų startupo sukurtas modelis, kuris dažnai lenkia kur kas didesnius modelius. Ypač geras kodo generavimui ir loginiam mąstymui. Labai rekomenduoju išbandyti.

CodeLlama – jei jus domina AI pagalba rašant kodą, šis modelis specialiai tam pritaikytas. Palaiko daugybę programavimo kalbų, gali aiškinti kodą, rasti klaidas, siūlyti optimizacijas.

Gemma 2 (2B arba 9B) – Google sukurtas modelis. 2B versija veikia net ant silpnesnių mašinų, o kokybė nustebina.

Phi-3 – Microsoft modelis, kuris yra tikras mažas stebuklas. Phi-3 Mini (3.8B) dažnai veikia geriau nei kur kas didesni modeliai, ypač instrukcijų vykdymo srityje.

Praktinis patarimas: nepulkite iš karto atsisiųsti didžiausio modelio. Pradėkite nuo mažesnio, išbandykite, pajuskite kaip veikia jūsų kompiuteris, ir tada spręskite ar verta eiti į didesnį. Modelius visada galima ištrinti ir atsisiųsti naujus.

Modelio personalizavimas su Modelfile

Dabar prasideda tikrai įdomus dalykas – galimybė sukurti savo asmeninį chatbot’ą su konkrečiu charakteriu, žiniomis ir elgesio taisyklėmis. Tam naudojamas Modelfile – paprastas tekstinis failas, kuriame aprašote savo modelio konfigūraciją.

Sukurkite naują failą pavadinimu Modelfile (be plėtinio) ir pradėkite:

FROM llama3.2

PARAMETER temperature 0.7
PARAMETER top_p 0.9
PARAMETER num_ctx 4096

SYSTEM """
Tu esi Tomas, patyręs lietuvių kalbos programuotojas ir technologijų konsultantas. 
Tu visada atsakai lietuvių kalba, nebent vartotojas kreipiasi kita kalba.
Tu esi draugiškas, bet konkretus – nešvaistai žodžių tuščioms frazėms.
Kai kalbi apie kodą, visada pateiki veikiančius pavyzdžius.
Tu specializuojies Python, JavaScript ir Linux administravime.
"""

Tada sukurkite modelį iš šio failo:

ollama create tomas -f Modelfile

Ir paleiskite:

ollama run tomas

Keletas svarbių parametrų, kuriuos verta žinoti:

  • temperature – kūrybiškumo lygis (0.0–1.0). Žemesnė reikšmė = labiau nuspėjami, faktiniai atsakymai. Aukštesnė = kūrybiškesni, bet kartais mažiau tikslūs. Kodo generavimui rekomenduoju 0.2–0.4, kūrybiniam rašymui – 0.7–0.9.
  • num_ctx – konteksto langas (kiek žodžių modelis „prisimena” pokalbyje). Didesnis = geriau, bet naudoja daugiau RAM.
  • top_p – dar vienas kūrybiškumo parametras, veikia kartu su temperature.

SYSTEM prompt yra pats svarbiausias elementas. Čia galite aprašyti viską: kokia asmenybė turi būti jūsų chatbot’as, kokia jo specializacija, kaip jis turėtų reaguoti į tam tikras situacijas, kokiu tonu kalbėti. Eksperimentuokite – tai labai veiksminga priemonė.

API integracija – kaip prijungti prie savo projektų

Ollama ne tik veikia per terminalą – ji taip pat paleidžia lokalų REST API serverį http://localhost:11434. Tai reiškia, kad galite integruoti savo AI į bet kokį projektą – web aplikaciją, Python skriptą, Discord botą, Telegram botą, ar ką tik norite.

Paprasčiausias Python pavyzdys:

import requests
import json

def chat_with_ollama(message, model="llama3.2"):
    url = "http://localhost:11434/api/chat"
    
    payload = {
        "model": model,
        "messages": [
            {"role": "user", "content": message}
        ],
        "stream": False
    }
    
    response = requests.post(url, json=payload)
    result = response.json()
    return result["message"]["content"]

# Naudojimas
atsakymas = chat_with_ollama("Paaiškink kas yra rekursija paprastais žodžiais")
print(atsakymas)

Jei norite pokalbių istorijos (kad modelis prisimintų ankstesnius pranešimus):

import requests

class OllamaChat:
    def __init__(self, model="llama3.2"):
        self.model = model
        self.history = []
        self.url = "http://localhost:11434/api/chat"
    
    def send(self, message):
        self.history.append({
            "role": "user",
            "content": message
        })
        
        payload = {
            "model": self.model,
            "messages": self.history,
            "stream": False
        }
        
        response = requests.post(self.url, json=payload)
        result = response.json()
        
        assistant_message = result["message"]["content"]
        self.history.append({
            "role": "assistant",
            "content": assistant_message
        })
        
        return assistant_message
    
    def reset(self):
        self.history = []

# Naudojimas
chat = OllamaChat(model="llama3.2")
print(chat.send("Labas! Mano vardas Mantas."))
print(chat.send("Ar prisimeni mano vardą?"))  # Modelis prisiminės!

Taip pat verta žinoti, kad Ollama API yra suderinama su OpenAI API formatu. Tai reiškia, kad daugelis įrankių, kurie palaiko OpenAI, gali būti lengvai perjungti į Ollama. Tiesiog nurodykite base URL kaip http://localhost:11434/v1 ir naudokite bet kokį API raktą (Ollama jo nereikalauja, bet kai kurios bibliotekos prašo).

Grafinė sąsaja – kai terminalas per daug

Terminalas yra puikus, bet ne visiems patogus. Laimei, Ollama ekosistema turi keletą puikių grafinių sąsajų, kurias galite įdiegti ir naudoti kaip normalų chatbot’ą.

Open WebUI – tai tikriausiai populiariausia ir funkcionaliausia opcija. Atrodo ir veikia kaip ChatGPT, bet viskas lokaliai. Galite:

  • Turėti kelias pokalbių istorijas
  • Perjunginėti modelius vienu paspaudimu
  • Įkelti dokumentus ir kalbėtis apie jų turinį (RAG funkcionalumas)
  • Kurti ir valdyti skirtingus „asistentus”
  • Naudoti kelių vartotojų režimą

Diegimas su Docker:

docker run -d -p 3000:8080 \
  --add-host=host.docker.internal:host-gateway \
  -v open-webui:/app/backend/data \
  --name open-webui \
  --restart always \
  ghcr.io/open-webui/open-webui:main

Po to atidarykite http://localhost:3000 naršyklėje ir mėgaukitės.

Msty – graži native aplikacija macOS ir Windows vartotojams. Greita, minimalistinė, puikiai integruojasi su Ollama. Jei nenorite Docker, tai geras pasirinkimas.

Enchanted – jei turite iPhone ar iPad, ši aplikacija leidžia prisijungti prie jūsų namų Ollama serverio ir kalbėtis su AI iš mobiliojo. Reikia tik atidaryti prieigą tinkle.

Praktinis patarimas dėl Open WebUI: jei planuojate naudoti jį reguliariai, verta sukonfigūruoti sistemą taip, kad Ollama serveris startuotų automatiškai su kompiuteriu. Linux sistemose tai paprasta su systemd, macOS – su launchd arba tiesiog įdedant į Login Items.

Kai lokalus AI tampa tikrai jūsų – keletas pažangesnių idėjų

Gerai, jūs jau turite veikiantį lokalų chatbot’ą. Kas toliau? Čia galima eiti įvairiomis kryptimis, ir kiekviena yra įdomi savaip.

RAG (Retrieval Augmented Generation) – tai galimybė „pamaitinti” modelį savo dokumentais. Įsivaizduokite: įkeliate visus savo darbo dokumentus, PDF’us, užrašus, ir tada galite klausinėti apie jų turinį. Modelis nebus apmokytas ant jūsų duomenų, bet galės juos naudoti atsakymams. Open WebUI tai palaiko out-of-the-box, o Python projekte galite naudoti LangChain arba LlamaIndex bibliotekas.

Automatizacijos – Python skriptas, kuris kiekvieną rytą generuoja jūsų dienos planą pagal kalendoriaus duomenis. Arba skriptas, kuris analizuoja jūsų kodo repozitoriją ir siūlo pagerinimus. Arba automatinis el. laiškų atsakymų generatorius. Galimybės tikrai plačios.

Namų serveris – jei turite seną kompiuterį su gera GPU, galite paversti jį Ollama serveriu ir pasiekti jį iš bet kurio namų tinklo įrenginio. Šeimos nariai galės naudotis AI be jokių mokesčių ir be duomenų nutekėjimo.

Specializuoti modeliai – Ollama palaiko ne tik teksto modelius. Yra multimodaliniai modeliai kaip LLaVA, kurie gali „matyti” nuotraukas ir atsakyti į klausimus apie jas. Tai atveria visai naują naudojimo atvejų kategoriją.

Vienas dalykas, kurį verta turėti omenyje: lokalūs modeliai nėra tokie galingi kaip GPT-4 ar Claude 3.5 Sonnet. Tai reikia priimti kaip faktą. Tačiau jie yra pakankamai geri daugeliui kasdienių užduočių, ir jų privalumai – privatumas, greitis (kai turite gerą GPU), nulinė kaina ir visapusiška kontrolė – dažnai atsveria šį trūkumą. Be to, modeliai nuolat gerėja, ir tai, kas prieš metus atrodė kaip eksperimentas, šiandien yra tikrai naudojamas įrankis.

Jei esate programuotojas, rekomenduoju išbandyti Ollama integraciją su savo IDE. Continue.dev plėtinys VSCode ir JetBrains IDE leidžia naudoti lokalų modelį kaip GitHub Copilot alternatyvą. Kodas niekur nekeliauja, o pagalba rašant – čia pat. Tai vienas iš tų atvejų, kai lokalus AI tikrai gali pakeisti mokamą sprendimą.

Galiausiai – nesibaiminkite eksperimentuoti. Modelius galima ištrinti ir atsisiųsti naujus, Modelfile’us galima keisti, konfigūracijas – derinti. Ollama yra pakankamai stabili ir paprasta, kad net ir klaidos nebūtų katastrofa. Tai vienas iš retų technologijų įrankių, kuris tikrai atitinka savo pažadą: padaro sudėtingą technologiją prieinamą kiekvienam, kam įdomu ją išbandyti.

Daugiau

Kindle Colorsoft Signature apžvalga