WIP: feat(chatops/takumi): give it ollama powers #149

Draft
rlahfa wants to merge 1 commit from takumi-can-do-ollama into main
2 changed files with 16 additions and 1 deletions

View file

@ -47,7 +47,9 @@ let
ps = python3Pkgs.makePythonPath [
ircrobots
tortoise-orm
python3Pkgs.ollama
python3Pkgs.aiohttp
python3Pkgs.loadcredential
];
in
{

View file

@ -1,6 +1,11 @@
#!/usr/bin/env python3
import asyncio
from ircrobots.interface import IBot
from ollama import Client as OllamaClient
from loadcredential import Credentials
import base64
from irctokens.line import build, Line
from ircrobots.bot import Bot as BaseBot
from ircrobots.server import Server as BaseServer
@ -56,6 +61,10 @@ def bridge_stripped(possible_command: str, origin_nick: str) -> str | None:
return possible_command if possible_command.startswith(TRIGGER) else None
class Server(BaseServer):
def __init__(self, bot: IBot, name: str, llm_client: OllamaClient):
super().__init__(bot, name)
self.llm_client = llm_client
def extract_valid_command(self, line: Line) -> str | None:
me = self.nickname_lower
if line.command == "PRIVMSG" and \
@ -106,7 +115,11 @@ class Server(BaseServer):
class Bot(BaseBot):
def create_server(self, name: str):
return Server(self, name)
credentials = Credentials()
base64_encoded_password = base64.b64encode(credentials["OLLAMA_PROXY_PASSWORD"])
token = f"takumi:{base64_encoded_password}"
llm_client = OllamaClient(host='https://ollama01.beta.dgnum.eu', headers={'Authorization': f'Basic {token}'})
return Server(self, name, llm_client)
async def main():
bot = Bot()