Spaces:
Build error
Build error
| import opik | |
| from fastapi import FastAPI, HTTPException | |
| from loguru import logger | |
| from opik import opik_context | |
| from pydantic import BaseModel | |
| from langchain.schema import AIMessage, HumanMessage, SystemMessage | |
| from llm_engineering import settings | |
| from llm_engineering.application.rag.retriever import ContextRetriever | |
| from llm_engineering.application.utils import misc | |
| from llm_engineering.domain.embedded_chunks import EmbeddedChunk | |
| from llm_engineering.infrastructure.opik_utils import configure_opik | |
| from llm_engineering.model.inference import InferenceExecutor, LLMInferenceOLLAMA | |
| configure_opik() | |
| app = FastAPI() | |
| class QueryRequest(BaseModel): | |
| query: str | |
| class QueryResponse(BaseModel): | |
| answer: str | |
| def call_llm_service(query: HumanMessage, history: list, context: str | None = None) -> str: | |
| llm = LLMInferenceOLLAMA(model_name=settings.LLAMA_MODEL_ID) | |
| answer = InferenceExecutor(llm, query, context).execute() | |
| return answer | |
| def rag(query, history: list) -> str: | |
| retriever = ContextRetriever(mock=False) | |
| if len(history) == 0: | |
| content = query.content | |
| else: | |
| content = query.content + history[-1].content | |
| documents = retriever.search(content, k=3) | |
| context = EmbeddedChunk.to_context(documents) | |
| answer = call_llm_service(query, history , context) | |
| #opik_context.update_current_trace( | |
| # tags=["rag"], | |
| # metadata={ | |
| # "model_id": settings.HF_MODEL_ID, | |
| # "embedding_model_id": settings.TEXT_EMBEDDING_MODEL_ID, | |
| # "temperature": settings.TEMPERATURE_INFERENCE, | |
| # "query_tokens": misc.compute_num_tokens(query), | |
| # "context_tokens": misc.compute_num_tokens(context), | |
| # "answer_tokens": misc.compute_num_tokens(answer), | |
| # }, | |
| #) | |
| # | |
| return answer | |
| async def rag_endpoint(request: QueryRequest): | |
| try: | |
| answer = rag(query=request.query) | |
| return {"answer": answer} | |
| except Exception as e: | |
| print(e) | |
| raise HTTPException(status_code=500, detail=str(e)) from e | |