DeepFabric 4.4.1__py3-none-any.whl → 4.6.0__py3-none-any.whl

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (39) hide show
  1. deepfabric/__init__.py +8 -0
  2. deepfabric/auth.py +8 -2
  3. deepfabric/builders.py +2 -2
  4. deepfabric/builders_agent.py +18 -6
  5. deepfabric/cli.py +292 -13
  6. deepfabric/cloud_upload.py +884 -0
  7. deepfabric/config.py +47 -20
  8. deepfabric/config_manager.py +2 -2
  9. deepfabric/dataset.py +302 -0
  10. deepfabric/evaluation/backends/__init__.py +2 -0
  11. deepfabric/evaluation/backends/llm_eval_backend.py +527 -0
  12. deepfabric/evaluation/backends/ollama_backend.py +3 -3
  13. deepfabric/evaluation/backends/tool_call_parsers.py +7 -7
  14. deepfabric/evaluation/backends/transformers_backend.py +73 -16
  15. deepfabric/evaluation/evaluator.py +41 -7
  16. deepfabric/evaluation/evaluators/builtin/tool_calling.py +13 -8
  17. deepfabric/evaluation/inference.py +77 -5
  18. deepfabric/evaluation/metrics.py +4 -0
  19. deepfabric/evaluation/parser.py +8 -8
  20. deepfabric/evaluation/reporters/cloud_reporter.py +19 -6
  21. deepfabric/exceptions.py +14 -0
  22. deepfabric/generator.py +8 -4
  23. deepfabric/graph.py +38 -0
  24. deepfabric/hf_hub.py +1 -1
  25. deepfabric/loader.py +554 -0
  26. deepfabric/schemas.py +7 -7
  27. deepfabric/topic_manager.py +4 -0
  28. deepfabric/training/__init__.py +24 -5
  29. deepfabric/training/callback.py +43 -1
  30. deepfabric/training/dataset_utils.py +223 -0
  31. deepfabric/training/metrics_sender.py +50 -16
  32. deepfabric/tui.py +9 -1
  33. deepfabric/utils.py +14 -0
  34. deepfabric/validation.py +1 -1
  35. {deepfabric-4.4.1.dist-info → deepfabric-4.6.0.dist-info}/METADATA +84 -177
  36. {deepfabric-4.4.1.dist-info → deepfabric-4.6.0.dist-info}/RECORD +39 -34
  37. {deepfabric-4.4.1.dist-info → deepfabric-4.6.0.dist-info}/WHEEL +0 -0
  38. {deepfabric-4.4.1.dist-info → deepfabric-4.6.0.dist-info}/entry_points.txt +0 -0
  39. {deepfabric-4.4.1.dist-info → deepfabric-4.6.0.dist-info}/licenses/LICENSE +0 -0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: DeepFabric
3
- Version: 4.4.1
3
+ Version: 4.6.0
4
4
  Summary: Curate High Quality Datasets, Train, Evaluate and Ship
5
5
  Author-email: Luke Hinds <luke@alwaysfurther.ai>
6
6
  License-File: LICENSE
@@ -29,10 +29,12 @@ Requires-Dist: sentencepiece>=0.1.99
29
29
  Requires-Dist: spin-sdk>=3.4.1
30
30
  Requires-Dist: torch>=2.4.0
31
31
  Requires-Dist: transformers>=4.57.1
32
+ Requires-Dist: trl>=0.26.2
32
33
  Provides-Extra: dev
33
34
  Requires-Dist: bandit>=1.7.10; extra == 'dev'
34
35
  Requires-Dist: mermaid-py>=0.2.0; extra == 'dev'
35
36
  Requires-Dist: pytest-cov>=4.0.0; extra == 'dev'
37
+ Requires-Dist: pytest-httpx>=0.30.0; extra == 'dev'
36
38
  Requires-Dist: pytest-mock>=3.10.0; extra == 'dev'
37
39
  Requires-Dist: pytest>=7.0.0; extra == 'dev'
38
40
  Requires-Dist: requests-mock>=1.11.0; extra == 'dev'
@@ -45,7 +47,7 @@ Description-Content-Type: text/markdown
45
47
  <div align="center">
46
48
  <picture>
47
49
  <source media="(prefers-color-scheme: dark)" srcset="./assets/logo-light.png" />
48
- <img alt="DeepFabric logo" src="./assets/logo-light-hols.png" style="width:40%;max-width:40%;height:auto;display:block;margin:0 auto;" />
50
+ <img alt="DeepFabric logo" src="./assets/logo-light.png" style="width:40%;max-width:40%;height:auto;display:block;margin:0 auto;" />
49
51
  </picture>
50
52
  <h3>Training Model Behavior in Agentic Systems</h3>
51
53
 
@@ -77,6 +79,9 @@ Description-Content-Type: text/markdown
77
79
  <a href="https://discord.gg/pPcjYzGvbS">
78
80
  <img src="https://img.shields.io/discord/1384081906773131274?color=7289da&label=Discord&logo=discord&logoColor=white" alt="Discord"/>
79
81
  </a>
82
+ <a href="https://www.reddit.com/r/deepfabric/">
83
+ <img src="https://img.shields.io/badge/Reddit-r%2Fdeepfabric-FF4500?logo=reddit&logoColor=white" alt="Reddit"/>
84
+ </a>
80
85
  </p>
81
86
  </div>
82
87
 
@@ -86,7 +91,7 @@ What sets DeepFabric apart from other dataset generation tools is its ability to
86
91
 
87
92
  <img src="/assets/df-demo.gif" width="100%" height="100%"/>
88
93
 
89
- Constrained decoding and response validation, along with real tool executions within isolated webassembly environments, ensure that generated samples strictly adhere to structured schema, variable constraints, and execution correctness, ensuring datasets have exact syntax and structure for use in model training pipelines. Tool definations can be either directly imported from MCP (Model Context Protocol) server schemas and automatically mocked, real life interfaces along with a standard set of common tools (`list_files()`, 'read_file()` etc)
94
+ Constrained decoding and response validation, along with real tool executions within isolated webassembly environments, ensure that generated samples strictly adhere to structured schema, variable constraints, and execution correctness, ensuring datasets have exact syntax and structure for use in model training pipelines. Tool definations can be either directly imported from MCP (Model Context Protocol) server schemas and automatically mocked, real life interfaces along with a standard set of common tools (`list_files()`, `'read_file()` etc)
90
95
 
91
96
  Once your dataset is generated, it can be automatically uploaded to Hugging Face and directly imported into popular training frameworks like TRL, Unsloth, and Axolotl.
92
97
 
@@ -120,7 +125,15 @@ This generates a topic graph and creates 27 unique nodes, then generates 27 trai
120
125
 
121
126
  ## Configuration
122
127
 
123
- DeepFabric also uses YAML configuration with three main sections and optional shared LLM defaults:
128
+ DeepFabric also uses YAML configuration with three main sections and optional shared LLM defaults
129
+
130
+ > [!NOTE]
131
+ > The following uses mocked tool execution, so will require a runing Spin service, which we provide in a docker image:
132
+ ```bash
133
+ docker run -d -p 3000:3000 ghcr.io/always-further/deepfabric/tools-sdk:latest`
134
+ ```
135
+
136
+ Save the following as `config.yaml`:
124
137
 
125
138
  ```yaml
126
139
  # Optional: Shared LLM defaults (inherited by topics and generation)
@@ -143,34 +156,74 @@ topics:
143
156
  # GENERATION: Create training samples from topics
144
157
  generation:
145
158
  system_prompt: |
146
- You are an expert Python backend developer and technical educator.
159
+ You are an expert Python backend developer specializing in REST API design.
147
160
  Create practical, production-ready code examples with clear explanations.
148
161
  Include error handling, type hints, and follow PEP 8 conventions.
162
+ Use the following tools to read, write, and list files in the virtual filesystem:
163
+ - read_file
164
+ - write_file
165
+ - list_files
149
166
 
150
167
  # Additional instructions for sample generation
151
168
  instructions: |
152
- Focus on real-world scenarios developers encounter daily.
169
+ Focus on real-world scenarios developers encounter daily when building REST APIs with Python.
153
170
  Include both happy path and edge case handling.
154
- Provide context on when and why to use specific patterns.
171
+ Provide context on when and why to use specific patterns or libraries.
172
+ Ensure code is modular, testable, and maintainable.
155
173
 
156
174
  conversation:
157
- type: chain_of_thought # basic | chain_of_thought
158
- reasoning_style: agent # freetext | agent (for chain_of_thought)
175
+ type: cot # basic | cot
176
+ reasoning_style: agent # freetext | agent (for cot)
159
177
  agent_mode: single_turn # single_turn | multi_turn (for agent)
160
178
 
161
179
  # Tool configuration (required for agent modes)
162
180
  tools:
163
181
  spin_endpoint: "http://localhost:3000" # Spin service for tool execution
164
- available: # Filter to specific tools (empty = all VFS tools)
165
- - read_file
166
- - write_file
167
- - list_files
182
+ components: # Map component name to tool names
183
+ builtin: # Routes to /vfs/execute
184
+ - read_file
185
+ - write_file
186
+ - list_files
168
187
  max_per_query: 3 # Maximum tools per query
169
188
  max_agent_steps: 5 # Max ReAct reasoning iterations
170
189
 
171
- max_retries: 3 # Retries for failed generations
172
- sample_retries: 2 # Retries for validation failures
173
- max_tokens: 2000 # Max tokens per generation
190
+ # Optional: Seed initial files into the spin before generation, used for tool calling
191
+ scenario_seed:
192
+ files:
193
+ "Dockerfile": |
194
+ FROM python:3.13
195
+ WORKDIR /usr/local/app
196
+
197
+ # Install the application dependencies
198
+ COPY requirements.txt ./
199
+ RUN pip install --no-cache-dir -r requirements.txt
200
+
201
+ # Copy in the source code
202
+ COPY src ./src
203
+ EXPOSE 8080
204
+
205
+ # Setup an app user so the container doesn't run as the root user
206
+ RUN useradd app
207
+ USER app
208
+
209
+ CMD ["uvicorn", "app.main:app", "--host", "0.0.0.0", "--port", "8080"]
210
+ "main.py": |
211
+ def greet(name):
212
+ return f"Hello, {name}!"
213
+
214
+ if __name__ == "__main__":
215
+ print(greet("World"))
216
+ "config.json": |
217
+ {
218
+ "version": "1.0.0",
219
+ "debug": true,
220
+ "max_retries": 3
221
+ }
222
+
223
+ # Generation control and retry settings
224
+ max_retries: 3 # Retries for failed generations
225
+ sample_retries: 2 # Retries for validation failures
226
+ max_tokens: 2000 # Max tokens per generation
174
227
 
175
228
  # Optional: Override shared LLM settings
176
229
  llm:
@@ -190,13 +243,13 @@ output:
190
243
  batch_size: 3 # Parallel generation batch size
191
244
  save_as: "api-dataset.jsonl"
192
245
 
193
- # Optional: Upload to Hugging Face
194
- huggingface:
195
- repository: "your-username/api-dataset-training-name"
196
- tags: ["python", "programming"]
246
+ Optional: Upload to Hugging Face
247
+ huggingface:
248
+ repository: "your-username/api-dataset-training-name"
249
+ tags: ["python", "programming"]
197
250
  ```
198
251
 
199
- Run with:
252
+ Run generation by sourcing the `config.yaml`:
200
253
 
201
254
  ```bash
202
255
  deepfabric generate config.yaml
@@ -206,6 +259,14 @@ deepfabric generate config.yaml
206
259
 
207
260
  DeepFabric returns standard HuggingFace datasets, making it easy to integrate with any training framework.
208
261
 
262
+ ### Colab Notebooks:
263
+
264
+ A quick way of seeing DeepFabric in action is via our notebooks in the [notebooks/](./notebooks/) folder or on Google Colab:
265
+
266
+ **Qwen4b Blender MCP**:
267
+
268
+ [![Qwen4b Blender MCP](https://colab.research.google.com/assets/colab-badge.svg)](https://colab.research.google.com/drive/1EG1V40v5xkJKLf6Ra6W4378vYqlZNVWqb)
269
+
209
270
  ### 1. Generate Dataset
210
271
 
211
272
  ```bash
@@ -215,7 +276,7 @@ deepfabric generate config.yaml --output-save-as dataset.jsonl
215
276
  Or upload to HuggingFace Hub:
216
277
 
217
278
  ```bash
218
- deepfabric upload dataset.jsonl --repo your-username/my-dataset
279
+ deepfabric upload-hf dataset.jsonl --repo your-username/my-dataset
219
280
  ```
220
281
 
221
282
  ### 2. Load and Split for Training
@@ -324,7 +385,6 @@ config = EvaluatorConfig(
324
385
  model_path="Qwen/Qwen2.5-7B-Instruct", # Base model
325
386
  adapter_path="./output/lora-adapter", # LoRA adapter path
326
387
  backend="transformers",
327
- use_unsloth=True, # Use Unsloth for adapters trained with Unsloth
328
388
  load_in_4bit=True, # 4-bit quantization
329
389
  max_seq_length=2048,
330
390
  ),
@@ -415,159 +475,6 @@ evaluator = Evaluator(config)
415
475
  results = evaluator.evaluate(dataset=eval_dataset)
416
476
  ```
417
477
 
418
- ## Training Metrics
419
-
420
- DeepFabric provides a training callback that automatically logs metrics to the DeepFabric cloud during model training. This enables real-time monitoring and tracking of training runs.
421
-
422
- ### Basic Usage with HuggingFace Trainer
423
-
424
- ```python
425
- from transformers import Trainer, TrainingArguments
426
- from deepfabric import DeepFabricCallback
427
-
428
- # Set up training arguments
429
- training_args = TrainingArguments(
430
- output_dir="./output",
431
- num_train_epochs=3,
432
- per_device_train_batch_size=4,
433
- logging_steps=10,
434
- )
435
-
436
- # Create trainer
437
- trainer = Trainer(
438
- model=model,
439
- args=training_args,
440
- train_dataset=train_dataset,
441
- eval_dataset=eval_dataset,
442
- )
443
-
444
- # Add DeepFabric callback for metrics logging
445
- trainer.add_callback(DeepFabricCallback(trainer))
446
-
447
- # Train - metrics are automatically logged
448
- trainer.train()
449
- ```
450
-
451
- ### Usage with TRL SFTTrainer
452
-
453
- ```python
454
- from trl import SFTTrainer, SFTConfig
455
- from deepfabric import DeepFabricCallback
456
-
457
- trainer = SFTTrainer(
458
- model=model,
459
- tokenizer=tokenizer,
460
- train_dataset=train_dataset,
461
- args=SFTConfig(
462
- output_dir="./output",
463
- num_train_epochs=3,
464
- logging_steps=10,
465
- ),
466
- )
467
-
468
- # Add callback - works with any Trainer-compatible class
469
- trainer.add_callback(DeepFabricCallback(trainer))
470
- trainer.train()
471
- ```
472
-
473
- ### Configuration Options
474
-
475
- ```python
476
- from deepfabric import DeepFabricCallback
477
-
478
- callback = DeepFabricCallback(
479
- trainer=trainer, # Optional: Trainer instance
480
- api_key="your-api-key", # Or set DEEPFABRIC_API_KEY env var
481
- endpoint="https://api.deepfabric.ai", # Custom endpoint (optional)
482
- enabled=True, # Disable to skip logging
483
- )
484
- ```
485
-
486
- ### Environment Variables
487
-
488
- ```bash
489
- # API key for authentication
490
- export DEEPFABRIC_API_KEY="your-api-key"
491
-
492
- # Custom API endpoint (optional)
493
- export DEEPFABRIC_API_URL="https://api.deepfabric.ai"
494
- ```
495
-
496
- ### Logged Metrics
497
-
498
- The callback automatically captures and logs:
499
-
500
- | Metric Type | Examples |
501
- |-------------|----------|
502
- | Training | `loss`, `learning_rate`, `epoch`, `global_step` |
503
- | Throughput | `train_runtime`, `train_samples_per_second` |
504
- | Evaluation | `eval_loss`, `eval_accuracy` (when evaluation is run) |
505
- | TRL-specific | `rewards/chosen`, `rewards/rejected`, `kl_divergence` |
506
- | Checkpoints | Checkpoint save events with step numbers |
507
-
508
- ### Callback Events
509
-
510
- ```python
511
- # The callback hooks into these Trainer events:
512
- # - on_train_begin: Logs run start with training configuration
513
- # - on_log: Logs training metrics (loss, lr, etc.)
514
- # - on_evaluate: Logs evaluation metrics
515
- # - on_save: Logs checkpoint events
516
- # - on_train_end: Logs run completion and flushes pending metrics
517
- ```
518
-
519
- ### Non-Blocking Design
520
-
521
- The callback uses a background thread to send metrics asynchronously, ensuring training is never blocked by network operations:
522
-
523
- ```python
524
- from deepfabric.training import MetricsSender
525
-
526
- # Direct access to sender for advanced use cases
527
- sender = MetricsSender(
528
- endpoint="https://api.deepfabric.ai",
529
- api_key="your-key",
530
- batch_size=10, # Batch metrics before sending
531
- flush_interval=5.0, # Auto-flush every 5 seconds
532
- max_queue_size=1000, # Queue capacity
533
- )
534
-
535
- # Manually send metrics
536
- sender.send_metrics({"custom_metric": 0.95, "step": 100})
537
-
538
- # Flush pending metrics (blocking)
539
- sender.flush(timeout=30.0)
540
-
541
- # Check sender statistics
542
- print(sender.stats)
543
- # {'metrics_sent': 150, 'metrics_dropped': 0, 'send_errors': 0, 'queue_size': 0}
544
- ```
545
-
546
- ### Interactive API Key Prompt
547
-
548
- When running in an interactive environment (Jupyter notebook, terminal) without an API key configured, the callback will prompt for authentication:
549
-
550
- ```python
551
- from deepfabric import DeepFabricCallback
552
-
553
- # If DEEPFABRIC_API_KEY is not set, prompts for login
554
- callback = DeepFabricCallback(trainer)
555
- # > DeepFabric API key not found. Log in to enable cloud metrics.
556
- # > Visit: https://app.deepfabric.ai/signup
557
- ```
558
-
559
- ### Disabling Metrics Logging
560
-
561
- ```python
562
- # Disable via constructor
563
- callback = DeepFabricCallback(trainer, enabled=False)
564
-
565
- # Or set API key to None
566
- callback = DeepFabricCallback(trainer, api_key=None)
567
-
568
- # Or don't set DEEPFABRIC_API_KEY environment variable
569
- ```
570
-
571
478
  ## Providers
572
479
 
573
480
  | Provider | Local/Cloud | Best For |
@@ -625,7 +532,7 @@ Enable tool tracing in your YAML config:
625
532
  ```yaml
626
533
  generation:
627
534
  conversation:
628
- type: chain_of_thought
535
+ type: cot
629
536
  reasoning_style: agent
630
537
  agent_mode: single_turn
631
538
 
@@ -1,49 +1,53 @@
1
- deepfabric/__init__.py,sha256=BRwhcuwXhiDQ6jMlsjhTaPNaw15EyIY3KOLhhlwKcBo,1503
1
+ deepfabric/__init__.py,sha256=DA4DT1nmF7VjQ00IA_8J_kSlqGYrK2EvP5H4XPzuKoA,1690
2
2
  deepfabric/__main__.py,sha256=Ojx6VFnAWx4wY52VehsWhW85IaEmPb8FP_sGvOk628g,113
3
- deepfabric/auth.py,sha256=C-GVaImVSqQIw4zm-H8PS19xBnkUOb3Z3M7sALCMsYs,12637
4
- deepfabric/builders.py,sha256=hqoVKjh9n-XKX6qc12SNgs_L_9Ytb1qxtLTm_ixt3vY,11529
5
- deepfabric/builders_agent.py,sha256=Z1hyB4wdrBB4jCoB3F-K_z_Lz4g4nzclYk2Uf7YFdFQ,47802
6
- deepfabric/cli.py,sha256=wOON4U6wHeboPer7Yx6-bPNSuwX1rBFhAb5ywGKXDRk,41963
7
- deepfabric/config.py,sha256=B3T-Q3nuvkrMFJ1R3NvTYCSM7Baw5OoRovNdrNsbaes,33698
8
- deepfabric/config_manager.py,sha256=VuHa2MxGYkGwt8fQ-J3d0ctikWGt6lmNShwaqVRWxnY,9067
3
+ deepfabric/auth.py,sha256=NkJRthKi7vrZql34UBjKPAKC3mLhvNiEsUXoYfVjkHc,12819
4
+ deepfabric/builders.py,sha256=XKlKsAhsed2_M_uHft-VB-n8T1ZhAbIo_7XXc2mE3Ug,11503
5
+ deepfabric/builders_agent.py,sha256=7xaXVNzmW_vBDkxJNKR_9HveljrdljwDAFx3iu-L_-M,48468
6
+ deepfabric/cli.py,sha256=gf7HoXlLn-8SZHHmpNWI7dwXvv_VCzu7wCQraOJkKsc,51236
7
+ deepfabric/cloud_upload.py,sha256=WYaISQY1XxorNdL7_F_FYwQUPHGJr2Bb_bohAa5xpbY,27801
8
+ deepfabric/config.py,sha256=Ze0OaCdUqFwX9bmjssf9ffU0XXwa5sJmvlyHr4FENHw,34367
9
+ deepfabric/config_manager.py,sha256=CIOJV121tBpH_V_ljwTenvyFO31yoohPSjW0yrHCD-w,9041
9
10
  deepfabric/constants.py,sha256=MwADziDmnt0zi9t9gG65EM7AJvIQP0FSsXgGj7Yqxm8,2578
11
+ deepfabric/dataset.py,sha256=prCvNiwa86fKe9VQrI10et1oYzy6h7A6Ikr5oDxBArQ,9416
10
12
  deepfabric/dataset_manager.py,sha256=fJ6VFG05FLTpmbkLKlnVTTi7aim8q7eWI1cgOmKaP5s,20461
11
13
  deepfabric/error_codes.py,sha256=HGGWsahUTI8UG996C74X-XgNuaPX8RHo4gOidlaJql4,17630
12
- deepfabric/exceptions.py,sha256=068iSPLG6iSA1KY8Hp19Tc_Y2dlew5lxihV31dGenUE,1322
14
+ deepfabric/exceptions.py,sha256=pEg4YFQaDEWtBoJaSkxsJJoBBp2-6EE3M7m5H7R6i_8,1586
13
15
  deepfabric/factory.py,sha256=OCqo3w-eiYNWvK_I_egDZuWj192kf18yD3SPj8rrPxU,753
14
- deepfabric/generator.py,sha256=EoFhe08niU5JZwhjeJrFqh2FjoqLsVsGgsKh5ejrs9w,44011
15
- deepfabric/graph.py,sha256=xyQ0zEESkZhJRYmm8a-IdyNKkXZDzAmlow8bci77u80,20502
16
- deepfabric/hf_hub.py,sha256=OsiVF-9gVs5E_B8mAiEbA2eIM8kk8WP9r0x3DFCSxsE,7639
16
+ deepfabric/generator.py,sha256=wdGxuKQOMGY8oEpa-YvXX2ceCnzRApDgzweLHgwtjlw,44226
17
+ deepfabric/graph.py,sha256=O-I2Gto9Yxp4dXYMIRrLBVG4ODn7PI4deMzvJFEkCqs,22252
18
+ deepfabric/hf_hub.py,sha256=hw2CWqZ3CzyAzMo552VPZKVWtuv-j0TQ2_gV5K0AUto,7670
17
19
  deepfabric/kaggle_hub.py,sha256=CXVO1Lv3IRhdO0bp9_IQr6nUs-v5jOWi5k4EwPkbJmw,7927
20
+ deepfabric/loader.py,sha256=YNTGZZE-POjR0BIlx6WCT4bIzf0T4lW_fQl7ev9UFqE,18584
18
21
  deepfabric/metrics.py,sha256=iwtNHBX4ZTYUg2FZgtFcG3U0e9RlV2c1cm1Kp34FeWU,6129
19
22
  deepfabric/progress.py,sha256=3XQQrf2pUZlyd-8eRcNATH1v0Oi8JMedVHGbhPcca-8,9354
20
23
  deepfabric/prompts.py,sha256=JVFMeeBa2qqOMvmP_xx8bWzZ6ot9eyqOP3u8XzzPx3g,10290
21
- deepfabric/schemas.py,sha256=6kidH2UhXMXEX5M6v56SGo2BC3GBS9fX0rTGAWqtx1I,36527
24
+ deepfabric/schemas.py,sha256=bBI1zOgsL05dIOpc-MBUS2p5zKhHr5roCjIfVNPFj2w,36466
22
25
  deepfabric/stream_simulator.py,sha256=GzvAxWxHVsuTwgXlqwXNfrTUDn6sND2kJOoQuYg88FA,3028
23
- deepfabric/topic_manager.py,sha256=xbc3yv8u7EgPcV8rWzpAt3U1fDXM7YIBlvcuvZeBhVo,10992
26
+ deepfabric/topic_manager.py,sha256=6YxMO6dQHaGyxghsI8iNJGP1miaekBe5Mh1WdYeLqdI,11164
24
27
  deepfabric/topic_model.py,sha256=i_wYpw2kUl8NLodOSaqNu-C4_d6caYT1kPe_vkKjoyw,707
25
28
  deepfabric/tree.py,sha256=Kxl2iLHU55xPq2MwdoLM0-M2nZRx51bRj9FM36jqs-M,14933
26
- deepfabric/tui.py,sha256=JwiTIregeOKnjUDYZd5qxZpCSX5bzyeP9FciIyauI2Q,50238
29
+ deepfabric/tui.py,sha256=9ETtGFQk26U9PQ2b5foplVYDKxaFGd-8UqK7uSKyHwE,50480
27
30
  deepfabric/update_checker.py,sha256=AUa9iUdkGNzu7tWkQRxIlF19YRmKLetwxu-Ys2ONS8Y,5145
28
- deepfabric/utils.py,sha256=DWcH7NeVGc_NVJ3v1rdLoQSSWeb2rwfUkDpKO1NGBB8,4507
29
- deepfabric/validation.py,sha256=UY_oocCQTn77xZ6cIO6d1cRWVHCwBVqKdhUuQ07c7mQ,5123
31
+ deepfabric/utils.py,sha256=ve6tku_-jgW_ZIkh9osUEQ3C_03J6R_zOw0Xf5UGJYc,4891
32
+ deepfabric/validation.py,sha256=1x1X_45kyI0w_FCdUiNdvy4LQu3B0KVR-fyvLkrKEGw,5125
30
33
  deepfabric/evaluation/__init__.py,sha256=7xMLmYXaNC1U7qf88S9fMxWTABoDRiOcimSYfCt_PSo,1224
31
- deepfabric/evaluation/evaluator.py,sha256=rxmx95wn03H9WE4QehHmItesJK-12VSCfVpwaSzWfYQ,32574
32
- deepfabric/evaluation/inference.py,sha256=cHAk3IEl3LcQZDMlxNIo8lwSR8g2rQCEjHBhaSzfTXc,4450
33
- deepfabric/evaluation/metrics.py,sha256=t8-6FP-XfDL4tfzn2sAMHUzgYNxu0Acoq5fGCTuzQqk,11882
34
- deepfabric/evaluation/parser.py,sha256=GZc_Sce0r8zs8s6UCtga8Glp37Ffj2qLJeSfK-Vm8gI,10707
35
- deepfabric/evaluation/backends/__init__.py,sha256=b9pTrURapGGL_SoLar3rJtgjpSh54vG1SgHxl3V4L5s,760
36
- deepfabric/evaluation/backends/ollama_backend.py,sha256=obt7sdvRlIyjF0YrdkQcczhz5tVww62_ncM9Uun6Rvc,4387
37
- deepfabric/evaluation/backends/tool_call_parsers.py,sha256=Q3qZPcyNAyjfrRGExM7tMNipFmbul26znSEfz5giZKc,14167
38
- deepfabric/evaluation/backends/transformers_backend.py,sha256=3pUx-FFTqavvxNDkGn_1WJbypjVftFFgyHq4YRWFoQ8,12039
34
+ deepfabric/evaluation/evaluator.py,sha256=ExUrL5Zil4DzibzjzngA7dfxnmGIVp9H7319FhLHYmk,33918
35
+ deepfabric/evaluation/inference.py,sha256=y7JA0IsBDwe0sJzVQeItYHAV5wUJn6Bjp1Wsp3r7qYQ,7644
36
+ deepfabric/evaluation/metrics.py,sha256=ITNevYj7CBXzYs-rYhsihO6-rE9n30CYRaVUfdTbcFQ,12026
37
+ deepfabric/evaluation/parser.py,sha256=AXyiCtNV4rueZQxLE_GqqkFNeDAewGoC--0vXHW-jW8,10603
38
+ deepfabric/evaluation/backends/__init__.py,sha256=GqC0FfpWmtgJmjHd0kVKNg7g-NjhRoh5h2MtAoOhUOY,827
39
+ deepfabric/evaluation/backends/llm_eval_backend.py,sha256=4jp5tnTp7v_0pHCGhcPbI55ig79-eVxdzooesi2PymA,18827
40
+ deepfabric/evaluation/backends/ollama_backend.py,sha256=mtPp1JtIDRjb76X_rTa1jS1ETzMjte8t3WJjuYV1oDQ,4372
41
+ deepfabric/evaluation/backends/tool_call_parsers.py,sha256=Ufg4Xt3mrDS-WbGor6tOOr4xZNCHk3Co2C-z_o-pAkM,14126
42
+ deepfabric/evaluation/backends/transformers_backend.py,sha256=WcqB9gkayQpjx2Em00lhzJg8RcWdQEYbctDNXLzFChA,14484
39
43
  deepfabric/evaluation/evaluators/__init__.py,sha256=NdH65YvanskRGe6r7JepkTNGGt8xA-GLugagU3VQ_WM,353
40
44
  deepfabric/evaluation/evaluators/base.py,sha256=1TiLr-_oF9dRmdSgJs94dDbf0gTwRS8TGGz2C1Z3nag,2946
41
45
  deepfabric/evaluation/evaluators/registry.py,sha256=VGeb1AHFGkn9TLpcqfuGIZi1jgh7Qw0NNILT6z3Se6M,2171
42
46
  deepfabric/evaluation/evaluators/builtin/__init__.py,sha256=s-9SOOZVMHL5E3QR8obZ8Z_mAWBYY_UbxT2hxpdHQZ8,111
43
- deepfabric/evaluation/evaluators/builtin/tool_calling.py,sha256=wVDAqES_5VrU_mQMB8qJHIyK7N4Lfyb1p16XNYQumDY,3391
47
+ deepfabric/evaluation/evaluators/builtin/tool_calling.py,sha256=S-odftiLM0OBGQryJgvL9Ysqxajiv5QlEyJI6_ABw2g,3697
44
48
  deepfabric/evaluation/reporters/__init__.py,sha256=o1eteq-gpfoPkiLpacl0VB-RAQ7Yj-81cTpXgP48M3c,299
45
49
  deepfabric/evaluation/reporters/base.py,sha256=YUJYRv5L0rpdd21KhLkz6NmvCzNex0n5c3zT-7rpBnI,1654
46
- deepfabric/evaluation/reporters/cloud_reporter.py,sha256=y6p4fN4vMDsqOxgyunYdGX7FZ-bihxH7RN_3LhO0ynM,7579
50
+ deepfabric/evaluation/reporters/cloud_reporter.py,sha256=GIloXyIhNqZa4VJviPPCi5WOMwUfdTKbaRAqzE-xl40,8217
47
51
  deepfabric/evaluation/reporters/file_reporter.py,sha256=cRSrtFjYdrUoSwCHPLd6e5irqczP-OyH85npYQ8XkDo,1781
48
52
  deepfabric/evaluation/reporters/multi_reporter.py,sha256=Faxi_cgLIVsRzti9n6zd_fxWUToSam65Rqylp6RX97c,1621
49
53
  deepfabric/llm/__init__.py,sha256=lfWDLLQ6VWJ4birKVRFh3ypk9zEOfG1ZtU08iD8bd3U,1038
@@ -60,12 +64,13 @@ deepfabric/tools/__init__.py,sha256=hV65lJmVH2qrWCvzHb-IS3VxYP9lal1j8-J3DzBGieM,
60
64
  deepfabric/tools/defaults.py,sha256=NcvrYo88OC1ID4U0CuKg_WYKz2pwFowsjBjSMZip-bI,2372
61
65
  deepfabric/tools/loader.py,sha256=Bv56D-76JChlK_QXfHLw_rneGLZYRhkn5ETbJMIdJsA,2910
62
66
  deepfabric/tools/mcp_client.py,sha256=uQRrlDSVwF0ZatOl9bidBNU7IgXgJKQU-xG50dK0Uy4,23377
63
- deepfabric/training/__init__.py,sha256=MrfbMhPUa_h4zqpTWDiIu_dXKhmlUH1tJsO5mIsm6tM,920
67
+ deepfabric/training/__init__.py,sha256=MqIyBnloX-4_zqAgoEaGzKXTVXroi40wEs4V7lbQNqk,1563
64
68
  deepfabric/training/api_key_prompt.py,sha256=bzcdzeK6ql_8Vz0cbR2vmxxtMRNRFpzYAJx7i8GNI3U,9315
65
- deepfabric/training/callback.py,sha256=d4heAO5gcBCGXmJIgA9MI9lFBBHnYtdm76rhPh6RDSA,11427
66
- deepfabric/training/metrics_sender.py,sha256=Fh_qvqrK9mNpTHfG8jgU7t1oSMKbov3mmj3r6o_Q6X4,9347
67
- deepfabric-4.4.1.dist-info/METADATA,sha256=EGTNsfWuaMrduG33KLktG7mLyVF73HgYw1y3VJEKN2g,22606
68
- deepfabric-4.4.1.dist-info/WHEEL,sha256=WLgqFyCfm_KASv4WHyYy0P3pM_m7J5L9k2skdKLirC8,87
69
- deepfabric-4.4.1.dist-info/entry_points.txt,sha256=zatevils13hfs8x29_vmUyivQ6rTtq7hE2RBusZw1Fo,50
70
- deepfabric-4.4.1.dist-info/licenses/LICENSE,sha256=-qRt8wmrhQ9aMf7KhmZXc2vrTETYZF-6_T1KCeUhvHY,11340
71
- deepfabric-4.4.1.dist-info/RECORD,,
69
+ deepfabric/training/callback.py,sha256=vYh7nnCNf3xhbJEamWBKNXW4T7XNazXvmRqEkFyIwXI,13045
70
+ deepfabric/training/dataset_utils.py,sha256=klx8DoawEwuMigBDP-RpMAfe7FvYxRbhj599MErxBr4,7313
71
+ deepfabric/training/metrics_sender.py,sha256=_x0Has8ZR8ehXsdmv3nJbRDml5ioju4hZFv5ndsldpQ,10830
72
+ deepfabric-4.6.0.dist-info/METADATA,sha256=AnVXX9_Yoim45cG5tVgH2v1Br2vhmhfpMqrO-Oagk24,20423
73
+ deepfabric-4.6.0.dist-info/WHEEL,sha256=WLgqFyCfm_KASv4WHyYy0P3pM_m7J5L9k2skdKLirC8,87
74
+ deepfabric-4.6.0.dist-info/entry_points.txt,sha256=zatevils13hfs8x29_vmUyivQ6rTtq7hE2RBusZw1Fo,50
75
+ deepfabric-4.6.0.dist-info/licenses/LICENSE,sha256=-qRt8wmrhQ9aMf7KhmZXc2vrTETYZF-6_T1KCeUhvHY,11340
76
+ deepfabric-4.6.0.dist-info/RECORD,,