vellum-ai 1.4.2__py3-none-any.whl → 1.5.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.
Files changed (65) 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/descriptors/utils.py +3 -0
  29. vellum/workflows/emitters/vellum_emitter.py +4 -1
  30. vellum/workflows/integrations/__init__.py +5 -0
  31. vellum/workflows/integrations/tests/__init__.py +0 -0
  32. vellum/workflows/integrations/tests/test_vellum_integration_service.py +225 -0
  33. vellum/workflows/integrations/vellum_integration_service.py +96 -0
  34. vellum/workflows/nodes/bases/base.py +24 -3
  35. vellum/workflows/nodes/core/inline_subworkflow_node/node.py +5 -0
  36. vellum/workflows/nodes/displayable/bases/inline_prompt_node/node.py +2 -5
  37. vellum/workflows/nodes/displayable/tool_calling_node/utils.py +38 -4
  38. vellum/workflows/runner/runner.py +132 -110
  39. vellum/workflows/utils/functions.py +29 -18
  40. vellum/workflows/utils/tests/test_functions.py +40 -0
  41. vellum/workflows/workflows/base.py +23 -5
  42. vellum/workflows/workflows/tests/test_base_workflow.py +99 -0
  43. {vellum_ai-1.4.2.dist-info → vellum_ai-1.5.1.dist-info}/METADATA +1 -1
  44. {vellum_ai-1.4.2.dist-info → vellum_ai-1.5.1.dist-info}/RECORD +64 -41
  45. vellum_ai-1.5.1.dist-info/entry_points.txt +4 -0
  46. vellum_ee/assets/node-definitions.json +833 -0
  47. vellum_ee/scripts/generate_node_definitions.py +89 -0
  48. vellum_ee/workflows/display/nodes/base_node_display.py +6 -3
  49. vellum_ee/workflows/display/nodes/vellum/api_node.py +4 -7
  50. vellum_ee/workflows/display/nodes/vellum/inline_subworkflow_node.py +19 -5
  51. vellum_ee/workflows/display/nodes/vellum/retry_node.py +2 -3
  52. vellum_ee/workflows/display/nodes/vellum/search_node.py +3 -6
  53. vellum_ee/workflows/display/nodes/vellum/templating_node.py +1 -1
  54. vellum_ee/workflows/display/nodes/vellum/tests/test_utils.py +2 -3
  55. vellum_ee/workflows/display/nodes/vellum/try_node.py +3 -4
  56. vellum_ee/workflows/display/tests/workflow_serialization/generic_nodes/test_attributes_serialization.py +5 -11
  57. vellum_ee/workflows/display/tests/workflow_serialization/generic_nodes/test_outputs_serialization.py +1 -1
  58. vellum_ee/workflows/display/tests/workflow_serialization/generic_nodes/test_ports_serialization.py +1 -1
  59. vellum_ee/workflows/display/types.py +3 -3
  60. vellum_ee/workflows/display/utils/expressions.py +10 -3
  61. vellum_ee/workflows/display/utils/vellum.py +9 -2
  62. vellum_ee/workflows/display/workflows/base_workflow_display.py +2 -2
  63. vellum_ai-1.4.2.dist-info/entry_points.txt +0 -3
  64. {vellum_ai-1.4.2.dist-info → vellum_ai-1.5.1.dist-info}/LICENSE +0 -0
  65. {vellum_ai-1.4.2.dist-info → vellum_ai-1.5.1.dist-info}/WHEEL +0 -0
@@ -0,0 +1,833 @@
1
+ {
2
+ "nodes": [
3
+ {
4
+ "id": "55e74c90-9901-42fd-92c3-2dd0c5fd4876",
5
+ "display_data": {
6
+ "position": {
7
+ "x": 0.0,
8
+ "y": 0.0
9
+ },
10
+ "comment": {
11
+ "value": "\n Used to execute an API call. This node exists to be backwards compatible with Vellum's API Node, and for most cases,\n you should extend from `BaseAPINode` directly.\n\n url: str - The URL to send the request to.\n method: APIRequestMethod - The HTTP method to use for the request.\n data: Optional[str] - The data to send in the request body.\n json: Optional[\"JsonObject\"] - The JSON data to send in the request body.\n headers: Optional[Dict[str, Union[str, VellumSecret]]] - The headers to send in the request.\n\n authorization_type: Optional[AuthorizationType] = None - The type of authorization to use for the API call.\n api_key_header_key: Optional[str] = None - The header key to use for the API key authorization.\n bearer_token_value: Optional[Union[str, VellumSecretReference]] = None - The bearer token value to use\n for the bearer token authorization.\n ",
12
+ "expanded": true
13
+ }
14
+ },
15
+ "base": {
16
+ "name": "BaseAPINode",
17
+ "module": [
18
+ "vellum",
19
+ "workflows",
20
+ "nodes",
21
+ "displayable",
22
+ "bases",
23
+ "api_node",
24
+ "node"
25
+ ]
26
+ },
27
+ "definition": {
28
+ "name": "APINode",
29
+ "module": [
30
+ "vellum",
31
+ "workflows",
32
+ "nodes",
33
+ "displayable",
34
+ "api_node",
35
+ "node"
36
+ ]
37
+ },
38
+ "trigger": {
39
+ "id": "c2aa7c83-7eba-4996-acb4-85cd4f5bbf58",
40
+ "merge_behavior": "AWAIT_ANY"
41
+ },
42
+ "ports": [
43
+ {
44
+ "id": "f165a94f-33f7-4c09-8896-9e683a39e11c",
45
+ "name": "default",
46
+ "type": "DEFAULT"
47
+ }
48
+ ],
49
+ "attributes": [
50
+ {
51
+ "id": "aacb36f1-c980-460d-8002-43bb57128e05",
52
+ "name": "timeout",
53
+ "value": {
54
+ "type": "CONSTANT_VALUE",
55
+ "value": {
56
+ "type": "JSON",
57
+ "value": null
58
+ }
59
+ }
60
+ }
61
+ ]
62
+ },
63
+ {
64
+ "id": "43b3514f-3490-47d6-9b78-bbc4736f0159",
65
+ "display_data": {
66
+ "position": {
67
+ "x": 0.0,
68
+ "y": 0.0
69
+ },
70
+ "comment": {
71
+ "value": "\n Used to execute an arbitrary script. This node exists to be backwards compatible with\n Vellum's Code Execution Node, and for most cases, you should extend from `BaseNode` directly.\n\n filepath: str - The path to the script to execute.\n code_inputs: EntityInputsInterface - The inputs for the custom script.\n runtime: CodeExecutionRuntime = \"PYTHON_3_12\" - The runtime to use for the custom script.\n packages: Optional[Sequence[CodeExecutionPackage]] = None - The packages to use for the custom script.\n request_options: Optional[RequestOptions] = None - The request options to use for the custom script.\n ",
72
+ "expanded": true
73
+ }
74
+ },
75
+ "base": {
76
+ "name": "BaseNode",
77
+ "module": [
78
+ "vellum",
79
+ "workflows",
80
+ "nodes",
81
+ "bases",
82
+ "base"
83
+ ]
84
+ },
85
+ "definition": {
86
+ "name": "CodeExecutionNode",
87
+ "module": [
88
+ "vellum",
89
+ "workflows",
90
+ "nodes",
91
+ "displayable",
92
+ "code_execution_node",
93
+ "node"
94
+ ]
95
+ },
96
+ "trigger": {
97
+ "id": "fb1b8b44-5e7a-481b-a163-96e7e08219d5",
98
+ "merge_behavior": "AWAIT_ANY"
99
+ },
100
+ "ports": [
101
+ {
102
+ "id": "e66138d5-e50d-40d8-bc27-00545ce5e283",
103
+ "name": "default",
104
+ "type": "DEFAULT"
105
+ }
106
+ ]
107
+ },
108
+ {
109
+ "id": "5d3c60ce-7acf-4d8b-a68d-65cc0b561ac5",
110
+ "display_data": {
111
+ "position": {
112
+ "x": 0.0,
113
+ "y": 0.0
114
+ },
115
+ "comment": {
116
+ "value": "\n Used to conditionally determine which port to invoke next. This node exists to be backwards compatible with\n Vellum's Conditional Node, and for most cases, you should extend `BaseNode.Ports` directly.\n ",
117
+ "expanded": true
118
+ }
119
+ },
120
+ "base": {
121
+ "name": "BaseNode",
122
+ "module": [
123
+ "vellum",
124
+ "workflows",
125
+ "nodes",
126
+ "bases",
127
+ "base"
128
+ ]
129
+ },
130
+ "definition": {
131
+ "name": "ConditionalNode",
132
+ "module": [
133
+ "vellum",
134
+ "workflows",
135
+ "nodes",
136
+ "displayable",
137
+ "conditional_node",
138
+ "node"
139
+ ]
140
+ },
141
+ "trigger": {
142
+ "id": "2b5617b4-5cc0-4f9a-9369-24982e2cd8c0",
143
+ "merge_behavior": "AWAIT_ANY"
144
+ },
145
+ "ports": []
146
+ },
147
+ {
148
+ "id": "92e401f1-110f-4edc-8bb0-cad879e1ea08",
149
+ "display_data": {
150
+ "position": {
151
+ "x": 0.0,
152
+ "y": 0.0
153
+ },
154
+ "comment": {
155
+ "value": "\n Used to raise an error to reject the surrounding Workflow.\n\n error: Union[str, VellumError] - The error to raise.\n ",
156
+ "expanded": true
157
+ }
158
+ },
159
+ "base": {
160
+ "name": "BaseNode",
161
+ "module": [
162
+ "vellum",
163
+ "workflows",
164
+ "nodes",
165
+ "bases",
166
+ "base"
167
+ ]
168
+ },
169
+ "definition": {
170
+ "name": "ErrorNode",
171
+ "module": [
172
+ "vellum",
173
+ "workflows",
174
+ "nodes",
175
+ "core",
176
+ "error_node",
177
+ "node"
178
+ ]
179
+ },
180
+ "trigger": {
181
+ "id": "c1b30829-76af-4d99-bf83-b030c551a7cf",
182
+ "merge_behavior": "AWAIT_ATTRIBUTES"
183
+ },
184
+ "ports": []
185
+ },
186
+ {
187
+ "id": "55d0f8e9-acbd-4d33-85ba-c7527348f62a",
188
+ "display_data": {
189
+ "position": {
190
+ "x": 0.0,
191
+ "y": 0.0
192
+ },
193
+ "comment": {
194
+ "value": "\n Used to execute a Prompt defined inline.\n\n prompt_inputs: EntityInputsInterface - The inputs for the Prompt\n ml_model: str - Either the ML Model's UUID or its name.\n blocks: List[PromptBlock] - The blocks that make up the Prompt\n functions: Optional[List[FunctionDefinition]] - The functions to include in the Prompt\n parameters: PromptParameters - The parameters for the Prompt\n expand_meta: Optional[AdHocExpandMeta] - Expandable execution fields to include in the response\n request_options: Optional[RequestOptions] - The request options to use for the Prompt Execution\n ",
195
+ "expanded": true
196
+ }
197
+ },
198
+ "base": {
199
+ "name": "BaseInlinePromptNode",
200
+ "module": [
201
+ "vellum",
202
+ "workflows",
203
+ "nodes",
204
+ "displayable",
205
+ "bases",
206
+ "inline_prompt_node",
207
+ "node"
208
+ ]
209
+ },
210
+ "definition": {
211
+ "name": "InlinePromptNode",
212
+ "module": [
213
+ "vellum",
214
+ "workflows",
215
+ "nodes",
216
+ "displayable",
217
+ "inline_prompt_node",
218
+ "node"
219
+ ]
220
+ },
221
+ "trigger": {
222
+ "id": "d14ff235-9e0a-4496-9fd4-ae4cf39fa518",
223
+ "merge_behavior": "AWAIT_ANY"
224
+ },
225
+ "ports": [
226
+ {
227
+ "id": "66943bf3-3c32-42da-9d4f-faab541f4285",
228
+ "name": "default",
229
+ "type": "DEFAULT"
230
+ }
231
+ ],
232
+ "outputs": [
233
+ {
234
+ "id": "af7d71b0-227c-4957-8234-d1dc76e62554",
235
+ "name": "json",
236
+ "type": "JSON",
237
+ "value": null
238
+ },
239
+ {
240
+ "id": "b283959e-b719-49d2-ab9a-15c804ab52e8",
241
+ "name": "text",
242
+ "type": "STRING",
243
+ "value": null
244
+ },
245
+ {
246
+ "id": "73c02172-2bd1-482d-b7fe-acc67135f7d0",
247
+ "name": "results",
248
+ "type": "ARRAY",
249
+ "value": null
250
+ }
251
+ ],
252
+ "attributes": [
253
+ {
254
+ "id": "e2455e77-82ad-460f-8735-10d427d4d448",
255
+ "name": "functions",
256
+ "value": {
257
+ "type": "CONSTANT_VALUE",
258
+ "value": {
259
+ "type": "JSON",
260
+ "value": null
261
+ }
262
+ }
263
+ },
264
+ {
265
+ "id": "bd29a2cd-4965-4741-a3c2-9d0c753efdd9",
266
+ "name": "parameters",
267
+ "value": {
268
+ "type": "CONSTANT_VALUE",
269
+ "value": {
270
+ "type": "JSON",
271
+ "value": {
272
+ "stop": [],
273
+ "temperature": 0.0,
274
+ "max_tokens": 4096.0,
275
+ "top_p": 1.0,
276
+ "top_k": 0.0,
277
+ "frequency_penalty": 0.0,
278
+ "presence_penalty": 0.0,
279
+ "logit_bias": null,
280
+ "custom_parameters": null
281
+ }
282
+ }
283
+ }
284
+ },
285
+ {
286
+ "id": "76f813d6-0025-4733-9d03-848c49c93d66",
287
+ "name": "ml_model",
288
+ "value": {
289
+ "type": "CONSTANT_VALUE",
290
+ "value": {
291
+ "type": "JSON",
292
+ "value": null
293
+ }
294
+ }
295
+ },
296
+ {
297
+ "id": "1216ae32-e051-4c48-bd7d-69f2a4527f12",
298
+ "name": "blocks",
299
+ "value": {
300
+ "type": "CONSTANT_VALUE",
301
+ "value": {
302
+ "type": "JSON",
303
+ "value": null
304
+ }
305
+ }
306
+ },
307
+ {
308
+ "id": "b66dc0b6-9e4d-4bbb-9b3c-b85e14071de0",
309
+ "name": "prompt_inputs",
310
+ "value": {
311
+ "type": "CONSTANT_VALUE",
312
+ "value": {
313
+ "type": "JSON",
314
+ "value": null
315
+ }
316
+ }
317
+ }
318
+ ]
319
+ },
320
+ {
321
+ "id": "9d62e15c-a640-4a65-b52c-ce0cbaa23a71",
322
+ "display_data": {
323
+ "position": {
324
+ "x": 0.0,
325
+ "y": 0.0
326
+ },
327
+ "comment": {
328
+ "value": "\n Used to execute a Subworkflow defined inline.\n\n subworkflow: Type[\"BaseWorkflow[InputsType, InnerStateType]\"] - The Subworkflow to execute\n subworkflow_inputs: ClassVar[EntityInputsInterface] = {}\n ",
329
+ "expanded": true
330
+ }
331
+ },
332
+ "base": {
333
+ "name": "BaseNode",
334
+ "module": [
335
+ "vellum",
336
+ "workflows",
337
+ "nodes",
338
+ "bases",
339
+ "base"
340
+ ]
341
+ },
342
+ "definition": {
343
+ "name": "InlineSubworkflowNode",
344
+ "module": [
345
+ "vellum",
346
+ "workflows",
347
+ "nodes",
348
+ "core",
349
+ "inline_subworkflow_node",
350
+ "node"
351
+ ]
352
+ },
353
+ "trigger": {
354
+ "id": "d7c92c2f-d761-43e7-a7e6-34fd74b3b8b3",
355
+ "merge_behavior": "AWAIT_ATTRIBUTES"
356
+ },
357
+ "ports": [
358
+ {
359
+ "id": "bb1e4a4f-60e7-4519-b127-80183008a3f7",
360
+ "name": "default",
361
+ "type": "DEFAULT"
362
+ }
363
+ ]
364
+ },
365
+ {
366
+ "id": "2dded52f-a449-48fd-b58f-f59801c24bae",
367
+ "display_data": {
368
+ "position": {
369
+ "x": 0.0,
370
+ "y": 0.0
371
+ },
372
+ "comment": {
373
+ "value": "\n Used to execute a Metric Definition and surface a float output representing the score.\n\n metric_definition: Union[UUID, str] - Either the Metric Definition's UUID or its name.\n metric_inputs: EntityInputsInterface - The inputs for the Metric\n release_tag: str - The release tag to use for the Metric\n request_options: Optional[RequestOptions] - The request options to use for the Metric\n ",
374
+ "expanded": true
375
+ }
376
+ },
377
+ "base": {
378
+ "name": "BaseNode",
379
+ "module": [
380
+ "vellum",
381
+ "workflows",
382
+ "nodes",
383
+ "bases",
384
+ "base"
385
+ ]
386
+ },
387
+ "definition": {
388
+ "name": "GuardrailNode",
389
+ "module": [
390
+ "vellum",
391
+ "workflows",
392
+ "nodes",
393
+ "displayable",
394
+ "guardrail_node",
395
+ "node"
396
+ ]
397
+ },
398
+ "trigger": {
399
+ "id": "1560db25-a416-4ce6-b175-d7bdfbdb27d8",
400
+ "merge_behavior": "AWAIT_ANY"
401
+ },
402
+ "ports": [
403
+ {
404
+ "id": "94bc1403-af9f-4539-8208-1bbafbf09564",
405
+ "name": "default",
406
+ "type": "DEFAULT"
407
+ }
408
+ ]
409
+ },
410
+ {
411
+ "id": "7426f273-a43d-4448-a2d2-76d0ee0d069c",
412
+ "display_data": {
413
+ "position": {
414
+ "x": 0.0,
415
+ "y": 0.0
416
+ },
417
+ "comment": {
418
+ "value": "\n Used to merge the control flow of multiple nodes into a single node. This node exists to be backwards compatible\n with Vellum's Merge Node, and for most cases, you should extend from `BaseNode.Trigger` directly.\n ",
419
+ "expanded": true
420
+ }
421
+ },
422
+ "base": {
423
+ "name": "BaseNode",
424
+ "module": [
425
+ "vellum",
426
+ "workflows",
427
+ "nodes",
428
+ "bases",
429
+ "base"
430
+ ]
431
+ },
432
+ "definition": {
433
+ "name": "MergeNode",
434
+ "module": [
435
+ "vellum",
436
+ "workflows",
437
+ "nodes",
438
+ "displayable",
439
+ "merge_node",
440
+ "node"
441
+ ]
442
+ },
443
+ "trigger": {
444
+ "id": "3a91ba25-0dd0-4bc8-9f6d-c54ea4dccf64",
445
+ "merge_behavior": "AWAIT_ANY"
446
+ },
447
+ "ports": [
448
+ {
449
+ "id": "50515fe3-4be8-43b9-8fc5-d52c1250115e",
450
+ "name": "default",
451
+ "type": "DEFAULT"
452
+ }
453
+ ]
454
+ },
455
+ {
456
+ "id": "16b8d82d-458d-48d9-b57e-a447b19f311a",
457
+ "display_data": {
458
+ "position": {
459
+ "x": 0.0,
460
+ "y": 0.0
461
+ },
462
+ "comment": {
463
+ "value": "\n A no-op Node purely used to display a note in the Vellum UI.\n ",
464
+ "expanded": true
465
+ }
466
+ },
467
+ "base": {
468
+ "name": "BaseNode",
469
+ "module": [
470
+ "vellum",
471
+ "workflows",
472
+ "nodes",
473
+ "bases",
474
+ "base"
475
+ ]
476
+ },
477
+ "definition": {
478
+ "name": "NoteNode",
479
+ "module": [
480
+ "vellum",
481
+ "workflows",
482
+ "nodes",
483
+ "displayable",
484
+ "note_node",
485
+ "node"
486
+ ]
487
+ },
488
+ "trigger": {
489
+ "id": "2b6907b0-1adc-41e7-9d5b-3c6ccd9b973a",
490
+ "merge_behavior": "AWAIT_ANY"
491
+ },
492
+ "ports": [
493
+ {
494
+ "id": "22dac74c-7ad6-4a6f-97ae-0034124721ce",
495
+ "name": "default",
496
+ "type": "DEFAULT"
497
+ }
498
+ ]
499
+ },
500
+ {
501
+ "id": "035842e0-34ed-43af-97de-a706e40912ae",
502
+ "label": "Tool Calling Node",
503
+ "display_data": {
504
+ "position": {
505
+ "x": 0.0,
506
+ "y": 0.0
507
+ },
508
+ "comment": {
509
+ "value": "\n A Node that dynamically invokes the provided functions to the underlying Prompt\n\n Attributes:\n ml_model: str - The model to use for tool calling (e.g., \"gpt-4o-mini\")\n blocks: List[PromptBlock] - The prompt blocks to use (same format as InlinePromptNode)\n functions: List[Tool] - The functions that can be called\n prompt_inputs: Optional[EntityInputsInterface] - Mapping of input variable names to values\n parameters: PromptParameters - The parameters for the Prompt\n max_prompt_iterations: Optional[int] - Maximum number of prompt iterations before stopping\n ",
510
+ "expanded": true
511
+ }
512
+ },
513
+ "base": {
514
+ "name": "BaseNode",
515
+ "module": [
516
+ "vellum",
517
+ "workflows",
518
+ "nodes",
519
+ "bases",
520
+ "base"
521
+ ]
522
+ },
523
+ "definition": {
524
+ "name": "ToolCallingNode",
525
+ "module": [
526
+ "vellum",
527
+ "workflows",
528
+ "nodes",
529
+ "displayable",
530
+ "tool_calling_node",
531
+ "node"
532
+ ]
533
+ },
534
+ "trigger": {
535
+ "id": "f9b4a4ce-68ae-45f4-9e29-38b588abdf97",
536
+ "merge_behavior": "AWAIT_ATTRIBUTES"
537
+ },
538
+ "ports": [
539
+ {
540
+ "id": "72157fce-fc16-44d8-a00d-506738a20730",
541
+ "name": "default",
542
+ "type": "DEFAULT"
543
+ }
544
+ ],
545
+ "attributes": [
546
+ {
547
+ "id": "df3761db-067a-4fe9-9fc3-ba270786fcf6",
548
+ "name": "ml_model",
549
+ "value": {
550
+ "type": "CONSTANT_VALUE",
551
+ "value": {
552
+ "type": "STRING",
553
+ "value": "gpt-4o-mini"
554
+ }
555
+ }
556
+ },
557
+ {
558
+ "id": "66133945-f7fd-43bb-8b46-0761e2b58241",
559
+ "name": "blocks",
560
+ "value": {
561
+ "type": "CONSTANT_VALUE",
562
+ "value": {
563
+ "type": "JSON",
564
+ "value": []
565
+ }
566
+ }
567
+ },
568
+ {
569
+ "id": "0079b429-3b1c-4f7c-9ccf-185ace4dcbb2",
570
+ "name": "functions",
571
+ "value": {
572
+ "type": "CONSTANT_VALUE",
573
+ "value": {
574
+ "type": "JSON",
575
+ "value": []
576
+ }
577
+ }
578
+ },
579
+ {
580
+ "id": "ebda56e6-2ace-472c-a106-36cb69264e96",
581
+ "name": "prompt_inputs",
582
+ "value": {
583
+ "type": "CONSTANT_VALUE",
584
+ "value": {
585
+ "type": "JSON",
586
+ "value": null
587
+ }
588
+ }
589
+ },
590
+ {
591
+ "id": "2534a586-5b37-41f3-a9a4-8162b8538df4",
592
+ "name": "parameters",
593
+ "value": {
594
+ "type": "CONSTANT_VALUE",
595
+ "value": {
596
+ "type": "JSON",
597
+ "value": {
598
+ "stop": [],
599
+ "temperature": 0.0,
600
+ "max_tokens": 4096.0,
601
+ "top_p": 1.0,
602
+ "top_k": 0.0,
603
+ "frequency_penalty": 0.0,
604
+ "presence_penalty": 0.0,
605
+ "logit_bias": null,
606
+ "custom_parameters": null
607
+ }
608
+ }
609
+ }
610
+ },
611
+ {
612
+ "id": "118ef72a-0767-4659-8ddf-58a071f95988",
613
+ "name": "max_prompt_iterations",
614
+ "value": {
615
+ "type": "CONSTANT_VALUE",
616
+ "value": {
617
+ "type": "NUMBER",
618
+ "value": 5.0
619
+ }
620
+ }
621
+ },
622
+ {
623
+ "id": "d7ef5296-1e48-4d05-b97a-77f16d46fd50",
624
+ "name": "settings",
625
+ "value": {
626
+ "type": "CONSTANT_VALUE",
627
+ "value": {
628
+ "type": "JSON",
629
+ "value": null
630
+ }
631
+ }
632
+ }
633
+ ],
634
+ "outputs": [
635
+ {
636
+ "id": "c18a8725-21e1-4736-a77c-76d0fc035176",
637
+ "name": "text",
638
+ "type": "STRING",
639
+ "value": null
640
+ },
641
+ {
642
+ "id": "5a9ad073-c670-43d2-9198-a08e9fdda7ad",
643
+ "name": "chat_history",
644
+ "type": "CHAT_HISTORY",
645
+ "value": null
646
+ }
647
+ ]
648
+ },
649
+ {
650
+ "id": "187ed9ed-ca2b-49e4-943d-ee8da5fad973",
651
+ "label": "Web Search Node",
652
+ "display_data": {
653
+ "position": {
654
+ "x": 0.0,
655
+ "y": 0.0
656
+ },
657
+ "comment": {
658
+ "value": "\n Used to perform web search using SerpAPI.\n\n query: str - The search query to execute\n api_key: str - SerpAPI authentication key\n num_results: int - Number of search results to return (default: 10)\n location: Optional[str] - Geographic location filter for search\n ",
659
+ "expanded": true
660
+ }
661
+ },
662
+ "base": {
663
+ "name": "BaseNode",
664
+ "module": [
665
+ "vellum",
666
+ "workflows",
667
+ "nodes",
668
+ "bases",
669
+ "base"
670
+ ]
671
+ },
672
+ "definition": {
673
+ "name": "WebSearchNode",
674
+ "module": [
675
+ "vellum",
676
+ "workflows",
677
+ "nodes",
678
+ "displayable",
679
+ "web_search_node",
680
+ "node"
681
+ ]
682
+ },
683
+ "trigger": {
684
+ "id": "036c7a0c-fff3-44f7-b49b-429d8f44f212",
685
+ "merge_behavior": "AWAIT_ATTRIBUTES"
686
+ },
687
+ "ports": [
688
+ {
689
+ "id": "ef824748-d00d-41e7-b7b4-d0edc536c3af",
690
+ "name": "default",
691
+ "type": "DEFAULT"
692
+ }
693
+ ],
694
+ "attributes": [
695
+ {
696
+ "id": "b5ba3c60-e02c-46c8-b470-d86c4f8f42af",
697
+ "name": "query",
698
+ "value": {
699
+ "type": "CONSTANT_VALUE",
700
+ "value": {
701
+ "type": "STRING",
702
+ "value": ""
703
+ }
704
+ }
705
+ },
706
+ {
707
+ "id": "222408bc-7dae-4bb8-9aba-a1ac36bdc759",
708
+ "name": "api_key",
709
+ "value": {
710
+ "type": "CONSTANT_VALUE",
711
+ "value": {
712
+ "type": "JSON",
713
+ "value": null
714
+ }
715
+ }
716
+ },
717
+ {
718
+ "id": "795a0bbc-bb98-4bc8-a9d9-88b0cb796d23",
719
+ "name": "num_results",
720
+ "value": {
721
+ "type": "CONSTANT_VALUE",
722
+ "value": {
723
+ "type": "NUMBER",
724
+ "value": 10.0
725
+ }
726
+ }
727
+ },
728
+ {
729
+ "id": "e1648557-ca03-4a81-ab5b-86495284b325",
730
+ "name": "location",
731
+ "value": {
732
+ "type": "CONSTANT_VALUE",
733
+ "value": {
734
+ "type": "JSON",
735
+ "value": null
736
+ }
737
+ }
738
+ }
739
+ ],
740
+ "outputs": [
741
+ {
742
+ "id": "704a4ba3-1afe-482d-876a-91dcdbe90fb7",
743
+ "name": "text",
744
+ "type": "STRING",
745
+ "value": null
746
+ },
747
+ {
748
+ "id": "574b2ebe-f250-4024-b517-3cd47704c70e",
749
+ "name": "urls",
750
+ "type": "JSON",
751
+ "value": null
752
+ },
753
+ {
754
+ "id": "9798a067-3589-4a2a-a811-6019873cbbfe",
755
+ "name": "results",
756
+ "type": "JSON",
757
+ "value": null
758
+ }
759
+ ]
760
+ },
761
+ {
762
+ "id": "bf31cc42-b5e4-4191-a453-7191743ac200",
763
+ "display_data": {
764
+ "position": {
765
+ "x": 0.0,
766
+ "y": 0.0
767
+ },
768
+ "comment": {
769
+ "value": "\n Used to directly reference the output of another node.\n This provides backward compatibility with Vellum's Final Output Node.\n ",
770
+ "expanded": true
771
+ }
772
+ },
773
+ "base": {
774
+ "name": "BaseNode",
775
+ "module": [
776
+ "vellum",
777
+ "workflows",
778
+ "nodes",
779
+ "bases",
780
+ "base"
781
+ ]
782
+ },
783
+ "definition": {
784
+ "name": "FinalOutputNode",
785
+ "module": [
786
+ "vellum",
787
+ "workflows",
788
+ "nodes",
789
+ "displayable",
790
+ "final_output_node",
791
+ "node"
792
+ ]
793
+ },
794
+ "trigger": {
795
+ "id": "0b2da045-2a4c-4939-8b5c-661652c759d4",
796
+ "merge_behavior": "AWAIT_ANY"
797
+ },
798
+ "ports": [],
799
+ "outputs": [
800
+ {
801
+ "id": "7f41909e-9ce1-4fde-ba77-a13dda301ece",
802
+ "name": "value",
803
+ "type": "STRING",
804
+ "value": {
805
+ "__undefined__": true
806
+ }
807
+ }
808
+ ]
809
+ }
810
+ ],
811
+ "errors": [
812
+ {
813
+ "node": "MapNode",
814
+ "error": "Expected NodeReference items to have an instance"
815
+ },
816
+ {
817
+ "node": "SubworkflowDeploymentNode",
818
+ "error": "headers: {'server': 'gunicorn', 'date': 'Tue, 23 Sep 2025 21:40:16 GMT', 'content-type': 'application/json', 'allow': 'GET, PUT, PATCH, DELETE, HEAD, OPTIONS', 'x-frame-options': 'DENY', 'content-length': '58', 'vary': 'Accept-Language, Origin', 'content-language': 'en', 'strict-transport-security': 'max-age=60; includeSubDomains; preload', 'x-content-type-options': 'nosniff', 'referrer-policy': 'same-origin', 'cross-origin-opener-policy': 'same-origin', 'via': '1.1 google', 'alt-svc': 'h3=\":443\"; ma=2592000,h3-29=\":443\"; ma=2592000'}, status_code: 403, body: {'detail': 'Authentication credentials were not provided.'}"
819
+ },
820
+ {
821
+ "node": "PromptDeploymentNode",
822
+ "error": "headers: {'server': 'gunicorn', 'date': 'Tue, 23 Sep 2025 21:40:16 GMT', 'content-type': 'application/json', 'allow': 'GET, PUT, PATCH, DELETE, HEAD, OPTIONS', 'x-frame-options': 'DENY', 'content-length': '58', 'vary': 'Accept-Language, Origin', 'content-language': 'en', 'strict-transport-security': 'max-age=60; includeSubDomains; preload', 'x-content-type-options': 'nosniff', 'referrer-policy': 'same-origin', 'cross-origin-opener-policy': 'same-origin', 'via': '1.1 google', 'alt-svc': 'h3=\":443\"; ma=2592000,h3-29=\":443\"; ma=2592000'}, status_code: 403, body: {'detail': 'Authentication credentials were not provided.'}"
823
+ },
824
+ {
825
+ "node": "SearchNode",
826
+ "error": "Expected NodeReference query to have an instance"
827
+ },
828
+ {
829
+ "node": "TemplatingNode",
830
+ "error": "TemplatingNode.Outputs.result"
831
+ }
832
+ ]
833
+ }