Implementation:Ucbepic Docetl Directive TakeHeadTail
| Knowledge Sources | |
|---|---|
| Domains | Pipeline_Optimization, LLM_Operations |
| Last Updated | 2026-02-08 00:00 GMT |
Overview
Concrete tool for inserting a Code Map to truncate documents to head and tail words before LLM operations provided by the DocETL reasoning optimizer.
Description
The TakeHeadTailDirective class reduces document length by keeping only the first k words and optionally the last l words of the longest document field. It inserts a Code Map operation before any LLM-powered operation (Map, Filter, Reduce) to truncate document content. This improves cost efficiency and can enhance accuracy for tasks that only require document beginnings, such as classification.
Usage
The MOAR agent applies this directive when any LLM operation (Map, Filter, Reduce) only needs the beginning (and optionally end) of documents, such as classification tasks, filtering by document type, reducing document summaries, or when full document content causes accuracy issues due to too much context.
Code Reference
Source Location
- Repository: Ucbepic_Docetl
- File: docetl/reasoning_optimizer/directives/take_head_tail.py
- Lines: 1-321
Signature
class TakeHeadTailDirective(Directive):
name = "take_head_tail"
description = "Inserts a Code Map operation before any LLM-powered operation to truncate document content to head and tail words."
def check_applicability(self, ...) -> Tuple[bool, str]: ...
def apply(self, ...) -> Tuple[List[Dict], List[Dict], str, dict]: ...
Import
from docetl.reasoning_optimizer.directives.take_head_tail import TakeHeadTailDirective
I/O Contract
Inputs
| Name | Type | Required | Description |
|---|---|---|---|
| op_config | Dict | Yes | Operation configuration to transform |
| pipeline_ops | List[Dict] | Yes | Full pipeline operations list |
| op_idx | int | Yes | Index of target operation |
| dataset_descriptions | Dict | Yes | Dataset schema descriptions |
Outputs
| Name | Type | Description |
|---|---|---|
| new_ops | List[Dict] | Transformed operation configs |
| new_steps | List[Dict] | Updated pipeline steps |
| explanation | str | Human-readable description of changes |
| metadata | dict | Additional metadata about the transformation |
Usage Examples
# Directives are typically invoked by the MOAR agent automatically
# Example of manual invocation:
from docetl.reasoning_optimizer.directives.take_head_tail import TakeHeadTailDirective
directive = TakeHeadTailDirective()
applicable, reason = directive.check_applicability(op_config, pipeline_ops, op_idx, dataset_descriptions)
if applicable:
new_ops, new_steps, explanation, metadata = directive.apply(op_config, pipeline_ops, op_idx, dataset_descriptions)