Spaces:
Building
Building
File size: 3,487 Bytes
67cc066 ec80e4b 67cc066 2167be3 67cc066 9c2fd74 2167be3 67cc066 037f971 ec80e4b 037f971 2167be3 037f971 ec80e4b 037f971 ec80e4b 037f971 ec80e4b 037f971 2167be3 037f971 2167be3 037f971 2167be3 037f971 2167be3 037f971 ec80e4b 037f971 2167be3 037f971 2167be3 037f971 2167be3 037f971 2167be3 037f971 2167be3 9c2fd74 2167be3 |
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 |
"""
Flare β Prompt Builder (v4-fix Β· detection_prompt + examples)
==============================================================
"""
from typing import List, Dict
from datetime import datetime
def log(msg: str) -> None:
print(f"[{datetime.now().strftime('%H:%M:%S')}] {msg}", flush=True)
# βββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ
# INTENT PROMPT
# βββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ
def build_intent_prompt(general_prompt: str,
conversation: List[Dict[str, str]],
user_input: str,
intents: List[Dict]) -> str:
# === INTENT INDEX ===
lines = ["### INTENT INDEX ###"]
for it in intents:
det = it.get("detection_prompt", "").strip()
det_part = f" β’ detection_prompt β β{det}β" if det else ""
exs = " | ".join(it.get("examples", []))
ex_part = f" β’ examples β {exs}" if exs else ""
newline_between = "\n" if det_part and ex_part else ""
lines.append(f"{it['name']}:{det_part}{newline_between}{ex_part}")
intent_index = "\n".join(lines)
# === HISTORY ===
history_block = "\n".join(
f"{m['role'].upper()}: {m['content']}" for m in conversation[-10:]
)
prompt = (
f"{general_prompt}\n\n"
f"{intent_index}\n\n"
f"Conversation so far:\n{history_block}\n\n"
f"USER: {user_input.strip()}"
)
log("β
Intent prompt built (index with detection_prompt)")
return prompt
# βββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ
# PARAMETER PROMPT (deΔiΕmedi)
# βββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ
_FMT = (
"Return exactly ONE line in the format:\n"
"#PARAMETERS:{"
"\"extracted\":[{\"name\":\"<param>\",\"value\":\"<val>\"},...],"
"\"missing\":[\"<param>\",...]}"
)
def build_parameter_prompt(intent_cfg: Dict,
missing_params: List[str],
user_input: str,
conversation: List[Dict[str, str]]) -> str:
parts: List[str] = [
"You will extract ONLY the parameters listed below.",
"If a parameter cannot be found OR fails validation, keep it in the "
"\"missing\" list. Never guess values."
]
for p in intent_cfg["parameters"]:
if p["name"] in missing_params:
parts.append(f"* {p['name']}: {p['extraction_prompt']}")
parts.append(_FMT)
history_block = "\n".join(
f"{m['role'].upper()}: {m['content']}" for m in conversation[-10:]
)
prompt = (
"\n".join(parts) +
"\n\nConversation so far:\n" + history_block +
"\n\nUSER: " + user_input.strip()
)
log("β
Parameter prompt built")
return prompt
|