forked from DGNum/infrastructure
feat(chatops/takumi): give it ollama powers
Those are not superpowers and should be used sparringly and responsibly. LLMs are not bulletproof. They are mostly bullshit generators. But even a bullshit generator has usefulness. Signed-off-by: Ryan Lahfa <ryan@dgnum.eu>
This commit is contained in:
parent
f20353b727
commit
f40323bfc0
2 changed files with 16 additions and 1 deletions
|
@ -47,7 +47,9 @@ let
|
|||
ps = python3Pkgs.makePythonPath [
|
||||
ircrobots
|
||||
tortoise-orm
|
||||
python3Pkgs.ollama
|
||||
python3Pkgs.aiohttp
|
||||
python3Pkgs.loadcredential
|
||||
];
|
||||
in
|
||||
{
|
||||
|
|
|
@ -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()
|
||||
|
|
Loading…
Reference in a new issue