mirror of https://github.com/razor-ai/soup.git
48 lines
1.5 KiB
Python
48 lines
1.5 KiB
Python
"""Question-answer from context template for synthetic data generation."""
|
|
|
|
SYSTEM_PROMPT = (
|
|
"You are a QA training data generator. Generate question-answer pairs "
|
|
"that are grounded in provided context documents."
|
|
)
|
|
|
|
|
|
def build_prompt(
|
|
count: int,
|
|
fmt: str,
|
|
format_spec: str,
|
|
context: str = "",
|
|
) -> str:
|
|
"""Build the generation prompt for QA pairs.
|
|
|
|
Args:
|
|
count: Number of examples to generate.
|
|
fmt: Output format (alpaca/sharegpt/chatml).
|
|
format_spec: Format specification string.
|
|
context: Source document text to generate QA from.
|
|
|
|
Returns:
|
|
Complete generation prompt string.
|
|
"""
|
|
context_section = ""
|
|
if context:
|
|
# Cap context to prevent prompt overflow
|
|
truncated = context[:8000]
|
|
context_section = (
|
|
f"\n\nSource document to generate questions from:\n"
|
|
f"---\n{truncated}\n---\n\n"
|
|
f"Generate questions and answers that are grounded in this document. "
|
|
f"Answers must be derivable from the text."
|
|
)
|
|
else:
|
|
context_section = (
|
|
"\n\nGenerate diverse questions and detailed answers on "
|
|
"general knowledge topics."
|
|
)
|
|
|
|
return (
|
|
f"You are a training data generator. Generate exactly {count} diverse, "
|
|
f"high-quality question-answer pairs.{context_section}\n\n"
|
|
f"Format: {format_spec}\n\n"
|
|
f"Return ONLY a JSON array of {count} examples. No markdown, no explanation."
|
|
)
|