Spaces:
Building
Building
from utils import log | |
class PromptEngine: | |
def __init__(self, service_config): | |
self.service_config = service_config | |
def build_intent_prompt(self, project_name): | |
project = self.service_config.get_project(project_name) | |
if not project: | |
raise Exception(f"Project not found: {project_name}") | |
system_prompt = self.service_config.system_prompt | |
intent_examples = [] | |
for intent in project["intents"]: | |
examples = intent.get("examples", []) | |
intent_examples.append(f"Intent: {intent['name']}\nExamples:\n" + "\n".join(f"- {ex}" for ex in examples)) | |
full_prompt = f"{system_prompt}\n\nIntent Definitions:\n" + "\n\n".join(intent_examples) | |
log("π Built intent detection prompt.") | |
return full_prompt | |
def build_parameter_prompt(self, project_name, intent_name, missing_parameters): | |
project = self.service_config.get_project(project_name) | |
if not project: | |
raise Exception(f"Project not found: {project_name}") | |
intent = next((i for i in project["intents"] if i["name"] == intent_name), None) | |
if not intent: | |
raise Exception(f"Intent not found: {intent_name}") | |
system_prompt = self.service_config.system_prompt | |
prompts = [] | |
for param in intent.get("parameters", []): | |
if param["name"] in missing_parameters: | |
prompts.append(f"Extract the value for parameter '{param['name']}': {param['extraction_prompt']}") | |
if not prompts: | |
raise Exception("No extraction prompts found for missing parameters.") | |
full_prompt = f"{system_prompt}\n\nParameter Extraction:\n" + "\n".join(prompts) | |
log("π Built parameter extraction prompt.") | |
return full_prompt | |
def build_humanization_prompt(self, project_name, intent_name): | |
project = self.service_config.get_project(project_name) | |
if not project: | |
raise Exception(f"Project not found: {project_name}") | |
intent = next((i for i in project["intents"] if i["name"] == intent_name), None) | |
if not intent: | |
raise Exception(f"Intent not found: {intent_name}") | |
system_prompt = self.service_config.system_prompt | |
humanization_instruction = intent.get("humanization_prompt", "") | |
full_prompt = f"{system_prompt}\n\nHumanization Instruction:\n{humanization_instruction}" | |
log("π Built humanization prompt.") | |
return full_prompt | |