kiln-ai 0.22.0__py3-none-any.whl → 0.22.1__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.
Potentially problematic release.
This version of kiln-ai might be problematic. Click here for more details.
- kiln_ai/adapters/model_adapters/litellm_adapter.py +6 -2
- kiln_ai/adapters/vector_store/lancedb_adapter.py +24 -70
- kiln_ai/adapters/vector_store/lancedb_helpers.py +101 -0
- kiln_ai/adapters/vector_store/test_lancedb_adapter.py +9 -16
- kiln_ai/adapters/vector_store/test_lancedb_helpers.py +142 -0
- kiln_ai/adapters/vector_store_loaders/__init__.py +0 -0
- kiln_ai/adapters/vector_store_loaders/test_lancedb_loader.py +282 -0
- kiln_ai/adapters/vector_store_loaders/test_vector_store_loader.py +544 -0
- kiln_ai/adapters/vector_store_loaders/vector_store_loader.py +91 -0
- kiln_ai/datamodel/tool_id.py +13 -0
- kiln_ai/tools/base_tool.py +18 -3
- kiln_ai/tools/kiln_task_tool.py +6 -2
- kiln_ai/tools/mcp_server_tool.py +6 -4
- kiln_ai/tools/rag_tools.py +7 -3
- {kiln_ai-0.22.0.dist-info → kiln_ai-0.22.1.dist-info}/METADATA +77 -1
- {kiln_ai-0.22.0.dist-info → kiln_ai-0.22.1.dist-info}/RECORD +18 -12
- {kiln_ai-0.22.0.dist-info → kiln_ai-0.22.1.dist-info}/WHEEL +0 -0
- {kiln_ai-0.22.0.dist-info → kiln_ai-0.22.1.dist-info}/licenses/LICENSE.txt +0 -0
kiln_ai/tools/kiln_task_tool.py
CHANGED
|
@@ -7,7 +7,11 @@ from kiln_ai.datamodel.external_tool_server import ExternalToolServer
|
|
|
7
7
|
from kiln_ai.datamodel.task import TaskRunConfig
|
|
8
8
|
from kiln_ai.datamodel.task_output import DataSource, DataSourceType
|
|
9
9
|
from kiln_ai.datamodel.tool_id import ToolId
|
|
10
|
-
from kiln_ai.tools.base_tool import
|
|
10
|
+
from kiln_ai.tools.base_tool import (
|
|
11
|
+
KilnToolInterface,
|
|
12
|
+
ToolCallContext,
|
|
13
|
+
ToolCallDefinition,
|
|
14
|
+
)
|
|
11
15
|
from kiln_ai.utils.project_utils import project_from_id
|
|
12
16
|
|
|
13
17
|
|
|
@@ -48,7 +52,7 @@ class KilnTaskTool(KilnToolInterface):
|
|
|
48
52
|
async def description(self) -> str:
|
|
49
53
|
return self._description
|
|
50
54
|
|
|
51
|
-
async def toolcall_definition(self) ->
|
|
55
|
+
async def toolcall_definition(self) -> ToolCallDefinition:
|
|
52
56
|
"""Generate OpenAI-compatible tool definition."""
|
|
53
57
|
return {
|
|
54
58
|
"type": "function",
|
kiln_ai/tools/mcp_server_tool.py
CHANGED
|
@@ -1,11 +1,13 @@
|
|
|
1
|
-
from typing import Any, Dict
|
|
2
|
-
|
|
3
1
|
from mcp.types import CallToolResult, TextContent
|
|
4
2
|
from mcp.types import Tool as MCPTool
|
|
5
3
|
|
|
6
4
|
from kiln_ai.datamodel.external_tool_server import ExternalToolServer
|
|
7
5
|
from kiln_ai.datamodel.tool_id import MCP_REMOTE_TOOL_ID_PREFIX, ToolId
|
|
8
|
-
from kiln_ai.tools.base_tool import
|
|
6
|
+
from kiln_ai.tools.base_tool import (
|
|
7
|
+
KilnToolInterface,
|
|
8
|
+
ToolCallContext,
|
|
9
|
+
ToolCallDefinition,
|
|
10
|
+
)
|
|
9
11
|
from kiln_ai.tools.mcp_session_manager import MCPSessionManager
|
|
10
12
|
|
|
11
13
|
|
|
@@ -26,7 +28,7 @@ class MCPServerTool(KilnToolInterface):
|
|
|
26
28
|
await self._load_tool_properties()
|
|
27
29
|
return self._description
|
|
28
30
|
|
|
29
|
-
async def toolcall_definition(self) ->
|
|
31
|
+
async def toolcall_definition(self) -> ToolCallDefinition:
|
|
30
32
|
"""Generate OpenAI-compatible tool definition."""
|
|
31
33
|
await self._load_tool_properties()
|
|
32
34
|
return {
|
kiln_ai/tools/rag_tools.py
CHANGED
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
from functools import cached_property
|
|
2
|
-
from typing import
|
|
2
|
+
from typing import List, TypedDict
|
|
3
3
|
|
|
4
4
|
from pydantic import BaseModel
|
|
5
5
|
|
|
@@ -18,7 +18,11 @@ from kiln_ai.datamodel.project import Project
|
|
|
18
18
|
from kiln_ai.datamodel.rag import RagConfig
|
|
19
19
|
from kiln_ai.datamodel.tool_id import ToolId
|
|
20
20
|
from kiln_ai.datamodel.vector_store import VectorStoreConfig, VectorStoreType
|
|
21
|
-
from kiln_ai.tools.base_tool import
|
|
21
|
+
from kiln_ai.tools.base_tool import (
|
|
22
|
+
KilnToolInterface,
|
|
23
|
+
ToolCallContext,
|
|
24
|
+
ToolCallDefinition,
|
|
25
|
+
)
|
|
22
26
|
from kiln_ai.utils.exhaustive_error import raise_exhaustive_enum_error
|
|
23
27
|
|
|
24
28
|
|
|
@@ -119,7 +123,7 @@ class RagTool(KilnToolInterface):
|
|
|
119
123
|
async def description(self) -> str:
|
|
120
124
|
return self._description
|
|
121
125
|
|
|
122
|
-
async def toolcall_definition(self) ->
|
|
126
|
+
async def toolcall_definition(self) -> ToolCallDefinition:
|
|
123
127
|
"""Return the OpenAI-compatible tool definition for this tool."""
|
|
124
128
|
return {
|
|
125
129
|
"type": "function",
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Metadata-Version: 2.4
|
|
2
2
|
Name: kiln-ai
|
|
3
|
-
Version: 0.22.
|
|
3
|
+
Version: 0.22.1
|
|
4
4
|
Summary: Kiln AI
|
|
5
5
|
Project-URL: Homepage, https://kiln.tech
|
|
6
6
|
Project-URL: Repository, https://github.com/Kiln-AI/kiln
|
|
@@ -85,6 +85,10 @@ The library has a [comprehensive set of docs](https://kiln-ai.github.io/Kiln/kil
|
|
|
85
85
|
- [Building and Running a Kiln Task from Code](#building-and-running-a-kiln-task-from-code)
|
|
86
86
|
- [Tagging Task Runs Programmatically](#tagging-task-runs-programmatically)
|
|
87
87
|
- [Adding Custom Model or AI Provider from Code](#adding-custom-model-or-ai-provider-from-code)
|
|
88
|
+
- [Taking Kiln RAG to production](#taking-kiln-rag-to-production)
|
|
89
|
+
- [Load a LlamaIndex Vector Store](#load-a-llamaindex-vector-store)
|
|
90
|
+
- [Example: LanceDB Cloud](#example-lancedb-cloud)
|
|
91
|
+
- [Deploy RAG without LlamaIndex](#deploy-rag-without-llamaindex)t
|
|
88
92
|
- [Full API Reference](#full-api-reference)
|
|
89
93
|
|
|
90
94
|
## Installation
|
|
@@ -352,6 +356,78 @@ custom_model_ids.append(new_model)
|
|
|
352
356
|
Config.shared().custom_models = custom_model_ids
|
|
353
357
|
```
|
|
354
358
|
|
|
359
|
+
## Taking Kiln RAG to production
|
|
360
|
+
|
|
361
|
+
When you're ready to deploy your RAG system, you can export your processed documents to any vector store supported by LlamaIndex. This allows you to use your Kiln-configured chunking and embedding settings in production.
|
|
362
|
+
|
|
363
|
+
### Load a LlamaIndex Vector Store
|
|
364
|
+
|
|
365
|
+
Kiln provides a `VectorStoreLoader` that yields your processed document chunks as LlamaIndex `TextNode` objects. These nodes contain the same metadata, chunking and embedding data as your Kiln Search Tool configuration.
|
|
366
|
+
|
|
367
|
+
```py
|
|
368
|
+
from kiln_ai.datamodel import Project
|
|
369
|
+
from kiln_ai.datamodel.rag import RagConfig
|
|
370
|
+
from kiln_ai.adapters.vector_store_loaders import VectorStoreLoader
|
|
371
|
+
|
|
372
|
+
# Load your project and RAG configuration
|
|
373
|
+
project = Project.load_from_file("path/to/your/project.kiln")
|
|
374
|
+
rag_config = RagConfig.from_id_and_parent_path("rag-config-id", project.path)
|
|
375
|
+
|
|
376
|
+
# Create the loader
|
|
377
|
+
loader = VectorStoreLoader(project=project, rag_config=rag_config)
|
|
378
|
+
|
|
379
|
+
# Export chunks to any LlamaIndex vector store
|
|
380
|
+
async for batch in loader.iter_llama_index_nodes(batch_size=10):
|
|
381
|
+
# Insert into your chosen vector store
|
|
382
|
+
# Examples: LanceDB, Pinecone, Chroma, Qdrant, etc.
|
|
383
|
+
pass
|
|
384
|
+
```
|
|
385
|
+
|
|
386
|
+
**Supported Vector Stores:** LlamaIndex supports 20+ vector stores including LanceDB, Pinecone, Weaviate, Chroma, Qdrant, and more. See the [full list](https://developers.llamaindex.ai/python/framework/module_guides/storing/vector_stores/).
|
|
387
|
+
|
|
388
|
+
### Example: LanceDB Cloud
|
|
389
|
+
|
|
390
|
+
Internally Kiln uses LanceDB. By using LanceDB cloud you'll get the same indexing behaviour as in app.
|
|
391
|
+
|
|
392
|
+
Here's a complete example using LanceDB Cloud:
|
|
393
|
+
|
|
394
|
+
```py
|
|
395
|
+
from kiln_ai.datamodel import Project
|
|
396
|
+
from kiln_ai.datamodel.rag import RagConfig
|
|
397
|
+
from kiln_ai.datamodel.vector_store import VectorStoreConfig
|
|
398
|
+
from kiln_ai.adapters.vector_store_loaders import VectorStoreLoader
|
|
399
|
+
from kiln_ai.adapters.vector_store.lancedb_adapter import lancedb_construct_from_config
|
|
400
|
+
|
|
401
|
+
# Load configurations
|
|
402
|
+
project = Project.load_from_file("path/to/your/project.kiln")
|
|
403
|
+
rag_config = RagConfig.from_id_and_parent_path("rag-config-id", project.path)
|
|
404
|
+
vector_store_config = VectorStoreConfig.from_id_and_parent_path(
|
|
405
|
+
rag_config.vector_store_config_id, project.path,
|
|
406
|
+
)
|
|
407
|
+
|
|
408
|
+
# Create LanceDB vector store
|
|
409
|
+
lancedb_store = lancedb_construct_from_config(
|
|
410
|
+
vector_store_config=vector_store_config,
|
|
411
|
+
uri="db://my-project",
|
|
412
|
+
api_key="sk_...",
|
|
413
|
+
region="us-east-1",
|
|
414
|
+
table_name="my-documents", # Created automatically
|
|
415
|
+
)
|
|
416
|
+
|
|
417
|
+
# Export and insert your documents
|
|
418
|
+
loader = VectorStoreLoader(project=project, rag_config=rag_config)
|
|
419
|
+
async for batch in loader.iter_llama_index_nodes(batch_size=100):
|
|
420
|
+
await lancedb_store.async_add(batch)
|
|
421
|
+
|
|
422
|
+
print("Documents successfully exported to LanceDB!")
|
|
423
|
+
```
|
|
424
|
+
|
|
425
|
+
After export, query your data using [LlamaIndex](https://developers.llamaindex.ai/python/framework-api-reference/storage/vector_store/lancedb/) or the [LanceDB client](https://lancedb.github.io/lancedb/).
|
|
426
|
+
|
|
427
|
+
### Deploy RAG without LlamaIndex
|
|
428
|
+
|
|
429
|
+
While Kiln is designed for deploying to LlamaIndex, you don't need to use it. The `iter_llama_index_nodes` returns a `TextNode` object which includes all the data you need to build a RAG index in any stack: embedding, text, document name, chunk ID, etc.
|
|
430
|
+
|
|
355
431
|
## Full API Reference
|
|
356
432
|
|
|
357
433
|
The library can do a lot more than the examples we've shown here.
|
|
@@ -77,7 +77,7 @@ kiln_ai/adapters/fine_tune/together_finetune.py,sha256=KpJBZt0NBNUNLsVEYYC4Dzob1
|
|
|
77
77
|
kiln_ai/adapters/fine_tune/vertex_finetune.py,sha256=Ik6Ov711-oruJnMHpVZTPimWJY2W_JnfdKIdR2djGrc,8545
|
|
78
78
|
kiln_ai/adapters/model_adapters/__init__.py,sha256=m5GRtOHwVVvp_XDOss8c1X3NFf1wQQlC2eBgI4tXQhM,212
|
|
79
79
|
kiln_ai/adapters/model_adapters/base_adapter.py,sha256=6aktTD3vSTLxVYVpKK0IhhLpjQCHgvBFSpo8T2hJ6To,14749
|
|
80
|
-
kiln_ai/adapters/model_adapters/litellm_adapter.py,sha256
|
|
80
|
+
kiln_ai/adapters/model_adapters/litellm_adapter.py,sha256=-i8zOQzCMW-JZJ8l3a4j4A6TLGQIr42EFSJf9D67tKI,30035
|
|
81
81
|
kiln_ai/adapters/model_adapters/litellm_config.py,sha256=zOQEkYKeoQ0FIbxTkyyoaGtaQiB9eYK3IuyUgqSwzLE,485
|
|
82
82
|
kiln_ai/adapters/model_adapters/test_base_adapter.py,sha256=jCsBnhScr1jurugm80Bf_7w26A7RMb2uIUW8MndN4p8,22191
|
|
83
83
|
kiln_ai/adapters/model_adapters/test_litellm_adapter.py,sha256=3k8LZJ4ouQzT3l5-jRuYYxOk06S8Pc1ogsyuHvw-ggI,37351
|
|
@@ -105,11 +105,17 @@ kiln_ai/adapters/repair/repair_task.py,sha256=ziOKNo2dT0a4ggLIDk5ETfSTbuxn_xgI60
|
|
|
105
105
|
kiln_ai/adapters/repair/test_repair_task.py,sha256=GLrEZsVt5Z-62NanVEtIvnI57YlS9GyhyNAr3ezW57o,8770
|
|
106
106
|
kiln_ai/adapters/vector_store/__init__.py,sha256=AbpHGcgLb-kRsJGnwFEktk7uzpZOCcBY74-YBdrKVGs,1
|
|
107
107
|
kiln_ai/adapters/vector_store/base_vector_store_adapter.py,sha256=_Ba6iJEpuQplji3LBkkfcy9edkxCF3pUaKMS4PeAuPY,2524
|
|
108
|
-
kiln_ai/adapters/vector_store/lancedb_adapter.py,sha256=
|
|
108
|
+
kiln_ai/adapters/vector_store/lancedb_adapter.py,sha256=TuuV5x0MiIQmTKJQo-St6Dxd0I5yKgVfbVqrQEiZqbQ,14049
|
|
109
|
+
kiln_ai/adapters/vector_store/lancedb_helpers.py,sha256=fMzXA3OW5c0s2TAsrxKghWYitQbevR0G1lvhChVvAog,3841
|
|
109
110
|
kiln_ai/adapters/vector_store/test_base_vector_store.py,sha256=t-qCfYipfBRqRs5J6e0VaqVvcRRL7YZuCqOOG8lOViA,5811
|
|
110
|
-
kiln_ai/adapters/vector_store/test_lancedb_adapter.py,sha256=
|
|
111
|
+
kiln_ai/adapters/vector_store/test_lancedb_adapter.py,sha256=R-wZsJTm8nF4TWCyBkWWgKkIkXy11xCqpCsyAY_0B-M,63339
|
|
112
|
+
kiln_ai/adapters/vector_store/test_lancedb_helpers.py,sha256=P8MKttQEKSh-sXW5gAiuAL4CLmlWCJiMd9B8g2m1kOc,4559
|
|
111
113
|
kiln_ai/adapters/vector_store/test_vector_store_registry.py,sha256=w0hpXte0XnxbkWYFGWfFuu33GgQUPcY2HE7habpZ_C4,6809
|
|
112
114
|
kiln_ai/adapters/vector_store/vector_store_registry.py,sha256=jsE1OS964Ai7cJ5tlrp_PZuxEImHQSSR8DGAqEgDavc,1123
|
|
115
|
+
kiln_ai/adapters/vector_store_loaders/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
116
|
+
kiln_ai/adapters/vector_store_loaders/test_lancedb_loader.py,sha256=CJTcdRuuKjz9Pq65OFV9CzbZi48sB0uBsmxOt3FGmlQ,9088
|
|
117
|
+
kiln_ai/adapters/vector_store_loaders/test_vector_store_loader.py,sha256=axOAQQg_URkXRZObbJlQ1AQTSsgLPlO5EjSVkHqy-Mo,17905
|
|
118
|
+
kiln_ai/adapters/vector_store_loaders/vector_store_loader.py,sha256=_lW_cLId0b8Huv80Psl_zCh9XtE0S6wvlPRV2zfdAMU,3505
|
|
113
119
|
kiln_ai/datamodel/__init__.py,sha256=uxLwjHxWTbYw9LVRJtK02cUrbDZCKyfYxgYJxrOjFoA,2091
|
|
114
120
|
kiln_ai/datamodel/basemodel.py,sha256=GZhZkDF6y9xN3Gn4h63FE3tEjcyGqoVJrC5QNfBXpsQ,32076
|
|
115
121
|
kiln_ai/datamodel/chunk.py,sha256=LfBjaJEsPLBXfsFEofVLAfaISmfvsvzAmmCYVtosV7U,5535
|
|
@@ -157,14 +163,14 @@ kiln_ai/datamodel/test_registry.py,sha256=Y3dReO13QwGBaW9p7qUiTc0H-WaJ3pgapaN35k
|
|
|
157
163
|
kiln_ai/datamodel/test_task.py,sha256=POxcfZErop8IXS5nVVA09BmpQLIQkeMnPHDhVlAJNxM,11928
|
|
158
164
|
kiln_ai/datamodel/test_tool_id.py,sha256=MKSAb_SwPc4_dYcS9aoKJf3VatBL7FDIgixTsDQ3bos,17015
|
|
159
165
|
kiln_ai/datamodel/test_vector_store.py,sha256=Qg7BNMPoG3Egj_nUoWvnxf43r99Q8Y9c7ra9k2M9X68,11629
|
|
160
|
-
kiln_ai/datamodel/tool_id.py,sha256=
|
|
166
|
+
kiln_ai/datamodel/tool_id.py,sha256=OJ98ZMfczTq8gBap35W0xHz8eSCBcShn-K0N9NmU_6w,5233
|
|
161
167
|
kiln_ai/datamodel/vector_store.py,sha256=VugXwAzBDOIn3ZznwGbYbka7RVPTlwJMxVf9wUakEIs,4937
|
|
162
168
|
kiln_ai/tools/__init__.py,sha256=BaonknPnB9Z0QZligayytgrd8lqKXVOxX357YLW4Qw8,193
|
|
163
|
-
kiln_ai/tools/base_tool.py,sha256=
|
|
164
|
-
kiln_ai/tools/kiln_task_tool.py,sha256=
|
|
165
|
-
kiln_ai/tools/mcp_server_tool.py,sha256=
|
|
169
|
+
kiln_ai/tools/base_tool.py,sha256=cUHQMrydDb4RxzujdJ6MqngsCyyfQQwsEixIy7g-3gE,3167
|
|
170
|
+
kiln_ai/tools/kiln_task_tool.py,sha256=XD-aLPbVozR_HbhErLgVEFAa6PR736djaxP5I9nq9Mk,5583
|
|
171
|
+
kiln_ai/tools/mcp_server_tool.py,sha256=KGFj9zPuI6h1K9ht2f0j1vcAX-sbaX_OZnXHErQY4Kc,3312
|
|
166
172
|
kiln_ai/tools/mcp_session_manager.py,sha256=27l6GxQw84zmJw_Y6fJeH5OT9og3xtiS87UmA3yOv7c,10730
|
|
167
|
-
kiln_ai/tools/rag_tools.py,sha256=
|
|
173
|
+
kiln_ai/tools/rag_tools.py,sha256=3t0Lt6OSY89EZaSzi177csUIyP2BxfpDcpL-7BbgFAg,5849
|
|
168
174
|
kiln_ai/tools/test_base_tools.py,sha256=L0hziYZ2poMhF9_NOwycXS0WBdw41VF1cEN8kemGZtg,6542
|
|
169
175
|
kiln_ai/tools/test_kiln_task_tool.py,sha256=t5eMUDKSQZwRySLRcCKod_KkrAZL7IZ8bb3mcOxAlqU,19405
|
|
170
176
|
kiln_ai/tools/test_mcp_server_tool.py,sha256=Kcd0jEhPwNg4EbTYB4drN0OHUXKYal6pSrXhP4QFo54,16920
|
|
@@ -207,7 +213,7 @@ kiln_ai/utils/test_uuid.py,sha256=g5CX_IAu5y-iNXQaFOoPrbr0hEmqmWPMSM_U4vw64Zc,41
|
|
|
207
213
|
kiln_ai/utils/test_validation.py,sha256=FOCRj8OgePIi_YjkfbFC4wr_HeQAa1lK5e6uRoUWZgE,20275
|
|
208
214
|
kiln_ai/utils/uuid.py,sha256=v46fW_xjN7gEyRM5yNv68azp6_QnmcTe-fHpvecpNYQ,315
|
|
209
215
|
kiln_ai/utils/validation.py,sha256=s6_eRprkjZhA00M7UDfCkhIz2gk-DBroOpW0b6_Xolw,3005
|
|
210
|
-
kiln_ai-0.22.
|
|
211
|
-
kiln_ai-0.22.
|
|
212
|
-
kiln_ai-0.22.
|
|
213
|
-
kiln_ai-0.22.
|
|
216
|
+
kiln_ai-0.22.1.dist-info/METADATA,sha256=fHXPMoa6vpIJQezN8fycep3pyALcXUVPRRWsw3mO0S4,17295
|
|
217
|
+
kiln_ai-0.22.1.dist-info/WHEEL,sha256=qtCwoSJWgHk21S1Kb4ihdzI2rlJ1ZKaIurTj_ngOhyQ,87
|
|
218
|
+
kiln_ai-0.22.1.dist-info/licenses/LICENSE.txt,sha256=_NA5pnTYgRRr4qH6lE3X-TuZJ8iRcMUi5ASoGr-lEx8,1209
|
|
219
|
+
kiln_ai-0.22.1.dist-info/RECORD,,
|
|
File without changes
|
|
File without changes
|