Sam commited on
Commit
6090b73
·
verified ·
1 Parent(s): 27ebad9

Create yp.prompt_engine

Browse files
aduc_framework/engineers/yp.prompt_engine ADDED
@@ -0,0 +1,43 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ # aduc_framework/engineers/prompt_engine.py
2
+ #
3
+ # Copyright (C) August 4, 2025 Carlos Rodrigues dos Santos
4
+ #
5
+ # Versão 1.0.0 (Model-Agnostic Prompt Translator)
6
+
7
+ import logging
8
+ from pathlib import Path
9
+ from typing import Dict, Any
10
+
11
+ logger = logging.getLogger(__name__)
12
+
13
+ class PromptEngine:
14
+ """
15
+ O PromptEngine atua como o tradutor entre a lógica de tarefa agnóstica
16
+ do Composer e o formato de prompt específico exigido por um LLM.
17
+ """
18
+ def __init__(self, model_map_name: str):
19
+ self.model_map_name = model_map_name
20
+ self.model_template = self._load_model_template(model_map_name)
21
+ logger.info(f"PromptEngine inicializado com o mapa de modelo '{model_map_name}'.")
22
+
23
+ def _load_model_template(self, map_name: str) -> str:
24
+ """Carrega o template principal de um mapa de modelo."""
25
+ map_path = Path(__file__).resolve().parent.parent / "prompts" / "model_maps" / map_name / "main_template.txt"
26
+ if not map_path.is_file():
27
+ raise FileNotFoundError(f"Template principal do modelo não encontrado: {map_path}")
28
+ with open(map_path, 'r', encoding='utf-8') as f:
29
+ return f.read()
30
+
31
+ def translate(self, generic_prompt_content: str) -> str:
32
+ """
33
+ Envolve o conteúdo do prompt genérico com o template específico do modelo.
34
+ """
35
+ # A lógica de tradução pode ser mais complexa no futuro,
36
+ # como substituir placeholders específicos do modelo.
37
+ final_prompt = self.model_template.format(generic_prompt_content=generic_prompt_content)
38
+ logger.debug(f"Prompt traduzido para o formato {self.model_map_name}.")
39
+ return final_prompt
40
+
41
+ # Instância Singleton
42
+ # O nome do mapa pode vir do config.yaml para ser dinâmico
43
+ prompt_engine_singleton = PromptEngine(model_map_name="llama_3_2_vision")