JairoDanielMT's picture
Upload src/cli/main.py with huggingface_hub
2de4cb1 verified
Raw
History Blame Contribute Delete
2.96 kB
import argparse
import json
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
def main():
parser = argparse.ArgumentParser(description="Prompt Compiler CLI")
parser.add_argument("text", help="Natural language description")
parser.add_argument("--ontology", default="data/ontology", help="Path to ontology directory")
parser.add_argument("--index-dir", default="data/faiss_indices", help="Path to FAISS indices directory")
parser.add_argument("--json", action="store_true", help="Output IR as JSON")
parser.add_argument("--safe", action="store_true", default=True, help="Enable safe mode")
parser.add_argument("--no-safe", action="store_false", dest="safe", help="Disable safe mode")
parser.add_argument("--semantic", action="store_true", help="Enable semantic retrieval")
parser.add_argument("--profile", default="generic", choices=["generic", "sdxl", "pony", "illustrious"], help="Prompt profile to use")
parser.add_argument("--runtime", default="pytorch", choices=["pytorch", "onnx"], help="Inference runtime to use")
parser.add_argument("--language", default="en", choices=["en", "es"], help="Input language")
args = parser.parse_args()
# Initialize components
matcher = ConceptMatcher(args.ontology)
embedding_engine = None
if args.semantic:
try:
if args.runtime == "onnx":
from src.runtime.onnx_runtime import ONNXEmbeddingEngine
embedding_engine = ONNXEmbeddingEngine(index_dir=args.index_dir + "_onnx")
else:
from src.embeddings.engine import EmbeddingEngine
embedding_engine = EmbeddingEngine(index_dir=args.index_dir)
embedding_engine.load_index()
except FileNotFoundError:
print("Warning: FAISS indices not found. Semantic retrieval disabled.")
embedding_engine = None
parser_engine = Parser(matcher, embedding_engine=embedding_engine, language=args.language)
enricher = Enricher(matcher)
builder = PromptBuilder(profile_name=args.profile)
# Run pipeline
ir = parser_engine.parse(args.text, safe_mode=args.safe)
ir = enricher.enrich(ir)
prompt_bundle = builder.build(ir)
if args.json:
output = {
"ir": ir.model_dump(),
"prompt": prompt_bundle
}
print(json.dumps(output, indent=2))
else:
print(f"\n--- Explainability Trace ---")
print(json.dumps(ir.trace, indent=2))
print(f"\n--- Positive Prompt ---")
print(prompt_bundle["positive"])
print(f"\n--- Negative Prompt ---")
print(prompt_bundle["negative"])
if __name__ == "__main__":
main()