Agent SkillsOpenDCAI/DataFlow-WebUI › format-str-prompted-generator

format-str-prompted-generator

GitHub

提供FormatStrPromptedGenerator算子的参考文档,说明如何将DataFrame多列组合为提示词模板并调用LLM生成内容,涵盖构造函数、参数限制及运行示例。

skills/canonical/core_text/generate/format-str-prompted-generator/SKILL.md OpenDCAI/DataFlow-WebUI

Trigger Scenarios

需要参考FormatStrPromptedGenerator的API用法 询问如何将数据列映射到LLM提示词模板 排查提示词构建或算子初始化错误

Install

npx skills add OpenDCAI/DataFlow-WebUI --skill format-str-prompted-generator -g -y
More Options

Non-standard path

npx skills add https://github.com/OpenDCAI/DataFlow-WebUI/tree/main/skills/canonical/core_text/generate/format-str-prompted-generator -g -y

Use without installing

npx skills use OpenDCAI/DataFlow-WebUI@format-str-prompted-generator

指定 Agent (Claude Code)

npx skills add OpenDCAI/DataFlow-WebUI --skill format-str-prompted-generator -a claude-code -g -y

安装 repo 全部 skill

npx skills add OpenDCAI/DataFlow-WebUI --all -g -y

预览 repo 内 skill

npx skills add OpenDCAI/DataFlow-WebUI --list

SKILL.md

Frontmatter
{
    "name": "format-str-prompted-generator",
    "description": "Reference documentation for the FormatStrPromptedGenerator operator. Covers the constructor, prompt template restrictions, placeholder-to-column mapping, actual prompt-building logic, and runnable example usage.\nUse when: one generation task needs multiple dataframe columns combined into a single prompt through a template."
}

FormatStrPromptedGenerator Operator Reference

FormatStrPromptedGenerator is DataFlow's multi-field template-based LLM generation operator. It maps multiple dataframe columns into template placeholders, builds one prompt per row, calls the LLM, writes the result into output_key, persists the dataframe, and returns the output_key string.

1. Imports

from dataflow.operators.core_text import FormatStrPromptedGenerator
from dataflow.prompts.core_text import FormatStrPrompt

2. Constructor

FormatStrPromptedGenerator(
    llm_serving,
    system_prompt="You are a helpful agent.",
    prompt_template=FormatStrPrompt(f_str_template="..."),
    json_schema=None,
)
Parameter Required Default Description
llm_serving Yes None LLM service object implementing generate_from_input(...)
system_prompt No "You are a helpful agent." System prompt passed to the serving layer
prompt_template Yes in practice FormatStrPrompt Must be an instantiated FormatStrPrompt(...) or a DIYPromptABC subclass instance
json_schema No None Optional schema forwarded to generate_from_input(...)

Important prompt_template Notes

  1. The source code default is FormatStrPrompt, which is the class object, not an instance. Because of @prompt_restrict, omitting prompt_template entirely can raise TypeError at construction time.
  2. Passing prompt_template=None is also invalid here. Unlike BenchAnswerGenerator, this operator explicitly raises:
ValueError("prompt_template cannot be None")
  1. The practical safe pattern is to always pass an instantiated template:
FormatStrPrompt(
    f_str_template="Title: {title}\n\nBody: {body}\n\nSummarize this article."
)

Constructing FormatStrPrompt

FormatStrPrompt(
    f_str_template="{title}\n\n{body}",
    on_missing="raise",
)

3. run() Signature

op.run(
    storage=self.storage.step(),
    output_key="generated_content",
    title="title_col",
    body="body_col",
)
# returns: output_key
Parameter Required Default Description
storage Yes None Current operator-step storage object
output_key No "generated_content" Output column to write
**input_keys Yes None Mapping from template placeholder name to dataframe column name

Placeholder Mapping Rule

In run(...), each kwarg uses this convention:

  • kwarg name = placeholder name inside f_str_template
  • kwarg value = dataframe column name to read from

Example:

prompt_template = FormatStrPrompt(
    f_str_template="Title: {title}\n\nBody: {body}\n\nSummarize this article."
)

generator.run(
    storage=self.storage.step(),
    output_key="summary",
    title="headline_col",
    body="article_body_col",
)

This means:

  • {title} is replaced with row["headline_col"]
  • {body} is replaced with row["article_body_col"]

4. Actual Execution Logic

The current implementation behaves as follows:

  1. Read the dataframe from storage.
  2. Collect need_fields = set(input_keys.keys()).
  3. For each row, build:
key_dict = {key: row[input_keys[key]] for key in need_fields}
  1. Call:
prompt_text = prompt_template.build_prompt(need_fields, **key_dict)
  1. Append all row prompts into llm_inputs.
  2. Call:
llm_serving.generate_from_input(
    user_inputs=llm_inputs,
    system_prompt=self.system_prompt,
    json_schema=self.json_schema,
)
  1. Write generated outputs into dataframe[output_key].
  2. Persist via storage.write(dataframe).
  3. Return output_key.

5. Important Rules

  1. Always pass an instantiated FormatStrPrompt(...) or a compatible DIY prompt instance.
  2. Do not omit prompt_template, do not pass the class object, and do not pass None.
  3. Every value in **input_keys must be an existing dataframe column name.
  4. The operator does not validate template placeholders against the template string itself. If you forget to map a placeholder that appears in f_str_template, that placeholder can remain unreplaced in the final prompt.
  5. If you provide a placeholder name in **input_keys that is not used in the template, the extra value is simply unused by string replacement.
  6. The operator adds or overwrites output_key, and does not filter rows.
  7. The return value is the bare output_key string, not a list.

6. Typical Usage

from dataflow.operators.core_text import FormatStrPromptedGenerator
from dataflow.prompts.core_text import FormatStrPrompt

prompt_template = FormatStrPrompt(
    f_str_template="Title: {title}\n\nBody: {body}\n\nPlease write a concise summary."
)

generator = FormatStrPromptedGenerator(
    llm_serving=self.llm_serving,
    system_prompt="You are a professional editor. Write concise, informative summaries.",
    prompt_template=prompt_template,
)

generator.run(
    storage=self.storage.step(),
    output_key="summary",
    title="title",
    body="body",
)

Version History

  • 2e95d40 Current 2026-08-27 09:04

Same Skill Collection

skills/canonical/core_text/eval/bench-dataset-evaluator-question/SKILL.md
skills/canonical/core_text/eval/bench-dataset-evaluator/SKILL.md
skills/canonical/core_text/eval/prompted-evaluator/SKILL.md
skills/canonical/core_text/eval/text2qa-sample-evaluator/SKILL.md
skills/canonical/core_text/eval/unified-bench-dataset-evaluator/SKILL.md
skills/canonical/core_text/filter/general-filter/SKILL.md
skills/canonical/core_text/filter/kcentergreedy-filter/SKILL.md
skills/canonical/core_text/filter/prompted-filter/SKILL.md
skills/canonical/core_text/generate/bench-answer-generator/SKILL.md
skills/canonical/core_text/generate/chunked-prompted-generator/SKILL.md
skills/canonical/core_text/generate/embedding-generator/SKILL.md
skills/canonical/core_text/generate/prompted-generator/SKILL.md
skills/canonical/core_text/generate/retrieval-generator/SKILL.md
skills/canonical/core_text/generate/text2multihopqa-generator/SKILL.md
skills/canonical/core_text/refine/pandas-operator/SKILL.md
skills/canonical/core_text/refine/prompted-refiner/SKILL.md
skills/canonical/core_text/SKILL.md
skills/canonical/dataflow-dev/SKILL.md
skills/canonical/dataflow-operator-builder/SKILL.md
skills/canonical/generating-dataflow-pipeline/SKILL.md
skills/canonical/prompt-template-builder/SKILL.md
skills/canonical/core_text/generate/random-domain-knowledge-row-generator/SKILL.md

Metadata

Files
0
Version
2e95d40
Hash
27d94bb3
Indexed
2026-08-27 09:04

Accueil - Wiki
Copyright © 2011-2026 iteam. Current version is 2.155.2. UTC+08:00, 2026-08-27 15:06
浙ICP备14020137号-1 $Carte des visiteurs$