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.
- vellum/__init__.py +4 -0
- vellum/client/core/client_wrapper.py +2 -2
- vellum/client/types/__init__.py +4 -0
- vellum/client/types/integration_name.py +1 -0
- vellum/client/types/workflow_deployment_display_data.py +27 -0
- vellum/client/types/workflow_deployment_read.py +6 -0
- vellum/client/types/workflow_display_icon.py +24 -0
- vellum/types/workflow_deployment_display_data.py +3 -0
- vellum/types/workflow_display_icon.py +3 -0
- vellum/workflows/events/types.py +8 -0
- vellum/workflows/expressions/concat.py +6 -3
- vellum/workflows/expressions/tests/test_concat.py +63 -8
- vellum/workflows/nodes/core/map_node/node.py +1 -0
- vellum/workflows/nodes/displayable/bases/base_prompt_node/node.py +20 -5
- vellum/workflows/nodes/displayable/bases/inline_prompt_node/node.py +11 -7
- vellum/workflows/nodes/displayable/bases/inline_prompt_node/tests/test_inline_prompt_node.py +42 -0
- vellum/workflows/nodes/displayable/subworkflow_deployment_node/node.py +84 -56
- vellum/workflows/nodes/experimental/__init__.py +1 -3
- vellum/workflows/runner/runner.py +144 -0
- vellum/workflows/state/context.py +75 -8
- vellum/workflows/workflows/base.py +20 -1
- vellum/workflows/workflows/event_filters.py +13 -0
- vellum/workflows/workflows/tests/test_event_filters.py +126 -0
- {vellum_ai-1.8.2.dist-info → vellum_ai-1.8.4.dist-info}/METADATA +1 -1
- {vellum_ai-1.8.2.dist-info → vellum_ai-1.8.4.dist-info}/RECORD +28 -25
- vellum/workflows/nodes/experimental/openai_chat_completion_node/__init__.py +0 -5
- vellum/workflows/nodes/experimental/openai_chat_completion_node/node.py +0 -266
- {vellum_ai-1.8.2.dist-info → vellum_ai-1.8.4.dist-info}/LICENSE +0 -0
- {vellum_ai-1.8.2.dist-info → vellum_ai-1.8.4.dist-info}/WHEEL +0 -0
- {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=
|
|
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=
|
|
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=
|
|
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=
|
|
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=
|
|
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=
|
|
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=
|
|
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=
|
|
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=
|
|
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=
|
|
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=
|
|
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=
|
|
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=
|
|
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=
|
|
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=
|
|
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=
|
|
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=
|
|
2098
|
-
vellum/workflows/workflows/event_filters.py,sha256=
|
|
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
|
-
|
|
2103
|
-
vellum_ai-1.8.
|
|
2104
|
-
vellum_ai-1.8.
|
|
2105
|
-
vellum_ai-1.8.
|
|
2106
|
-
vellum_ai-1.8.
|
|
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,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
|
|
File without changes
|
|
File without changes
|
|
File without changes
|