vellum-ai 1.8.2__py3-none-any.whl → 1.8.4__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 (30) hide show
  1. vellum/__init__.py +4 -0
  2. vellum/client/core/client_wrapper.py +2 -2
  3. vellum/client/types/__init__.py +4 -0
  4. vellum/client/types/integration_name.py +1 -0
  5. vellum/client/types/workflow_deployment_display_data.py +27 -0
  6. vellum/client/types/workflow_deployment_read.py +6 -0
  7. vellum/client/types/workflow_display_icon.py +24 -0
  8. vellum/types/workflow_deployment_display_data.py +3 -0
  9. vellum/types/workflow_display_icon.py +3 -0
  10. vellum/workflows/events/types.py +8 -0
  11. vellum/workflows/expressions/concat.py +6 -3
  12. vellum/workflows/expressions/tests/test_concat.py +63 -8
  13. vellum/workflows/nodes/core/map_node/node.py +1 -0
  14. vellum/workflows/nodes/displayable/bases/base_prompt_node/node.py +20 -5
  15. vellum/workflows/nodes/displayable/bases/inline_prompt_node/node.py +11 -7
  16. vellum/workflows/nodes/displayable/bases/inline_prompt_node/tests/test_inline_prompt_node.py +42 -0
  17. vellum/workflows/nodes/displayable/subworkflow_deployment_node/node.py +84 -56
  18. vellum/workflows/nodes/experimental/__init__.py +1 -3
  19. vellum/workflows/runner/runner.py +144 -0
  20. vellum/workflows/state/context.py +75 -8
  21. vellum/workflows/workflows/base.py +20 -1
  22. vellum/workflows/workflows/event_filters.py +13 -0
  23. vellum/workflows/workflows/tests/test_event_filters.py +126 -0
  24. {vellum_ai-1.8.2.dist-info → vellum_ai-1.8.4.dist-info}/METADATA +1 -1
  25. {vellum_ai-1.8.2.dist-info → vellum_ai-1.8.4.dist-info}/RECORD +28 -25
  26. vellum/workflows/nodes/experimental/openai_chat_completion_node/__init__.py +0 -5
  27. vellum/workflows/nodes/experimental/openai_chat_completion_node/node.py +0 -266
  28. {vellum_ai-1.8.2.dist-info → vellum_ai-1.8.4.dist-info}/LICENSE +0 -0
  29. {vellum_ai-1.8.2.dist-info → vellum_ai-1.8.4.dist-info}/WHEEL +0 -0
  30. {vellum_ai-1.8.2.dist-info → vellum_ai-1.8.4.dist-info}/entry_points.txt +0 -0
@@ -159,12 +159,12 @@ vellum_ee/workflows/tests/test_registry.py,sha256=B8xRIuEyLWfSqrYoPldNQXhKPfe50P
159
159
  vellum_ee/workflows/tests/test_serialize_module.py,sha256=thzGsNzYCRXXdaC5yk1ZjtXrIO6uPdSnzdapKLCOsC8,6241
160
160
  vellum_ee/workflows/tests/test_server.py,sha256=2_n84q_QZN_zW2rZgDenQUXM3x43TcPsRs1fDA6BK1U,29805
161
161
  vellum_ee/workflows/tests/test_virtual_files.py,sha256=TJEcMR0v2S8CkloXNmCHA0QW0K6pYNGaIjraJz7sFvY,2762
162
- vellum/__init__.py,sha256=NB7wH1mULnmmacWXxnHLSSFE-cHwpC0quR9JstZjnM8,49712
162
+ vellum/__init__.py,sha256=E_FsKfOkXg7KvOiBjE0vTWn34tAnYQvijb5FAHcsLDE,49836
163
163
  vellum/client/README.md,sha256=flqu57ubZNTfpq60CdLtJC9gp4WEkyjb_n_eZ4OYf9w,6497
164
164
  vellum/client/__init__.py,sha256=-nugZzQKoUJsStXe6PnOD__8kbDLKKokceDgpGxQ_q0,74576
165
165
  vellum/client/core/__init__.py,sha256=lTcqUPXcx4112yLDd70RAPeqq6tu3eFMe1pKOqkW9JQ,1562
166
166
  vellum/client/core/api_error.py,sha256=44vPoTyWN59gonCIZMdzw7M1uspygiLnr3GNFOoVL2Q,614
167
- vellum/client/core/client_wrapper.py,sha256=R9FHIr5oH88cTW8SR-0nEW7PPcwHvfHMVIJ5NT-rUHM,2840
167
+ vellum/client/core/client_wrapper.py,sha256=zsaxJoGR-yEFSYk9Ri6PtjBQ1agr-Rs2J4qXd2-A8KE,2840
168
168
  vellum/client/core/datetime_utils.py,sha256=nBys2IsYrhPdszxGKCNRPSOCwa-5DWOHG95FB8G9PKo,1047
169
169
  vellum/client/core/file.py,sha256=d4NNbX8XvXP32z8KpK2Xovv33nFfruIrpz0QWxlgpZk,2663
170
170
  vellum/client/core/force_multipart.py,sha256=awxh5MtcRYe74ehY8U76jzv6fYM_w_D3Rur7KQQzSDk,429
@@ -273,7 +273,7 @@ vellum/client/resources/workspaces/client.py,sha256=36KYa2FDu6h65q2GscUFOJs4qKei
273
273
  vellum/client/resources/workspaces/raw_client.py,sha256=M3Ewk1ZfEZ44EeTvBtBNoNKi5whwfLY-1GR07SyfDTI,3517
274
274
  vellum/client/tests/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
275
275
  vellum/client/tests/test_utils.py,sha256=zk8z45-2xrm9sZ2hq8PTqY8MXmXtPqMqYK0VBBX0GHg,1176
276
- vellum/client/types/__init__.py,sha256=DJQk--nsuFG-SCfraIR26UkH9ly4cZJYTY2FTpU8C68,75198
276
+ vellum/client/types/__init__.py,sha256=4x0VD1hiSDruxauc6TI6yO9u9buX0C0RXKGwbUQrB6o,75393
277
277
  vellum/client/types/ad_hoc_execute_prompt_event.py,sha256=B69EesIH6fpNsdoiJaSG9zF1Sl17FnjoTu4CBkUSoHk,608
278
278
  vellum/client/types/ad_hoc_expand_meta.py,sha256=Kajcj3dKKed5e7uZibRnE3ZonK_bB2JPM-3aLjLfUp4,1295
279
279
  vellum/client/types/ad_hoc_fulfilled_prompt_execution_meta.py,sha256=5kD6ZcbU8P8ynK0lMD8Mh7vHzvQt06ziMyphvWYg6FU,968
@@ -498,7 +498,7 @@ vellum/client/types/integration.py,sha256=WqfHEskiMzNxuy5mmcXTARPQ4F3r99Jf-g-wVl
498
498
  vellum/client/types/integration_auth_config_integration.py,sha256=W3DrzVPwLrqm0wCYVF-sHyQPoKNxoliFgFJWEwW_Yqc,710
499
499
  vellum/client/types/integration_auth_config_integration_credential.py,sha256=lUNuJ1GyFps3M85Mff1C-SAeEacCMkJdmayFfYrTFXA,547
500
500
  vellum/client/types/integration_credential_access_type.py,sha256=sWkuDjW3aD7ApZ1xQ7Bu8g5kCIwqUqzm1TDliUQWeRI,178
501
- vellum/client/types/integration_name.py,sha256=Lccmj64V1h5PZT5nmyqtJ6WmcpkDOtpYzsqdrZx19WA,1207
501
+ vellum/client/types/integration_name.py,sha256=5YatDLwjK5QttKIAgwc662WVJZyfVmK7D7DIqkmNZdw,1226
502
502
  vellum/client/types/integration_provider.py,sha256=lIh3yPyPEzmSAu8L4Gsd-iDkmDSNobo0_TB75zMtIXk,129
503
503
  vellum/client/types/integration_read.py,sha256=sUNCS01TIlHPJHEH3ZheIbPi-CplbFQ5XAV1QtOO1Gg,1035
504
504
  vellum/client/types/invoked_port.py,sha256=nw2k-y7NrpcH6T1V96U3F8_pbrsceqBPIz3RQXN8gJY,518
@@ -880,13 +880,15 @@ vellum/client/types/video_input_request.py,sha256=wNQwncQsbEez5UR7wI_Erg__6V_WDM
880
880
  vellum/client/types/video_prompt_block.py,sha256=8uyJRzNnoV6vB4sVPxtxx9gsVkLsfHaobLcQM4CdWTY,977
881
881
  vellum/client/types/video_vellum_value.py,sha256=8KfVyPZ0b3nv0wuo-p88yE9jc5VyYXk0HPnesgiYGjY,711
882
882
  vellum/client/types/video_vellum_value_request.py,sha256=q6dptI5XdJNFwtTRlNyPqU0EUlRDFlhH8GjJgMzY2c8,740
883
+ vellum/client/types/workflow_deployment_display_data.py,sha256=6D2CqxfJLFZPpmjYZ5FNOPMLPvvcAlYz7Y23_CmzJqA,780
883
884
  vellum/client/types/workflow_deployment_event_executions_response.py,sha256=KXzRC0iaXsBu9ezA4p7PIHL4-IWIQ-lX6NW6noTHtZ4,1570
884
885
  vellum/client/types/workflow_deployment_history_item.py,sha256=RF_ByBLXRo47MhAuyUV4FkxmN_j879-UylfRyZaYAm0,1327
885
886
  vellum/client/types/workflow_deployment_parent_context.py,sha256=1JdTw3LL6tgCgiMVrX35SZVu7mZcxz6SbxWPCUBZ09s,1796
886
- vellum/client/types/workflow_deployment_read.py,sha256=rQQZmRy92tfXie8kg14dRI9t_lZ1StbXSEtSFPMTV9E,2247
887
+ vellum/client/types/workflow_deployment_read.py,sha256=bSdmiGtOUdZoNRH14PtmoLsSGACh0xwUXG6Fqr5a30I,2494
887
888
  vellum/client/types/workflow_deployment_release.py,sha256=yd9Okgpdm8Oob9VmIKaksZjmRv2uLHGJtc-H5sO10F8,1520
888
889
  vellum/client/types/workflow_deployment_release_workflow_deployment.py,sha256=ZmQhemAQEqARhkSvc9DFdgfTKQfSHvRTS9reW1Wx9dI,550
889
890
  vellum/client/types/workflow_deployment_release_workflow_version.py,sha256=VbVrwsDHapwPSsGEt8OM9Gjs31esIqkp8ta5zrZvPTw,885
891
+ vellum/client/types/workflow_display_icon.py,sha256=SmjaK8yazBntU1Nh57bVz_sYf59DwaKvamUzea0wEdo,646
890
892
  vellum/client/types/workflow_error.py,sha256=iDMQ3Wx7E8lf6BYtBTGpeIxG46iF9mjzTpjxyJVTXgM,283
891
893
  vellum/client/types/workflow_event.py,sha256=M_ra0CjUffCPqPRFJM_oR1IY4egHDGa0tY1HAoA8j5k,1532
892
894
  vellum/client/types/workflow_event_error.py,sha256=qNqSGvPOLODPTiaWmsUKyTx9W91JDIm9r9s05zsTsfg,779
@@ -1708,6 +1710,7 @@ vellum/types/video_input_request.py,sha256=6pDU5OXPS8AxJGlM9KoaQiVAl7UthQsr0aTCM
1708
1710
  vellum/types/video_prompt_block.py,sha256=hraiqOCqrjZ6g5b7sH_oUCqitstkKJphuz2-uzmXEkk,156
1709
1711
  vellum/types/video_vellum_value.py,sha256=h7AtjZ4YA7BJpTsB78nJ01c6oKjk4ZNfxRQxjevZEwQ,156
1710
1712
  vellum/types/video_vellum_value_request.py,sha256=-8swaAzFnM-xGSxXpIoxgZSy9lDqDVfjtooHnQcr9D4,164
1713
+ vellum/types/workflow_deployment_display_data.py,sha256=l4T7o25fcFHa-qZ22b3OgjHY68o_N93upeVCwOtVRV4,170
1711
1714
  vellum/types/workflow_deployment_event_executions_response.py,sha256=375mHiA7sucHeFSr0LlaLcVgV7F2QicMZaQiOrC5yOg,183
1712
1715
  vellum/types/workflow_deployment_history_item.py,sha256=dp5pwzOVO83KPwAbYeO3NXlKKHswGa0MTGX82nIhAIg,170
1713
1716
  vellum/types/workflow_deployment_parent_context.py,sha256=kB0eeRXagHqRnuDVA9B8aDlvBZVOmQ702JYXD8evh24,172
@@ -1715,6 +1718,7 @@ vellum/types/workflow_deployment_read.py,sha256=dDGG27VP0bvC565JzeSOHJ-5Pvs7eCF4
1715
1718
  vellum/types/workflow_deployment_release.py,sha256=lBnOc5Tw2-jLGWmthzkwdaLGvylcDiarO-maZSote0A,165
1716
1719
  vellum/types/workflow_deployment_release_workflow_deployment.py,sha256=8qT32r--NyJppqBizD9QP6jvM5YdcsdpGEtaKMG1RbE,185
1717
1720
  vellum/types/workflow_deployment_release_workflow_version.py,sha256=l5SJrY9z3lG5K82V2wY2sY50V40CQWKl95nDjnHu4Dc,182
1721
+ vellum/types/workflow_display_icon.py,sha256=MpD5VTDMjMluWbBECGWbBRjOZdy9NFcbYVjw4hbmGy8,159
1718
1722
  vellum/types/workflow_error.py,sha256=7rZcYJG5jYr4IbEvgv57G6Lxutrdg43SD8mUerd58_A,152
1719
1723
  vellum/types/workflow_event.py,sha256=PNvXXtxFyPeIhdcZITMbTj0f0ZGOsaBKhOaR0eQ9aOI,152
1720
1724
  vellum/types/workflow_event_error.py,sha256=n8yzIuTmfxKyGBKellmMhnCgi1d4fPkr0MvjR3sKOAI,158
@@ -1835,7 +1839,7 @@ vellum/workflows/events/stream.py,sha256=xhXJTZirFi0xad5neAQNogrIQ4h47fpnKbVC3vC
1835
1839
  vellum/workflows/events/tests/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
1836
1840
  vellum/workflows/events/tests/test_basic_workflow.py,sha256=Pj6orHsXz37jWC5FARi0Sx2Gjf99Owri2Cvr6Chb79k,1765
1837
1841
  vellum/workflows/events/tests/test_event.py,sha256=5rzsQdXksVZIapFSdKQlQGsLPJY2esAwsh_JOtKH_rM,21566
1838
- vellum/workflows/events/types.py,sha256=mVrqAH9Hs9SpXm08Hcxdyap_ImQPwGsxRr56rSNMP34,5043
1842
+ vellum/workflows/events/types.py,sha256=FjZi4ta_Atb_BnT0yGUHfz-LHun6IWYU80HWolhBkXY,5279
1839
1843
  vellum/workflows/events/workflow.py,sha256=1BdrBdlDpTvsiHcm5KaFA7q6veauQaYlNVUMN8QG0gA,11495
1840
1844
  vellum/workflows/exceptions.py,sha256=l_ZklQQVvbsIdbmbn89aEeTL7x6x08m5kCwKXXPnTDc,2277
1841
1845
  vellum/workflows/executable.py,sha256=um-gLJMVYfGJwGJfZIPlCRHhHIYm6pn8PUEfeqrNx5k,218
@@ -1847,7 +1851,7 @@ vellum/workflows/expressions/begins_with.py,sha256=FnWsQXbENm0ZwkfEP7dR8Qx4_MMrz
1847
1851
  vellum/workflows/expressions/between.py,sha256=dVeddT6YA91eOAlE1Utg7C7gnCiYE7WP-dg17yXUeAY,1492
1848
1852
  vellum/workflows/expressions/coalesce_expression.py,sha256=s4pcfu8KkUaUlQkB6BoQUKitGmV1FIQfV4agHHZtd98,1194
1849
1853
  vellum/workflows/expressions/comparison_utils.py,sha256=99eioXIMvqqSvm0iqluCtwzMkJGLq-bkVSaJ4LtZYBQ,1206
1850
- vellum/workflows/expressions/concat.py,sha256=bFiHeCpZWfMMO_nvFmM5RgN-hoh-5ThBtxP0EJ2F7BE,1105
1854
+ vellum/workflows/expressions/concat.py,sha256=6FWnlBf-sSCelGVa922Tyh2u7A4VD6LGBwVgjUT7DkA,1167
1851
1855
  vellum/workflows/expressions/contains.py,sha256=6QET3cuGTj_OF5GCYgOZUh7-_l3lsDiaOYsEEuHV-9E,1642
1852
1856
  vellum/workflows/expressions/does_not_begin_with.py,sha256=qcnIJsxg4Jt82i2L-PW6ZhKP3C-OlEiXbiIgwHQc5RE,1137
1853
1857
  vellum/workflows/expressions/does_not_contain.py,sha256=ZdHVewTe_pbPGB0cGv_gIq_4jKkv_oG2tX3RBdEGWoA,1266
@@ -1878,7 +1882,7 @@ vellum/workflows/expressions/parse_json.py,sha256=xsk6j3HF7bU1yF6fwt5P9Ugcyd5D9Z
1878
1882
  vellum/workflows/expressions/tests/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
1879
1883
  vellum/workflows/expressions/tests/test_accessor.py,sha256=g2z0mJjuWwVKeXS0yGoFW-aRmT5n_LrhfuBorSmj9kI,7585
1880
1884
  vellum/workflows/expressions/tests/test_add.py,sha256=_MjlRvIGAVM5wve2ru5jc_5Ae4x_ywvh4vN0S2yQ-8M,1615
1881
- vellum/workflows/expressions/tests/test_concat.py,sha256=fDHXlmFvCtqPkdZQD9Qs22i6sJq_MJjbUXCnTlSMvA0,1666
1885
+ vellum/workflows/expressions/tests/test_concat.py,sha256=KE4fFRh96K_vuIZid2bZ-4kxaW3jTxyQ578UIrsLkPE,3205
1882
1886
  vellum/workflows/expressions/tests/test_contains.py,sha256=9jO9U0Idcjwxb9gnK1f_CFsn-vahAKE7TG45xNWWcmg,4878
1883
1887
  vellum/workflows/expressions/tests/test_expressions.py,sha256=e5CMwcOPQPvvDerhJ5Zm3TaXv84oyOYKu7oRRtQnmSA,17192
1884
1888
  vellum/workflows/expressions/tests/test_length.py,sha256=pQA1tYSwqxE6euclboY024NXEOs7yaVgwTKkMPYUT08,1035
@@ -1918,7 +1922,7 @@ vellum/workflows/nodes/core/inline_subworkflow_node/node.py,sha256=N6Yh1z_xlZif9
1918
1922
  vellum/workflows/nodes/core/inline_subworkflow_node/tests/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
1919
1923
  vellum/workflows/nodes/core/inline_subworkflow_node/tests/test_node.py,sha256=RK2g1h2ib-ruQZ9A2_2L-B9WBdHV44WZj75rkDNL0cE,5766
1920
1924
  vellum/workflows/nodes/core/map_node/__init__.py,sha256=MXpZYmGfhsMJHqqlpd64WiJRtbAtAMQz-_3fCU_cLV0,56
1921
- vellum/workflows/nodes/core/map_node/node.py,sha256=FquZcn5ANz4c_PMzggQDeKr2nXaRBkpj4kTpClVZWw4,10473
1925
+ vellum/workflows/nodes/core/map_node/node.py,sha256=kb2-uuf_WuFskIuqw1mxmC7-pE4zKGa8s9m03TSe-kY,10474
1922
1926
  vellum/workflows/nodes/core/map_node/tests/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
1923
1927
  vellum/workflows/nodes/core/map_node/tests/test_node.py,sha256=Xc2xZY5ShSy-bsIQe41JbvIjq3TE95duS-ygaELRVkk,9320
1924
1928
  vellum/workflows/nodes/core/retry_node/__init__.py,sha256=lN2bIy5a3Uzhs_FYCrooADyYU6ZGShtvLKFWpelwPvo,60
@@ -1943,11 +1947,11 @@ vellum/workflows/nodes/displayable/bases/api_node/node.py,sha256=cOYaIqimzDL6TuX
1943
1947
  vellum/workflows/nodes/displayable/bases/api_node/tests/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
1944
1948
  vellum/workflows/nodes/displayable/bases/api_node/tests/test_node.py,sha256=5C59vn_yg4r5EWioKIr658Jr1MSGX3YF4yKJokY37Xc,4726
1945
1949
  vellum/workflows/nodes/displayable/bases/base_prompt_node/__init__.py,sha256=Org3xTvgp1pA0uUXFfnJr29D3HzCey2lEdYF4zbIUgo,70
1946
- vellum/workflows/nodes/displayable/bases/base_prompt_node/node.py,sha256=oN1GF47DPj1WgED1c5SO2XBInU7Gqaa6rAZGKsTFgv8,5299
1950
+ vellum/workflows/nodes/displayable/bases/base_prompt_node/node.py,sha256=Qzy8ZJ_2jnRk6p4FVrSj7MJ0hQu9vdVP41OslH2PsHA,5825
1947
1951
  vellum/workflows/nodes/displayable/bases/inline_prompt_node/__init__.py,sha256=Hl35IAoepRpE-j4cALaXVJIYTYOF3qszyVbxTj4kS1s,82
1948
- vellum/workflows/nodes/displayable/bases/inline_prompt_node/node.py,sha256=ctl2KeCpdA7Wb32Rpw4EhwHNctADek2ijYFtv1LmdwQ,19352
1952
+ vellum/workflows/nodes/displayable/bases/inline_prompt_node/node.py,sha256=3juPEPESTztVMHm6zj534_1SZs7k91Z39MjsLF2MJX4,19470
1949
1953
  vellum/workflows/nodes/displayable/bases/inline_prompt_node/tests/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
1950
- vellum/workflows/nodes/displayable/bases/inline_prompt_node/tests/test_inline_prompt_node.py,sha256=V2lDma5G4f-u-9xeCB3oH5KtJBZIIHKb4b9niwJGHuo,30381
1954
+ vellum/workflows/nodes/displayable/bases/inline_prompt_node/tests/test_inline_prompt_node.py,sha256=5xaGT7YsfYI5gpoL0ggHvY8JiDkj9Do4vCRq9M_NRZ8,31785
1951
1955
  vellum/workflows/nodes/displayable/bases/prompt_deployment_node.py,sha256=iwYZBxrZsbJnifBV11ANPOnVLGhWIlJZaOt7br6srqQ,12620
1952
1956
  vellum/workflows/nodes/displayable/bases/search_node.py,sha256=9TtFn6oNpEkpCL59QdBViUe4WPjcITajbiS7EOjOGag,6114
1953
1957
  vellum/workflows/nodes/displayable/bases/tests/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
@@ -1991,7 +1995,7 @@ vellum/workflows/nodes/displayable/search_node/node.py,sha256=hbPsZhyXfq9dx0mfBK
1991
1995
  vellum/workflows/nodes/displayable/search_node/tests/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
1992
1996
  vellum/workflows/nodes/displayable/search_node/tests/test_node.py,sha256=YXgIIAJHVQxrfyJ0gxeJC0fAJaic10_zbqvsS8hyZSc,9368
1993
1997
  vellum/workflows/nodes/displayable/subworkflow_deployment_node/__init__.py,sha256=9yYM6001YZeqI1VOk1QuEM_yrffk_EdsO7qaPzINKds,92
1994
- vellum/workflows/nodes/displayable/subworkflow_deployment_node/node.py,sha256=sDrRgk4xY7HaDQHXbF-7nmEWHArSB1nqEFXgH-qKfZU,14522
1998
+ vellum/workflows/nodes/displayable/subworkflow_deployment_node/node.py,sha256=_4aJxlnSEQKUlL9DAXYdrv1ic0tC7IyvYV389HHGyvE,16281
1995
1999
  vellum/workflows/nodes/displayable/subworkflow_deployment_node/tests/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
1996
2000
  vellum/workflows/nodes/displayable/subworkflow_deployment_node/tests/test_node.py,sha256=PII44speqT4fJvj60y_3KDAnH1L6Ivtq9R4BykY-X_A,19092
1997
2001
  vellum/workflows/nodes/displayable/tests/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
@@ -2012,9 +2016,7 @@ vellum/workflows/nodes/displayable/web_search_node/node.py,sha256=NQYux2bOtuBF5E
2012
2016
  vellum/workflows/nodes/displayable/web_search_node/tests/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
2013
2017
  vellum/workflows/nodes/displayable/web_search_node/tests/test_node.py,sha256=H3titxCYFsfIJ3EDeRL6Pe9I-tdKMRt1axOwb2qIw6U,10983
2014
2018
  vellum/workflows/nodes/experimental/README.md,sha256=eF6DfIL8t-HbF9-mcofOMymKrraiBHDLKTlnBa51ZiE,284
2015
- vellum/workflows/nodes/experimental/__init__.py,sha256=jCQgvZEknXKfuNhGSOou4XPfrPqZ1_XBj5F0n0fgiWM,106
2016
- vellum/workflows/nodes/experimental/openai_chat_completion_node/__init__.py,sha256=lsyD9laR9p7kx5-BXGH2gUTM242UhKy8SMV0SR6S2iE,90
2017
- vellum/workflows/nodes/experimental/openai_chat_completion_node/node.py,sha256=cKI2Ls25L-JVt4z4a2ozQa-YBeVy21Z7BQ32Sj7iBPE,10460
2019
+ vellum/workflows/nodes/experimental/__init__.py,sha256=juqd9PbXs4yg45zMJ7BHAOPQjb7sgEbWE9InBtGZhfo,24
2018
2020
  vellum/workflows/nodes/mocks.py,sha256=FXvP049s1KuilDqjUub12Y81rjR9vgPdX8pu6oBSjoE,10931
2019
2021
  vellum/workflows/nodes/tests/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
2020
2022
  vellum/workflows/nodes/tests/test_mocks.py,sha256=mfPvrs75PKcsNsbJLQAN6PDFoVqs9TmQxpdyFKDdO60,7837
@@ -2047,11 +2049,11 @@ vellum/workflows/resolvers/resolver.py,sha256=3uEYscB_2PHTazc0Y9SzOe_yiQZhVLfey1
2047
2049
  vellum/workflows/resolvers/tests/test_resolver.py,sha256=PnUGzsulo1It_LjjhHsRNiILvvl5G_IaK8ZX56zKC28,6204
2048
2050
  vellum/workflows/resolvers/types.py,sha256=Hndhlk69g6EKLh_LYg5ILepW5U_h_BYNllfzhS9k8p4,237
2049
2051
  vellum/workflows/runner/__init__.py,sha256=i1iG5sAhtpdsrlvwgH6B-m49JsINkiWyPWs8vyT-bqM,72
2050
- vellum/workflows/runner/runner.py,sha256=agF7TeqUBcXFuiQrCpevSJvQKnpMSdfLy6o-P0EZZXs,47813
2052
+ vellum/workflows/runner/runner.py,sha256=mMJzRT1iMsJ8YLYcbTsrKH8l2VDxqlC-sD8xY7pIoGY,54834
2051
2053
  vellum/workflows/sandbox.py,sha256=mezSZmilR_fwR8164n8CEfzlMeQ55IqfapHp4ftImvQ,3212
2052
2054
  vellum/workflows/state/__init__.py,sha256=yUUdR-_Vl7UiixNDYQZ-GEM_kJI9dnOia75TtuNEsnE,60
2053
2055
  vellum/workflows/state/base.py,sha256=8Zr7UIM_eC0O2N6w_1gYqyrjgJ9D9z-VqLFnBETEF7Q,26753
2054
- vellum/workflows/state/context.py,sha256=khM30U1iDNts5Xp8LXa_WfpkITNITexrDUUFJ5wZ2W4,8445
2056
+ vellum/workflows/state/context.py,sha256=L2Xqt8jL1RJCCuSVyKakuZQdgb_YBVKSW6n_3nSAcLE,10974
2055
2057
  vellum/workflows/state/delta.py,sha256=7h8wR10lRCm15SykaPj-gSEvvsMjCwYLPsOx3nsvBQg,440
2056
2058
  vellum/workflows/state/encoder.py,sha256=elZ70SEUTxhGa3vpxdrfjUotDT6NvhDCPWtP-VSjCH0,2029
2057
2059
  vellum/workflows/state/store.py,sha256=uVe-oN73KwGV6M6YLhwZMMUQhzTQomsVfVnb8V91gVo,1147
@@ -2094,13 +2096,14 @@ vellum/workflows/utils/vellum_variables.py,sha256=X3lZn-EoWengRWBWRhTNW7hqbj7LkV
2094
2096
  vellum/workflows/utils/zip.py,sha256=HVg_YZLmBOTXKaDV3Xhaf3V6sYnfqqZXQ8CpuafkbPY,1181
2095
2097
  vellum/workflows/vellum_client.py,sha256=3iDR7VV_NgLSm1iZQCKDvrmfEaX1bOJiU15QrxyHpv0,1237
2096
2098
  vellum/workflows/workflows/__init__.py,sha256=KY45TqvavCCvXIkyCFMEc0dc6jTMOUci93U2DUrlZYc,66
2097
- vellum/workflows/workflows/base.py,sha256=uG17grQ3zvAl4ZbddPjfftZOCw1qjTo_LLjISixmU7g,32276
2098
- vellum/workflows/workflows/event_filters.py,sha256=GSxIgwrX26a1Smfd-6yss2abGCnadGsrSZGa7t7LpJA,2008
2099
+ vellum/workflows/workflows/base.py,sha256=sxtMwfE1kYgdvZkxcFO8eM86Cw3Wp8ONdnOuDjI8PzQ,33573
2100
+ vellum/workflows/workflows/event_filters.py,sha256=OzaS1y_z1f7H4f4M914HttAfAuTiN0jXUmo1TUQagCY,2504
2099
2101
  vellum/workflows/workflows/tests/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
2100
2102
  vellum/workflows/workflows/tests/test_base_workflow.py,sha256=Boa-_m9ii2Qsa1RvVM-VYniF7zCpzGgEGy-OnPZkrHg,23941
2101
2103
  vellum/workflows/workflows/tests/test_context.py,sha256=VJBUcyWVtMa_lE5KxdhgMu0WYNYnUQUDvTF7qm89hJ0,2333
2102
- vellum_ai-1.8.2.dist-info/LICENSE,sha256=hOypcdt481qGNISA784bnAGWAE6tyIf9gc2E78mYC3E,1574
2103
- vellum_ai-1.8.2.dist-info/METADATA,sha256=nwlFb3WTY_gf483WFZdyHF2D8rUblIoUSF900h7Gn3o,5547
2104
- vellum_ai-1.8.2.dist-info/WHEEL,sha256=sP946D7jFCHeNz5Iq4fL4Lu-PrWrFsgfLXbbkciIZwg,88
2105
- vellum_ai-1.8.2.dist-info/entry_points.txt,sha256=xVavzAKN4iF_NbmhWOlOkHluka0YLkbN_pFQ9pW3gLI,117
2106
- vellum_ai-1.8.2.dist-info/RECORD,,
2104
+ vellum/workflows/workflows/tests/test_event_filters.py,sha256=CPsgtn2F8QMuNMxN5MB6IwTY0y_8JWBCZsio75vxp6c,3638
2105
+ vellum_ai-1.8.4.dist-info/LICENSE,sha256=hOypcdt481qGNISA784bnAGWAE6tyIf9gc2E78mYC3E,1574
2106
+ vellum_ai-1.8.4.dist-info/METADATA,sha256=2A_OzgYI-fjot2f0Dc4Y8R2gbHSYOXv0zNpGlzhV4wc,5547
2107
+ vellum_ai-1.8.4.dist-info/WHEEL,sha256=sP946D7jFCHeNz5Iq4fL4Lu-PrWrFsgfLXbbkciIZwg,88
2108
+ vellum_ai-1.8.4.dist-info/entry_points.txt,sha256=xVavzAKN4iF_NbmhWOlOkHluka0YLkbN_pFQ9pW3gLI,117
2109
+ vellum_ai-1.8.4.dist-info/RECORD,,
@@ -1,5 +0,0 @@
1
- from .node import OpenAIChatCompletionNode
2
-
3
- __all__ = [
4
- "OpenAIChatCompletionNode",
5
- ]
@@ -1,266 +0,0 @@
1
- import json
2
- import logging
3
- import os
4
- from uuid import uuid4
5
- from typing import Any, Iterable, Iterator, List, Literal, Union, cast
6
-
7
- from openai import OpenAI
8
- from openai.types.chat import (
9
- ChatCompletionAssistantMessageParam,
10
- ChatCompletionContentPartImageParam,
11
- ChatCompletionContentPartInputAudioParam,
12
- ChatCompletionContentPartParam,
13
- ChatCompletionContentPartRefusalParam,
14
- ChatCompletionContentPartTextParam,
15
- ChatCompletionMessageParam,
16
- ChatCompletionSystemMessageParam,
17
- ChatCompletionUserMessageParam,
18
- )
19
- from openai.types.chat.chat_completion_chunk import Choice
20
-
21
- from vellum import (
22
- AdHocExecutePromptEvent,
23
- FulfilledAdHocExecutePromptEvent,
24
- InitiatedAdHocExecutePromptEvent,
25
- RejectedAdHocExecutePromptEvent,
26
- StreamingAdHocExecutePromptEvent,
27
- StringVellumValue,
28
- VellumAudio,
29
- VellumError,
30
- VellumImage,
31
- )
32
- from vellum.prompts.blocks.compilation import compile_prompt_blocks
33
- from vellum.prompts.blocks.types import CompiledChatMessagePromptBlock
34
- from vellum.workflows.errors import WorkflowErrorCode
35
- from vellum.workflows.exceptions import NodeException
36
- from vellum.workflows.nodes import InlinePromptNode
37
- from vellum.workflows.types.generics import StateType
38
-
39
- logger = logging.getLogger(__name__)
40
-
41
-
42
- class OpenAIChatCompletionNode(InlinePromptNode[StateType]):
43
- """
44
- Used to execute a Prompt using the OpenAI API.
45
- """
46
-
47
- # Override
48
- def _get_prompt_event_stream(self) -> Iterator[AdHocExecutePromptEvent]:
49
- client = self._get_client()
50
-
51
- execution_id = str(uuid4())
52
-
53
- yield InitiatedAdHocExecutePromptEvent(
54
- execution_id=execution_id,
55
- )
56
-
57
- try:
58
- stream = client.chat.completions.create(
59
- messages=self._get_messages(),
60
- model=self.ml_model,
61
- # TODO: Add support for additional parameters
62
- stream=True,
63
- )
64
- except Exception as exc:
65
- yield RejectedAdHocExecutePromptEvent(
66
- error=VellumError(
67
- code=WorkflowErrorCode.PROVIDER_ERROR,
68
- message=exc.args[0],
69
- ),
70
- execution_id=execution_id,
71
- )
72
- return
73
-
74
- combined_delta_content = ""
75
- for chunk in stream:
76
- choices: List[Choice] = chunk.choices
77
- if len(choices) != 1:
78
- yield RejectedAdHocExecutePromptEvent(
79
- error=VellumError(
80
- code=WorkflowErrorCode.PROVIDER_ERROR,
81
- message="Expected one choice per chunk, but found more than one.",
82
- ),
83
- execution_id=execution_id,
84
- )
85
- return
86
-
87
- choice = choices[0]
88
- delta = choice.delta
89
-
90
- if delta.tool_calls:
91
- # TODO: Add support for tool calls
92
- raise NotImplementedError("This node hasn't been extended to support tool calling yet.")
93
-
94
- if delta.content:
95
- combined_delta_content += delta.content
96
-
97
- StreamingAdHocExecutePromptEvent(
98
- output=StringVellumValue(value=delta.content),
99
- # TODO: Add support for multiple outputs
100
- output_index=1,
101
- execution_id=execution_id,
102
- )
103
-
104
- yield FulfilledAdHocExecutePromptEvent(
105
- # TODO: Add support for multiple outputs
106
- outputs=[
107
- StringVellumValue(value=combined_delta_content),
108
- ],
109
- execution_id=execution_id,
110
- )
111
-
112
- def _get_client(self) -> OpenAI:
113
- """Used to retrieve an API client for interacting with the OpenAI API.
114
-
115
- Note: This method can be overridden if you'd like to use your own API client that conforms to the same
116
- interfaces as that of OpenAI.
117
- """
118
-
119
- openai_api_key = os.environ.get("OPENAI_API_KEY")
120
-
121
- if not openai_api_key:
122
- raise NodeException(
123
- code=WorkflowErrorCode.INTERNAL_ERROR,
124
- message="Unable to determine an OpenAI API key.",
125
- )
126
-
127
- client = OpenAI(api_key=openai_api_key)
128
- return client
129
-
130
- def _get_messages(self) -> Iterable[ChatCompletionMessageParam]:
131
- input_variables, input_values = self._compile_prompt_inputs()
132
-
133
- compiled_blocks = compile_prompt_blocks(
134
- blocks=self.blocks, inputs=input_values, input_variables=input_variables
135
- )
136
-
137
- chat_message_blocks: list[CompiledChatMessagePromptBlock] = [
138
- block for block in compiled_blocks if block.block_type == "CHAT_MESSAGE"
139
- ]
140
- messages = [self._create_message(block) for block in chat_message_blocks]
141
-
142
- return messages
143
-
144
- @classmethod
145
- def _create_message(cls, chat_message_block: CompiledChatMessagePromptBlock) -> ChatCompletionMessageParam:
146
- name = chat_message_block.source
147
- content = cls._create_message_content(chat_message_block)
148
-
149
- if chat_message_block.role == "SYSTEM":
150
- relevant_system_content = [
151
- cast(ChatCompletionContentPartTextParam, c) for c in content if c["type"] == "text"
152
- ]
153
- system_message: ChatCompletionSystemMessageParam = {
154
- "content": relevant_system_content,
155
- "role": "system",
156
- }
157
- if name:
158
- system_message["name"] = name
159
-
160
- return system_message
161
- elif chat_message_block.role == "USER":
162
- user_message: ChatCompletionUserMessageParam = {
163
- "content": content,
164
- "role": "user",
165
- }
166
- if name:
167
- user_message["name"] = name
168
-
169
- return user_message
170
- elif chat_message_block.role == "ASSISTANT":
171
- relevant_assistant_content = [
172
- cast(Union[ChatCompletionContentPartTextParam, ChatCompletionContentPartRefusalParam], c)
173
- for c in content
174
- if c["type"] in ["text", "refusal"]
175
- ]
176
- assistant_message: ChatCompletionAssistantMessageParam = {
177
- "content": relevant_assistant_content,
178
- "role": "assistant",
179
- }
180
- if name:
181
- assistant_message["name"] = name
182
-
183
- return assistant_message
184
- else:
185
- logger.error(f"Unexpected role: {chat_message_block.role}")
186
- raise NodeException(
187
- code=WorkflowErrorCode.INTERNAL_ERROR, message="Unexpected role found when compiling prompt blocks"
188
- )
189
-
190
- @classmethod
191
- def _create_message_content(
192
- cls,
193
- chat_message_block: CompiledChatMessagePromptBlock,
194
- ) -> List[ChatCompletionContentPartParam]:
195
- content: List[ChatCompletionContentPartParam] = []
196
- for block in chat_message_block.blocks:
197
- if block.content.type == "STRING":
198
- string_value = cast(str, block.content.value)
199
- string_content_item: ChatCompletionContentPartTextParam = {"type": "text", "text": string_value}
200
- content.append(string_content_item)
201
- elif block.content.type == "JSON":
202
- json_value = cast(Any, block.content.value)
203
- json_content_item: ChatCompletionContentPartTextParam = {"type": "text", "text": json.dumps(json_value)}
204
- content.append(json_content_item)
205
- elif block.content.type == "IMAGE":
206
- image_value = cast(VellumImage, block.content.value)
207
- image_content_item: ChatCompletionContentPartImageParam = {
208
- "type": "image_url",
209
- "image_url": {"url": image_value.src},
210
- }
211
- if image_value.metadata and image_value.metadata.get("detail"):
212
- detail = image_value.metadata["detail"]
213
-
214
- if detail not in ["auto", "low", "high"]:
215
- raise NodeException(
216
- code=WorkflowErrorCode.INTERNAL_ERROR,
217
- message="Image detail must be one of 'auto', 'low', or 'high.",
218
- )
219
-
220
- image_content_item["image_url"]["detail"] = cast(Literal["auto", "low", "high"], detail)
221
-
222
- content.append(image_content_item)
223
- elif block.content.type == "AUDIO":
224
- audio_value = cast(VellumAudio, block.content.value)
225
- audio_value_src_parts = audio_value.src.split(",")
226
- if len(audio_value_src_parts) != 2:
227
- raise NodeException(
228
- code=WorkflowErrorCode.INTERNAL_ERROR, message="Audio data is not properly encoded."
229
- )
230
- _, cleaned_audio_value = audio_value_src_parts
231
- if not audio_value.metadata:
232
- raise NodeException(
233
- code=WorkflowErrorCode.INTERNAL_ERROR, message="Audio metadata is required for audio input."
234
- )
235
- audio_format = audio_value.metadata.get("format")
236
- if not audio_format:
237
- raise NodeException(
238
- code=WorkflowErrorCode.INTERNAL_ERROR, message="Audio format is required for audio input."
239
- )
240
- if audio_format not in {"wav", "mp3"}:
241
- raise NodeException(
242
- code=WorkflowErrorCode.INTERNAL_ERROR,
243
- message="Audio format must be one of 'wav' or 'mp3'.",
244
- )
245
-
246
- audio_content_item: ChatCompletionContentPartInputAudioParam = {
247
- "type": "input_audio",
248
- "input_audio": {
249
- "data": cleaned_audio_value,
250
- "format": cast(Literal["wav", "mp3"], audio_format),
251
- },
252
- }
253
-
254
- content.append(audio_content_item)
255
- elif block.content.type == "DOCUMENT":
256
- raise NodeException(
257
- code=WorkflowErrorCode.PROVIDER_ERROR,
258
- message="Document chat message content type is not currently supported",
259
- )
260
- else:
261
- raise NodeException(
262
- code=WorkflowErrorCode.INTERNAL_ERROR,
263
- message=f"Failed to parse chat message block {block.content.type}",
264
- )
265
-
266
- return content