JairoDanielMT's picture
Upload src/api/app.py with huggingface_hub
704a5f8 verified
Raw
History Blame Contribute Delete
1.93 kB
from fastapi import FastAPI, Query
from pydantic import BaseModel
from typing import List, Optional
from src.ontology.matcher import ConceptMatcher
from src.parser.parser import Parser
from src.enrichment.enricher import Enricher
from src.prompt_builder.builder import PromptBuilder
from src.embeddings.engine import EmbeddingEngine
from src.ontology.models import PromptIR
from src.knowledge.engine import KnowledgeEngine
from src.runtime.onnx_runtime import ONNXEmbeddingEngine
app = FastAPI(title="Prompt Compiler API v3.3")
# Initialize components
ONTOLOGY_DIR = "data/ontology"
INDEX_PATH = "data/faiss_indices_onnx"
KNOWLEDGE_DB = "data/knowledge/build/knowledge.db"
matcher = ConceptMatcher(ONTOLOGY_DIR)
knowledge_engine = KnowledgeEngine(KNOWLEDGE_DB)
embedding_engine = ONNXEmbeddingEngine(index_dir=INDEX_PATH)
embedding_engine.load_index()
class CompileRequest(BaseModel):
text: str
safe_mode: bool = True
semantic: bool = True
profile: str = "generic"
language: str = "es" # Default to 'es' to enable the Always-English translator
class CompileResponse(BaseModel):
ir: PromptIR
prompt: dict
@app.post("/compile", response_model=CompileResponse)
async def compile_prompt(request: CompileRequest):
# Select parser based on semantic flag and language
# We create a new parser instance or use a cached one to handle the translation state
current_parser = Parser(matcher, embedding_engine=embedding_engine, language=request.language)
enricher = Enricher(matcher, knowledge_engine=knowledge_engine)
builder = PromptBuilder(profile_name=request.profile)
ir = current_parser.parse(request.text, safe_mode=request.safe_mode)
ir = enricher.enrich(ir)
prompt = builder.build(ir)
return CompileResponse(ir=ir, prompt=prompt)
@app.get("/health")
async def health():
return {"status": "ok"}