vellum-ai 1.4.1__py3-none-any.whl → 1.5.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 (64) hide show
  1. vellum/__init__.py +14 -0
  2. vellum/client/__init__.py +3 -0
  3. vellum/client/core/client_wrapper.py +2 -2
  4. vellum/client/reference.md +160 -0
  5. vellum/client/resources/__init__.py +2 -0
  6. vellum/client/resources/integrations/__init__.py +4 -0
  7. vellum/client/resources/integrations/client.py +260 -0
  8. vellum/client/resources/integrations/raw_client.py +267 -0
  9. vellum/client/types/__init__.py +12 -0
  10. vellum/client/types/components_schemas_composio_execute_tool_request.py +5 -0
  11. vellum/client/types/components_schemas_composio_execute_tool_response.py +5 -0
  12. vellum/client/types/components_schemas_composio_tool_definition.py +5 -0
  13. vellum/client/types/composio_execute_tool_request.py +24 -0
  14. vellum/client/types/composio_execute_tool_response.py +24 -0
  15. vellum/client/types/composio_tool_definition.py +26 -0
  16. vellum/client/types/vellum_error_code_enum.py +2 -0
  17. vellum/client/types/vellum_sdk_error.py +1 -0
  18. vellum/client/types/workflow_event_error.py +1 -0
  19. vellum/resources/integrations/__init__.py +3 -0
  20. vellum/resources/integrations/client.py +3 -0
  21. vellum/resources/integrations/raw_client.py +3 -0
  22. vellum/types/components_schemas_composio_execute_tool_request.py +3 -0
  23. vellum/types/components_schemas_composio_execute_tool_response.py +3 -0
  24. vellum/types/components_schemas_composio_tool_definition.py +3 -0
  25. vellum/types/composio_execute_tool_request.py +3 -0
  26. vellum/types/composio_execute_tool_response.py +3 -0
  27. vellum/types/composio_tool_definition.py +3 -0
  28. vellum/workflows/constants.py +4 -0
  29. vellum/workflows/emitters/base.py +8 -0
  30. vellum/workflows/emitters/vellum_emitter.py +10 -0
  31. vellum/workflows/inputs/dataset_row.py +2 -2
  32. vellum/workflows/nodes/bases/base.py +12 -1
  33. vellum/workflows/nodes/displayable/bases/base_prompt_node/node.py +6 -0
  34. vellum/workflows/nodes/displayable/bases/inline_prompt_node/node.py +16 -2
  35. vellum/workflows/nodes/displayable/final_output_node/node.py +59 -0
  36. vellum/workflows/nodes/displayable/final_output_node/tests/test_node.py +40 -1
  37. vellum/workflows/nodes/displayable/tool_calling_node/node.py +3 -0
  38. vellum/workflows/nodes/displayable/tool_calling_node/tests/test_utils.py +64 -0
  39. vellum/workflows/nodes/displayable/tool_calling_node/utils.py +30 -41
  40. vellum/workflows/runner/runner.py +132 -110
  41. vellum/workflows/tests/test_dataset_row.py +29 -0
  42. vellum/workflows/types/core.py +13 -2
  43. vellum/workflows/types/definition.py +13 -1
  44. vellum/workflows/utils/functions.py +69 -27
  45. vellum/workflows/utils/tests/test_functions.py +50 -6
  46. vellum/workflows/vellum_client.py +7 -1
  47. vellum/workflows/workflows/base.py +26 -4
  48. vellum/workflows/workflows/tests/test_base_workflow.py +54 -0
  49. {vellum_ai-1.4.1.dist-info → vellum_ai-1.5.0.dist-info}/METADATA +1 -1
  50. {vellum_ai-1.4.1.dist-info → vellum_ai-1.5.0.dist-info}/RECORD +63 -42
  51. vellum_ai-1.5.0.dist-info/entry_points.txt +4 -0
  52. vellum_cli/tests/test_pull.py +1 -0
  53. vellum_cli/tests/test_push.py +2 -0
  54. vellum_ee/assets/node-definitions.json +483 -0
  55. vellum_ee/scripts/generate_node_definitions.py +89 -0
  56. vellum_ee/workflows/display/nodes/vellum/inline_prompt_node.py +1 -3
  57. vellum_ee/workflows/display/nodes/vellum/tests/test_final_output_node.py +78 -0
  58. vellum_ee/workflows/display/tests/workflow_serialization/test_basic_tool_calling_node_inline_workflow_serialization.py +5 -0
  59. vellum_ee/workflows/display/tests/workflow_serialization/test_basic_tool_calling_node_serialization.py +5 -0
  60. vellum_ee/workflows/display/types.py +3 -0
  61. vellum_ee/workflows/display/workflows/base_workflow_display.py +6 -0
  62. vellum_ai-1.4.1.dist-info/entry_points.txt +0 -3
  63. {vellum_ai-1.4.1.dist-info → vellum_ai-1.5.0.dist-info}/LICENSE +0 -0
  64. {vellum_ai-1.4.1.dist-info → vellum_ai-1.5.0.dist-info}/WHEEL +0 -0
vellum/__init__.py CHANGED
@@ -68,9 +68,15 @@ from .client.types import (
68
68
  CodeResourceDefinition,
69
69
  CompilePromptDeploymentExpandMetaRequest,
70
70
  CompilePromptMeta,
71
+ ComponentsSchemasComposioExecuteToolRequest,
72
+ ComponentsSchemasComposioExecuteToolResponse,
73
+ ComponentsSchemasComposioToolDefinition,
71
74
  ComponentsSchemasPdfSearchResultMetaSource,
72
75
  ComponentsSchemasPdfSearchResultMetaSourceRequest,
73
76
  ComponentsSchemasPromptVersionBuildConfigSandbox,
77
+ ComposioExecuteToolRequest,
78
+ ComposioExecuteToolResponse,
79
+ ComposioToolDefinition,
74
80
  ConditionCombinator,
75
81
  ConditionalNodeResult,
76
82
  ConditionalNodeResultData,
@@ -694,6 +700,7 @@ from .resources import (
694
700
  documents,
695
701
  events,
696
702
  folder_entities,
703
+ integrations,
697
704
  metric_definitions,
698
705
  ml_models,
699
706
  organizations,
@@ -777,9 +784,15 @@ __all__ = [
777
784
  "CodeResourceDefinition",
778
785
  "CompilePromptDeploymentExpandMetaRequest",
779
786
  "CompilePromptMeta",
787
+ "ComponentsSchemasComposioExecuteToolRequest",
788
+ "ComponentsSchemasComposioExecuteToolResponse",
789
+ "ComponentsSchemasComposioToolDefinition",
780
790
  "ComponentsSchemasPdfSearchResultMetaSource",
781
791
  "ComponentsSchemasPdfSearchResultMetaSourceRequest",
782
792
  "ComponentsSchemasPromptVersionBuildConfigSandbox",
793
+ "ComposioExecuteToolRequest",
794
+ "ComposioExecuteToolResponse",
795
+ "ComposioToolDefinition",
783
796
  "ConditionCombinator",
784
797
  "ConditionalNodeResult",
785
798
  "ConditionalNodeResultData",
@@ -1401,6 +1414,7 @@ __all__ = [
1401
1414
  "documents",
1402
1415
  "events",
1403
1416
  "folder_entities",
1417
+ "integrations",
1404
1418
  "metric_definitions",
1405
1419
  "ml_models",
1406
1420
  "organizations",
vellum/client/__init__.py CHANGED
@@ -16,6 +16,7 @@ from .resources.document_indexes.client import AsyncDocumentIndexesClient, Docum
16
16
  from .resources.documents.client import AsyncDocumentsClient, DocumentsClient
17
17
  from .resources.events.client import AsyncEventsClient, EventsClient
18
18
  from .resources.folder_entities.client import AsyncFolderEntitiesClient, FolderEntitiesClient
19
+ from .resources.integrations.client import AsyncIntegrationsClient, IntegrationsClient
19
20
  from .resources.metric_definitions.client import AsyncMetricDefinitionsClient, MetricDefinitionsClient
20
21
  from .resources.ml_models.client import AsyncMlModelsClient, MlModelsClient
21
22
  from .resources.organizations.client import AsyncOrganizationsClient, OrganizationsClient
@@ -129,6 +130,7 @@ class Vellum:
129
130
  timeout=_defaulted_timeout,
130
131
  )
131
132
  self._raw_client = RawVellum(client_wrapper=self._client_wrapper)
133
+ self.integrations = IntegrationsClient(client_wrapper=self._client_wrapper)
132
134
  self.events = EventsClient(client_wrapper=self._client_wrapper)
133
135
  self.ad_hoc = AdHocClient(client_wrapper=self._client_wrapper)
134
136
  self.container_images = ContainerImagesClient(client_wrapper=self._client_wrapper)
@@ -1003,6 +1005,7 @@ class AsyncVellum:
1003
1005
  timeout=_defaulted_timeout,
1004
1006
  )
1005
1007
  self._raw_client = AsyncRawVellum(client_wrapper=self._client_wrapper)
1008
+ self.integrations = AsyncIntegrationsClient(client_wrapper=self._client_wrapper)
1006
1009
  self.events = AsyncEventsClient(client_wrapper=self._client_wrapper)
1007
1010
  self.ad_hoc = AsyncAdHocClient(client_wrapper=self._client_wrapper)
1008
1011
  self.container_images = AsyncContainerImagesClient(client_wrapper=self._client_wrapper)
@@ -27,10 +27,10 @@ class BaseClientWrapper:
27
27
 
28
28
  def get_headers(self) -> typing.Dict[str, str]:
29
29
  headers: typing.Dict[str, str] = {
30
- "User-Agent": "vellum-ai/1.4.1",
30
+ "User-Agent": "vellum-ai/1.5.0",
31
31
  "X-Fern-Language": "Python",
32
32
  "X-Fern-SDK-Name": "vellum-ai",
33
- "X-Fern-SDK-Version": "1.4.1",
33
+ "X-Fern-SDK-Version": "1.5.0",
34
34
  **(self.get_custom_headers() or {}),
35
35
  }
36
36
  if self._api_version is not None:
@@ -1261,6 +1261,166 @@ client.submit_workflow_execution_actuals(
1261
1261
  </dl>
1262
1262
 
1263
1263
 
1264
+ </dd>
1265
+ </dl>
1266
+ </details>
1267
+
1268
+ ## Integrations
1269
+ <details><summary><code>client.integrations.<a href="src/vellum/resources/integrations/client.py">retrieve_integration_tool_definition</a>(...)</code></summary>
1270
+ <dl>
1271
+ <dd>
1272
+
1273
+ #### 🔌 Usage
1274
+
1275
+ <dl>
1276
+ <dd>
1277
+
1278
+ <dl>
1279
+ <dd>
1280
+
1281
+ ```python
1282
+ from vellum import Vellum
1283
+
1284
+ client = Vellum(
1285
+ api_version="YOUR_API_VERSION",
1286
+ api_key="YOUR_API_KEY",
1287
+ )
1288
+ client.integrations.retrieve_integration_tool_definition(
1289
+ integration="integration",
1290
+ provider="provider",
1291
+ tool_name="tool_name",
1292
+ )
1293
+
1294
+ ```
1295
+ </dd>
1296
+ </dl>
1297
+ </dd>
1298
+ </dl>
1299
+
1300
+ #### ⚙️ Parameters
1301
+
1302
+ <dl>
1303
+ <dd>
1304
+
1305
+ <dl>
1306
+ <dd>
1307
+
1308
+ **integration:** `str` — The integration name
1309
+
1310
+ </dd>
1311
+ </dl>
1312
+
1313
+ <dl>
1314
+ <dd>
1315
+
1316
+ **provider:** `str` — The integration provider name
1317
+
1318
+ </dd>
1319
+ </dl>
1320
+
1321
+ <dl>
1322
+ <dd>
1323
+
1324
+ **tool_name:** `str` — The tool's unique name, as specified by the integration provider
1325
+
1326
+ </dd>
1327
+ </dl>
1328
+
1329
+ <dl>
1330
+ <dd>
1331
+
1332
+ **request_options:** `typing.Optional[RequestOptions]` — Request-specific configuration.
1333
+
1334
+ </dd>
1335
+ </dl>
1336
+ </dd>
1337
+ </dl>
1338
+
1339
+
1340
+ </dd>
1341
+ </dl>
1342
+ </details>
1343
+
1344
+ <details><summary><code>client.integrations.<a href="src/vellum/resources/integrations/client.py">execute_integration_tool</a>(...)</code></summary>
1345
+ <dl>
1346
+ <dd>
1347
+
1348
+ #### 🔌 Usage
1349
+
1350
+ <dl>
1351
+ <dd>
1352
+
1353
+ <dl>
1354
+ <dd>
1355
+
1356
+ ```python
1357
+ from vellum import Vellum
1358
+
1359
+ client = Vellum(
1360
+ api_version="YOUR_API_VERSION",
1361
+ api_key="YOUR_API_KEY",
1362
+ )
1363
+ client.integrations.execute_integration_tool(
1364
+ integration="integration",
1365
+ provider="provider",
1366
+ tool_name="tool_name",
1367
+ arguments={"arguments": {"key": "value"}},
1368
+ )
1369
+
1370
+ ```
1371
+ </dd>
1372
+ </dl>
1373
+ </dd>
1374
+ </dl>
1375
+
1376
+ #### ⚙️ Parameters
1377
+
1378
+ <dl>
1379
+ <dd>
1380
+
1381
+ <dl>
1382
+ <dd>
1383
+
1384
+ **integration:** `str` — The integration name
1385
+
1386
+ </dd>
1387
+ </dl>
1388
+
1389
+ <dl>
1390
+ <dd>
1391
+
1392
+ **provider:** `str` — The integration provider name
1393
+
1394
+ </dd>
1395
+ </dl>
1396
+
1397
+ <dl>
1398
+ <dd>
1399
+
1400
+ **tool_name:** `str` — The tool's unique name, as specified by the integration provider
1401
+
1402
+ </dd>
1403
+ </dl>
1404
+
1405
+ <dl>
1406
+ <dd>
1407
+
1408
+ **arguments:** `typing.Dict[str, typing.Optional[typing.Any]]`
1409
+
1410
+ </dd>
1411
+ </dl>
1412
+
1413
+ <dl>
1414
+ <dd>
1415
+
1416
+ **request_options:** `typing.Optional[RequestOptions]` — Request-specific configuration.
1417
+
1418
+ </dd>
1419
+ </dl>
1420
+ </dd>
1421
+ </dl>
1422
+
1423
+
1264
1424
  </dd>
1265
1425
  </dl>
1266
1426
  </details>
@@ -10,6 +10,7 @@ from . import (
10
10
  documents,
11
11
  events,
12
12
  folder_entities,
13
+ integrations,
13
14
  metric_definitions,
14
15
  ml_models,
15
16
  organizations,
@@ -45,6 +46,7 @@ __all__ = [
45
46
  "documents",
46
47
  "events",
47
48
  "folder_entities",
49
+ "integrations",
48
50
  "metric_definitions",
49
51
  "ml_models",
50
52
  "organizations",
@@ -0,0 +1,4 @@
1
+ # This file was auto-generated by Fern from our API Definition.
2
+
3
+ # isort: skip_file
4
+
@@ -0,0 +1,260 @@
1
+ # This file was auto-generated by Fern from our API Definition.
2
+
3
+ import typing
4
+
5
+ from ...core.client_wrapper import AsyncClientWrapper, SyncClientWrapper
6
+ from ...core.request_options import RequestOptions
7
+ from ...types.components_schemas_composio_execute_tool_response import ComponentsSchemasComposioExecuteToolResponse
8
+ from ...types.components_schemas_composio_tool_definition import ComponentsSchemasComposioToolDefinition
9
+ from .raw_client import AsyncRawIntegrationsClient, RawIntegrationsClient
10
+
11
+ # this is used as the default value for optional parameters
12
+ OMIT = typing.cast(typing.Any, ...)
13
+
14
+
15
+ class IntegrationsClient:
16
+ def __init__(self, *, client_wrapper: SyncClientWrapper):
17
+ self._raw_client = RawIntegrationsClient(client_wrapper=client_wrapper)
18
+
19
+ @property
20
+ def _client_wrapper(self) -> SyncClientWrapper:
21
+ return self._raw_client._client_wrapper
22
+
23
+ @property
24
+ def with_raw_response(self) -> RawIntegrationsClient:
25
+ """
26
+ Retrieves a raw implementation of this client that returns raw responses.
27
+
28
+ Returns
29
+ -------
30
+ RawIntegrationsClient
31
+ """
32
+ return self._raw_client
33
+
34
+ def retrieve_integration_tool_definition(
35
+ self,
36
+ integration: str,
37
+ provider: str,
38
+ tool_name: str,
39
+ *,
40
+ request_options: typing.Optional[RequestOptions] = None,
41
+ ) -> ComponentsSchemasComposioToolDefinition:
42
+ """
43
+ Parameters
44
+ ----------
45
+ integration : str
46
+ The integration name
47
+
48
+ provider : str
49
+ The integration provider name
50
+
51
+ tool_name : str
52
+ The tool's unique name, as specified by the integration provider
53
+
54
+ request_options : typing.Optional[RequestOptions]
55
+ Request-specific configuration.
56
+
57
+ Returns
58
+ -------
59
+ ComponentsSchemasComposioToolDefinition
60
+
61
+
62
+ Examples
63
+ --------
64
+ from vellum import Vellum
65
+
66
+ client = Vellum(
67
+ api_version="YOUR_API_VERSION",
68
+ api_key="YOUR_API_KEY",
69
+ )
70
+ client.integrations.retrieve_integration_tool_definition(
71
+ integration="integration",
72
+ provider="provider",
73
+ tool_name="tool_name",
74
+ )
75
+ """
76
+ _response = self._raw_client.retrieve_integration_tool_definition(
77
+ integration, provider, tool_name, request_options=request_options
78
+ )
79
+ return _response.data
80
+
81
+ def execute_integration_tool(
82
+ self,
83
+ integration: str,
84
+ provider: str,
85
+ tool_name: str,
86
+ *,
87
+ arguments: typing.Dict[str, typing.Optional[typing.Any]],
88
+ request_options: typing.Optional[RequestOptions] = None,
89
+ ) -> ComponentsSchemasComposioExecuteToolResponse:
90
+ """
91
+ Parameters
92
+ ----------
93
+ integration : str
94
+ The integration name
95
+
96
+ provider : str
97
+ The integration provider name
98
+
99
+ tool_name : str
100
+ The tool's unique name, as specified by the integration provider
101
+
102
+ arguments : typing.Dict[str, typing.Optional[typing.Any]]
103
+
104
+ request_options : typing.Optional[RequestOptions]
105
+ Request-specific configuration.
106
+
107
+ Returns
108
+ -------
109
+ ComponentsSchemasComposioExecuteToolResponse
110
+
111
+
112
+ Examples
113
+ --------
114
+ from vellum import Vellum
115
+
116
+ client = Vellum(
117
+ api_version="YOUR_API_VERSION",
118
+ api_key="YOUR_API_KEY",
119
+ )
120
+ client.integrations.execute_integration_tool(
121
+ integration="integration",
122
+ provider="provider",
123
+ tool_name="tool_name",
124
+ arguments={"arguments": {"key": "value"}},
125
+ )
126
+ """
127
+ _response = self._raw_client.execute_integration_tool(
128
+ integration, provider, tool_name, arguments=arguments, request_options=request_options
129
+ )
130
+ return _response.data
131
+
132
+
133
+ class AsyncIntegrationsClient:
134
+ def __init__(self, *, client_wrapper: AsyncClientWrapper):
135
+ self._raw_client = AsyncRawIntegrationsClient(client_wrapper=client_wrapper)
136
+
137
+ @property
138
+ def with_raw_response(self) -> AsyncRawIntegrationsClient:
139
+ """
140
+ Retrieves a raw implementation of this client that returns raw responses.
141
+
142
+ Returns
143
+ -------
144
+ AsyncRawIntegrationsClient
145
+ """
146
+ return self._raw_client
147
+
148
+ async def retrieve_integration_tool_definition(
149
+ self,
150
+ integration: str,
151
+ provider: str,
152
+ tool_name: str,
153
+ *,
154
+ request_options: typing.Optional[RequestOptions] = None,
155
+ ) -> ComponentsSchemasComposioToolDefinition:
156
+ """
157
+ Parameters
158
+ ----------
159
+ integration : str
160
+ The integration name
161
+
162
+ provider : str
163
+ The integration provider name
164
+
165
+ tool_name : str
166
+ The tool's unique name, as specified by the integration provider
167
+
168
+ request_options : typing.Optional[RequestOptions]
169
+ Request-specific configuration.
170
+
171
+ Returns
172
+ -------
173
+ ComponentsSchemasComposioToolDefinition
174
+
175
+
176
+ Examples
177
+ --------
178
+ import asyncio
179
+
180
+ from vellum import AsyncVellum
181
+
182
+ client = AsyncVellum(
183
+ api_version="YOUR_API_VERSION",
184
+ api_key="YOUR_API_KEY",
185
+ )
186
+
187
+
188
+ async def main() -> None:
189
+ await client.integrations.retrieve_integration_tool_definition(
190
+ integration="integration",
191
+ provider="provider",
192
+ tool_name="tool_name",
193
+ )
194
+
195
+
196
+ asyncio.run(main())
197
+ """
198
+ _response = await self._raw_client.retrieve_integration_tool_definition(
199
+ integration, provider, tool_name, request_options=request_options
200
+ )
201
+ return _response.data
202
+
203
+ async def execute_integration_tool(
204
+ self,
205
+ integration: str,
206
+ provider: str,
207
+ tool_name: str,
208
+ *,
209
+ arguments: typing.Dict[str, typing.Optional[typing.Any]],
210
+ request_options: typing.Optional[RequestOptions] = None,
211
+ ) -> ComponentsSchemasComposioExecuteToolResponse:
212
+ """
213
+ Parameters
214
+ ----------
215
+ integration : str
216
+ The integration name
217
+
218
+ provider : str
219
+ The integration provider name
220
+
221
+ tool_name : str
222
+ The tool's unique name, as specified by the integration provider
223
+
224
+ arguments : typing.Dict[str, typing.Optional[typing.Any]]
225
+
226
+ request_options : typing.Optional[RequestOptions]
227
+ Request-specific configuration.
228
+
229
+ Returns
230
+ -------
231
+ ComponentsSchemasComposioExecuteToolResponse
232
+
233
+
234
+ Examples
235
+ --------
236
+ import asyncio
237
+
238
+ from vellum import AsyncVellum
239
+
240
+ client = AsyncVellum(
241
+ api_version="YOUR_API_VERSION",
242
+ api_key="YOUR_API_KEY",
243
+ )
244
+
245
+
246
+ async def main() -> None:
247
+ await client.integrations.execute_integration_tool(
248
+ integration="integration",
249
+ provider="provider",
250
+ tool_name="tool_name",
251
+ arguments={"arguments": {"key": "value"}},
252
+ )
253
+
254
+
255
+ asyncio.run(main())
256
+ """
257
+ _response = await self._raw_client.execute_integration_tool(
258
+ integration, provider, tool_name, arguments=arguments, request_options=request_options
259
+ )
260
+ return _response.data