Spaces:
Build error
Build error
import opik | |
from langchain_ollama import ChatOllama | |
from loguru import logger | |
from llm_engineering.application import utils | |
from llm_engineering.domain.documents import UserDocument | |
from llm_engineering.domain.queries import Query | |
from llm_engineering.settings import settings | |
from .base import RAGStep | |
from .prompt_templates import SelfQueryTemplate | |
class SelfQuery(RAGStep): | |
def generate(self, query: Query) -> Query: | |
if self._mock: | |
return query | |
prompt = SelfQueryTemplate().create_template() | |
model = ChatOllama(model=settings.LLAMA_MODEL_ID, temperature=0) | |
chain = prompt | model | |
response = chain.invoke({"question": query}) | |
user_full_name = response.content.strip("\n ") | |
if user_full_name == "none": | |
return query | |
first_name, last_name = utils.split_user_full_name(user_full_name) | |
user = UserDocument.get_or_create(first_name=first_name, last_name=last_name) | |
query.author_id = user.id | |
query.author_full_name = user.full_name | |
return query | |
if __name__ == "__main__": | |
query = Query.from_str("I am Paul Iusztin. Write an article about the best types of advanced RAG methods.") | |
self_query = SelfQuery() | |
query = self_query.generate(query) | |
logger.info(f"Extracted author_id: {query.author_id}") | |
logger.info(f"Extracted author_full_name: {query.author_full_name}") | |