blob: 84563bb5b4c08af5860fe8b269b60443e4301611 (
plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
|
import os
from typing import Any, Generator, List
import ollama
from loguru import logger as log
from rag.message import Message
from rag.retriever.vector import Document
from .abstract import AbstractGenerator
class Ollama(metaclass=AbstractGenerator):
def __init__(self) -> None:
self.model = os.environ["GENERATOR_MODEL"]
log.debug(f"Using {self.model} for generator...")
def generate(
self, messages: List[Message], documents: List[Document]
) -> Generator[Any, Any, Any]:
log.debug("Generating answer with ollama...")
messages = [m.as_dict() for m in messages]
for chunk in ollama.chat(model=self.model, messages=messages, stream=True):
yield chunk["message"]["content"]
|