| name | random-domain-knowledge-row-generator |
| description | Reference documentation for the RandomDomainKnowledgeRowGenerator operator.
[Purpose] Calls an LLM repeatedly with the same domain-generation prompt and writes the generated results into one column of an existing DataFrame.
[When to use] Use it when you already have a seed DataFrame with the exact target row count and want to fill one output column with domain-specific generated content. If you need to build prompts from existing row fields, use PromptedGenerator or FormatStrPromptedGenerator instead. |
| trigger_keywords | ["RandomDomainKnowledgeRowGenerator","random-domain-knowledge","domain generation","synthetic sft rows"] |
| version | 1.0.0 |
RandomDomainKnowledgeRowGenerator Operator Reference
RandomDomainKnowledgeRowGenerator does not read any input column values, but it still reads the input DataFrame itself. The operator builds generation_num prompts from domain_keys, calls llm_serving.generate_from_input(...), and assigns the returned list into dataframe[output_key].
See examples/good.md for a runnable example and examples/bad.md for common failure cases.
1. Import
from dataflow.operators.core_text import RandomDomainKnowledgeRowGenerator
from dataflow.prompts.general_text import SFTFromScratchGeneratorPrompt
2. Constructor
RandomDomainKnowledgeRowGenerator(
llm_serving=llm,
generation_num=200,
domain_keys="machine learning, deep learning, neural networks",
prompt_template=SFTFromScratchGeneratorPrompt(),
)
| Parameter | Required | Default | Description |
|---|
llm_serving | Yes | None | LLM serving object. It must implement generate_from_input(user_inputs, ...). Examples in dataflow.serving include APILLMServing_request, LiteLLMServing, and LocalModelLLMServing_vllm. |
generation_num | Yes | None | Number of prompts to build and number of outputs expected from the LLM call. |
domain_keys | Yes | None | Domain description passed directly into SFTFromScratchGeneratorPrompt.build_prompt(domain_keys). The source annotation is str, so use a string such as "finance, accounting, tax". |
prompt_template | No in signature, but effectively required | None | Prompt object used for every generation call. In practice you must pass an instantiated SFTFromScratchGeneratorPrompt() or another prompt allowed by @prompt_restrict(...). Leaving it as None will fail before generation starts. |
Important Constructor Notes
prompt_template=None is not a safe fallback. The code calls self.prompt_template.build_prompt(self.domain_keys) directly, so None raises AttributeError.
- The default prompt class is
SFTFromScratchGeneratorPrompt, and its build_prompt() method expects domain_keys: str.
- The prompt asks the LLM to output a single-line JSON object containing fields such as
instruction, input, output, and domain.
3. run() Signature
output_key = op.run(
storage=self.storage.step(),
output_key="generated_content",
)
| Parameter | Required | Default | Description |
|---|
storage | Yes | None | DataFlowStorage / FileStorage step object. The operator reads a DataFrame from here and writes the updated DataFrame back. |
output_key | No | "generated_content" | Column name used to store generated results. |
Return Value
The method returns the string output_key.
4. Actual Runtime Logic
The source code behavior is:
- Read the current DataFrame from
storage.read("dataframe").
- Ignore all column values in that DataFrame.
- Build
generation_num prompts by repeatedly calling prompt_template.build_prompt(domain_keys).
- Call
llm_serving.generate_from_input(llm_inputs).
- Assign the returned list to
dataframe[output_key].
- Write the updated DataFrame back to storage and return
output_key.
5. Critical Constraints
len(dataframe) should match generation_num. Otherwise dataframe[output_key] = generated_outputs can fail with a pandas length-mismatch error.
- An empty seed file plus
generation_num > 0 is not safe for the current implementation. The operator still writes back into the existing DataFrame instead of creating rows.
6. Usage Guidance
Use this operator when:
- You want one generated sample per existing seed row.
- The row contents are irrelevant, and you only need the row count plus an output column.
- You want the default
SFTFromScratchGeneratorPrompt behavior for domain-focused SFT sample generation.
Do not use this operator when:
- You need prompts built from existing columns.
- You expect the operator to create rows from an empty DataFrame.
- You need per-row domain variation based on different input fields.