Agent Skills
› OpenDCAI/DataFlow-WebUI
› chunked-prompted-generator
chunked-prompted-generator
GitHub处理超长文件内容的LLM生成任务,按Token分块调用模型并写入结果。适用于DataFrame含文件路径且内容超上下文窗口的场景。
Trigger Scenarios
需要处理超过LLM上下文窗口的长文本文件
基于DataFrame中的文件路径批量生成LLM输出
Install
npx skills add OpenDCAI/DataFlow-WebUI --skill chunked-prompted-generator -g -y
SKILL.md
Frontmatter
{
"name": "chunked-prompted-generator",
"description": "Reference documentation for the ChunkedPromptedGenerator operator. Covers the constructor, file-path based chunking flow, actual prompt construction, and output file writing behavior.\nUse when: the dataframe stores file paths, the file content may exceed a single LLM context window, and you want the generated results written into new text files."
}
ChunkedPromptedGenerator Operator Reference
ChunkedPromptedGenerator reads file paths from a dataframe column, loads each
file from disk, recursively splits long content into chunks, calls the LLM on
all chunks, joins the generated outputs with a separator, writes the joined
result into a new text file, and stores that output file path back into the
dataframe.
1. Import
from dataflow.operators.core_text import ChunkedPromptedGenerator
2. Constructor
ChunkedPromptedGenerator(
llm_serving=llm,
system_prompt="You are a helpful agent.",
json_schema=None,
max_chunk_len=128000,
enc=tiktoken.get_encoding("cl100k_base"),
separator="\n",
)
| Parameter | Required | Default | Description |
|---|---|---|---|
llm_serving |
Yes | None | LLM service object implementing generate_from_input(...) |
system_prompt |
No | "You are a helpful agent." |
Prepended to each chunk as plain text before the chunk content |
json_schema |
No | None |
Optional schema forwarded to generate_from_input(...) |
max_chunk_len |
No | 128000 |
Maximum token count per chunk |
enc |
No | tiktoken.get_encoding("cl100k_base") |
Encoder used for token counting through len(enc.encode(text)) |
separator |
No | "\n" |
Join separator for chunk outputs |
3. run() Signature
op.run(
storage=self.storage.step(),
input_path_key="file_path",
output_path_key="output_path",
)
# returns: output_path_key
| Parameter | Required | Default | Description |
|---|---|---|---|
storage |
Yes | None | Current operator-step storage object |
input_path_key |
Yes | None | Column containing input file paths |
output_path_key |
Yes | None | Column used to store generated output file paths |
4. Actual Execution Logic
The current implementation behaves as follows:
- Read the dataframe from
storage. - For each row, read the file content from
Path(row[input_path_key]).read_text(encoding="utf-8"). - Count tokens with
len(enc.encode(text)). - If the text exceeds
max_chunk_len, recursively split it into two halves by character position, not by sentence or token boundary. - For each chunk, build one LLM input as:
system_prompt + "\n" + chunk
- Flatten all chunks from all rows into a single global batch.
- Call:
llm_serving.generate_from_input(all_llm_inputs)
or, when json_schema is provided:
llm_serving.generate_from_input(all_llm_inputs, json_schema=json_schema)
- Regroup the responses back by original row.
- For each row, join that row's chunk results with the configured separator.
- Write the joined text into a new file whose path is derived automatically as:
row[input_path_key].split(".")[0] + "_llm_output.txt"
- Store that generated output file path into
output_path_key. - Persist the dataframe through
storage.write(dataframe)and returnoutput_path_key.
5. Important Rules
- Values in
input_path_keymust be readable filesystem paths, not inline text. input_path_keyandoutput_path_keyare required runtime arguments; the source code does not define defaults for them.- Chunk splitting is recursive bisection by character index, guided by token counts, not semantic splitting.
- Output files are auto-named from the input path using the
_llm_output.txtsuffix. The value already present inoutput_path_keyis not used to decide the write location. - If global LLM generation fails, the implementation writes empty content per row into the derived output files and still writes
output_path_keyback into the dataframe. - All chunk requests across all rows are sent in one global batch before results are regrouped by row.
6. Typical Usage
import tiktoken
from dataflow.operators.core_text import ChunkedPromptedGenerator
generator = ChunkedPromptedGenerator(
llm_serving=self.llm_serving,
system_prompt="Please summarize the following text.",
max_chunk_len=4096,
enc=tiktoken.get_encoding("cl100k_base"),
separator="\n\n",
)
generator.run(
storage=self.storage.step(),
input_path_key="file_path",
output_path_key="output_path",
)
Version History
- 2e95d40 Current 2026-08-27 09:03


