Skip to content

Commit e4b61e7

Browse files
Merge pull request Pipelex#64 from Pipelex/release/v0.2.14
Release/v0.2.14
2 parents 3a71199 + d523693 commit e4b61e7

7 files changed

Lines changed: 48 additions & 31 deletions

File tree

CHANGELOG.md

Lines changed: 10 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,15 @@
11
# Changelog
22

3+
## [v0.2.14] - 2025-06-06
4+
5+
- Added a feature flag for the `ReportingManager` in the config:
6+
```bash
7+
[pipelex]
8+
[pipelex.feature_config]
9+
is_reporting_enabled = true
10+
```
11+
- Moved the reporting config form the `cogt`config to the Pipelex config.
12+
313
## [v0.2.13] - 2025-06-06
414

515
- Added Discord badge on the Readme. Join the community! -> https://discord.gg/SReshKQjWt

pipelex/cogt/config_cogt.py

Lines changed: 0 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -9,15 +9,6 @@
99
from pipelex.tools.config.models import ConfigModel
1010

1111

12-
class CogtReportConfig(ConfigModel):
13-
is_log_costs_to_console: bool
14-
is_generate_cost_report_file_enabled: bool
15-
cost_report_dir_path: str
16-
cost_report_base_name: str
17-
cost_report_extension: str
18-
cost_report_unit_scale: float
19-
20-
2112
class OcrConfig(ConfigModel):
2213
ocr_handles: List[str]
2314
page_output_text_file_name: str
@@ -70,7 +61,6 @@ class InferenceManagerConfig(ConfigModel):
7061

7162
class Cogt(ConfigModel):
7263
inference_manager_config: InferenceManagerConfig
73-
cogt_report_config: CogtReportConfig
7464
llm_config: LLMConfig
7565
imgg_config: ImggConfig
7666
ocr_config: OcrConfig

pipelex/config.py

Lines changed: 11 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -46,6 +46,16 @@ def get_prompting_style(self, prompting_target: Optional[LLMPromptingTarget] = N
4646
class FeatureConfig(ConfigModel):
4747
is_pipeline_tracking_enabled: bool
4848
is_activity_tracking_enabled: bool
49+
is_reporting_enabled: bool
50+
51+
52+
class ReportingConfig(ConfigModel):
53+
is_log_costs_to_console: bool
54+
is_generate_cost_report_file_enabled: bool
55+
cost_report_dir_path: str
56+
cost_report_base_name: str
57+
cost_report_extension: str
58+
cost_report_unit_scale: float
4959

5060

5161
class Pipelex(ConfigModel):
@@ -61,6 +71,7 @@ class Pipelex(ConfigModel):
6171
prompting_config: PromptingConfig
6272

6373
pipe_run_config: PipeRunConfig
74+
reporting_config: ReportingConfig
6475

6576

6677
class PipelexConfig(ConfigRoot):

pipelex/pipelex.py

Lines changed: 6 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -26,6 +26,7 @@
2626
from pipelex.pipeline.pipeline_manager import PipelineManager
2727
from pipelex.pipeline.track.pipeline_tracker import PipelineTracker
2828
from pipelex.pipeline.track.pipeline_tracker_protocol import PipelineTrackerNoOp, PipelineTrackerProtocol
29+
from pipelex.reporting.reporting_manager import ReportingManager
2930
from pipelex.reporting.reporting_protocol import ReportingNoOp, ReportingProtocol
3031
from pipelex.test_extras.registry_test_models import PipelexTestModels
3132
from pipelex.tools.config.models import ConfigRoot
@@ -121,7 +122,11 @@ def __init__(
121122
self.inference_manager = inference_manager or InferenceManager()
122123
self.pipelex_hub.set_inference_manager(self.inference_manager)
123124

124-
self.reporting_delegate = reporting_delegate or ReportingNoOp()
125+
self.reporting_delegate: ReportingProtocol
126+
if get_config().pipelex.feature_config.is_reporting_enabled:
127+
self.reporting_delegate = reporting_delegate or ReportingManager(reporting_config=get_config().pipelex.reporting_config)
128+
else:
129+
self.reporting_delegate = ReportingNoOp()
125130
self.pipelex_hub.set_report_delegate(self.reporting_delegate)
126131

127132
# pipelex libraries

pipelex/pipelex.toml

Lines changed: 9 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -7,6 +7,15 @@ extra_env_files = []
77
# WIP/Experimental feature flags
88
is_pipeline_tracking_enabled = false
99
is_activity_tracking_enabled = false
10+
is_reporting_enabled = true
11+
12+
[pipelex.reporting_config]
13+
is_log_costs_to_console = false
14+
is_generate_cost_report_file_enabled = true
15+
cost_report_dir_path = "reports"
16+
cost_report_base_name = "cost_report"
17+
cost_report_extension = "xlsx"
18+
cost_report_unit_scale = 1.0
1019

1120
####################################################################################################
1221
# Log config
@@ -74,14 +83,6 @@ is_auto_setup_preset_llm = true
7483
is_auto_setup_preset_imgg = true
7584
is_auto_setup_preset_ocr = true
7685

77-
[cogt.cogt_report_config]
78-
is_log_costs_to_console = false
79-
is_generate_cost_report_file_enabled = true
80-
cost_report_dir_path = "reports"
81-
cost_report_base_name = "cost_report"
82-
cost_report_extension = "xlsx"
83-
cost_report_unit_scale = 1.0
84-
8586
[cogt.llm_config]
8687
default_max_images = 100
8788

pipelex/reporting/reporting_manager.py

Lines changed: 11 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -4,12 +4,12 @@
44
from typing_extensions import override
55

66
from pipelex import log
7-
from pipelex.cogt.config_cogt import CogtReportConfig
87
from pipelex.cogt.exceptions import ReportingManagerError
98
from pipelex.cogt.inference.cost_registry import CostRegistry
109
from pipelex.cogt.inference.inference_job_abstract import InferenceJobAbstract
1110
from pipelex.cogt.llm.llm_job import LLMJob
1211
from pipelex.cogt.llm.llm_report import LLMTokenCostReport, LLMTokensUsage
12+
from pipelex.config import ReportingConfig
1313
from pipelex.pipeline.pipeline_models import SpecialPipelineId
1414
from pipelex.reporting.reporting_protocol import ReportingProtocol
1515
from pipelex.tools.misc.file_utils import ensure_path, get_incremental_file_path
@@ -28,9 +28,9 @@ def add_tokens_usage(self, llm_tokens_usage: LLMTokensUsage):
2828

2929

3030
class ReportingManager(ReportingProtocol):
31-
def __init__(self, report_config: CogtReportConfig):
31+
def __init__(self, reporting_config: ReportingConfig):
3232
self._usage_registries: Dict[str, UsageRegistry] = {}
33-
self._report_config = report_config
33+
self._reporting_config = reporting_config
3434

3535
############################################################
3636
# Manager lifecycle
@@ -63,13 +63,13 @@ def _report_llm_job(self, llm_job: LLMJob):
6363

6464
llm_token_cost_report: Optional[LLMTokenCostReport] = None
6565

66-
if self._report_config.is_log_costs_to_console:
66+
if self._reporting_config.is_log_costs_to_console:
6767
llm_token_cost_report = CostRegistry.complete_cost_report(llm_tokens_usage=llm_tokens_usage)
6868

6969
pipeline_run_id = llm_job.job_metadata.pipeline_run_id
7070
self._get_registry(pipeline_run_id).add_tokens_usage(llm_tokens_usage)
7171

72-
if self._report_config.is_log_costs_to_console:
72+
if self._reporting_config.is_log_costs_to_console:
7373
log.verbose(llm_token_cost_report, title="Token Cost report")
7474

7575
############################################################
@@ -96,19 +96,19 @@ def report_inference_job(self, inference_job: InferenceJobAbstract):
9696
def generate_report(self, pipeline_run_id: Optional[str] = None):
9797
pipeline_run_id = pipeline_run_id or SpecialPipelineId.UNTITLED
9898
cost_report_file_path: Optional[str] = None
99-
if self._report_config.is_generate_cost_report_file_enabled:
100-
ensure_path(self._report_config.cost_report_dir_path)
99+
if self._reporting_config.is_generate_cost_report_file_enabled:
100+
ensure_path(self._reporting_config.cost_report_dir_path)
101101
cost_report_file_path = get_incremental_file_path(
102-
base_path=self._report_config.cost_report_dir_path,
103-
base_name=self._report_config.cost_report_base_name,
104-
extension=self._report_config.cost_report_extension,
102+
base_path=self._reporting_config.cost_report_dir_path,
103+
base_name=self._reporting_config.cost_report_base_name,
104+
extension=self._reporting_config.cost_report_extension,
105105
)
106106

107107
registry = self._get_registry(pipeline_run_id)
108108
CostRegistry.generate_report(
109109
pipeline_run_id=pipeline_run_id,
110110
llm_tokens_usages=registry.get_current_tokens_usage(),
111-
unit_scale=self._report_config.cost_report_unit_scale,
111+
unit_scale=self._reporting_config.cost_report_unit_scale,
112112
cost_report_file_path=cost_report_file_path,
113113
)
114114

pyproject.toml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
[project]
22
name = "pipelex"
3-
version = "0.2.13"
3+
version = "0.2.14"
44
description = "Pipelex is an open-source dev tool based on a simple declarative language that lets you define replicable, structured, composable LLM pipelines."
55
authors = [{ name = "Evotis S.A.S.", email = "evotis@pipelex.com" }]
66
maintainers = [{ name = "Pipelex staff", email = "oss@pipelex.com" }]

0 commit comments

Comments
 (0)