kiln-ai 0.15.0__py3-none-any.whl → 0.16.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.
- kiln_ai/adapters/eval/eval_runner.py +5 -64
- kiln_ai/adapters/eval/g_eval.py +3 -3
- kiln_ai/adapters/fine_tune/dataset_formatter.py +124 -34
- kiln_ai/adapters/fine_tune/test_dataset_formatter.py +264 -7
- kiln_ai/adapters/ml_model_list.py +478 -4
- kiln_ai/adapters/model_adapters/base_adapter.py +26 -8
- kiln_ai/adapters/model_adapters/litellm_adapter.py +41 -7
- kiln_ai/adapters/model_adapters/test_base_adapter.py +74 -2
- kiln_ai/adapters/model_adapters/test_litellm_adapter.py +65 -1
- kiln_ai/adapters/model_adapters/test_saving_adapter_results.py +3 -2
- kiln_ai/adapters/model_adapters/test_structured_output.py +4 -6
- kiln_ai/adapters/parsers/base_parser.py +0 -3
- kiln_ai/adapters/parsers/parser_registry.py +5 -3
- kiln_ai/adapters/parsers/r1_parser.py +17 -2
- kiln_ai/adapters/parsers/request_formatters.py +40 -0
- kiln_ai/adapters/parsers/test_parser_registry.py +2 -2
- kiln_ai/adapters/parsers/test_r1_parser.py +44 -1
- kiln_ai/adapters/parsers/test_request_formatters.py +76 -0
- kiln_ai/adapters/prompt_builders.py +14 -1
- kiln_ai/adapters/provider_tools.py +18 -1
- kiln_ai/adapters/repair/test_repair_task.py +3 -2
- kiln_ai/adapters/test_prompt_builders.py +24 -3
- kiln_ai/adapters/test_provider_tools.py +70 -1
- kiln_ai/datamodel/__init__.py +2 -0
- kiln_ai/datamodel/datamodel_enums.py +14 -0
- kiln_ai/datamodel/dataset_filters.py +69 -1
- kiln_ai/datamodel/dataset_split.py +4 -0
- kiln_ai/datamodel/eval.py +8 -0
- kiln_ai/datamodel/finetune.py +1 -0
- kiln_ai/datamodel/prompt_id.py +1 -0
- kiln_ai/datamodel/task_output.py +1 -1
- kiln_ai/datamodel/task_run.py +39 -7
- kiln_ai/datamodel/test_basemodel.py +3 -7
- kiln_ai/datamodel/test_dataset_filters.py +82 -0
- kiln_ai/datamodel/test_dataset_split.py +2 -0
- kiln_ai/datamodel/test_example_models.py +54 -0
- kiln_ai/datamodel/test_models.py +50 -2
- kiln_ai/utils/async_job_runner.py +106 -0
- kiln_ai/utils/dataset_import.py +80 -18
- kiln_ai/utils/test_async_job_runner.py +199 -0
- kiln_ai/utils/test_dataset_import.py +242 -10
- {kiln_ai-0.15.0.dist-info → kiln_ai-0.16.0.dist-info}/METADATA +1 -1
- {kiln_ai-0.15.0.dist-info → kiln_ai-0.16.0.dist-info}/RECORD +45 -41
- {kiln_ai-0.15.0.dist-info → kiln_ai-0.16.0.dist-info}/WHEEL +0 -0
- {kiln_ai-0.15.0.dist-info → kiln_ai-0.16.0.dist-info}/licenses/LICENSE.txt +0 -0
|
@@ -3,16 +3,25 @@ import json
|
|
|
3
3
|
import logging
|
|
4
4
|
from io import StringIO
|
|
5
5
|
from pathlib import Path
|
|
6
|
+
from unittest.mock import patch
|
|
6
7
|
|
|
7
8
|
import pytest
|
|
8
9
|
from pydantic import BaseModel, ValidationError
|
|
9
10
|
|
|
10
|
-
from kiln_ai.datamodel import
|
|
11
|
+
from kiln_ai.datamodel import (
|
|
12
|
+
DataSource,
|
|
13
|
+
DataSourceType,
|
|
14
|
+
Project,
|
|
15
|
+
Task,
|
|
16
|
+
TaskOutput,
|
|
17
|
+
TaskRun,
|
|
18
|
+
)
|
|
11
19
|
from kiln_ai.utils.dataset_import import (
|
|
12
20
|
DatasetFileImporter,
|
|
13
21
|
DatasetImportFormat,
|
|
14
22
|
ImportConfig,
|
|
15
23
|
KilnInvalidImportFormat,
|
|
24
|
+
add_tag_splits,
|
|
16
25
|
deserialize_tags,
|
|
17
26
|
format_validation_error,
|
|
18
27
|
generate_import_tags,
|
|
@@ -144,16 +153,20 @@ def test_import_csv_plain_text(base_task: Task, tmp_path):
|
|
|
144
153
|
|
|
145
154
|
file_path = dicts_to_file_as_csv(row_data, "test.csv", tmp_path)
|
|
146
155
|
|
|
147
|
-
|
|
148
|
-
|
|
149
|
-
|
|
150
|
-
|
|
151
|
-
|
|
152
|
-
|
|
153
|
-
|
|
154
|
-
|
|
156
|
+
with patch("kiln_ai.utils.dataset_import.add_tag_splits") as mock_add_tag_splits:
|
|
157
|
+
importer = DatasetFileImporter(
|
|
158
|
+
base_task,
|
|
159
|
+
ImportConfig(
|
|
160
|
+
dataset_type=DatasetImportFormat.CSV,
|
|
161
|
+
dataset_path=file_path,
|
|
162
|
+
dataset_name="test.csv",
|
|
163
|
+
),
|
|
164
|
+
)
|
|
155
165
|
|
|
156
|
-
|
|
166
|
+
importer.create_runs_from_file()
|
|
167
|
+
|
|
168
|
+
# Verify add_tag_splits was called
|
|
169
|
+
mock_add_tag_splits.assert_called_once()
|
|
157
170
|
|
|
158
171
|
assert len(base_task.runs()) == 4
|
|
159
172
|
|
|
@@ -594,3 +607,222 @@ def test_format_validation_error():
|
|
|
594
607
|
|
|
595
608
|
def test_generate_import_tags():
|
|
596
609
|
assert generate_import_tags("123") == ["imported", "imported_123"]
|
|
610
|
+
|
|
611
|
+
|
|
612
|
+
def test_add_tag_splits(base_task: Task):
|
|
613
|
+
"""Test that tag splits are assigned correctly with exact proportions."""
|
|
614
|
+
# Create some test runs
|
|
615
|
+
runs = []
|
|
616
|
+
for i in range(10):
|
|
617
|
+
run = TaskRun(
|
|
618
|
+
parent=base_task,
|
|
619
|
+
input=f"input {i}",
|
|
620
|
+
input_source=DataSource(
|
|
621
|
+
type=DataSourceType.file_import,
|
|
622
|
+
properties={"file_name": "test.csv"},
|
|
623
|
+
),
|
|
624
|
+
output=TaskOutput(
|
|
625
|
+
output=f"output {i}",
|
|
626
|
+
source=DataSource(
|
|
627
|
+
type=DataSourceType.file_import,
|
|
628
|
+
properties={"file_name": "test.csv"},
|
|
629
|
+
),
|
|
630
|
+
),
|
|
631
|
+
)
|
|
632
|
+
runs.append(run)
|
|
633
|
+
|
|
634
|
+
# Test with 70/30 split
|
|
635
|
+
tag_splits = {"train": 0.7, "test": 0.3}
|
|
636
|
+
add_tag_splits(runs, tag_splits)
|
|
637
|
+
|
|
638
|
+
# Count the tags
|
|
639
|
+
train_count = sum(1 for run in runs if "train" in run.tags)
|
|
640
|
+
test_count = sum(1 for run in runs if "test" in run.tags)
|
|
641
|
+
|
|
642
|
+
# With 10 runs, we should get exactly 7 train and 3 test
|
|
643
|
+
assert train_count == 7
|
|
644
|
+
assert test_count == 3
|
|
645
|
+
assert len(runs) == train_count + test_count
|
|
646
|
+
|
|
647
|
+
|
|
648
|
+
def test_add_tag_splits_rounding(base_task: Task):
|
|
649
|
+
"""Test that tag splits handle rounding correctly."""
|
|
650
|
+
# Test a 33/33/34 split
|
|
651
|
+
runs = []
|
|
652
|
+
for i in range(34):
|
|
653
|
+
run = TaskRun(
|
|
654
|
+
parent=base_task,
|
|
655
|
+
input=f"input {i}",
|
|
656
|
+
input_source=DataSource(
|
|
657
|
+
type=DataSourceType.file_import,
|
|
658
|
+
properties={"file_name": "test.csv"},
|
|
659
|
+
),
|
|
660
|
+
output=TaskOutput(
|
|
661
|
+
output=f"output {i}",
|
|
662
|
+
source=DataSource(
|
|
663
|
+
type=DataSourceType.file_import,
|
|
664
|
+
properties={"file_name": "test.csv"},
|
|
665
|
+
),
|
|
666
|
+
),
|
|
667
|
+
)
|
|
668
|
+
runs.append(run)
|
|
669
|
+
|
|
670
|
+
# Test with three equal splits
|
|
671
|
+
tag_splits = {"train": 0.33, "val": 0.33, "test": 0.34}
|
|
672
|
+
add_tag_splits(runs, tag_splits)
|
|
673
|
+
|
|
674
|
+
# Count the tags
|
|
675
|
+
train_count = sum(1 for run in runs if "train" in run.tags)
|
|
676
|
+
val_count = sum(1 for run in runs if "val" in run.tags)
|
|
677
|
+
test_count = sum(1 for run in runs if "test" in run.tags)
|
|
678
|
+
|
|
679
|
+
# Should have one of each
|
|
680
|
+
assert train_count in [11, 12]
|
|
681
|
+
assert val_count in [11, 12]
|
|
682
|
+
assert test_count in [11, 12]
|
|
683
|
+
assert len(runs) == train_count + val_count + test_count
|
|
684
|
+
|
|
685
|
+
|
|
686
|
+
def test_add_tag_splits_none(base_task: Task):
|
|
687
|
+
"""Test that None tag_splits is handled correctly."""
|
|
688
|
+
runs = []
|
|
689
|
+
for i in range(5):
|
|
690
|
+
run = TaskRun(
|
|
691
|
+
parent=base_task,
|
|
692
|
+
input=f"input {i}",
|
|
693
|
+
input_source=DataSource(
|
|
694
|
+
type=DataSourceType.file_import,
|
|
695
|
+
properties={"file_name": "test.csv"},
|
|
696
|
+
),
|
|
697
|
+
output=TaskOutput(
|
|
698
|
+
output=f"output {i}",
|
|
699
|
+
source=DataSource(
|
|
700
|
+
type=DataSourceType.file_import,
|
|
701
|
+
properties={"file_name": "test.csv"},
|
|
702
|
+
),
|
|
703
|
+
),
|
|
704
|
+
)
|
|
705
|
+
runs.append(run)
|
|
706
|
+
|
|
707
|
+
# Should not modify any tags
|
|
708
|
+
original_tags = [run.tags.copy() for run in runs]
|
|
709
|
+
add_tag_splits(runs, None)
|
|
710
|
+
for run, original in zip(runs, original_tags):
|
|
711
|
+
assert run.tags == original
|
|
712
|
+
|
|
713
|
+
|
|
714
|
+
def test_add_tag_splits_randomness(base_task: Task):
|
|
715
|
+
"""Test that tag assignment is random but maintains proportions."""
|
|
716
|
+
# Create 100 runs for better statistical significance
|
|
717
|
+
runs = []
|
|
718
|
+
for i in range(100):
|
|
719
|
+
run = TaskRun(
|
|
720
|
+
parent=base_task,
|
|
721
|
+
input=f"input {i}",
|
|
722
|
+
input_source=DataSource(
|
|
723
|
+
type=DataSourceType.file_import,
|
|
724
|
+
properties={"file_name": "test.csv"},
|
|
725
|
+
),
|
|
726
|
+
output=TaskOutput(
|
|
727
|
+
output=f"output {i}",
|
|
728
|
+
source=DataSource(
|
|
729
|
+
type=DataSourceType.file_import,
|
|
730
|
+
properties={"file_name": "test.csv"},
|
|
731
|
+
),
|
|
732
|
+
),
|
|
733
|
+
)
|
|
734
|
+
runs.append(run)
|
|
735
|
+
|
|
736
|
+
# Test with 60/40 split
|
|
737
|
+
tag_splits = {"train": 0.6, "test": 0.4}
|
|
738
|
+
add_tag_splits(runs, tag_splits)
|
|
739
|
+
|
|
740
|
+
# Count the tags
|
|
741
|
+
train_count = sum(1 for run in runs if "train" in run.tags)
|
|
742
|
+
test_count = sum(1 for run in runs if "test" in run.tags)
|
|
743
|
+
|
|
744
|
+
# Should have exactly 60 train and 40 test
|
|
745
|
+
assert train_count == 60
|
|
746
|
+
assert test_count == 40
|
|
747
|
+
assert len(runs) == train_count + test_count
|
|
748
|
+
|
|
749
|
+
# Check that the assignment is not just sequential
|
|
750
|
+
# by looking at the first few runs
|
|
751
|
+
first_few_runs = runs[:35]
|
|
752
|
+
train_tags = sum(1 for run in first_few_runs if "train" in run.tags)
|
|
753
|
+
test_tags = sum(1 for run in first_few_runs if "test" in run.tags)
|
|
754
|
+
|
|
755
|
+
# If assignment was sequential, we'd expect all first 35 to be train
|
|
756
|
+
# This test might occasionally fail if we get unlucky with random assignment
|
|
757
|
+
# but it's very unlikely
|
|
758
|
+
assert train_tags < 35
|
|
759
|
+
assert test_tags > 0
|
|
760
|
+
|
|
761
|
+
|
|
762
|
+
def test_validate_tag_splits():
|
|
763
|
+
"""Test that validate_tag_splits correctly validates tag split proportions."""
|
|
764
|
+
# Test valid splits
|
|
765
|
+
config = ImportConfig(
|
|
766
|
+
dataset_type=DatasetImportFormat.CSV,
|
|
767
|
+
dataset_path="test.csv",
|
|
768
|
+
dataset_name="test.csv",
|
|
769
|
+
tag_splits={"train": 0.7, "test": 0.3},
|
|
770
|
+
)
|
|
771
|
+
config.validate_tag_splits() # Should not raise
|
|
772
|
+
|
|
773
|
+
# Test valid splits with small floating point errors
|
|
774
|
+
config = ImportConfig(
|
|
775
|
+
dataset_type=DatasetImportFormat.CSV,
|
|
776
|
+
dataset_path="test.csv",
|
|
777
|
+
dataset_name="test.csv",
|
|
778
|
+
tag_splits={"train": 0.7, "test": 0.3000001},
|
|
779
|
+
)
|
|
780
|
+
config.validate_tag_splits() # Should not raise
|
|
781
|
+
|
|
782
|
+
# Test invalid splits that don't sum to 1
|
|
783
|
+
config = ImportConfig(
|
|
784
|
+
dataset_type=DatasetImportFormat.CSV,
|
|
785
|
+
dataset_path="test.csv",
|
|
786
|
+
dataset_name="test.csv",
|
|
787
|
+
tag_splits={"train": 0.7, "test": 0.4},
|
|
788
|
+
)
|
|
789
|
+
with pytest.raises(ValueError) as e:
|
|
790
|
+
config.validate_tag_splits()
|
|
791
|
+
assert "Splits must sum to 1" in str(e.value)
|
|
792
|
+
|
|
793
|
+
# Test None tag_splits
|
|
794
|
+
config = ImportConfig(
|
|
795
|
+
dataset_type=DatasetImportFormat.CSV,
|
|
796
|
+
dataset_path="test.csv",
|
|
797
|
+
dataset_name="test.csv",
|
|
798
|
+
tag_splits=None,
|
|
799
|
+
)
|
|
800
|
+
config.validate_tag_splits() # Should not raise
|
|
801
|
+
|
|
802
|
+
|
|
803
|
+
def test_dataset_file_importer_validates_tag_splits(base_task: Task, tmp_path):
|
|
804
|
+
"""Test that DatasetFileImporter validates tag splits on initialization."""
|
|
805
|
+
# Test with invalid splits
|
|
806
|
+
with pytest.raises(ValueError) as e:
|
|
807
|
+
DatasetFileImporter(
|
|
808
|
+
base_task,
|
|
809
|
+
ImportConfig(
|
|
810
|
+
dataset_type=DatasetImportFormat.CSV,
|
|
811
|
+
dataset_path="test.csv",
|
|
812
|
+
dataset_name="test.csv",
|
|
813
|
+
tag_splits={"train": 0.7, "test": 0.4}, # Sums to 1.1
|
|
814
|
+
),
|
|
815
|
+
)
|
|
816
|
+
assert "Splits must sum to 1" in str(e.value)
|
|
817
|
+
|
|
818
|
+
# Test with valid splits
|
|
819
|
+
importer = DatasetFileImporter(
|
|
820
|
+
base_task,
|
|
821
|
+
ImportConfig(
|
|
822
|
+
dataset_type=DatasetImportFormat.CSV,
|
|
823
|
+
dataset_path="test.csv",
|
|
824
|
+
dataset_name="test.csv",
|
|
825
|
+
tag_splits={"train": 0.7, "test": 0.3},
|
|
826
|
+
),
|
|
827
|
+
)
|
|
828
|
+
assert importer.config.tag_splits == {"train": 0.7, "test": 0.3}
|
|
@@ -1,24 +1,24 @@
|
|
|
1
1
|
kiln_ai/__init__.py,sha256=Sc4z8LRVFMwJUoc_DPVUriSXTZ6PO9MaJ80PhRbKyB8,34
|
|
2
2
|
kiln_ai/adapters/__init__.py,sha256=XjGmWagEyOEVwVIAxjN5rYNsQWIEACT5DB7MMTxdPss,1005
|
|
3
3
|
kiln_ai/adapters/adapter_registry.py,sha256=KmMHYQ3mxpjVLE6D-hMNWCGt6Cw9JvnFn6nMb48GE8Y,9166
|
|
4
|
-
kiln_ai/adapters/ml_model_list.py,sha256=
|
|
4
|
+
kiln_ai/adapters/ml_model_list.py,sha256=DOl3kULrWOUwqEdOaKHk_LEPgnFhxLjcubpLk9Norek,87307
|
|
5
5
|
kiln_ai/adapters/ollama_tools.py,sha256=uObtLWfqKb9RXHN-TGGw2Y1FQlEMe0u8FgszI0zQn6U,3550
|
|
6
|
-
kiln_ai/adapters/prompt_builders.py,sha256=
|
|
7
|
-
kiln_ai/adapters/provider_tools.py,sha256=
|
|
6
|
+
kiln_ai/adapters/prompt_builders.py,sha256=Af4u0Oco0SfErBUGP7ujIu_qTK27d9VnOLumz2eqCmU,15639
|
|
7
|
+
kiln_ai/adapters/provider_tools.py,sha256=7NjkxGD58P9s0NEbWDY2yToE2dTthlObU7qS_4oA4b4,15900
|
|
8
8
|
kiln_ai/adapters/run_output.py,sha256=RAi2Qp6dmqJVNm3CxbNTdAuhitHfH5NiUGbf6ygUP-k,257
|
|
9
9
|
kiln_ai/adapters/test_adapter_registry.py,sha256=eDLHqv9mwgdde221pa47bTV87vCXwkUyjqsas-iFUrY,6123
|
|
10
10
|
kiln_ai/adapters/test_ollama_tools.py,sha256=xAUzL0IVmmXadVehJu1WjqbhpKEYGAgGt3pWx7hrubc,2514
|
|
11
11
|
kiln_ai/adapters/test_prompt_adaptors.py,sha256=J1ZGZ8GG7SxP3_J3Zw0e6XmZY4NyPmUGX3IPgjh2LD8,7767
|
|
12
|
-
kiln_ai/adapters/test_prompt_builders.py,sha256=
|
|
13
|
-
kiln_ai/adapters/test_provider_tools.py,sha256=
|
|
12
|
+
kiln_ai/adapters/test_prompt_builders.py,sha256=ZwSpKjI0DFVZwmwdbBkooWVCwmwo6UAXsz4X9TyFtyw,22965
|
|
13
|
+
kiln_ai/adapters/test_provider_tools.py,sha256=wdr9SUKt2dwapiYkIrbxbhtQ-vJLUP0PBn_ihIWXevc,30099
|
|
14
14
|
kiln_ai/adapters/data_gen/__init__.py,sha256=QTZWaf7kq5BorhPvexJfwDEKmjRmIbhwW9ei8LW2SIs,276
|
|
15
15
|
kiln_ai/adapters/data_gen/data_gen_prompts.py,sha256=kudjHnAz7L3q0k_NLyTlaIV7M0uRFrxXNcfcnjOE2uc,5810
|
|
16
16
|
kiln_ai/adapters/data_gen/data_gen_task.py,sha256=0PuYCcj09BtpgNj23mKj_L45mKZBdV5VreUeZ-Tj_xM,6642
|
|
17
17
|
kiln_ai/adapters/data_gen/test_data_gen_task.py,sha256=cRKUKMvC0uVompbmPTKwbnQ_N3c0cQDm4J_9H4Y5U18,10129
|
|
18
18
|
kiln_ai/adapters/eval/__init__.py,sha256=0ptbK0ZxWuraxGn_WMgmE1tcaq0k5t-g-52kVohvWCg,693
|
|
19
19
|
kiln_ai/adapters/eval/base_eval.py,sha256=IF4kYGt93bqJqSfj8UUaTng38fwPmi3cFKRSKUZhXJs,7381
|
|
20
|
-
kiln_ai/adapters/eval/eval_runner.py,sha256=
|
|
21
|
-
kiln_ai/adapters/eval/g_eval.py,sha256=
|
|
20
|
+
kiln_ai/adapters/eval/eval_runner.py,sha256=Wulelqb-qqcpjI33fgYhWiZhqFl7SqD0Q2o5xLEQQXQ,8729
|
|
21
|
+
kiln_ai/adapters/eval/g_eval.py,sha256=4r2J091Q67EvxZ0LA0iEqrGsKMF54Am071tbW05nBrA,15239
|
|
22
22
|
kiln_ai/adapters/eval/registry.py,sha256=gZ_s0VgEx79Fswkgi1tS4yOl7lzpkvUBJZ62RldhM_w,626
|
|
23
23
|
kiln_ai/adapters/eval/test_base_eval.py,sha256=_1CiOUOiBt1R_gGYMcRblrPkHf-H4uIlvfcHj5-Wh7o,10724
|
|
24
24
|
kiln_ai/adapters/eval/test_eval_runner.py,sha256=82WPE_frNRTSQ2lylqT0inkqcDgM72nWt8GEuoDkJ7w,18568
|
|
@@ -26,12 +26,12 @@ kiln_ai/adapters/eval/test_g_eval.py,sha256=-Stx7E0D-WAH1HWrRSp48CiGsf-no1SHeFF9
|
|
|
26
26
|
kiln_ai/adapters/eval/test_g_eval_data.py,sha256=8caiZfLWnXVX8alrBPrH7L7gqqSS9vO7u6PzcHurQcA,27769
|
|
27
27
|
kiln_ai/adapters/fine_tune/__init__.py,sha256=DxdTR60chwgck1aEoVYWyfWi6Ed2ZkdJj0lar-SEAj4,257
|
|
28
28
|
kiln_ai/adapters/fine_tune/base_finetune.py,sha256=g-lWuZMkOj2djcczuHke_Ai7Z7RPg41AFSgoxHgsw3U,5889
|
|
29
|
-
kiln_ai/adapters/fine_tune/dataset_formatter.py,sha256=
|
|
29
|
+
kiln_ai/adapters/fine_tune/dataset_formatter.py,sha256=OCfU-hVR_pM9Y_rQCPjyq7sMR2f20A8gKfyh45AQN28,17931
|
|
30
30
|
kiln_ai/adapters/fine_tune/finetune_registry.py,sha256=9RJLjviSoN3dQnKJE9Ss7df7dtdJgbuShB8IUcI-q9k,726
|
|
31
31
|
kiln_ai/adapters/fine_tune/fireworks_finetune.py,sha256=ze0QxghpHAqwO9nXOTkDEC9irmqduX5bjIhZDU0DCZQ,20101
|
|
32
32
|
kiln_ai/adapters/fine_tune/openai_finetune.py,sha256=Dz9E_0BWfrIkvv8ArZe-RKPwbIKPZ3v8rfbc3JELyTY,8571
|
|
33
33
|
kiln_ai/adapters/fine_tune/test_base_finetune.py,sha256=Tq0Klw7ou5_6H_bouTbI3PxYw7H30K32wlgWJE_luYk,10751
|
|
34
|
-
kiln_ai/adapters/fine_tune/test_dataset_formatter.py,sha256=
|
|
34
|
+
kiln_ai/adapters/fine_tune/test_dataset_formatter.py,sha256=cHeiUts5rNJooslAy8SlnUgSejT0WGGwgNl_3WYj7lI,32949
|
|
35
35
|
kiln_ai/adapters/fine_tune/test_fireworks_tinetune.py,sha256=NCl2U6ZqqJ8dnysGGmfir9RGcV-StPtoi5cetRjW6Zc,36754
|
|
36
36
|
kiln_ai/adapters/fine_tune/test_openai_finetune.py,sha256=H63Xk2PNHbt5Ev5IQpdR9JZ4uz-Huo2gfuC4mHHqe0w,20011
|
|
37
37
|
kiln_ai/adapters/fine_tune/test_together_finetune.py,sha256=BUJFsyq_g77gU0JN3hg6FMBvqb0DIyTeAek-wxomKIg,18090
|
|
@@ -39,66 +39,70 @@ kiln_ai/adapters/fine_tune/test_vertex_finetune.py,sha256=rAmcQJNPXqRacxg6RzjEQ8
|
|
|
39
39
|
kiln_ai/adapters/fine_tune/together_finetune.py,sha256=EbMPsTyKMubfwOalkFLiNFlMFIRKxLibzMTyLeUkle4,14010
|
|
40
40
|
kiln_ai/adapters/fine_tune/vertex_finetune.py,sha256=Ik6Ov711-oruJnMHpVZTPimWJY2W_JnfdKIdR2djGrc,8545
|
|
41
41
|
kiln_ai/adapters/model_adapters/__init__.py,sha256=m5GRtOHwVVvp_XDOss8c1X3NFf1wQQlC2eBgI4tXQhM,212
|
|
42
|
-
kiln_ai/adapters/model_adapters/base_adapter.py,sha256=
|
|
43
|
-
kiln_ai/adapters/model_adapters/litellm_adapter.py,sha256=
|
|
42
|
+
kiln_ai/adapters/model_adapters/base_adapter.py,sha256=2CVGoKVfPSqiC9j0SdAPUj4HiFb8-io5zNG0IIKQtBc,10965
|
|
43
|
+
kiln_ai/adapters/model_adapters/litellm_adapter.py,sha256=ic4eLbmFZDcUNDTRNT6WQ1Qw_haf3ciu10cvzqcsg18,17791
|
|
44
44
|
kiln_ai/adapters/model_adapters/litellm_config.py,sha256=7-tIh5cuVu23Uy2Sd6q7UCT_4VgevBsAzVhQMj6Svgw,425
|
|
45
|
-
kiln_ai/adapters/model_adapters/test_base_adapter.py,sha256=
|
|
46
|
-
kiln_ai/adapters/model_adapters/test_litellm_adapter.py,sha256=
|
|
47
|
-
kiln_ai/adapters/model_adapters/test_saving_adapter_results.py,sha256=
|
|
48
|
-
kiln_ai/adapters/model_adapters/test_structured_output.py,sha256=
|
|
45
|
+
kiln_ai/adapters/model_adapters/test_base_adapter.py,sha256=E9XnCOJm9DNEPpt4otyMYn_AzK3WU4xVDRwxlSvPBI4,9007
|
|
46
|
+
kiln_ai/adapters/model_adapters/test_litellm_adapter.py,sha256=8koRwW3yxmECJamYeRc53g4dq0SwwCa0g2i6nt9xNXA,15896
|
|
47
|
+
kiln_ai/adapters/model_adapters/test_saving_adapter_results.py,sha256=XGainAeG3PkvmKhlHZG56POfiOjZ1Fl8pHvci_ouFiY,7907
|
|
48
|
+
kiln_ai/adapters/model_adapters/test_structured_output.py,sha256=Dqoy4zKi8rG0S3vbnpx1XBDHHj3oj-ayPY3xLpuVyU4,12457
|
|
49
49
|
kiln_ai/adapters/parsers/__init__.py,sha256=TGJS_8JhjUwg5Bnq4cDmwt5eIRo4vowmcL2A72L1Hzk,202
|
|
50
|
-
kiln_ai/adapters/parsers/base_parser.py,sha256=
|
|
50
|
+
kiln_ai/adapters/parsers/base_parser.py,sha256=AE8UYCttmVXbilpICotnDdFYTFhGMiBJHrxIUgPTAWM,280
|
|
51
51
|
kiln_ai/adapters/parsers/json_parser.py,sha256=IszrBrhIFrrVr76UZsuejkBdqpZG27mU72264HVgVzE,1274
|
|
52
|
-
kiln_ai/adapters/parsers/parser_registry.py,sha256=
|
|
53
|
-
kiln_ai/adapters/parsers/r1_parser.py,sha256=
|
|
52
|
+
kiln_ai/adapters/parsers/parser_registry.py,sha256=Lna-uYHBigKeq9e-mUbNQKcsZM1M7cDvxu7Gv4ECjLI,735
|
|
53
|
+
kiln_ai/adapters/parsers/r1_parser.py,sha256=ucDRHPoFrmr1eOSNFEG0won6TPxkCKfGJQNNJng5qHA,3626
|
|
54
|
+
kiln_ai/adapters/parsers/request_formatters.py,sha256=NdZO8zcZy9tkea8JaD5c_OeoeVjoYYTG0GjwF812STw,1124
|
|
54
55
|
kiln_ai/adapters/parsers/test_json_parser.py,sha256=9kdWe_vRC5wjP8A1Ym6Zu6enDIz4ARCNiRpcZr7_3ak,1971
|
|
55
|
-
kiln_ai/adapters/parsers/test_parser_registry.py,sha256=
|
|
56
|
-
kiln_ai/adapters/parsers/test_r1_parser.py,sha256=
|
|
56
|
+
kiln_ai/adapters/parsers/test_parser_registry.py,sha256=FFJQgaKVu67yK4W7w_b26tuEYPPYGppfttJ0y5ctWUo,1041
|
|
57
|
+
kiln_ai/adapters/parsers/test_r1_parser.py,sha256=XbB0saThkcgOvoYNq3TxDgILUu5Me38yeKoQonqaN-g,6296
|
|
58
|
+
kiln_ai/adapters/parsers/test_request_formatters.py,sha256=t3FlKT_Tte2u8zXJTMl8VaE8IrSzumuBysahbGesrbU,2090
|
|
57
59
|
kiln_ai/adapters/repair/__init__.py,sha256=dOO9MEpEhjiwzDVFg3MNfA2bKMPlax9iekDatpTkX8E,217
|
|
58
60
|
kiln_ai/adapters/repair/repair_task.py,sha256=iW0bHWQq6Tir6ULTATWFS0zpwNji8Tbwhm2lZu52RsM,3342
|
|
59
|
-
kiln_ai/adapters/repair/test_repair_task.py,sha256=
|
|
60
|
-
kiln_ai/datamodel/__init__.py,sha256=
|
|
61
|
+
kiln_ai/adapters/repair/test_repair_task.py,sha256=ZMoQcIpD_-O9lhtlMD6pN-VgzJURpMIZ-faVz1-taXs,7966
|
|
62
|
+
kiln_ai/datamodel/__init__.py,sha256=MCEPLNpNFNP0zCwQfDaM8yKs7stdtY8c7scf0pEtfdQ,1981
|
|
61
63
|
kiln_ai/datamodel/basemodel.py,sha256=Qsr3Kxq5B5rfPZxQFrfOMTGwInnfYy5srd8nK0nwOs0,22204
|
|
62
|
-
kiln_ai/datamodel/datamodel_enums.py,sha256=
|
|
63
|
-
kiln_ai/datamodel/dataset_filters.py,sha256=
|
|
64
|
-
kiln_ai/datamodel/dataset_split.py,sha256=
|
|
65
|
-
kiln_ai/datamodel/eval.py,sha256=
|
|
66
|
-
kiln_ai/datamodel/finetune.py,sha256=
|
|
64
|
+
kiln_ai/datamodel/datamodel_enums.py,sha256=5ktCfKzNM2lHUFv-BUjrHj2GOtDoB4kd2E8Lh1giirk,2877
|
|
65
|
+
kiln_ai/datamodel/dataset_filters.py,sha256=zXS5QeCqWa1vAxs3Pyy5FJtySx9yYJzxsCMANd23-3c,5502
|
|
66
|
+
kiln_ai/datamodel/dataset_split.py,sha256=GDF3Pj3NLG42X8kjR606R_aN14rpqx8Ig56FG8NCn9k,5790
|
|
67
|
+
kiln_ai/datamodel/eval.py,sha256=larT3emjpLVYOSB2ga5GHTS4O7l9mJwtIO4EqCyYF7g,14214
|
|
68
|
+
kiln_ai/datamodel/finetune.py,sha256=XvwpYDNiqZEJeMzmc81jqG5ZSXR2hWcBOS6hXiZASu8,4599
|
|
67
69
|
kiln_ai/datamodel/json_schema.py,sha256=o50wSp8frRXjT-NZjml4-Is7LNoF7DQP4g3AaaYzBfI,3379
|
|
68
70
|
kiln_ai/datamodel/model_cache.py,sha256=9X4aAigbkFdytckgw8InCMh86uBna0ME_1HJSeMPEn0,4495
|
|
69
71
|
kiln_ai/datamodel/project.py,sha256=uVH2_3TDFtsG_tpts81A-zbd9uPDFxAwMCKZt_km3IE,727
|
|
70
72
|
kiln_ai/datamodel/prompt.py,sha256=70JPYHfgyX18cHW_DXoMzIOA28Jbaz6gyabElmpycyc,1161
|
|
71
|
-
kiln_ai/datamodel/prompt_id.py,sha256=
|
|
73
|
+
kiln_ai/datamodel/prompt_id.py,sha256=S4Wcrt05USN-JrO8BeDlNYGrcoTOVocR3iUxBbgoq1c,2566
|
|
72
74
|
kiln_ai/datamodel/registry.py,sha256=XwGFXJFKZtOpR1Z9ven6SftggfADdZRm8TFxCEVtfUQ,957
|
|
73
75
|
kiln_ai/datamodel/strict_mode.py,sha256=sm4Xka8mnJHCShtbh6MMU5dDQv-cLj8lHgHkmFKpsl0,849
|
|
74
76
|
kiln_ai/datamodel/task.py,sha256=r-_zgrQCIiIkN8gvBISdU449Z9oKp7E1XL0lkik_rVI,7036
|
|
75
|
-
kiln_ai/datamodel/task_output.py,sha256=
|
|
76
|
-
kiln_ai/datamodel/task_run.py,sha256=
|
|
77
|
-
kiln_ai/datamodel/test_basemodel.py,sha256=
|
|
78
|
-
kiln_ai/datamodel/test_dataset_filters.py,sha256=
|
|
79
|
-
kiln_ai/datamodel/test_dataset_split.py,sha256=
|
|
77
|
+
kiln_ai/datamodel/task_output.py,sha256=P7bRI-Qn2n7f8XpR7hwgSTKhx3gzvsZ1aJOQMl-YW4s,13245
|
|
78
|
+
kiln_ai/datamodel/task_run.py,sha256=0Lwc7zQoeWzuvHYv00lUGfsNQp8gCKmCVKAq3FDrruY,8806
|
|
79
|
+
kiln_ai/datamodel/test_basemodel.py,sha256=arzlXwtPi0H3BRTCILn7WkcBV9bFFAI87iiEs5BsWVA,17978
|
|
80
|
+
kiln_ai/datamodel/test_dataset_filters.py,sha256=TFHQZLB0rJxnxsFjD546eXVFxZNAJi0sPZ8j24wYd1w,5322
|
|
81
|
+
kiln_ai/datamodel/test_dataset_split.py,sha256=NdJ042JNq9A6JGaMt6LS19DMz1IiwcVCZpUHw0AqJrE,11253
|
|
80
82
|
kiln_ai/datamodel/test_datasource.py,sha256=H4Kc-Im9eM7WnADWZXdoiOIrOl05RtkyuhTCKiRimyU,3905
|
|
81
83
|
kiln_ai/datamodel/test_eval_model.py,sha256=J7MqwWBgPpeXGqh3IacVUUHdZFJSZ2MgTsUNu-hNOJw,19528
|
|
82
|
-
kiln_ai/datamodel/test_example_models.py,sha256=
|
|
84
|
+
kiln_ai/datamodel/test_example_models.py,sha256=dwLAAOXLvdKupE5Q1m6VNcHtfdhpi2qWtoEbC0nfJg8,26156
|
|
83
85
|
kiln_ai/datamodel/test_json_schema.py,sha256=R0Cfc9WbieMslgvYsj2HFx8RHIq2fF9NcT5jH-kEqh4,4793
|
|
84
86
|
kiln_ai/datamodel/test_model_cache.py,sha256=Fy-ucYNzS5JEG-8SFY4nVHA8iRbXXxai20f8_oGl97o,8184
|
|
85
87
|
kiln_ai/datamodel/test_model_perf.py,sha256=9_76f__5XtZSHSjuaoiHRj2t-z3OWn-sSA4S9kH1jpY,3306
|
|
86
|
-
kiln_ai/datamodel/test_models.py,sha256=
|
|
88
|
+
kiln_ai/datamodel/test_models.py,sha256=ZZZdhN6-uWDBfyVr7b7LZhDA7B2NIcPlNGfnb3HI7II,21084
|
|
87
89
|
kiln_ai/datamodel/test_nested_save.py,sha256=xciCddqvPyKyoyjC5Lx_3Kh1t4LJv1xYRAPazR3SRcs,5588
|
|
88
90
|
kiln_ai/datamodel/test_output_rating.py,sha256=zvPIp2shAgCs2RQBgwYoL09fRA3krHvgAqUa91RlWR0,15125
|
|
89
91
|
kiln_ai/datamodel/test_prompt_id.py,sha256=ihyXVPQi0dSLGnBM7rTXRnVaiWXhh7HJmSy4nZZKmso,4225
|
|
90
92
|
kiln_ai/datamodel/test_registry.py,sha256=PhS4anLi5Bf_023obuTlO5DALhtPB8WIc_bX12Yg6Po,2705
|
|
91
93
|
kiln_ai/datamodel/test_task.py,sha256=FYyoEqJXQIy8rcBsLTdki4-1z9COnZQk1-aoS3ZoNuU,5307
|
|
92
94
|
kiln_ai/utils/__init__.py,sha256=PTD0MwBCKAMIOGsTAwsFaJOusTJJoRFTfOGqRvCaU-E,142
|
|
95
|
+
kiln_ai/utils/async_job_runner.py,sha256=1gjoEq5yc2MOVjDo05O1wztguEuMC6l3haDZsltlvuw,3457
|
|
93
96
|
kiln_ai/utils/config.py,sha256=kAgb_4nSnb-IWbLVS4FBygYmnHypJADjDEk_Fh-eLeg,8479
|
|
94
|
-
kiln_ai/utils/dataset_import.py,sha256=
|
|
97
|
+
kiln_ai/utils/dataset_import.py,sha256=zz8O4RniellZ0vPipeTUltWU7J7aCO018beD_cNHMb4,8993
|
|
95
98
|
kiln_ai/utils/exhaustive_error.py,sha256=TkkRixIAR3CPEKHeAJzyv0mtxp6BxUBKMvobA3vzQug,262
|
|
96
99
|
kiln_ai/utils/formatting.py,sha256=VtB9oag0lOGv17dwT7OPX_3HzBfaU9GsLH-iLete0yM,97
|
|
97
100
|
kiln_ai/utils/name_generator.py,sha256=v26TgpCwQbhQFcZvzgjZvURinjrOyyFhxpsI6NQrHKc,1914
|
|
101
|
+
kiln_ai/utils/test_async_job_runner.py,sha256=8AwPfOlR09qzfhVm-djpkmuoyHxJJ19QEzs0WV5KFSQ,6813
|
|
98
102
|
kiln_ai/utils/test_config.py,sha256=Jw3nMFeIgZUsZDRJJY2HpB-2EkR2NoZ-rDe_o9oA7ws,9174
|
|
99
|
-
kiln_ai/utils/test_dataset_import.py,sha256=
|
|
103
|
+
kiln_ai/utils/test_dataset_import.py,sha256=WxyjquKod8szKNA2HYs7tNTn71Apg5G9MNI8GRWhAlI,24965
|
|
100
104
|
kiln_ai/utils/test_name_geneator.py,sha256=9-hSTBshyakqlPbFnNcggwLrL7lcPTitauBYHg9jFWI,1513
|
|
101
|
-
kiln_ai-0.
|
|
102
|
-
kiln_ai-0.
|
|
103
|
-
kiln_ai-0.
|
|
104
|
-
kiln_ai-0.
|
|
105
|
+
kiln_ai-0.16.0.dist-info/METADATA,sha256=9BCNdJP6PBasSKgtPdVZGdhQM-IGpJFHgJhezj9Lplw,12263
|
|
106
|
+
kiln_ai-0.16.0.dist-info/WHEEL,sha256=qtCwoSJWgHk21S1Kb4ihdzI2rlJ1ZKaIurTj_ngOhyQ,87
|
|
107
|
+
kiln_ai-0.16.0.dist-info/licenses/LICENSE.txt,sha256=_NA5pnTYgRRr4qH6lE3X-TuZJ8iRcMUi5ASoGr-lEx8,1209
|
|
108
|
+
kiln_ai-0.16.0.dist-info/RECORD,,
|
|
File without changes
|
|
File without changes
|