kiln-ai 0.12.0__tar.gz → 0.13.0__tar.gz

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.

Potentially problematic release.


This version of kiln-ai might be problematic. Click here for more details.

Files changed (168) hide show
  1. kiln_ai-0.13.0/.python-version +1 -0
  2. kiln_ai-0.12.0/README.md → kiln_ai-0.13.0/PKG-INFO +77 -1
  3. kiln_ai-0.12.0/PKG-INFO → kiln_ai-0.13.0/README.md +45 -33
  4. {kiln_ai-0.12.0 → kiln_ai-0.13.0}/docs/kiln_core_docs/kiln_ai/adapters/data_gen/data_gen_task.html +60 -0
  5. kiln_ai-0.13.0/docs/kiln_core_docs/kiln_ai/adapters/eval/base_eval.html +908 -0
  6. kiln_ai-0.13.0/docs/kiln_core_docs/kiln_ai/adapters/eval/eval_runner.html +1442 -0
  7. kiln_ai-0.13.0/docs/kiln_core_docs/kiln_ai/adapters/eval/g_eval.html +1680 -0
  8. kiln_ai-0.13.0/docs/kiln_core_docs/kiln_ai/adapters/eval/registry.html +288 -0
  9. kiln_ai-0.12.0/docs/core_library_docs/kiln_ai/adapters.html → kiln_ai-0.13.0/docs/kiln_core_docs/kiln_ai/adapters/eval.html +49 -39
  10. {kiln_ai-0.12.0 → kiln_ai-0.13.0}/docs/kiln_core_docs/kiln_ai/adapters/fine_tune/base_finetune.html +510 -456
  11. {kiln_ai-0.12.0 → kiln_ai-0.13.0}/docs/kiln_core_docs/kiln_ai/adapters/fine_tune/dataset_formatter.html +27 -27
  12. {kiln_ai-0.12.0 → kiln_ai-0.13.0}/docs/kiln_core_docs/kiln_ai/adapters/fine_tune/finetune_registry.html +9 -7
  13. {kiln_ai-0.12.0 → kiln_ai-0.13.0}/docs/kiln_core_docs/kiln_ai/adapters/fine_tune/openai_finetune.html +1 -0
  14. kiln_ai-0.13.0/docs/kiln_core_docs/kiln_ai/adapters/ml_model_list.html +3674 -0
  15. {kiln_ai-0.12.0 → kiln_ai-0.13.0}/docs/kiln_core_docs/kiln_ai/adapters/model_adapters/base_adapter.html +690 -670
  16. kiln_ai-0.13.0/docs/kiln_core_docs/kiln_ai/adapters/model_adapters/litellm_adapter.html +1467 -0
  17. {kiln_ai-0.12.0 → kiln_ai-0.13.0}/docs/kiln_core_docs/kiln_ai/adapters/model_adapters.html +8 -11
  18. {kiln_ai-0.12.0 → kiln_ai-0.13.0}/docs/kiln_core_docs/kiln_ai/adapters/prompt_builders.html +1164 -919
  19. {kiln_ai-0.12.0 → kiln_ai-0.13.0}/docs/kiln_core_docs/kiln_ai/adapters/repair/repair_task.html +56 -80
  20. {kiln_ai-0.12.0 → kiln_ai-0.13.0}/docs/kiln_core_docs/kiln_ai/adapters.html +26 -19
  21. {kiln_ai-0.12.0 → kiln_ai-0.13.0}/docs/kiln_core_docs/kiln_ai/datamodel/dataset_split.html +372 -652
  22. kiln_ai-0.13.0/docs/kiln_core_docs/kiln_ai/datamodel/eval.html +2116 -0
  23. {kiln_ai-0.12.0 → kiln_ai-0.13.0}/docs/kiln_core_docs/kiln_ai/datamodel.html +1210 -790
  24. {kiln_ai-0.12.0 → kiln_ai-0.13.0}/docs/kiln_core_docs/kiln_ai/utils/config.html +505 -359
  25. {kiln_ai-0.12.0 → kiln_ai-0.13.0}/docs/kiln_core_docs/kiln_ai.html +84 -0
  26. kiln_ai-0.13.0/docs/kiln_core_docs/search.js +46 -0
  27. {kiln_ai-0.12.0 → kiln_ai-0.13.0}/kiln_ai/adapters/__init__.py +4 -0
  28. kiln_ai-0.13.0/kiln_ai/adapters/adapter_registry.py +217 -0
  29. kiln_ai-0.13.0/kiln_ai/adapters/eval/__init__.py +28 -0
  30. {kiln_ai-0.12.0 → kiln_ai-0.13.0}/kiln_ai/adapters/eval/eval_runner.py +4 -1
  31. {kiln_ai-0.12.0 → kiln_ai-0.13.0}/kiln_ai/adapters/eval/g_eval.py +2 -1
  32. {kiln_ai-0.12.0 → kiln_ai-0.13.0}/kiln_ai/adapters/eval/test_base_eval.py +1 -0
  33. {kiln_ai-0.12.0 → kiln_ai-0.13.0}/kiln_ai/adapters/eval/test_eval_runner.py +1 -0
  34. {kiln_ai-0.12.0 → kiln_ai-0.13.0}/kiln_ai/adapters/eval/test_g_eval.py +1 -0
  35. {kiln_ai-0.12.0 → kiln_ai-0.13.0}/kiln_ai/adapters/fine_tune/base_finetune.py +16 -2
  36. {kiln_ai-0.12.0 → kiln_ai-0.13.0}/kiln_ai/adapters/fine_tune/finetune_registry.py +2 -0
  37. kiln_ai-0.13.0/kiln_ai/adapters/fine_tune/test_together_finetune.py +531 -0
  38. kiln_ai-0.13.0/kiln_ai/adapters/fine_tune/together_finetune.py +325 -0
  39. {kiln_ai-0.12.0 → kiln_ai-0.13.0}/kiln_ai/adapters/ml_model_list.py +638 -155
  40. {kiln_ai-0.12.0 → kiln_ai-0.13.0}/kiln_ai/adapters/model_adapters/__init__.py +2 -4
  41. {kiln_ai-0.12.0 → kiln_ai-0.13.0}/kiln_ai/adapters/model_adapters/base_adapter.py +14 -11
  42. kiln_ai-0.13.0/kiln_ai/adapters/model_adapters/litellm_adapter.py +391 -0
  43. kiln_ai-0.13.0/kiln_ai/adapters/model_adapters/litellm_config.py +13 -0
  44. kiln_ai-0.13.0/kiln_ai/adapters/model_adapters/test_litellm_adapter.py +407 -0
  45. {kiln_ai-0.12.0 → kiln_ai-0.13.0}/kiln_ai/adapters/model_adapters/test_structured_output.py +23 -5
  46. {kiln_ai-0.12.0 → kiln_ai-0.13.0}/kiln_ai/adapters/ollama_tools.py +3 -2
  47. {kiln_ai-0.12.0 → kiln_ai-0.13.0}/kiln_ai/adapters/parsers/r1_parser.py +19 -14
  48. {kiln_ai-0.12.0 → kiln_ai-0.13.0}/kiln_ai/adapters/parsers/test_r1_parser.py +17 -5
  49. {kiln_ai-0.12.0 → kiln_ai-0.13.0}/kiln_ai/adapters/provider_tools.py +50 -58
  50. {kiln_ai-0.12.0 → kiln_ai-0.13.0}/kiln_ai/adapters/repair/test_repair_task.py +3 -3
  51. {kiln_ai-0.12.0 → kiln_ai-0.13.0}/kiln_ai/adapters/run_output.py +1 -1
  52. {kiln_ai-0.12.0 → kiln_ai-0.13.0}/kiln_ai/adapters/test_adapter_registry.py +17 -20
  53. {kiln_ai-0.12.0 → kiln_ai-0.13.0}/kiln_ai/adapters/test_generate_docs.py +2 -2
  54. {kiln_ai-0.12.0 → kiln_ai-0.13.0}/kiln_ai/adapters/test_prompt_adaptors.py +30 -19
  55. {kiln_ai-0.12.0 → kiln_ai-0.13.0}/kiln_ai/adapters/test_provider_tools.py +26 -81
  56. {kiln_ai-0.12.0 → kiln_ai-0.13.0}/kiln_ai/datamodel/basemodel.py +2 -0
  57. {kiln_ai-0.12.0 → kiln_ai-0.13.0}/kiln_ai/datamodel/datamodel_enums.py +2 -0
  58. {kiln_ai-0.12.0 → kiln_ai-0.13.0}/kiln_ai/datamodel/json_schema.py +1 -1
  59. {kiln_ai-0.12.0 → kiln_ai-0.13.0}/kiln_ai/datamodel/task_output.py +13 -6
  60. {kiln_ai-0.12.0 → kiln_ai-0.13.0}/kiln_ai/datamodel/test_basemodel.py +9 -0
  61. {kiln_ai-0.12.0 → kiln_ai-0.13.0}/kiln_ai/datamodel/test_datasource.py +19 -0
  62. {kiln_ai-0.12.0 → kiln_ai-0.13.0}/kiln_ai/utils/config.py +37 -0
  63. kiln_ai-0.13.0/kiln_ai/utils/dataset_import.py +232 -0
  64. kiln_ai-0.13.0/kiln_ai/utils/test_dataset_import.py +596 -0
  65. {kiln_ai-0.12.0 → kiln_ai-0.13.0}/pyproject.toml +6 -6
  66. kiln_ai-0.12.0/.python-version +0 -1
  67. kiln_ai-0.12.0/docs/core_library_docs/kiln_ai/adapters/base_adapter.html +0 -1070
  68. kiln_ai-0.12.0/docs/core_library_docs/kiln_ai/adapters/langchain_adapters.html +0 -650
  69. kiln_ai-0.12.0/docs/core_library_docs/kiln_ai/adapters/ml_model_list.html +0 -1783
  70. kiln_ai-0.12.0/docs/core_library_docs/kiln_ai/adapters/prompt_builders.html +0 -863
  71. kiln_ai-0.12.0/docs/core_library_docs/kiln_ai/adapters/repair/repair_task.html +0 -779
  72. kiln_ai-0.12.0/docs/core_library_docs/kiln_ai/adapters/repair.html +0 -261
  73. kiln_ai-0.12.0/docs/core_library_docs/kiln_ai/datamodel/basemodel.html +0 -1938
  74. kiln_ai-0.12.0/docs/core_library_docs/kiln_ai/datamodel/json_schema.html +0 -364
  75. kiln_ai-0.12.0/docs/core_library_docs/kiln_ai/datamodel.html +0 -3156
  76. kiln_ai-0.12.0/docs/core_library_docs/kiln_ai/utils/config.html +0 -967
  77. kiln_ai-0.12.0/docs/core_library_docs/kiln_ai/utils/formatting.html +0 -268
  78. kiln_ai-0.12.0/docs/core_library_docs/kiln_ai/utils.html +0 -261
  79. kiln_ai-0.12.0/docs/core_library_docs/kiln_ai.html +0 -270
  80. kiln_ai-0.12.0/docs/core_library_docs/search.js +0 -46
  81. kiln_ai-0.12.0/docs/kiln_core_docs/index.html +0 -7
  82. kiln_ai-0.12.0/docs/kiln_core_docs/kiln_ai/adapters/base_adapter.html +0 -1059
  83. kiln_ai-0.12.0/docs/kiln_core_docs/kiln_ai/adapters/fine_tune/dataset_split.html +0 -997
  84. kiln_ai-0.12.0/docs/kiln_core_docs/kiln_ai/adapters/langchain_adapters.html +0 -979
  85. kiln_ai-0.12.0/docs/kiln_core_docs/kiln_ai/adapters/ml_model_list.html +0 -2559
  86. kiln_ai-0.12.0/docs/kiln_core_docs/kiln_ai/adapters/model_adapters/langchain_adapters.html +0 -1129
  87. kiln_ai-0.12.0/docs/kiln_core_docs/kiln_ai/adapters/model_adapters/openai_model_adapter.html +0 -959
  88. kiln_ai-0.12.0/docs/kiln_core_docs/kiln_ai/datamodel/basemodel.html +0 -2527
  89. kiln_ai-0.12.0/docs/kiln_core_docs/kiln_ai/datamodel/json_schema.html +0 -446
  90. kiln_ai-0.12.0/docs/kiln_core_docs/search.js +0 -46
  91. kiln_ai-0.12.0/kiln_ai/adapters/adapter_registry.py +0 -92
  92. kiln_ai-0.12.0/kiln_ai/adapters/model_adapters/langchain_adapters.py +0 -309
  93. kiln_ai-0.12.0/kiln_ai/adapters/model_adapters/openai_compatible_config.py +0 -10
  94. kiln_ai-0.12.0/kiln_ai/adapters/model_adapters/openai_model_adapter.py +0 -289
  95. kiln_ai-0.12.0/kiln_ai/adapters/model_adapters/test_langchain_adapter.py +0 -343
  96. kiln_ai-0.12.0/kiln_ai/adapters/model_adapters/test_openai_model_adapter.py +0 -216
  97. {kiln_ai-0.12.0 → kiln_ai-0.13.0}/.gitignore +0 -0
  98. {kiln_ai-0.12.0 → kiln_ai-0.13.0}/LICENSE.txt +0 -0
  99. {kiln_ai-0.12.0/docs/core_library_docs → kiln_ai-0.13.0/docs/kiln_core_docs}/index.html +0 -0
  100. {kiln_ai-0.12.0 → kiln_ai-0.13.0}/docs/kiln_core_docs/kiln_ai/adapters/data_gen.html +0 -0
  101. {kiln_ai-0.12.0 → kiln_ai-0.13.0}/docs/kiln_core_docs/kiln_ai/adapters/fine_tune.html +0 -0
  102. {kiln_ai-0.12.0 → kiln_ai-0.13.0}/docs/kiln_core_docs/kiln_ai/adapters/repair.html +0 -0
  103. {kiln_ai-0.12.0 → kiln_ai-0.13.0}/docs/kiln_core_docs/kiln_ai/datamodel/strict_mode.html +0 -0
  104. {kiln_ai-0.12.0 → kiln_ai-0.13.0}/docs/kiln_core_docs/kiln_ai/utils/formatting.html +0 -0
  105. {kiln_ai-0.12.0 → kiln_ai-0.13.0}/docs/kiln_core_docs/kiln_ai/utils.html +0 -0
  106. {kiln_ai-0.12.0 → kiln_ai-0.13.0}/kiln_ai/__init__.py +0 -0
  107. {kiln_ai-0.12.0 → kiln_ai-0.13.0}/kiln_ai/adapters/data_gen/__init__.py +0 -0
  108. {kiln_ai-0.12.0 → kiln_ai-0.13.0}/kiln_ai/adapters/data_gen/data_gen_prompts.py +0 -0
  109. {kiln_ai-0.12.0 → kiln_ai-0.13.0}/kiln_ai/adapters/data_gen/data_gen_task.py +0 -0
  110. {kiln_ai-0.12.0 → kiln_ai-0.13.0}/kiln_ai/adapters/data_gen/test_data_gen_task.py +0 -0
  111. {kiln_ai-0.12.0 → kiln_ai-0.13.0}/kiln_ai/adapters/eval/base_eval.py +0 -0
  112. {kiln_ai-0.12.0 → kiln_ai-0.13.0}/kiln_ai/adapters/eval/registry.py +0 -0
  113. {kiln_ai-0.12.0 → kiln_ai-0.13.0}/kiln_ai/adapters/eval/test_g_eval_data.py +0 -0
  114. {kiln_ai-0.12.0 → kiln_ai-0.13.0}/kiln_ai/adapters/fine_tune/__init__.py +0 -0
  115. {kiln_ai-0.12.0 → kiln_ai-0.13.0}/kiln_ai/adapters/fine_tune/dataset_formatter.py +0 -0
  116. {kiln_ai-0.12.0 → kiln_ai-0.13.0}/kiln_ai/adapters/fine_tune/fireworks_finetune.py +0 -0
  117. {kiln_ai-0.12.0 → kiln_ai-0.13.0}/kiln_ai/adapters/fine_tune/openai_finetune.py +0 -0
  118. {kiln_ai-0.12.0 → kiln_ai-0.13.0}/kiln_ai/adapters/fine_tune/test_base_finetune.py +0 -0
  119. {kiln_ai-0.12.0 → kiln_ai-0.13.0}/kiln_ai/adapters/fine_tune/test_dataset_formatter.py +0 -0
  120. {kiln_ai-0.12.0 → kiln_ai-0.13.0}/kiln_ai/adapters/fine_tune/test_fireworks_tinetune.py +0 -0
  121. {kiln_ai-0.12.0 → kiln_ai-0.13.0}/kiln_ai/adapters/fine_tune/test_openai_finetune.py +0 -0
  122. {kiln_ai-0.12.0 → kiln_ai-0.13.0}/kiln_ai/adapters/model_adapters/test_base_adapter.py +0 -0
  123. {kiln_ai-0.12.0 → kiln_ai-0.13.0}/kiln_ai/adapters/model_adapters/test_saving_adapter_results.py +0 -0
  124. {kiln_ai-0.12.0 → kiln_ai-0.13.0}/kiln_ai/adapters/parsers/__init__.py +0 -0
  125. {kiln_ai-0.12.0 → kiln_ai-0.13.0}/kiln_ai/adapters/parsers/base_parser.py +0 -0
  126. {kiln_ai-0.12.0 → kiln_ai-0.13.0}/kiln_ai/adapters/parsers/json_parser.py +0 -0
  127. {kiln_ai-0.12.0 → kiln_ai-0.13.0}/kiln_ai/adapters/parsers/parser_registry.py +0 -0
  128. {kiln_ai-0.12.0 → kiln_ai-0.13.0}/kiln_ai/adapters/parsers/test_json_parser.py +0 -0
  129. {kiln_ai-0.12.0 → kiln_ai-0.13.0}/kiln_ai/adapters/parsers/test_parser_registry.py +0 -0
  130. {kiln_ai-0.12.0 → kiln_ai-0.13.0}/kiln_ai/adapters/prompt_builders.py +0 -0
  131. {kiln_ai-0.12.0 → kiln_ai-0.13.0}/kiln_ai/adapters/repair/__init__.py +0 -0
  132. {kiln_ai-0.12.0 → kiln_ai-0.13.0}/kiln_ai/adapters/repair/repair_task.py +0 -0
  133. {kiln_ai-0.12.0 → kiln_ai-0.13.0}/kiln_ai/adapters/test_ollama_tools.py +0 -0
  134. {kiln_ai-0.12.0 → kiln_ai-0.13.0}/kiln_ai/adapters/test_prompt_builders.py +0 -0
  135. {kiln_ai-0.12.0 → kiln_ai-0.13.0}/kiln_ai/datamodel/__init__.py +0 -0
  136. {kiln_ai-0.12.0 → kiln_ai-0.13.0}/kiln_ai/datamodel/dataset_filters.py +0 -0
  137. {kiln_ai-0.12.0 → kiln_ai-0.13.0}/kiln_ai/datamodel/dataset_split.py +0 -0
  138. {kiln_ai-0.12.0 → kiln_ai-0.13.0}/kiln_ai/datamodel/eval.py +0 -0
  139. {kiln_ai-0.12.0 → kiln_ai-0.13.0}/kiln_ai/datamodel/finetune.py +0 -0
  140. {kiln_ai-0.12.0 → kiln_ai-0.13.0}/kiln_ai/datamodel/model_cache.py +0 -0
  141. {kiln_ai-0.12.0 → kiln_ai-0.13.0}/kiln_ai/datamodel/project.py +0 -0
  142. {kiln_ai-0.12.0 → kiln_ai-0.13.0}/kiln_ai/datamodel/prompt.py +0 -0
  143. {kiln_ai-0.12.0 → kiln_ai-0.13.0}/kiln_ai/datamodel/prompt_id.py +0 -0
  144. {kiln_ai-0.12.0 → kiln_ai-0.13.0}/kiln_ai/datamodel/registry.py +0 -0
  145. {kiln_ai-0.12.0 → kiln_ai-0.13.0}/kiln_ai/datamodel/strict_mode.py +0 -0
  146. {kiln_ai-0.12.0 → kiln_ai-0.13.0}/kiln_ai/datamodel/task.py +0 -0
  147. {kiln_ai-0.12.0 → kiln_ai-0.13.0}/kiln_ai/datamodel/task_run.py +0 -0
  148. {kiln_ai-0.12.0 → kiln_ai-0.13.0}/kiln_ai/datamodel/test_dataset_filters.py +0 -0
  149. {kiln_ai-0.12.0 → kiln_ai-0.13.0}/kiln_ai/datamodel/test_dataset_split.py +0 -0
  150. {kiln_ai-0.12.0 → kiln_ai-0.13.0}/kiln_ai/datamodel/test_eval_model.py +0 -0
  151. {kiln_ai-0.12.0 → kiln_ai-0.13.0}/kiln_ai/datamodel/test_example_models.py +0 -0
  152. {kiln_ai-0.12.0 → kiln_ai-0.13.0}/kiln_ai/datamodel/test_json_schema.py +0 -0
  153. {kiln_ai-0.12.0 → kiln_ai-0.13.0}/kiln_ai/datamodel/test_model_cache.py +0 -0
  154. {kiln_ai-0.12.0 → kiln_ai-0.13.0}/kiln_ai/datamodel/test_model_perf.py +0 -0
  155. {kiln_ai-0.12.0 → kiln_ai-0.13.0}/kiln_ai/datamodel/test_models.py +0 -0
  156. {kiln_ai-0.12.0 → kiln_ai-0.13.0}/kiln_ai/datamodel/test_nested_save.py +0 -0
  157. {kiln_ai-0.12.0 → kiln_ai-0.13.0}/kiln_ai/datamodel/test_output_rating.py +0 -0
  158. {kiln_ai-0.12.0 → kiln_ai-0.13.0}/kiln_ai/datamodel/test_prompt_id.py +0 -0
  159. {kiln_ai-0.12.0 → kiln_ai-0.13.0}/kiln_ai/datamodel/test_registry.py +0 -0
  160. {kiln_ai-0.12.0 → kiln_ai-0.13.0}/kiln_ai/datamodel/test_task.py +0 -0
  161. {kiln_ai-0.12.0 → kiln_ai-0.13.0}/kiln_ai/utils/__init__.py +0 -0
  162. {kiln_ai-0.12.0 → kiln_ai-0.13.0}/kiln_ai/utils/exhaustive_error.py +0 -0
  163. {kiln_ai-0.12.0 → kiln_ai-0.13.0}/kiln_ai/utils/formatting.py +0 -0
  164. {kiln_ai-0.12.0 → kiln_ai-0.13.0}/kiln_ai/utils/name_generator.py +0 -0
  165. {kiln_ai-0.12.0 → kiln_ai-0.13.0}/kiln_ai/utils/test_config.py +0 -0
  166. {kiln_ai-0.12.0 → kiln_ai-0.13.0}/kiln_ai/utils/test_name_geneator.py +0 -0
  167. {kiln_ai-0.12.0 → kiln_ai-0.13.0}/setup.cfg +0 -0
  168. {kiln_ai-0.12.0 → kiln_ai-0.13.0}/uv.lock +0 -0
@@ -0,0 +1 @@
1
+ 3.13
@@ -1,3 +1,35 @@
1
+ Metadata-Version: 2.4
2
+ Name: kiln-ai
3
+ Version: 0.13.0
4
+ Summary: Kiln AI
5
+ Project-URL: Homepage, https://getkiln.ai
6
+ Project-URL: Repository, https://github.com/Kiln-AI/kiln
7
+ Project-URL: Documentation, https://kiln-ai.github.io/Kiln/kiln_core_docs/kiln_ai.html
8
+ Project-URL: Issues, https://github.com/Kiln-AI/kiln/issues
9
+ Author-email: "Steve Cosman, Chesterfield Laboratories Inc" <scosman@users.noreply.github.com>
10
+ License-File: LICENSE.txt
11
+ Classifier: Intended Audience :: Developers
12
+ Classifier: License :: OSI Approved :: MIT License
13
+ Classifier: Programming Language :: Python :: 3.10
14
+ Classifier: Programming Language :: Python :: 3.11
15
+ Classifier: Programming Language :: Python :: 3.12
16
+ Classifier: Programming Language :: Python :: 3.13
17
+ Requires-Python: >=3.10
18
+ Requires-Dist: boto3>=1.37.10
19
+ Requires-Dist: coverage>=7.6.4
20
+ Requires-Dist: google-cloud-aiplatform>=1.84.0
21
+ Requires-Dist: jsonschema>=4.23.0
22
+ Requires-Dist: litellm>=1.63.5
23
+ Requires-Dist: openai>=1.53.0
24
+ Requires-Dist: pdoc>=15.0.0
25
+ Requires-Dist: pydantic>=2.9.2
26
+ Requires-Dist: pytest-benchmark>=5.1.0
27
+ Requires-Dist: pytest-cov>=6.0.0
28
+ Requires-Dist: pyyaml>=6.0.2
29
+ Requires-Dist: together>=1.4.6
30
+ Requires-Dist: typing-extensions>=4.12.2
31
+ Description-Content-Type: text/markdown
32
+
1
33
  # Kiln AI Core Library
2
34
 
3
35
  <p align="center">
@@ -40,6 +72,7 @@ The library has a [comprehensive set of docs](https://kiln-ai.github.io/Kiln/kil
40
72
  - [Using your Kiln Dataset in a Notebook or Project](#using-your-kiln-dataset-in-a-notebook-or-project)
41
73
  - [Using Kiln Dataset in Pandas](#using-kiln-dataset-in-pandas)
42
74
  - [Building and Running a Kiln Task from Code](#building-and-running-a-kiln-task-from-code)
75
+ - [Adding Custom Model or AI Provider from Code](#adding-custom-model-or-ai-provider-from-code)
43
76
  - [Full API Reference](#full-api-reference)
44
77
 
45
78
  ## Installation
@@ -227,7 +260,7 @@ response = await adapter.invoke(task_input)
227
260
  print(f"Output: {response.output.output}")
228
261
 
229
262
  # Step 4 (optional): Load the task from disk and print the results.
230
- # This will only work if the task was loaded from disk, or you called task.save_to_file() before invoking the adapter (epemerial tasks don't save their result to disk)
263
+ # This will only work if the task was loaded from disk, or you called task.save_to_file() before invoking the adapter (ephemeral tasks don't save their result to disk)
231
264
  task = datamodel.Task.load_from_file(tmp_path / "test_task.kiln")
232
265
  for run in task.runs():
233
266
  print(f"Run: {run.id}")
@@ -236,6 +269,49 @@ for run in task.runs():
236
269
 
237
270
  ```
238
271
 
272
+ ### Adding Custom Model or AI Provider from Code
273
+
274
+ You can add additional AI models and providers to Kiln.
275
+
276
+ See our docs for more information, including how to add these from the UI:
277
+
278
+ - [Custom Models From Existing Providers](https://docs.getkiln.ai/docs/models-and-ai-providers#custom-models-from-existing-providers)
279
+ - [Custom OpenAI Compatible Servers](https://docs.getkiln.ai/docs/models-and-ai-providers#custom-openai-compatible-servers)
280
+
281
+ You can also add these from code. The kiln_ai.utils.Config class helps you manage the Kiln config file (stored at `~/.kiln_settings/config.yaml`):
282
+
283
+ ```python
284
+ # Addding an OpenAI compatible provider
285
+ name = "CustomOllama"
286
+ base_url = "http://localhost:1234/api/v1"
287
+ api_key = "12345"
288
+ providers = Config.shared().openai_compatible_providers or []
289
+ existing_provider = next((p for p in providers if p["name"] == name), None)
290
+ if existing_provider:
291
+ # skip since this already exists
292
+ return
293
+ providers.append(
294
+ {
295
+ "name": name,
296
+ "base_url": base_url,
297
+ "api_key": api_key,
298
+ }
299
+ )
300
+ Config.shared().openai_compatible_providers = providers
301
+ ```
302
+
303
+ ```python
304
+ # Add a custom model ID to an existing provider.
305
+ new_model = "openai::gpt-3.5-turbo"
306
+ custom_model_ids = Config.shared().custom_models
307
+ existing_model = next((m for m in custom_model_ids if m == new_model), None)
308
+ if existing_model:
309
+ # skip since this already exists
310
+ return
311
+ custom_model_ids.append(new_model)
312
+ Config.shared().custom_models = custom_model_ids
313
+ ```
314
+
239
315
  ## Full API Reference
240
316
 
241
317
  The library can do a lot more than the examples we've shown here.
@@ -1,35 +1,3 @@
1
- Metadata-Version: 2.4
2
- Name: kiln-ai
3
- Version: 0.12.0
4
- Summary: Kiln AI
5
- Project-URL: Homepage, https://getkiln.ai
6
- Project-URL: Repository, https://github.com/Kiln-AI/kiln
7
- Project-URL: Documentation, https://kiln-ai.github.io/Kiln/kiln_core_docs/kiln_ai.html
8
- Project-URL: Issues, https://github.com/Kiln-AI/kiln/issues
9
- Author-email: "Steve Cosman, Chesterfield Laboratories Inc" <scosman@users.noreply.github.com>
10
- License-File: LICENSE.txt
11
- Classifier: Intended Audience :: Developers
12
- Classifier: License :: OSI Approved :: MIT License
13
- Classifier: Programming Language :: Python :: 3.10
14
- Classifier: Programming Language :: Python :: 3.11
15
- Classifier: Programming Language :: Python :: 3.12
16
- Requires-Python: >=3.10
17
- Requires-Dist: coverage>=7.6.4
18
- Requires-Dist: jsonschema>=4.23.0
19
- Requires-Dist: langchain-aws>=0.2.4
20
- Requires-Dist: langchain-fireworks>=0.2.5
21
- Requires-Dist: langchain-groq>=0.2.0
22
- Requires-Dist: langchain-ollama>=0.2.2
23
- Requires-Dist: langchain>=0.3.5
24
- Requires-Dist: openai>=1.53.0
25
- Requires-Dist: pdoc>=15.0.0
26
- Requires-Dist: pydantic>=2.9.2
27
- Requires-Dist: pytest-benchmark>=5.1.0
28
- Requires-Dist: pytest-cov>=6.0.0
29
- Requires-Dist: pyyaml>=6.0.2
30
- Requires-Dist: typing-extensions>=4.12.2
31
- Description-Content-Type: text/markdown
32
-
33
1
  # Kiln AI Core Library
34
2
 
35
3
  <p align="center">
@@ -72,6 +40,7 @@ The library has a [comprehensive set of docs](https://kiln-ai.github.io/Kiln/kil
72
40
  - [Using your Kiln Dataset in a Notebook or Project](#using-your-kiln-dataset-in-a-notebook-or-project)
73
41
  - [Using Kiln Dataset in Pandas](#using-kiln-dataset-in-pandas)
74
42
  - [Building and Running a Kiln Task from Code](#building-and-running-a-kiln-task-from-code)
43
+ - [Adding Custom Model or AI Provider from Code](#adding-custom-model-or-ai-provider-from-code)
75
44
  - [Full API Reference](#full-api-reference)
76
45
 
77
46
  ## Installation
@@ -259,7 +228,7 @@ response = await adapter.invoke(task_input)
259
228
  print(f"Output: {response.output.output}")
260
229
 
261
230
  # Step 4 (optional): Load the task from disk and print the results.
262
- # This will only work if the task was loaded from disk, or you called task.save_to_file() before invoking the adapter (epemerial tasks don't save their result to disk)
231
+ # This will only work if the task was loaded from disk, or you called task.save_to_file() before invoking the adapter (ephemeral tasks don't save their result to disk)
263
232
  task = datamodel.Task.load_from_file(tmp_path / "test_task.kiln")
264
233
  for run in task.runs():
265
234
  print(f"Run: {run.id}")
@@ -268,6 +237,49 @@ for run in task.runs():
268
237
 
269
238
  ```
270
239
 
240
+ ### Adding Custom Model or AI Provider from Code
241
+
242
+ You can add additional AI models and providers to Kiln.
243
+
244
+ See our docs for more information, including how to add these from the UI:
245
+
246
+ - [Custom Models From Existing Providers](https://docs.getkiln.ai/docs/models-and-ai-providers#custom-models-from-existing-providers)
247
+ - [Custom OpenAI Compatible Servers](https://docs.getkiln.ai/docs/models-and-ai-providers#custom-openai-compatible-servers)
248
+
249
+ You can also add these from code. The kiln_ai.utils.Config class helps you manage the Kiln config file (stored at `~/.kiln_settings/config.yaml`):
250
+
251
+ ```python
252
+ # Addding an OpenAI compatible provider
253
+ name = "CustomOllama"
254
+ base_url = "http://localhost:1234/api/v1"
255
+ api_key = "12345"
256
+ providers = Config.shared().openai_compatible_providers or []
257
+ existing_provider = next((p for p in providers if p["name"] == name), None)
258
+ if existing_provider:
259
+ # skip since this already exists
260
+ return
261
+ providers.append(
262
+ {
263
+ "name": name,
264
+ "base_url": base_url,
265
+ "api_key": api_key,
266
+ }
267
+ )
268
+ Config.shared().openai_compatible_providers = providers
269
+ ```
270
+
271
+ ```python
272
+ # Add a custom model ID to an existing provider.
273
+ new_model = "openai::gpt-3.5-turbo"
274
+ custom_model_ids = Config.shared().custom_models
275
+ existing_model = next((m for m in custom_model_ids if m == new_model), None)
276
+ if existing_model:
277
+ # skip since this already exists
278
+ return
279
+ custom_model_ids.append(new_model)
280
+ Config.shared().custom_models = custom_model_ids
281
+ ```
282
+
271
283
  ## Full API Reference
272
284
 
273
285
  The library can do a lot more than the examples we've shown here.
@@ -127,6 +127,9 @@
127
127
  </ul>
128
128
 
129
129
  </li>
130
+ <li>
131
+ <a class="function" href="#wrap_task_with_guidance">wrap_task_with_guidance</a>
132
+ </li>
130
133
  </ul>
131
134
 
132
135
 
@@ -333,6 +336,24 @@
333
336
  </span><span id="L-183"><a href="#L-183"><span class="linenos">183</span></a> <span class="n">input_json_schema</span><span class="o">=</span><span class="n">json</span><span class="o">.</span><span class="n">dumps</span><span class="p">(</span><span class="n">DataGenSampleTaskInput</span><span class="o">.</span><span class="n">model_json_schema</span><span class="p">()),</span>
334
337
  </span><span id="L-184"><a href="#L-184"><span class="linenos">184</span></a> <span class="n">output_json_schema</span><span class="o">=</span><span class="n">list_json_schema_for_task</span><span class="p">(</span><span class="n">target_task</span><span class="p">),</span>
335
338
  </span><span id="L-185"><a href="#L-185"><span class="linenos">185</span></a> <span class="p">)</span>
339
+ </span><span id="L-186"><a href="#L-186"><span class="linenos">186</span></a>
340
+ </span><span id="L-187"><a href="#L-187"><span class="linenos">187</span></a>
341
+ </span><span id="L-188"><a href="#L-188"><span class="linenos">188</span></a><span class="k">def</span> <span class="nf">wrap_task_with_guidance</span><span class="p">(</span><span class="n">original_instruction</span><span class="p">:</span> <span class="nb">str</span><span class="p">,</span> <span class="n">guidance</span><span class="p">:</span> <span class="nb">str</span><span class="p">)</span> <span class="o">-&gt;</span> <span class="nb">str</span><span class="p">:</span>
342
+ </span><span id="L-189"><a href="#L-189"><span class="linenos">189</span></a><span class="w"> </span><span class="sd">&quot;&quot;&quot;Wrap the original instruction with human guidance.</span>
343
+ </span><span id="L-190"><a href="#L-190"><span class="linenos">190</span></a>
344
+ </span><span id="L-191"><a href="#L-191"><span class="linenos">191</span></a><span class="sd"> Args:</span>
345
+ </span><span id="L-192"><a href="#L-192"><span class="linenos">192</span></a><span class="sd"> original_instruction: The original instruction to wrap</span>
346
+ </span><span id="L-193"><a href="#L-193"><span class="linenos">193</span></a><span class="sd"> guidance: The human guidance to wrap the instruction with</span>
347
+ </span><span id="L-194"><a href="#L-194"><span class="linenos">194</span></a><span class="sd"> &quot;&quot;&quot;</span>
348
+ </span><span id="L-195"><a href="#L-195"><span class="linenos">195</span></a> <span class="k">return</span> <span class="sa">f</span><span class="s2">&quot;&quot;&quot;</span><span class="si">{</span><span class="n">original_instruction</span><span class="si">}</span>
349
+ </span><span id="L-196"><a href="#L-196"><span class="linenos">196</span></a>
350
+ </span><span id="L-197"><a href="#L-197"><span class="linenos">197</span></a><span class="s2"># Special Instructions</span>
351
+ </span><span id="L-198"><a href="#L-198"><span class="linenos">198</span></a>
352
+ </span><span id="L-199"><a href="#L-199"><span class="linenos">199</span></a><span class="s2">The above instructions are the original instructions for this task. For this execution, we&#39;ve been given additional instructions. Follow both, but prioritize the additional instructions when they conflict. The additional instructions are:</span>
353
+ </span><span id="L-200"><a href="#L-200"><span class="linenos">200</span></a><span class="s2">&lt;additional_instructions&gt;</span>
354
+ </span><span id="L-201"><a href="#L-201"><span class="linenos">201</span></a><span class="si">{</span><span class="n">guidance</span><span class="si">}</span>
355
+ </span><span id="L-202"><a href="#L-202"><span class="linenos">202</span></a><span class="s2">&lt;/additional_instructions&gt;</span>
356
+ </span><span id="L-203"><a href="#L-203"><span class="linenos">203</span></a><span class="s2">&quot;&quot;&quot;</span>
336
357
  </span></pre></div>
337
358
 
338
359
 
@@ -1058,6 +1079,45 @@ method.</p>
1058
1079
 
1059
1080
  </div>
1060
1081
  </section>
1082
+ <section id="wrap_task_with_guidance">
1083
+ <input id="wrap_task_with_guidance-view-source" class="view-source-toggle-state" type="checkbox" aria-hidden="true" tabindex="-1">
1084
+ <div class="attr function">
1085
+
1086
+ <span class="def">def</span>
1087
+ <span class="name">wrap_task_with_guidance</span><span class="signature pdoc-code condensed">(<span class="param"><span class="n">original_instruction</span><span class="p">:</span> <span class="nb">str</span>, </span><span class="param"><span class="n">guidance</span><span class="p">:</span> <span class="nb">str</span></span><span class="return-annotation">) -> <span class="nb">str</span>:</span></span>
1088
+
1089
+ <label class="view-source-button" for="wrap_task_with_guidance-view-source"><span>View Source</span></label>
1090
+
1091
+ </div>
1092
+ <a class="headerlink" href="#wrap_task_with_guidance"></a>
1093
+ <div class="pdoc-code codehilite"><pre><span></span><span id="wrap_task_with_guidance-189"><a href="#wrap_task_with_guidance-189"><span class="linenos">189</span></a><span class="k">def</span> <span class="nf">wrap_task_with_guidance</span><span class="p">(</span><span class="n">original_instruction</span><span class="p">:</span> <span class="nb">str</span><span class="p">,</span> <span class="n">guidance</span><span class="p">:</span> <span class="nb">str</span><span class="p">)</span> <span class="o">-&gt;</span> <span class="nb">str</span><span class="p">:</span>
1094
+ </span><span id="wrap_task_with_guidance-190"><a href="#wrap_task_with_guidance-190"><span class="linenos">190</span></a><span class="w"> </span><span class="sd">&quot;&quot;&quot;Wrap the original instruction with human guidance.</span>
1095
+ </span><span id="wrap_task_with_guidance-191"><a href="#wrap_task_with_guidance-191"><span class="linenos">191</span></a>
1096
+ </span><span id="wrap_task_with_guidance-192"><a href="#wrap_task_with_guidance-192"><span class="linenos">192</span></a><span class="sd"> Args:</span>
1097
+ </span><span id="wrap_task_with_guidance-193"><a href="#wrap_task_with_guidance-193"><span class="linenos">193</span></a><span class="sd"> original_instruction: The original instruction to wrap</span>
1098
+ </span><span id="wrap_task_with_guidance-194"><a href="#wrap_task_with_guidance-194"><span class="linenos">194</span></a><span class="sd"> guidance: The human guidance to wrap the instruction with</span>
1099
+ </span><span id="wrap_task_with_guidance-195"><a href="#wrap_task_with_guidance-195"><span class="linenos">195</span></a><span class="sd"> &quot;&quot;&quot;</span>
1100
+ </span><span id="wrap_task_with_guidance-196"><a href="#wrap_task_with_guidance-196"><span class="linenos">196</span></a> <span class="k">return</span> <span class="sa">f</span><span class="s2">&quot;&quot;&quot;</span><span class="si">{</span><span class="n">original_instruction</span><span class="si">}</span>
1101
+ </span><span id="wrap_task_with_guidance-197"><a href="#wrap_task_with_guidance-197"><span class="linenos">197</span></a>
1102
+ </span><span id="wrap_task_with_guidance-198"><a href="#wrap_task_with_guidance-198"><span class="linenos">198</span></a><span class="s2"># Special Instructions</span>
1103
+ </span><span id="wrap_task_with_guidance-199"><a href="#wrap_task_with_guidance-199"><span class="linenos">199</span></a>
1104
+ </span><span id="wrap_task_with_guidance-200"><a href="#wrap_task_with_guidance-200"><span class="linenos">200</span></a><span class="s2">The above instructions are the original instructions for this task. For this execution, we&#39;ve been given additional instructions. Follow both, but prioritize the additional instructions when they conflict. The additional instructions are:</span>
1105
+ </span><span id="wrap_task_with_guidance-201"><a href="#wrap_task_with_guidance-201"><span class="linenos">201</span></a><span class="s2">&lt;additional_instructions&gt;</span>
1106
+ </span><span id="wrap_task_with_guidance-202"><a href="#wrap_task_with_guidance-202"><span class="linenos">202</span></a><span class="si">{</span><span class="n">guidance</span><span class="si">}</span>
1107
+ </span><span id="wrap_task_with_guidance-203"><a href="#wrap_task_with_guidance-203"><span class="linenos">203</span></a><span class="s2">&lt;/additional_instructions&gt;</span>
1108
+ </span><span id="wrap_task_with_guidance-204"><a href="#wrap_task_with_guidance-204"><span class="linenos">204</span></a><span class="s2">&quot;&quot;&quot;</span>
1109
+ </span></pre></div>
1110
+
1111
+
1112
+ <div class="docstring"><p>Wrap the original instruction with human guidance.</p>
1113
+
1114
+ <p>Args:
1115
+ original_instruction: The original instruction to wrap
1116
+ guidance: The human guidance to wrap the instruction with</p>
1117
+ </div>
1118
+
1119
+
1120
+ </section>
1061
1121
  </main>
1062
1122
  <script>
1063
1123
  function escapeHTML(html) {