vellum-ai 0.14.63__py3-none-any.whl → 1.13.5__py3-none-any.whl
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Potentially problematic release.
This version of vellum-ai might be problematic. Click here for more details.
- vellum/__init__.py +287 -4
- vellum/client/README.md +69 -16
- vellum/client/__init__.py +598 -1437
- vellum/client/core/__init__.py +5 -0
- vellum/client/core/api_error.py +13 -5
- vellum/client/core/client_wrapper.py +30 -4
- vellum/client/core/force_multipart.py +18 -0
- vellum/client/core/http_client.py +70 -26
- vellum/client/core/http_response.py +55 -0
- vellum/client/core/jsonable_encoder.py +0 -1
- vellum/client/core/pydantic_utilities.py +90 -117
- vellum/client/core/serialization.py +7 -3
- vellum/client/errors/__init__.py +14 -1
- vellum/client/errors/bad_request_error.py +4 -3
- vellum/client/errors/forbidden_error.py +4 -3
- vellum/client/errors/internal_server_error.py +4 -3
- vellum/client/errors/misdirected_request_error.py +11 -0
- vellum/client/errors/not_found_error.py +4 -3
- vellum/client/errors/too_many_requests_error.py +10 -0
- vellum/client/errors/unauthorized_error.py +11 -0
- vellum/client/raw_client.py +2725 -0
- vellum/client/reference.md +3160 -1217
- vellum/client/resources/__init__.py +16 -2
- vellum/client/resources/ad_hoc/__init__.py +2 -0
- vellum/client/resources/ad_hoc/client.py +173 -377
- vellum/client/resources/ad_hoc/raw_client.py +569 -0
- vellum/client/resources/container_images/__init__.py +2 -0
- vellum/client/resources/container_images/client.py +365 -185
- vellum/client/resources/container_images/raw_client.py +693 -0
- vellum/client/resources/deployments/__init__.py +2 -0
- vellum/client/resources/deployments/client.py +119 -463
- vellum/client/resources/deployments/raw_client.py +1002 -0
- vellum/client/resources/deployments/types/__init__.py +2 -0
- vellum/client/resources/document_indexes/__init__.py +2 -0
- vellum/client/resources/document_indexes/client.py +131 -383
- vellum/client/resources/document_indexes/raw_client.py +866 -0
- vellum/client/resources/document_indexes/types/__init__.py +2 -0
- vellum/client/resources/documents/__init__.py +2 -0
- vellum/client/resources/documents/client.py +111 -333
- vellum/client/resources/documents/raw_client.py +672 -0
- vellum/client/resources/{release_reviews → environments}/__init__.py +2 -0
- vellum/client/resources/environments/client.py +106 -0
- vellum/client/resources/environments/raw_client.py +95 -0
- vellum/client/resources/events/__init__.py +4 -0
- vellum/client/resources/events/client.py +201 -0
- vellum/client/resources/events/raw_client.py +211 -0
- vellum/client/resources/folder_entities/__init__.py +2 -0
- vellum/client/resources/folder_entities/client.py +56 -95
- vellum/client/resources/folder_entities/raw_client.py +276 -0
- vellum/client/resources/folder_entities/types/__init__.py +2 -0
- vellum/client/resources/integration_auth_configs/__init__.py +4 -0
- vellum/client/resources/integration_auth_configs/client.py +188 -0
- vellum/client/resources/integration_auth_configs/raw_client.py +173 -0
- vellum/client/resources/integration_providers/__init__.py +4 -0
- vellum/client/resources/integration_providers/client.py +325 -0
- vellum/client/resources/integration_providers/raw_client.py +299 -0
- vellum/client/resources/integrations/__init__.py +4 -0
- vellum/client/resources/integrations/client.py +514 -0
- vellum/client/resources/integrations/raw_client.py +618 -0
- vellum/client/resources/metric_definitions/__init__.py +2 -0
- vellum/client/resources/metric_definitions/client.py +60 -106
- vellum/client/resources/metric_definitions/raw_client.py +224 -0
- vellum/client/resources/ml_models/__init__.py +2 -0
- vellum/client/resources/ml_models/client.py +37 -46
- vellum/client/resources/ml_models/raw_client.py +102 -0
- vellum/client/resources/organizations/__init__.py +2 -0
- vellum/client/resources/organizations/client.py +37 -45
- vellum/client/resources/organizations/raw_client.py +95 -0
- vellum/client/resources/prompts/__init__.py +2 -0
- vellum/client/resources/prompts/client.py +84 -202
- vellum/client/resources/prompts/raw_client.py +353 -0
- vellum/client/resources/sandboxes/__init__.py +2 -0
- vellum/client/resources/sandboxes/client.py +69 -159
- vellum/client/resources/sandboxes/raw_client.py +392 -0
- vellum/client/resources/test_suite_runs/__init__.py +2 -0
- vellum/client/resources/test_suite_runs/client.py +65 -157
- vellum/client/resources/test_suite_runs/raw_client.py +354 -0
- vellum/client/resources/test_suites/__init__.py +2 -0
- vellum/client/resources/test_suites/client.py +162 -266
- vellum/client/resources/test_suites/raw_client.py +530 -0
- vellum/client/resources/uploaded_files/__init__.py +4 -0
- vellum/client/resources/uploaded_files/client.py +230 -0
- vellum/client/resources/uploaded_files/raw_client.py +316 -0
- vellum/client/resources/workflow_deployments/__init__.py +2 -0
- vellum/client/resources/workflow_deployments/client.py +456 -351
- vellum/client/resources/workflow_deployments/raw_client.py +1393 -0
- vellum/client/resources/workflow_deployments/types/__init__.py +2 -0
- vellum/client/resources/workflow_executions/__init__.py +4 -0
- vellum/client/resources/workflow_executions/client.py +140 -0
- vellum/client/resources/workflow_executions/raw_client.py +173 -0
- vellum/client/resources/workflow_sandboxes/__init__.py +2 -0
- vellum/client/resources/workflow_sandboxes/client.py +58 -123
- vellum/client/resources/workflow_sandboxes/raw_client.py +291 -0
- vellum/client/resources/workflow_sandboxes/types/__init__.py +2 -0
- vellum/client/resources/workflows/__init__.py +2 -0
- vellum/client/resources/workflows/client.py +464 -145
- vellum/client/resources/workflows/raw_client.py +884 -0
- vellum/client/resources/workspace_secrets/__init__.py +2 -0
- vellum/client/resources/workspace_secrets/client.py +43 -100
- vellum/client/resources/workspace_secrets/raw_client.py +219 -0
- vellum/client/resources/workspaces/__init__.py +2 -0
- vellum/client/resources/workspaces/client.py +37 -45
- vellum/client/resources/workspaces/raw_client.py +95 -0
- vellum/client/tests/__init__.py +0 -0
- vellum/client/tests/test_utils.py +34 -0
- vellum/client/types/__init__.py +260 -0
- vellum/client/types/ad_hoc_execute_prompt_event.py +3 -2
- vellum/client/types/ad_hoc_expand_meta.py +2 -2
- vellum/client/types/ad_hoc_fulfilled_prompt_execution_meta.py +3 -3
- vellum/client/types/ad_hoc_initiated_prompt_execution_meta.py +2 -2
- vellum/client/types/ad_hoc_rejected_prompt_execution_meta.py +3 -3
- vellum/client/types/ad_hoc_streaming_prompt_execution_meta.py +2 -2
- vellum/client/types/api_actor_type_enum.py +7 -0
- vellum/client/types/api_node_result.py +3 -3
- vellum/client/types/api_node_result_data.py +4 -4
- vellum/client/types/api_request_parent_context.py +17 -10
- vellum/client/types/api_version_enum.py +1 -1
- vellum/client/types/array_chat_message_content.py +3 -3
- vellum/client/types/array_chat_message_content_item.py +7 -4
- vellum/client/types/array_chat_message_content_item_request.py +7 -4
- vellum/client/types/array_chat_message_content_request.py +3 -3
- vellum/client/types/array_input.py +12 -6
- vellum/client/types/array_vellum_value.py +4 -4
- vellum/client/types/array_vellum_value_request.py +4 -4
- vellum/client/types/audio_chat_message_content.py +3 -3
- vellum/client/types/audio_chat_message_content_request.py +3 -3
- vellum/client/types/audio_input.py +30 -0
- vellum/client/types/audio_input_request.py +30 -0
- vellum/client/types/audio_prompt_block.py +4 -4
- vellum/client/types/audio_vellum_value.py +3 -3
- vellum/client/types/audio_vellum_value_request.py +3 -3
- vellum/client/types/auth_type_enum.py +5 -0
- vellum/client/types/base_output.py +4 -4
- vellum/client/types/basic_vectorizer_intfloat_multilingual_e_5_large.py +2 -2
- vellum/client/types/basic_vectorizer_intfloat_multilingual_e_5_large_request.py +2 -2
- vellum/client/types/basic_vectorizer_sentence_transformers_multi_qa_mpnet_base_cos_v_1.py +2 -2
- vellum/client/types/basic_vectorizer_sentence_transformers_multi_qa_mpnet_base_cos_v_1_request.py +2 -2
- vellum/client/types/basic_vectorizer_sentence_transformers_multi_qa_mpnet_base_dot_v_1.py +2 -2
- vellum/client/types/basic_vectorizer_sentence_transformers_multi_qa_mpnet_base_dot_v_1_request.py +2 -2
- vellum/client/types/build_status_enum.py +5 -0
- vellum/client/types/chat_history_input.py +3 -3
- vellum/client/types/chat_history_input_request.py +3 -3
- vellum/client/types/chat_history_vellum_value.py +3 -3
- vellum/client/types/chat_history_vellum_value_request.py +3 -3
- vellum/client/types/chat_message.py +4 -4
- vellum/client/types/chat_message_content.py +7 -4
- vellum/client/types/chat_message_content_request.py +7 -4
- vellum/client/types/chat_message_prompt_block.py +7 -7
- vellum/client/types/chat_message_request.py +4 -4
- vellum/client/types/check_workflow_execution_status_error.py +21 -0
- vellum/client/types/check_workflow_execution_status_response.py +29 -0
- vellum/client/types/code_execution_node_array_result.py +11 -5
- vellum/client/types/code_execution_node_chat_history_result.py +3 -3
- vellum/client/types/code_execution_node_error_result.py +3 -3
- vellum/client/types/code_execution_node_function_call_result.py +3 -3
- vellum/client/types/code_execution_node_json_result.py +2 -2
- vellum/client/types/code_execution_node_number_result.py +2 -2
- vellum/client/types/code_execution_node_result.py +10 -4
- vellum/client/types/code_execution_node_result_data.py +10 -4
- vellum/client/types/code_execution_node_result_output.py +6 -5
- vellum/client/types/code_execution_node_search_results_result.py +3 -3
- vellum/client/types/code_execution_node_string_result.py +2 -2
- vellum/client/types/code_execution_package.py +3 -2
- vellum/client/types/code_execution_package_request.py +21 -0
- vellum/client/types/code_executor_input.py +15 -6
- vellum/client/types/code_executor_response.py +11 -5
- vellum/client/types/code_executor_secret_input.py +3 -3
- vellum/client/types/code_resource_definition.py +3 -3
- vellum/client/types/compile_prompt_deployment_expand_meta_request.py +2 -2
- vellum/client/types/compile_prompt_meta.py +2 -2
- vellum/client/types/components_schemas_composio_execute_tool_request.py +5 -0
- vellum/client/types/components_schemas_composio_execute_tool_response.py +5 -0
- vellum/client/types/components_schemas_composio_integration_exec_config.py +5 -0
- vellum/client/types/components_schemas_composio_tool_definition.py +5 -0
- vellum/client/types/components_schemas_slim_composio_tool_definition.py +5 -0
- vellum/client/types/composio_execute_tool_request.py +29 -0
- vellum/client/types/composio_execute_tool_response.py +24 -0
- vellum/client/types/composio_integration_exec_config.py +21 -0
- vellum/client/types/composio_tool_definition.py +31 -0
- vellum/client/types/conditional_node_result.py +3 -3
- vellum/client/types/conditional_node_result_data.py +2 -2
- vellum/client/types/container_image_build_config.py +22 -0
- vellum/client/types/container_image_container_image_tag.py +3 -2
- vellum/client/types/container_image_read.py +8 -4
- vellum/client/types/create_test_suite_test_case_request.py +9 -3
- vellum/client/types/create_workflow_event_request.py +7 -0
- vellum/client/types/dataset_row_push_request.py +23 -0
- vellum/client/types/delimiter_chunker_config.py +20 -0
- vellum/client/types/delimiter_chunker_config_request.py +20 -0
- vellum/client/types/delimiter_chunking.py +21 -0
- vellum/client/types/delimiter_chunking_request.py +21 -0
- vellum/client/types/deployment_history_item.py +10 -4
- vellum/client/types/deployment_provider_payload_response.py +4 -4
- vellum/client/types/deployment_read.py +15 -9
- vellum/client/types/deployment_release_tag_deployment_history_item.py +2 -2
- vellum/client/types/deployment_release_tag_read.py +4 -4
- vellum/client/types/deprecated_prompt_request_input.py +8 -0
- vellum/client/types/docker_service_token.py +2 -2
- vellum/client/types/document_chat_message_content.py +3 -3
- vellum/client/types/document_chat_message_content_request.py +3 -3
- vellum/client/types/document_document_to_document_index.py +5 -4
- vellum/client/types/document_index_chunking.py +5 -1
- vellum/client/types/document_index_chunking_request.py +3 -1
- vellum/client/types/document_index_indexing_config.py +4 -4
- vellum/client/types/document_index_indexing_config_request.py +4 -4
- vellum/client/types/document_index_read.py +4 -4
- vellum/client/types/document_input.py +30 -0
- vellum/client/types/document_input_request.py +30 -0
- vellum/client/types/document_prompt_block.py +4 -4
- vellum/client/types/document_read.py +9 -5
- vellum/client/types/document_vellum_value.py +3 -3
- vellum/client/types/document_vellum_value_request.py +3 -3
- vellum/client/types/enriched_normalized_completion.py +3 -3
- vellum/client/types/environment_display_config.py +19 -0
- vellum/client/types/environment_read.py +23 -0
- vellum/client/types/ephemeral_prompt_cache_config.py +3 -3
- vellum/client/types/error_detail_response.py +22 -0
- vellum/client/types/error_input.py +3 -3
- vellum/client/types/error_vellum_value.py +3 -3
- vellum/client/types/error_vellum_value_request.py +3 -3
- vellum/client/types/event_create_response.py +31 -0
- vellum/client/types/execute_api_request_bearer_token.py +1 -0
- vellum/client/types/execute_api_request_headers_value.py +1 -0
- vellum/client/types/execute_api_response.py +6 -6
- vellum/client/types/execute_prompt_event.py +3 -2
- vellum/client/types/execute_prompt_response.py +1 -0
- vellum/client/types/execute_workflow_async_response.py +26 -0
- vellum/client/types/execute_workflow_response.py +10 -4
- vellum/client/types/execute_workflow_workflow_result_event.py +1 -0
- vellum/client/types/execution_array_vellum_value.py +12 -6
- vellum/client/types/execution_audio_vellum_value.py +31 -0
- vellum/client/types/execution_chat_history_vellum_value.py +3 -3
- vellum/client/types/execution_document_vellum_value.py +31 -0
- vellum/client/types/execution_error_vellum_value.py +3 -3
- vellum/client/types/execution_function_call_vellum_value.py +3 -3
- vellum/client/types/execution_image_vellum_value.py +31 -0
- vellum/client/types/execution_json_vellum_value.py +3 -3
- vellum/client/types/execution_number_vellum_value.py +3 -3
- vellum/client/types/execution_search_results_vellum_value.py +3 -3
- vellum/client/types/execution_string_vellum_value.py +3 -3
- vellum/client/types/execution_thinking_vellum_value.py +31 -0
- vellum/client/types/execution_vellum_value.py +16 -5
- vellum/client/types/execution_video_vellum_value.py +31 -0
- vellum/client/types/external_input_descriptor.py +3 -3
- vellum/client/types/external_parent_context.py +38 -0
- vellum/client/types/external_test_case_execution.py +10 -4
- vellum/client/types/external_test_case_execution_request.py +10 -4
- vellum/client/types/fast_embed_vectorizer_baai_bge_small_en_v_15.py +23 -0
- vellum/client/types/fast_embed_vectorizer_baai_bge_small_en_v_15_request.py +23 -0
- vellum/client/types/folder_entity.py +5 -2
- vellum/client/types/folder_entity_dataset.py +26 -0
- vellum/client/types/folder_entity_dataset_data.py +25 -0
- vellum/client/types/folder_entity_document_index.py +3 -3
- vellum/client/types/folder_entity_document_index_data.py +5 -3
- vellum/client/types/folder_entity_folder.py +3 -3
- vellum/client/types/folder_entity_folder_data.py +2 -2
- vellum/client/types/folder_entity_prompt_sandbox.py +3 -3
- vellum/client/types/folder_entity_prompt_sandbox_data.py +4 -3
- vellum/client/types/folder_entity_test_suite.py +3 -3
- vellum/client/types/folder_entity_test_suite_data.py +3 -3
- vellum/client/types/folder_entity_workflow_sandbox.py +3 -3
- vellum/client/types/folder_entity_workflow_sandbox_data.py +6 -3
- vellum/client/types/fulfilled_ad_hoc_execute_prompt_event.py +4 -4
- vellum/client/types/fulfilled_execute_prompt_event.py +4 -4
- vellum/client/types/fulfilled_execute_prompt_response.py +3 -3
- vellum/client/types/fulfilled_execute_workflow_workflow_result_event.py +11 -5
- vellum/client/types/fulfilled_prompt_execution_meta.py +3 -3
- vellum/client/types/fulfilled_workflow_node_result_event.py +12 -6
- vellum/client/types/function_call.py +2 -2
- vellum/client/types/function_call_chat_message_content.py +3 -3
- vellum/client/types/function_call_chat_message_content_request.py +3 -3
- vellum/client/types/function_call_chat_message_content_value.py +2 -2
- vellum/client/types/function_call_chat_message_content_value_request.py +2 -2
- vellum/client/types/function_call_input.py +3 -3
- vellum/client/types/function_call_prompt_block.py +4 -4
- vellum/client/types/function_call_request.py +2 -2
- vellum/client/types/function_call_vellum_value.py +3 -3
- vellum/client/types/function_call_vellum_value_request.py +3 -3
- vellum/client/types/function_definition.py +9 -4
- vellum/client/types/generate_options_request.py +3 -3
- vellum/client/types/generate_request.py +2 -2
- vellum/client/types/generate_response.py +3 -3
- vellum/client/types/generate_result.py +3 -3
- vellum/client/types/generate_result_data.py +3 -3
- vellum/client/types/generate_result_error.py +3 -3
- vellum/client/types/generate_stream_response.py +3 -3
- vellum/client/types/generate_stream_result.py +4 -4
- vellum/client/types/generate_stream_result_data.py +3 -3
- vellum/client/types/google_vertex_ai_vectorizer_config.py +2 -2
- vellum/client/types/google_vertex_ai_vectorizer_config_request.py +2 -2
- vellum/client/types/google_vertex_ai_vectorizer_gemini_embedding_001.py +21 -0
- vellum/client/types/google_vertex_ai_vectorizer_gemini_embedding_001_request.py +21 -0
- vellum/client/types/google_vertex_ai_vectorizer_text_embedding_004.py +3 -3
- vellum/client/types/google_vertex_ai_vectorizer_text_embedding_004_request.py +3 -3
- vellum/client/types/google_vertex_ai_vectorizer_text_multilingual_embedding_002.py +3 -3
- vellum/client/types/google_vertex_ai_vectorizer_text_multilingual_embedding_002_request.py +3 -3
- vellum/client/types/hkunlp_instructor_xl_vectorizer.py +3 -3
- vellum/client/types/hkunlp_instructor_xl_vectorizer_request.py +3 -3
- vellum/client/types/image_chat_message_content.py +3 -3
- vellum/client/types/image_chat_message_content_request.py +3 -3
- vellum/client/types/image_input.py +30 -0
- vellum/client/types/image_input_request.py +30 -0
- vellum/client/types/image_prompt_block.py +4 -4
- vellum/client/types/image_vellum_value.py +3 -3
- vellum/client/types/image_vellum_value_request.py +3 -3
- vellum/client/types/indexing_config_vectorizer.py +11 -4
- vellum/client/types/indexing_config_vectorizer_request.py +11 -4
- vellum/client/types/initiated_ad_hoc_execute_prompt_event.py +3 -3
- vellum/client/types/initiated_execute_prompt_event.py +3 -3
- vellum/client/types/initiated_prompt_execution_meta.py +2 -2
- vellum/client/types/initiated_workflow_node_result_event.py +12 -6
- vellum/client/types/instructor_vectorizer_config.py +2 -2
- vellum/client/types/instructor_vectorizer_config_request.py +2 -2
- vellum/client/types/integration.py +27 -0
- vellum/client/types/integration_auth_config_integration.py +23 -0
- vellum/client/types/integration_auth_config_integration_credential.py +19 -0
- vellum/client/types/integration_credential_access_type.py +5 -0
- vellum/client/types/integration_name.py +109 -0
- vellum/client/types/integration_provider.py +5 -0
- vellum/client/types/integration_read.py +30 -0
- vellum/client/types/integration_trigger_context.py +39 -0
- vellum/client/types/invoked_port.py +2 -2
- vellum/client/types/jinja_prompt_block.py +4 -4
- vellum/client/types/json_input.py +3 -3
- vellum/client/types/json_input_request.py +3 -3
- vellum/client/types/json_vellum_value.py +2 -2
- vellum/client/types/json_vellum_value_request.py +2 -2
- vellum/client/types/logical_operator.py +4 -0
- vellum/client/types/map_node_result.py +3 -3
- vellum/client/types/map_node_result_data.py +3 -3
- vellum/client/types/merge_node_result.py +3 -3
- vellum/client/types/merge_node_result_data.py +2 -2
- vellum/client/types/metadata_filter_config_request.py +12 -6
- vellum/client/types/metadata_filter_rule_request.py +5 -5
- vellum/client/types/metadata_filters_request.py +1 -0
- vellum/client/types/metric_definition_execution.py +10 -4
- vellum/client/types/metric_definition_history_item.py +10 -4
- vellum/client/types/metric_definition_input.py +3 -2
- vellum/client/types/metric_node_result.py +2 -2
- vellum/client/types/ml_model_read.py +6 -3
- vellum/client/types/ml_model_usage.py +2 -2
- vellum/client/types/ml_model_usage_wrapper.py +3 -3
- vellum/client/types/named_scenario_input_audio_variable_value_request.py +22 -0
- vellum/client/types/named_scenario_input_chat_history_variable_value_request.py +3 -3
- vellum/client/types/named_scenario_input_document_variable_value_request.py +22 -0
- vellum/client/types/named_scenario_input_image_variable_value_request.py +22 -0
- vellum/client/types/named_scenario_input_json_variable_value_request.py +2 -2
- vellum/client/types/named_scenario_input_request.py +11 -2
- vellum/client/types/named_scenario_input_string_variable_value_request.py +2 -2
- vellum/client/types/named_scenario_input_video_variable_value_request.py +22 -0
- vellum/client/types/named_test_case_array_variable_value.py +11 -5
- vellum/client/types/named_test_case_array_variable_value_request.py +11 -5
- vellum/client/types/named_test_case_audio_variable_value.py +26 -0
- vellum/client/types/named_test_case_audio_variable_value_request.py +26 -0
- vellum/client/types/named_test_case_chat_history_variable_value.py +3 -3
- vellum/client/types/named_test_case_chat_history_variable_value_request.py +3 -3
- vellum/client/types/named_test_case_document_variable_value.py +22 -0
- vellum/client/types/named_test_case_document_variable_value_request.py +22 -0
- vellum/client/types/named_test_case_error_variable_value.py +3 -3
- vellum/client/types/named_test_case_error_variable_value_request.py +3 -3
- vellum/client/types/named_test_case_function_call_variable_value.py +3 -3
- vellum/client/types/named_test_case_function_call_variable_value_request.py +3 -3
- vellum/client/types/named_test_case_image_variable_value.py +22 -0
- vellum/client/types/named_test_case_image_variable_value_request.py +22 -0
- vellum/client/types/named_test_case_json_variable_value.py +2 -2
- vellum/client/types/named_test_case_json_variable_value_request.py +2 -2
- vellum/client/types/named_test_case_number_variable_value.py +2 -2
- vellum/client/types/named_test_case_number_variable_value_request.py +2 -2
- vellum/client/types/named_test_case_search_results_variable_value.py +3 -3
- vellum/client/types/named_test_case_search_results_variable_value_request.py +3 -3
- vellum/client/types/named_test_case_string_variable_value.py +2 -2
- vellum/client/types/named_test_case_string_variable_value_request.py +2 -2
- vellum/client/types/named_test_case_variable_value.py +14 -5
- vellum/client/types/named_test_case_variable_value_request.py +14 -5
- vellum/client/types/named_test_case_video_variable_value.py +22 -0
- vellum/client/types/named_test_case_video_variable_value_request.py +22 -0
- vellum/client/types/node_execution_fulfilled_body.py +5 -4
- vellum/client/types/node_execution_fulfilled_event.py +24 -15
- vellum/client/types/node_execution_initiated_body.py +3 -3
- vellum/client/types/node_execution_initiated_event.py +24 -15
- vellum/client/types/node_execution_log_body.py +24 -0
- vellum/client/types/node_execution_log_event.py +47 -0
- vellum/client/types/node_execution_paused_body.py +3 -3
- vellum/client/types/node_execution_paused_event.py +24 -15
- vellum/client/types/node_execution_rejected_body.py +5 -4
- vellum/client/types/node_execution_rejected_event.py +24 -15
- vellum/client/types/node_execution_resumed_body.py +3 -3
- vellum/client/types/node_execution_resumed_event.py +24 -15
- vellum/client/types/node_execution_span.py +23 -12
- vellum/client/types/node_execution_span_attributes.py +4 -2
- vellum/client/types/node_execution_streaming_body.py +4 -4
- vellum/client/types/node_execution_streaming_event.py +24 -15
- vellum/client/types/node_input_compiled_array_value.py +11 -5
- vellum/client/types/node_input_compiled_audio_value.py +23 -0
- vellum/client/types/node_input_compiled_chat_history_value.py +3 -3
- vellum/client/types/node_input_compiled_document_value.py +23 -0
- vellum/client/types/node_input_compiled_error_value.py +3 -3
- vellum/client/types/node_input_compiled_function_call_value.py +3 -3
- vellum/client/types/node_input_compiled_image_value.py +23 -0
- vellum/client/types/node_input_compiled_json_value.py +2 -2
- vellum/client/types/node_input_compiled_number_value.py +2 -2
- vellum/client/types/node_input_compiled_search_results_value.py +3 -3
- vellum/client/types/node_input_compiled_secret_value.py +3 -3
- vellum/client/types/node_input_compiled_string_value.py +2 -2
- vellum/client/types/node_input_compiled_video_value.py +23 -0
- vellum/client/types/node_input_variable_compiled_value.py +14 -5
- vellum/client/types/node_output_compiled_array_value.py +12 -6
- vellum/client/types/node_output_compiled_chat_history_value.py +3 -3
- vellum/client/types/node_output_compiled_error_value.py +3 -3
- vellum/client/types/node_output_compiled_function_call_value.py +3 -3
- vellum/client/types/node_output_compiled_json_value.py +3 -3
- vellum/client/types/node_output_compiled_number_value.py +3 -3
- vellum/client/types/node_output_compiled_search_results_value.py +3 -3
- vellum/client/types/node_output_compiled_string_value.py +3 -3
- vellum/client/types/node_output_compiled_thinking_value.py +28 -0
- vellum/client/types/node_output_compiled_value.py +8 -5
- vellum/client/types/node_parent_context.py +14 -11
- vellum/client/types/normalized_log_probs.py +3 -3
- vellum/client/types/normalized_token_log_probs.py +2 -2
- vellum/client/types/number_input.py +3 -3
- vellum/client/types/number_vellum_value.py +2 -2
- vellum/client/types/number_vellum_value_request.py +2 -2
- vellum/client/types/open_ai_vectorizer_config.py +3 -3
- vellum/client/types/open_ai_vectorizer_config_request.py +3 -3
- vellum/client/types/open_ai_vectorizer_text_embedding_3_large.py +3 -3
- vellum/client/types/open_ai_vectorizer_text_embedding_3_large_request.py +3 -3
- vellum/client/types/open_ai_vectorizer_text_embedding_3_small.py +3 -3
- vellum/client/types/open_ai_vectorizer_text_embedding_3_small_request.py +3 -3
- vellum/client/types/open_ai_vectorizer_text_embedding_ada_002.py +3 -3
- vellum/client/types/open_ai_vectorizer_text_embedding_ada_002_request.py +3 -3
- vellum/client/types/organization_read.py +6 -3
- vellum/client/types/paginated_container_image_read_list.py +3 -3
- vellum/client/types/paginated_deployment_release_tag_read_list.py +3 -3
- vellum/client/types/paginated_document_index_read_list.py +3 -3
- vellum/client/types/paginated_folder_entity_list.py +3 -3
- vellum/client/types/paginated_slim_deployment_read_list.py +10 -4
- vellum/client/types/paginated_slim_document_list.py +3 -3
- vellum/client/types/paginated_slim_integration_auth_config_read_list.py +23 -0
- vellum/client/types/paginated_slim_integration_read_list.py +23 -0
- vellum/client/types/paginated_slim_tool_definition_list.py +23 -0
- vellum/client/types/paginated_slim_workflow_deployment_list.py +10 -4
- vellum/client/types/paginated_test_suite_run_execution_list.py +10 -4
- vellum/client/types/paginated_test_suite_test_case_list.py +10 -4
- vellum/client/types/paginated_workflow_deployment_release_list.py +30 -0
- vellum/client/types/paginated_workflow_release_tag_read_list.py +3 -3
- vellum/client/types/paginated_workflow_sandbox_example_list.py +3 -3
- vellum/client/types/parent_context.py +21 -11
- vellum/client/types/pdf_search_result_meta_source.py +2 -2
- vellum/client/types/pdf_search_result_meta_source_request.py +2 -2
- vellum/client/types/plain_text_prompt_block.py +4 -4
- vellum/client/types/price.py +3 -3
- vellum/client/types/private_vectorizer.py +23 -0
- vellum/client/types/private_vectorizer_request.py +23 -0
- vellum/client/types/processing_failure_reason_enum.py +3 -1
- vellum/client/types/prompt_block.py +9 -6
- vellum/client/types/prompt_deployment_expand_meta_request.py +2 -2
- vellum/client/types/prompt_deployment_input_request.py +16 -3
- vellum/client/types/prompt_deployment_parent_context.py +13 -10
- vellum/client/types/prompt_deployment_release.py +6 -6
- vellum/client/types/prompt_deployment_release_prompt_deployment.py +3 -2
- vellum/client/types/prompt_deployment_release_prompt_version.py +4 -4
- vellum/client/types/prompt_exec_config.py +15 -9
- vellum/client/types/prompt_execution_meta.py +3 -3
- vellum/client/types/prompt_node_execution_meta.py +3 -3
- vellum/client/types/prompt_node_result.py +3 -3
- vellum/client/types/prompt_node_result_data.py +3 -3
- vellum/client/types/prompt_output.py +7 -3
- vellum/client/types/prompt_parameters.py +2 -2
- vellum/client/types/prompt_push_response.py +2 -2
- vellum/client/types/prompt_request_audio_input.py +26 -0
- vellum/client/types/prompt_request_chat_history_input.py +3 -3
- vellum/client/types/prompt_request_document_input.py +26 -0
- vellum/client/types/prompt_request_image_input.py +26 -0
- vellum/client/types/prompt_request_input.py +16 -3
- vellum/client/types/prompt_request_json_input.py +3 -3
- vellum/client/types/prompt_request_string_input.py +3 -3
- vellum/client/types/prompt_request_video_input.py +26 -0
- vellum/client/types/prompt_settings.py +2 -2
- vellum/client/types/prompt_version_build_config_sandbox.py +2 -2
- vellum/client/types/raw_prompt_execution_overrides_request.py +2 -2
- vellum/client/types/reducto_chunker_config.py +2 -2
- vellum/client/types/reducto_chunker_config_request.py +2 -2
- vellum/client/types/reducto_chunking.py +3 -3
- vellum/client/types/reducto_chunking_request.py +3 -3
- vellum/client/types/rejected_ad_hoc_execute_prompt_event.py +4 -4
- vellum/client/types/rejected_execute_prompt_event.py +4 -4
- vellum/client/types/rejected_execute_prompt_response.py +3 -3
- vellum/client/types/rejected_execute_workflow_workflow_result_event.py +4 -4
- vellum/client/types/rejected_prompt_execution_meta.py +3 -3
- vellum/client/types/rejected_workflow_node_result_event.py +12 -6
- vellum/client/types/release_created_by.py +2 -2
- vellum/client/types/release_environment.py +2 -2
- vellum/client/types/release_release_tag.py +3 -3
- vellum/client/types/release_review_reviewer.py +2 -2
- vellum/client/types/release_tag_release.py +2 -2
- vellum/client/types/replace_test_suite_test_case_request.py +9 -3
- vellum/client/types/rich_text_child_block.py +2 -1
- vellum/client/types/rich_text_prompt_block.py +4 -4
- vellum/client/types/runner_config_request.py +24 -0
- vellum/client/types/sandbox_scenario.py +3 -3
- vellum/client/types/scenario_input.py +14 -3
- vellum/client/types/scenario_input_audio_variable_value.py +22 -0
- vellum/client/types/scenario_input_chat_history_variable_value.py +3 -3
- vellum/client/types/scenario_input_document_variable_value.py +22 -0
- vellum/client/types/scenario_input_image_variable_value.py +22 -0
- vellum/client/types/scenario_input_json_variable_value.py +2 -2
- vellum/client/types/scenario_input_string_variable_value.py +2 -2
- vellum/client/types/scenario_input_video_variable_value.py +22 -0
- vellum/client/types/scheduled_trigger_context.py +39 -0
- vellum/client/types/search_filters_request.py +11 -5
- vellum/client/types/search_node_result.py +3 -3
- vellum/client/types/search_node_result_data.py +3 -3
- vellum/client/types/search_request_options_request.py +13 -7
- vellum/client/types/search_response.py +3 -3
- vellum/client/types/search_result.py +3 -3
- vellum/client/types/search_result_document.py +2 -2
- vellum/client/types/search_result_document_request.py +2 -2
- vellum/client/types/search_result_merging_request.py +2 -2
- vellum/client/types/search_result_meta.py +3 -3
- vellum/client/types/search_result_meta_request.py +3 -3
- vellum/client/types/search_result_request.py +3 -3
- vellum/client/types/search_results_input.py +3 -3
- vellum/client/types/search_results_vellum_value.py +3 -3
- vellum/client/types/search_results_vellum_value_request.py +3 -3
- vellum/client/types/search_weights_request.py +2 -2
- vellum/client/types/secret_type_enum.py +3 -1
- vellum/client/types/sentence_chunker_config.py +2 -2
- vellum/client/types/sentence_chunker_config_request.py +2 -2
- vellum/client/types/sentence_chunking.py +3 -3
- vellum/client/types/sentence_chunking_request.py +3 -3
- vellum/client/types/severity_enum.py +5 -0
- vellum/client/types/slim_composio_tool_definition.py +25 -0
- vellum/client/types/slim_deployment_read.py +15 -9
- vellum/client/types/slim_document.py +6 -5
- vellum/client/types/slim_document_document_to_document_index.py +6 -4
- vellum/client/types/slim_integration_auth_config_read.py +36 -0
- vellum/client/types/slim_integration_read.py +25 -0
- vellum/client/types/slim_release_review.py +4 -4
- vellum/client/types/slim_workflow_deployment.py +16 -10
- vellum/client/types/slim_workflow_execution_read.py +24 -15
- vellum/client/types/span_link.py +15 -12
- vellum/client/types/span_link_type_enum.py +1 -1
- vellum/client/types/streaming_ad_hoc_execute_prompt_event.py +4 -4
- vellum/client/types/streaming_execute_prompt_event.py +3 -3
- vellum/client/types/streaming_prompt_execution_meta.py +2 -2
- vellum/client/types/streaming_workflow_node_result_event.py +12 -6
- vellum/client/types/string_chat_message_content.py +2 -2
- vellum/client/types/string_chat_message_content_request.py +2 -2
- vellum/client/types/string_input.py +3 -3
- vellum/client/types/string_input_request.py +3 -3
- vellum/client/types/string_vellum_value.py +2 -2
- vellum/client/types/string_vellum_value_request.py +2 -2
- vellum/client/types/submit_completion_actual_request.py +3 -3
- vellum/client/types/submit_workflow_execution_actual_request.py +3 -2
- vellum/client/types/subworkflow_node_result.py +3 -3
- vellum/client/types/subworkflow_node_result_data.py +2 -2
- vellum/client/types/templating_node_array_result.py +11 -5
- vellum/client/types/templating_node_chat_history_result.py +3 -3
- vellum/client/types/templating_node_error_result.py +3 -3
- vellum/client/types/templating_node_function_call_result.py +3 -3
- vellum/client/types/templating_node_json_result.py +2 -2
- vellum/client/types/templating_node_number_result.py +2 -2
- vellum/client/types/templating_node_result.py +10 -4
- vellum/client/types/templating_node_result_data.py +10 -4
- vellum/client/types/templating_node_result_output.py +6 -5
- vellum/client/types/templating_node_search_results_result.py +3 -3
- vellum/client/types/templating_node_string_result.py +2 -2
- vellum/client/types/terminal_node_array_result.py +11 -5
- vellum/client/types/terminal_node_chat_history_result.py +2 -2
- vellum/client/types/terminal_node_error_result.py +2 -2
- vellum/client/types/terminal_node_function_call_result.py +2 -2
- vellum/client/types/terminal_node_json_result.py +2 -2
- vellum/client/types/terminal_node_number_result.py +2 -2
- vellum/client/types/terminal_node_result.py +10 -4
- vellum/client/types/terminal_node_result_data.py +10 -4
- vellum/client/types/terminal_node_result_output.py +6 -5
- vellum/client/types/terminal_node_search_results_result.py +2 -2
- vellum/client/types/terminal_node_string_result.py +2 -2
- vellum/client/types/test_case_array_variable_value.py +11 -5
- vellum/client/types/test_case_audio_variable_value.py +27 -0
- vellum/client/types/test_case_chat_history_variable_value.py +3 -3
- vellum/client/types/test_case_document_variable_value.py +27 -0
- vellum/client/types/test_case_error_variable_value.py +3 -3
- vellum/client/types/test_case_function_call_variable_value.py +3 -3
- vellum/client/types/test_case_image_variable_value.py +27 -0
- vellum/client/types/test_case_json_variable_value.py +2 -2
- vellum/client/types/test_case_number_variable_value.py +2 -2
- vellum/client/types/test_case_search_results_variable_value.py +3 -3
- vellum/client/types/test_case_string_variable_value.py +2 -2
- vellum/client/types/test_case_variable_value.py +14 -5
- vellum/client/types/test_case_video_variable_value.py +27 -0
- vellum/client/types/test_suite_run_deployment_release_tag_exec_config.py +3 -3
- vellum/client/types/test_suite_run_deployment_release_tag_exec_config_data.py +3 -3
- vellum/client/types/test_suite_run_deployment_release_tag_exec_config_data_request.py +3 -3
- vellum/client/types/test_suite_run_deployment_release_tag_exec_config_request.py +3 -3
- vellum/client/types/test_suite_run_exec_config.py +2 -1
- vellum/client/types/test_suite_run_exec_config_request.py +2 -1
- vellum/client/types/test_suite_run_execution.py +11 -5
- vellum/client/types/test_suite_run_execution_array_output.py +11 -5
- vellum/client/types/test_suite_run_execution_chat_history_output.py +3 -3
- vellum/client/types/test_suite_run_execution_error_output.py +3 -3
- vellum/client/types/test_suite_run_execution_function_call_output.py +3 -3
- vellum/client/types/test_suite_run_execution_json_output.py +2 -2
- vellum/client/types/test_suite_run_execution_metric_definition.py +2 -2
- vellum/client/types/test_suite_run_execution_metric_result.py +11 -5
- vellum/client/types/test_suite_run_execution_number_output.py +2 -2
- vellum/client/types/test_suite_run_execution_output.py +6 -5
- vellum/client/types/test_suite_run_execution_search_results_output.py +3 -3
- vellum/client/types/test_suite_run_execution_string_output.py +2 -2
- vellum/client/types/test_suite_run_external_exec_config.py +10 -4
- vellum/client/types/test_suite_run_external_exec_config_data.py +10 -4
- vellum/client/types/test_suite_run_external_exec_config_data_request.py +10 -4
- vellum/client/types/test_suite_run_external_exec_config_request.py +10 -4
- vellum/client/types/test_suite_run_metric_array_output.py +11 -5
- vellum/client/types/test_suite_run_metric_error_output.py +3 -3
- vellum/client/types/test_suite_run_metric_json_output.py +2 -2
- vellum/client/types/test_suite_run_metric_number_output.py +2 -2
- vellum/client/types/test_suite_run_metric_output.py +5 -4
- vellum/client/types/test_suite_run_metric_string_output.py +2 -2
- vellum/client/types/test_suite_run_progress.py +2 -2
- vellum/client/types/test_suite_run_prompt_sandbox_exec_config_data_request.py +3 -3
- vellum/client/types/test_suite_run_prompt_sandbox_exec_config_request.py +3 -3
- vellum/client/types/test_suite_run_prompt_sandbox_history_item_exec_config.py +3 -3
- vellum/client/types/test_suite_run_prompt_sandbox_history_item_exec_config_data.py +3 -3
- vellum/client/types/test_suite_run_prompt_sandbox_history_item_exec_config_data_request.py +3 -3
- vellum/client/types/test_suite_run_prompt_sandbox_history_item_exec_config_request.py +3 -3
- vellum/client/types/test_suite_run_read.py +12 -6
- vellum/client/types/test_suite_run_test_suite.py +2 -2
- vellum/client/types/test_suite_run_workflow_release_tag_exec_config.py +3 -3
- vellum/client/types/test_suite_run_workflow_release_tag_exec_config_data.py +3 -3
- vellum/client/types/test_suite_run_workflow_release_tag_exec_config_data_request.py +3 -3
- vellum/client/types/test_suite_run_workflow_release_tag_exec_config_request.py +3 -3
- vellum/client/types/test_suite_run_workflow_sandbox_exec_config_data_request.py +3 -3
- vellum/client/types/test_suite_run_workflow_sandbox_exec_config_request.py +3 -3
- vellum/client/types/test_suite_run_workflow_sandbox_history_item_exec_config.py +3 -3
- vellum/client/types/test_suite_run_workflow_sandbox_history_item_exec_config_data.py +3 -3
- vellum/client/types/test_suite_run_workflow_sandbox_history_item_exec_config_data_request.py +3 -3
- vellum/client/types/test_suite_run_workflow_sandbox_history_item_exec_config_request.py +3 -3
- vellum/client/types/test_suite_test_case.py +10 -4
- vellum/client/types/test_suite_test_case_bulk_operation_request.py +2 -1
- vellum/client/types/test_suite_test_case_bulk_result.py +2 -1
- vellum/client/types/test_suite_test_case_create_bulk_operation_request.py +10 -4
- vellum/client/types/test_suite_test_case_created_bulk_result.py +3 -3
- vellum/client/types/test_suite_test_case_created_bulk_result_data.py +2 -2
- vellum/client/types/test_suite_test_case_delete_bulk_operation_data_request.py +2 -2
- vellum/client/types/test_suite_test_case_delete_bulk_operation_request.py +3 -3
- vellum/client/types/test_suite_test_case_deleted_bulk_result.py +3 -3
- vellum/client/types/test_suite_test_case_deleted_bulk_result_data.py +2 -2
- vellum/client/types/test_suite_test_case_rejected_bulk_result.py +2 -2
- vellum/client/types/test_suite_test_case_replace_bulk_operation_request.py +10 -4
- vellum/client/types/test_suite_test_case_replaced_bulk_result.py +3 -3
- vellum/client/types/test_suite_test_case_replaced_bulk_result_data.py +2 -2
- vellum/client/types/test_suite_test_case_upsert_bulk_operation_request.py +10 -4
- vellum/client/types/thinking_vellum_value.py +25 -0
- vellum/client/types/thinking_vellum_value_request.py +25 -0
- vellum/client/types/token_overlapping_window_chunker_config.py +2 -2
- vellum/client/types/token_overlapping_window_chunker_config_request.py +2 -2
- vellum/client/types/token_overlapping_window_chunking.py +3 -3
- vellum/client/types/token_overlapping_window_chunking_request.py +3 -3
- vellum/client/types/type_checker_enum.py +5 -0
- vellum/client/types/update_active_workspace_response.py +32 -0
- vellum/client/types/upload_document_response.py +3 -3
- vellum/client/types/uploaded_file_read.py +27 -0
- vellum/client/types/upsert_test_suite_test_case_request.py +9 -3
- vellum/client/types/variable_prompt_block.py +11 -4
- vellum/client/types/vellum_audio.py +10 -5
- vellum/client/types/vellum_audio_request.py +8 -4
- vellum/client/types/vellum_code_resource_definition.py +7 -2
- vellum/client/types/vellum_document.py +13 -4
- vellum/client/types/vellum_document_request.py +11 -3
- vellum/client/types/vellum_error.py +5 -4
- vellum/client/types/vellum_error_code_enum.py +6 -0
- vellum/client/types/vellum_error_request.py +5 -4
- vellum/client/types/vellum_image.py +13 -4
- vellum/client/types/vellum_image_request.py +11 -3
- vellum/client/types/vellum_node_execution_event.py +6 -3
- vellum/client/types/vellum_sdk_error.py +4 -3
- vellum/client/types/vellum_sdk_error_code_enum.py +5 -0
- vellum/client/types/vellum_secret.py +2 -2
- vellum/client/types/vellum_span.py +2 -1
- vellum/client/types/vellum_value.py +13 -8
- vellum/client/types/vellum_value_logical_condition_group_request.py +6 -6
- vellum/client/types/vellum_value_logical_condition_request.py +13 -7
- vellum/client/types/vellum_value_logical_expression_request.py +2 -1
- vellum/client/types/vellum_value_request.py +13 -8
- vellum/client/types/vellum_variable.py +18 -7
- vellum/client/types/vellum_variable_extensions.py +4 -2
- vellum/client/types/vellum_variable_type.py +4 -1
- vellum/client/types/vellum_video.py +29 -0
- vellum/client/types/vellum_video_request.py +28 -0
- vellum/client/types/vellum_workflow_execution_event.py +4 -3
- vellum/client/types/video_chat_message_content.py +25 -0
- vellum/client/types/video_chat_message_content_request.py +25 -0
- vellum/client/types/video_input.py +30 -0
- vellum/client/types/video_input_request.py +30 -0
- vellum/client/types/video_prompt_block.py +29 -0
- vellum/client/types/video_vellum_value.py +25 -0
- vellum/client/types/video_vellum_value_request.py +25 -0
- vellum/client/types/workflow_deployment_display_data.py +27 -0
- vellum/client/types/workflow_deployment_event_executions_response.py +20 -11
- vellum/client/types/workflow_deployment_history_item.py +10 -4
- vellum/client/types/workflow_deployment_parent_context.py +13 -10
- vellum/client/types/workflow_deployment_read.py +22 -10
- vellum/client/types/workflow_deployment_release.py +13 -7
- vellum/client/types/workflow_deployment_release_workflow_deployment.py +3 -2
- vellum/client/types/workflow_deployment_release_workflow_version.py +10 -4
- vellum/client/types/workflow_display_icon.py +24 -0
- vellum/client/types/workflow_error.py +1 -0
- vellum/client/types/workflow_event.py +39 -0
- vellum/client/types/workflow_event_error.py +5 -3
- vellum/client/types/workflow_event_execution_read.py +26 -16
- vellum/client/types/workflow_execution_actual.py +11 -5
- vellum/client/types/workflow_execution_actual_chat_history_request.py +2 -2
- vellum/client/types/workflow_execution_actual_json_request.py +2 -2
- vellum/client/types/workflow_execution_actual_string_request.py +2 -2
- vellum/client/types/workflow_execution_detail.py +51 -0
- vellum/client/types/workflow_execution_event_error_code.py +5 -0
- vellum/client/types/workflow_execution_fulfilled_body.py +6 -3
- vellum/client/types/workflow_execution_fulfilled_event.py +24 -15
- vellum/client/types/workflow_execution_initiated_body.py +3 -3
- vellum/client/types/workflow_execution_initiated_event.py +24 -15
- vellum/client/types/workflow_execution_node_result_event.py +10 -4
- vellum/client/types/workflow_execution_paused_body.py +4 -4
- vellum/client/types/workflow_execution_paused_event.py +24 -15
- vellum/client/types/workflow_execution_rejected_body.py +5 -4
- vellum/client/types/workflow_execution_rejected_event.py +24 -15
- vellum/client/types/workflow_execution_resumed_body.py +3 -3
- vellum/client/types/workflow_execution_resumed_event.py +24 -15
- vellum/client/types/workflow_execution_snapshotted_body.py +4 -3
- vellum/client/types/workflow_execution_snapshotted_event.py +24 -15
- vellum/client/types/workflow_execution_span.py +22 -11
- vellum/client/types/workflow_execution_span_attributes.py +3 -2
- vellum/client/types/workflow_execution_streaming_body.py +4 -4
- vellum/client/types/workflow_execution_streaming_event.py +24 -15
- vellum/client/types/workflow_execution_usage_calculation_error.py +3 -3
- vellum/client/types/workflow_execution_usage_calculation_fulfilled_body.py +22 -0
- vellum/client/types/workflow_execution_usage_result.py +3 -3
- vellum/client/types/workflow_execution_view_online_eval_metric_result.py +10 -4
- vellum/client/types/workflow_execution_workflow_result_event.py +10 -4
- vellum/client/types/workflow_expand_meta_request.py +2 -2
- vellum/client/types/workflow_initialization_error.py +2 -2
- vellum/client/types/workflow_input.py +31 -0
- vellum/client/types/workflow_node_result_data.py +8 -7
- vellum/client/types/workflow_node_result_event.py +3 -2
- vellum/client/types/workflow_output.py +12 -5
- vellum/client/types/workflow_output_array.py +12 -6
- vellum/client/types/workflow_output_audio.py +31 -0
- vellum/client/types/workflow_output_chat_history.py +3 -3
- vellum/client/types/workflow_output_document.py +31 -0
- vellum/client/types/workflow_output_error.py +3 -3
- vellum/client/types/workflow_output_function_call.py +3 -3
- vellum/client/types/workflow_output_image.py +3 -3
- vellum/client/types/workflow_output_json.py +3 -3
- vellum/client/types/workflow_output_number.py +3 -3
- vellum/client/types/workflow_output_search_results.py +3 -3
- vellum/client/types/workflow_output_string.py +3 -3
- vellum/client/types/workflow_output_video.py +31 -0
- vellum/client/types/workflow_parent_context.py +14 -11
- vellum/client/types/workflow_push_deployment_config_request.py +3 -2
- vellum/client/types/workflow_push_response.py +2 -2
- vellum/client/types/workflow_release_tag_read.py +4 -4
- vellum/client/types/workflow_release_tag_workflow_deployment_history_item.py +2 -2
- vellum/client/types/workflow_request_audio_input_request.py +30 -0
- vellum/client/types/workflow_request_chat_history_input_request.py +3 -3
- vellum/client/types/workflow_request_document_input_request.py +30 -0
- vellum/client/types/workflow_request_image_input_request.py +30 -0
- vellum/client/types/workflow_request_input_request.py +11 -2
- vellum/client/types/workflow_request_json_input_request.py +3 -3
- vellum/client/types/workflow_request_number_input_request.py +3 -3
- vellum/client/types/workflow_request_string_input_request.py +3 -3
- vellum/client/types/workflow_request_video_input_request.py +30 -0
- vellum/client/types/workflow_resolved_state.py +31 -0
- vellum/client/types/workflow_result_event.py +14 -8
- vellum/client/types/workflow_result_event_output_data.py +7 -6
- vellum/client/types/workflow_result_event_output_data_array.py +13 -7
- vellum/client/types/workflow_result_event_output_data_chat_history.py +4 -4
- vellum/client/types/workflow_result_event_output_data_error.py +4 -4
- vellum/client/types/workflow_result_event_output_data_function_call.py +4 -4
- vellum/client/types/workflow_result_event_output_data_json.py +4 -4
- vellum/client/types/workflow_result_event_output_data_number.py +4 -4
- vellum/client/types/workflow_result_event_output_data_search_results.py +4 -4
- vellum/client/types/workflow_result_event_output_data_string.py +4 -4
- vellum/client/types/workflow_result_event_state.py +7 -0
- vellum/client/types/workflow_sandbox_display_data.py +27 -0
- vellum/client/types/workflow_sandbox_example.py +4 -2
- vellum/client/types/workflow_sandbox_execute_node_response.py +8 -0
- vellum/client/types/workflow_sandbox_parent_context.py +13 -10
- vellum/client/types/workflow_stream_event.py +2 -1
- vellum/client/types/workspace_display_config.py +19 -0
- vellum/client/types/workspace_read.py +5 -3
- vellum/client/types/workspace_secret_read.py +3 -3
- vellum/client/utils.py +24 -0
- vellum/core/force_multipart.py +3 -0
- vellum/core/http_response.py +3 -0
- vellum/errors/misdirected_request_error.py +3 -0
- vellum/errors/too_many_requests_error.py +3 -0
- vellum/errors/unauthorized_error.py +3 -0
- vellum/evaluations/resources.py +5 -5
- vellum/plugins/pydantic.py +14 -3
- vellum/plugins/tests/__init__.py +0 -0
- vellum/plugins/tests/test_pydantic.py +30 -0
- vellum/plugins/vellum_mypy.py +68 -25
- vellum/prompts/__init__.py +3 -0
- vellum/prompts/blocks/__init__.py +3 -0
- vellum/prompts/blocks/compilation.py +29 -11
- vellum/prompts/blocks/helpers.py +31 -0
- vellum/prompts/blocks/tests/test_compilation.py +64 -0
- vellum/raw_client.py +3 -0
- vellum/resources/ad_hoc/raw_client.py +3 -0
- vellum/resources/container_images/raw_client.py +3 -0
- vellum/resources/deployments/raw_client.py +3 -0
- vellum/resources/document_indexes/raw_client.py +3 -0
- vellum/resources/documents/raw_client.py +3 -0
- vellum/resources/{release_reviews → environments}/__init__.py +1 -1
- vellum/resources/{release_reviews → environments}/client.py +1 -1
- vellum/resources/environments/raw_client.py +3 -0
- vellum/resources/events/__init__.py +3 -0
- vellum/resources/events/client.py +3 -0
- vellum/resources/events/raw_client.py +3 -0
- vellum/resources/folder_entities/raw_client.py +3 -0
- vellum/resources/integration_auth_configs/__init__.py +3 -0
- vellum/resources/integration_auth_configs/client.py +3 -0
- vellum/resources/integration_auth_configs/raw_client.py +3 -0
- vellum/resources/integration_providers/__init__.py +3 -0
- vellum/resources/integration_providers/client.py +3 -0
- vellum/resources/integration_providers/raw_client.py +3 -0
- vellum/resources/integrations/__init__.py +3 -0
- vellum/resources/integrations/client.py +3 -0
- vellum/resources/integrations/raw_client.py +3 -0
- vellum/resources/metric_definitions/raw_client.py +3 -0
- vellum/resources/ml_models/raw_client.py +3 -0
- vellum/resources/organizations/raw_client.py +3 -0
- vellum/resources/prompts/raw_client.py +3 -0
- vellum/resources/sandboxes/raw_client.py +3 -0
- vellum/resources/test_suite_runs/raw_client.py +3 -0
- vellum/resources/test_suites/raw_client.py +3 -0
- vellum/resources/uploaded_files/__init__.py +3 -0
- vellum/resources/uploaded_files/client.py +3 -0
- vellum/resources/uploaded_files/raw_client.py +3 -0
- vellum/resources/workflow_deployments/raw_client.py +3 -0
- vellum/resources/workflow_executions/__init__.py +3 -0
- vellum/resources/workflow_executions/client.py +3 -0
- vellum/resources/workflow_executions/raw_client.py +3 -0
- vellum/resources/workflow_sandboxes/raw_client.py +3 -0
- vellum/resources/workflows/raw_client.py +3 -0
- vellum/resources/workspace_secrets/raw_client.py +3 -0
- vellum/resources/workspaces/raw_client.py +3 -0
- vellum/types/api_actor_type_enum.py +3 -0
- vellum/types/audio_input.py +3 -0
- vellum/types/audio_input_request.py +3 -0
- vellum/types/auth_type_enum.py +3 -0
- vellum/types/build_status_enum.py +3 -0
- vellum/types/check_workflow_execution_status_error.py +3 -0
- vellum/types/check_workflow_execution_status_response.py +3 -0
- vellum/types/code_execution_package_request.py +3 -0
- vellum/types/components_schemas_composio_execute_tool_request.py +3 -0
- vellum/types/components_schemas_composio_execute_tool_response.py +3 -0
- vellum/types/components_schemas_composio_integration_exec_config.py +3 -0
- vellum/types/components_schemas_composio_tool_definition.py +3 -0
- vellum/types/components_schemas_slim_composio_tool_definition.py +3 -0
- vellum/types/composio_execute_tool_request.py +3 -0
- vellum/types/composio_execute_tool_response.py +3 -0
- vellum/types/composio_integration_exec_config.py +3 -0
- vellum/types/composio_tool_definition.py +3 -0
- vellum/types/container_image_build_config.py +3 -0
- vellum/types/create_workflow_event_request.py +3 -0
- vellum/types/dataset_row_push_request.py +3 -0
- vellum/types/delimiter_chunker_config.py +3 -0
- vellum/types/delimiter_chunker_config_request.py +3 -0
- vellum/types/delimiter_chunking.py +3 -0
- vellum/types/delimiter_chunking_request.py +3 -0
- vellum/types/deprecated_prompt_request_input.py +3 -0
- vellum/types/document_input.py +3 -0
- vellum/types/document_input_request.py +3 -0
- vellum/types/environment_display_config.py +3 -0
- vellum/types/environment_read.py +3 -0
- vellum/types/error_detail_response.py +3 -0
- vellum/types/event_create_response.py +3 -0
- vellum/types/execute_workflow_async_response.py +3 -0
- vellum/types/execution_audio_vellum_value.py +3 -0
- vellum/types/execution_document_vellum_value.py +3 -0
- vellum/types/execution_image_vellum_value.py +3 -0
- vellum/types/execution_thinking_vellum_value.py +3 -0
- vellum/types/execution_video_vellum_value.py +3 -0
- vellum/types/external_parent_context.py +3 -0
- vellum/types/fast_embed_vectorizer_baai_bge_small_en_v_15.py +3 -0
- vellum/types/fast_embed_vectorizer_baai_bge_small_en_v_15_request.py +3 -0
- vellum/types/folder_entity_dataset.py +3 -0
- vellum/types/folder_entity_dataset_data.py +3 -0
- vellum/types/google_vertex_ai_vectorizer_gemini_embedding_001.py +3 -0
- vellum/types/google_vertex_ai_vectorizer_gemini_embedding_001_request.py +3 -0
- vellum/types/image_input.py +3 -0
- vellum/types/image_input_request.py +3 -0
- vellum/types/integration.py +3 -0
- vellum/types/integration_auth_config_integration.py +3 -0
- vellum/types/integration_auth_config_integration_credential.py +3 -0
- vellum/types/integration_credential_access_type.py +3 -0
- vellum/types/integration_name.py +3 -0
- vellum/types/integration_provider.py +3 -0
- vellum/types/integration_read.py +3 -0
- vellum/types/integration_trigger_context.py +3 -0
- vellum/types/named_scenario_input_audio_variable_value_request.py +3 -0
- vellum/types/named_scenario_input_document_variable_value_request.py +3 -0
- vellum/types/named_scenario_input_image_variable_value_request.py +3 -0
- vellum/types/named_scenario_input_video_variable_value_request.py +3 -0
- vellum/types/named_test_case_audio_variable_value.py +3 -0
- vellum/types/named_test_case_audio_variable_value_request.py +3 -0
- vellum/types/named_test_case_document_variable_value.py +3 -0
- vellum/types/named_test_case_document_variable_value_request.py +3 -0
- vellum/types/named_test_case_image_variable_value.py +3 -0
- vellum/types/named_test_case_image_variable_value_request.py +3 -0
- vellum/types/named_test_case_video_variable_value.py +3 -0
- vellum/types/named_test_case_video_variable_value_request.py +3 -0
- vellum/types/node_execution_log_body.py +3 -0
- vellum/types/node_execution_log_event.py +3 -0
- vellum/types/node_input_compiled_audio_value.py +3 -0
- vellum/types/node_input_compiled_document_value.py +3 -0
- vellum/types/node_input_compiled_image_value.py +3 -0
- vellum/types/node_input_compiled_video_value.py +3 -0
- vellum/types/node_output_compiled_thinking_value.py +3 -0
- vellum/types/paginated_slim_integration_auth_config_read_list.py +3 -0
- vellum/types/paginated_slim_integration_read_list.py +3 -0
- vellum/types/paginated_slim_tool_definition_list.py +3 -0
- vellum/types/paginated_workflow_deployment_release_list.py +3 -0
- vellum/types/private_vectorizer.py +3 -0
- vellum/types/private_vectorizer_request.py +3 -0
- vellum/types/prompt_request_audio_input.py +3 -0
- vellum/types/prompt_request_document_input.py +3 -0
- vellum/types/prompt_request_image_input.py +3 -0
- vellum/types/prompt_request_video_input.py +3 -0
- vellum/types/runner_config_request.py +3 -0
- vellum/types/scenario_input_audio_variable_value.py +3 -0
- vellum/types/scenario_input_document_variable_value.py +3 -0
- vellum/types/scenario_input_image_variable_value.py +3 -0
- vellum/types/scenario_input_video_variable_value.py +3 -0
- vellum/types/scheduled_trigger_context.py +3 -0
- vellum/types/severity_enum.py +3 -0
- vellum/types/slim_composio_tool_definition.py +3 -0
- vellum/types/slim_integration_auth_config_read.py +3 -0
- vellum/types/slim_integration_read.py +3 -0
- vellum/types/test_case_audio_variable_value.py +3 -0
- vellum/types/test_case_document_variable_value.py +3 -0
- vellum/types/test_case_image_variable_value.py +3 -0
- vellum/types/test_case_video_variable_value.py +3 -0
- vellum/types/thinking_vellum_value.py +3 -0
- vellum/types/thinking_vellum_value_request.py +3 -0
- vellum/types/type_checker_enum.py +3 -0
- vellum/types/update_active_workspace_response.py +3 -0
- vellum/types/uploaded_file_read.py +3 -0
- vellum/types/vellum_video.py +3 -0
- vellum/types/vellum_video_request.py +3 -0
- vellum/types/video_chat_message_content.py +3 -0
- vellum/types/video_chat_message_content_request.py +3 -0
- vellum/types/video_input.py +3 -0
- vellum/types/video_input_request.py +3 -0
- vellum/types/video_prompt_block.py +3 -0
- vellum/types/video_vellum_value.py +3 -0
- vellum/types/video_vellum_value_request.py +3 -0
- vellum/types/workflow_deployment_display_data.py +3 -0
- vellum/types/workflow_display_icon.py +3 -0
- vellum/types/workflow_event.py +3 -0
- vellum/types/workflow_execution_detail.py +3 -0
- vellum/types/workflow_execution_usage_calculation_fulfilled_body.py +3 -0
- vellum/types/workflow_input.py +3 -0
- vellum/types/workflow_output_audio.py +3 -0
- vellum/types/workflow_output_document.py +3 -0
- vellum/types/workflow_output_video.py +3 -0
- vellum/types/workflow_request_audio_input_request.py +3 -0
- vellum/types/workflow_request_document_input_request.py +3 -0
- vellum/types/workflow_request_image_input_request.py +3 -0
- vellum/types/workflow_request_video_input_request.py +3 -0
- vellum/types/workflow_resolved_state.py +3 -0
- vellum/types/workflow_result_event_state.py +3 -0
- vellum/types/workflow_sandbox_display_data.py +3 -0
- vellum/types/workflow_sandbox_execute_node_response.py +3 -0
- vellum/types/workspace_display_config.py +3 -0
- vellum/utils/files/__init__.py +18 -0
- vellum/utils/files/constants.py +47 -0
- vellum/utils/files/exceptions.py +25 -0
- vellum/utils/files/extensions.py +59 -0
- vellum/utils/files/mixin.py +135 -0
- vellum/utils/files/read.py +41 -0
- vellum/utils/files/stream.py +135 -0
- vellum/utils/files/tests/__init__.py +0 -0
- vellum/utils/files/tests/test_extensions.py +54 -0
- vellum/utils/files/tests/test_mixin.py +267 -0
- vellum/utils/files/tests/test_read.py +204 -0
- vellum/utils/files/tests/test_stream.py +199 -0
- vellum/utils/files/tests/test_upload.py +309 -0
- vellum/utils/files/tests/test_urls.py +252 -0
- vellum/utils/files/types.py +8 -0
- vellum/utils/files/upload.py +151 -0
- vellum/utils/files/urls.py +71 -0
- vellum/utils/json_encoder.py +95 -0
- vellum/utils/templating/custom_filters.py +4 -4
- vellum/utils/templating/render.py +4 -4
- vellum/utils/tests/__init__.py +0 -0
- vellum/utils/tests/test_json_encoder.py +92 -0
- vellum/utils/tests/test_vellum_client.py +95 -0
- vellum/utils/uuid.py +19 -2
- vellum/utils/vellum_client.py +47 -0
- vellum/workflows/__init__.py +84 -0
- vellum/workflows/constants.py +7 -0
- vellum/workflows/context.py +27 -9
- vellum/workflows/descriptors/base.py +169 -2
- vellum/workflows/descriptors/exceptions.py +18 -1
- vellum/workflows/descriptors/tests/test_utils.py +66 -0
- vellum/workflows/descriptors/utils.py +27 -3
- vellum/workflows/edges/__init__.py +2 -0
- vellum/workflows/edges/trigger_edge.py +67 -0
- vellum/workflows/emitters/__init__.py +2 -0
- vellum/workflows/emitters/base.py +25 -0
- vellum/workflows/emitters/vellum_emitter.py +150 -0
- vellum/workflows/environment/__init__.py +2 -1
- vellum/workflows/environment/environment.py +10 -3
- vellum/workflows/errors/tests/__init__.py +0 -0
- vellum/workflows/errors/tests/test_types.py +52 -0
- vellum/workflows/errors/types.py +19 -1
- vellum/workflows/events/__init__.py +2 -0
- vellum/workflows/events/context.py +90 -0
- vellum/workflows/events/exception_handling.py +58 -0
- vellum/workflows/events/node.py +51 -11
- vellum/workflows/events/relational_threads.py +41 -0
- vellum/workflows/events/stream.py +28 -0
- vellum/workflows/events/tests/test_basic_workflow.py +50 -0
- vellum/workflows/events/tests/test_event.py +268 -20
- vellum/workflows/events/types.py +34 -5
- vellum/workflows/events/workflow.py +138 -9
- vellum/workflows/exceptions.py +46 -7
- vellum/workflows/executable.py +9 -0
- vellum/workflows/expressions/accessor.py +65 -11
- vellum/workflows/expressions/add.py +44 -0
- vellum/workflows/expressions/comparison_utils.py +38 -0
- vellum/workflows/expressions/concat.py +35 -0
- vellum/workflows/expressions/contains.py +7 -0
- vellum/workflows/expressions/greater_than.py +8 -1
- vellum/workflows/expressions/greater_than_or_equal_to.py +8 -1
- vellum/workflows/expressions/is_error.py +23 -0
- vellum/workflows/expressions/length.py +46 -0
- vellum/workflows/expressions/less_than.py +8 -1
- vellum/workflows/expressions/less_than_or_equal_to.py +8 -1
- vellum/workflows/expressions/minus.py +41 -0
- vellum/workflows/expressions/tests/test_accessor.py +248 -0
- vellum/workflows/expressions/tests/test_add.py +96 -0
- vellum/workflows/expressions/tests/test_concat.py +108 -0
- vellum/workflows/expressions/tests/test_contains.py +175 -0
- vellum/workflows/expressions/tests/test_expressions.py +145 -32
- vellum/workflows/expressions/tests/test_length.py +38 -0
- vellum/workflows/expressions/tests/test_minus.py +109 -0
- vellum/workflows/graph/graph.py +281 -13
- vellum/workflows/graph/tests/test_graph.py +528 -1
- vellum/workflows/inputs/__init__.py +2 -0
- vellum/workflows/inputs/base.py +63 -13
- vellum/workflows/inputs/dataset_row.py +186 -0
- vellum/workflows/inputs/tests/test_inputs.py +182 -2
- vellum/workflows/integrations/__init__.py +5 -0
- vellum/workflows/integrations/composio_service.py +158 -0
- vellum/workflows/integrations/mcp_service.py +282 -0
- vellum/workflows/integrations/tests/__init__.py +0 -0
- vellum/workflows/integrations/tests/test_mcp_service.py +273 -0
- vellum/workflows/integrations/tests/test_vellum_integration_service.py +383 -0
- vellum/workflows/integrations/vellum_integration_service.py +147 -0
- vellum/workflows/loaders/__init__.py +3 -0
- vellum/workflows/loaders/base.py +38 -0
- vellum/workflows/nodes/__init__.py +2 -0
- vellum/workflows/nodes/bases/base.py +165 -82
- vellum/workflows/nodes/bases/base_adornment_node.py +55 -1
- vellum/workflows/nodes/bases/tests/test_base_node.py +153 -4
- vellum/workflows/nodes/core/error_node/node.py +11 -2
- vellum/workflows/nodes/core/inline_subworkflow_node/node.py +30 -3
- vellum/workflows/nodes/core/inline_subworkflow_node/tests/test_node.py +36 -1
- vellum/workflows/nodes/core/map_node/node.py +33 -6
- vellum/workflows/nodes/core/map_node/tests/test_node.py +106 -0
- vellum/workflows/nodes/core/retry_node/node.py +1 -0
- vellum/workflows/nodes/core/retry_node/tests/test_node.py +2 -3
- vellum/workflows/nodes/core/templating_node/node.py +7 -2
- vellum/workflows/nodes/core/templating_node/tests/test_templating_node.py +194 -1
- vellum/workflows/nodes/core/try_node/node.py +1 -0
- vellum/workflows/nodes/displayable/__init__.py +6 -0
- vellum/workflows/nodes/displayable/api_node/node.py +13 -3
- vellum/workflows/nodes/displayable/api_node/tests/test_api_node.py +151 -2
- vellum/workflows/nodes/displayable/bases/api_node/node.py +71 -17
- vellum/workflows/nodes/displayable/bases/api_node/tests/__init__.py +0 -0
- vellum/workflows/nodes/displayable/bases/api_node/tests/test_node.py +150 -0
- vellum/workflows/nodes/displayable/bases/base_prompt_node/node.py +85 -7
- vellum/workflows/nodes/displayable/bases/inline_prompt_node/node.py +324 -19
- vellum/workflows/nodes/displayable/bases/inline_prompt_node/tests/test_inline_prompt_node.py +352 -32
- vellum/workflows/nodes/displayable/bases/prompt_deployment_node.py +86 -3
- vellum/workflows/nodes/displayable/bases/search_node.py +26 -3
- vellum/workflows/nodes/displayable/bases/tests/test_prompt_deployment_node.py +90 -0
- vellum/workflows/nodes/displayable/bases/utils.py +82 -5
- vellum/workflows/nodes/displayable/code_execution_node/node.py +30 -10
- vellum/workflows/nodes/displayable/code_execution_node/tests/test_node.py +284 -14
- vellum/workflows/nodes/displayable/code_execution_node/utils.py +8 -21
- vellum/workflows/nodes/displayable/conditional_node/node.py +8 -4
- vellum/workflows/nodes/displayable/final_output_node/node.py +34 -0
- vellum/workflows/nodes/displayable/final_output_node/tests/test_node.py +146 -1
- vellum/workflows/nodes/displayable/guardrail_node/node.py +13 -4
- vellum/workflows/nodes/displayable/inline_prompt_node/node.py +9 -36
- vellum/workflows/nodes/displayable/inline_prompt_node/tests/test_node.py +3 -0
- vellum/workflows/nodes/displayable/merge_node/node.py +8 -1
- vellum/workflows/nodes/displayable/note_node/node.py +11 -1
- vellum/workflows/nodes/displayable/prompt_deployment_node/node.py +7 -23
- vellum/workflows/nodes/displayable/search_node/node.py +15 -2
- vellum/workflows/nodes/displayable/search_node/tests/test_node.py +33 -0
- vellum/workflows/nodes/displayable/set_state_node/__init__.py +5 -0
- vellum/workflows/nodes/displayable/set_state_node/node.py +71 -0
- vellum/workflows/nodes/displayable/set_state_node/tests/__init__.py +0 -0
- vellum/workflows/nodes/displayable/set_state_node/tests/test_node.py +212 -0
- vellum/workflows/nodes/displayable/subworkflow_deployment_node/node.py +231 -59
- vellum/workflows/nodes/displayable/subworkflow_deployment_node/tests/test_node.py +1 -1
- vellum/workflows/nodes/displayable/tests/test_inline_text_prompt_node.py +4 -1
- vellum/workflows/nodes/displayable/tests/test_search_node_error_handling.py +329 -0
- vellum/workflows/nodes/displayable/tests/test_text_prompt_deployment_node.py +56 -14
- vellum/workflows/nodes/displayable/tool_calling_node/__init__.py +3 -0
- vellum/workflows/nodes/displayable/tool_calling_node/node.py +265 -0
- vellum/workflows/nodes/displayable/tool_calling_node/state.py +11 -0
- vellum/workflows/nodes/displayable/tool_calling_node/tests/__init__.py +0 -0
- vellum/workflows/nodes/displayable/tool_calling_node/tests/test_composio_service.py +219 -0
- vellum/workflows/nodes/displayable/tool_calling_node/tests/test_node.py +998 -0
- vellum/workflows/nodes/displayable/tool_calling_node/tests/test_utils.py +316 -0
- vellum/workflows/nodes/displayable/tool_calling_node/utils.py +654 -0
- vellum/workflows/nodes/displayable/web_search_node/__init__.py +3 -0
- vellum/workflows/nodes/displayable/web_search_node/node.py +136 -0
- vellum/workflows/nodes/displayable/web_search_node/tests/__init__.py +0 -0
- vellum/workflows/nodes/displayable/web_search_node/tests/test_node.py +246 -0
- vellum/workflows/nodes/experimental/__init__.py +1 -3
- vellum/workflows/nodes/mocks.py +71 -206
- vellum/workflows/nodes/tests/test_mocks.py +0 -177
- vellum/workflows/nodes/tests/test_utils.py +34 -5
- vellum/workflows/nodes/utils.py +68 -14
- vellum/workflows/outputs/base.py +88 -14
- vellum/workflows/ports/node_ports.py +3 -0
- vellum/workflows/ports/port.py +27 -12
- vellum/workflows/ports/tests/test_port.py +45 -0
- vellum/workflows/ports/utils.py +26 -6
- vellum/workflows/references/__init__.py +2 -0
- vellum/workflows/references/constant.py +4 -1
- vellum/workflows/references/environment_variable.py +17 -9
- vellum/workflows/references/lazy.py +8 -0
- vellum/workflows/references/output.py +4 -6
- vellum/workflows/references/state_value.py +24 -1
- vellum/workflows/references/tests/test_lazy.py +58 -0
- vellum/workflows/references/trigger.py +82 -0
- vellum/workflows/references/workflow_input.py +8 -0
- vellum/workflows/resolvers/base.py +19 -1
- vellum/workflows/resolvers/resolver.py +81 -0
- vellum/workflows/resolvers/tests/test_resolver.py +199 -0
- vellum/workflows/resolvers/types.py +11 -0
- vellum/workflows/runner/runner.py +770 -143
- vellum/workflows/runner/tests/__init__.py +0 -0
- vellum/workflows/runner/tests/test_runner.py +170 -0
- vellum/workflows/sandbox.py +54 -9
- vellum/workflows/state/base.py +238 -55
- vellum/workflows/state/context.py +297 -7
- vellum/workflows/state/delta.py +20 -0
- vellum/workflows/state/encoder.py +2 -77
- vellum/workflows/state/tests/test_state.py +292 -9
- vellum/workflows/tests/test_dataset_row.py +191 -0
- vellum/workflows/tests/test_sandbox.py +226 -0
- vellum/workflows/tests/triggers/test_integration_trigger.py +156 -0
- vellum/workflows/triggers/__init__.py +7 -0
- vellum/workflows/triggers/base.py +523 -0
- vellum/workflows/triggers/chat_message.py +141 -0
- vellum/workflows/triggers/integration.py +198 -0
- vellum/workflows/triggers/manual.py +39 -0
- vellum/workflows/triggers/schedule.py +20 -0
- vellum/workflows/triggers/tests/__init__.py +1 -0
- vellum/workflows/triggers/tests/test_base_trigger_display.py +147 -0
- vellum/workflows/triggers/tests/test_chat_message.py +257 -0
- vellum/workflows/triggers/tests/test_integration.py +155 -0
- vellum/workflows/types/__init__.py +2 -1
- vellum/workflows/types/code_execution_node_wrappers.py +5 -1
- vellum/workflows/types/core.py +23 -0
- vellum/workflows/types/definition.py +161 -2
- vellum/workflows/types/generics.py +17 -0
- vellum/workflows/types/tests/test_definition.py +183 -0
- vellum/workflows/types/tests/test_utils.py +23 -0
- vellum/workflows/types/utils.py +65 -5
- vellum/workflows/types/workflow_metadata.py +124 -0
- vellum/workflows/utils/files.py +28 -0
- vellum/workflows/utils/functions.py +386 -25
- vellum/workflows/utils/hmac.py +44 -0
- vellum/workflows/utils/names.py +32 -4
- vellum/workflows/utils/pydantic_schema.py +56 -0
- vellum/workflows/utils/tests/test_functions.py +480 -23
- vellum/workflows/utils/tests/test_names.py +9 -0
- vellum/workflows/utils/tests/test_validate.py +79 -0
- vellum/workflows/utils/tests/test_vellum_variables.py +93 -3
- vellum/workflows/utils/uuids.py +125 -0
- vellum/workflows/utils/validate.py +108 -0
- vellum/workflows/utils/vellum_variables.py +224 -20
- vellum/workflows/utils/zip.py +46 -0
- vellum/workflows/vellum_client.py +3 -33
- vellum/workflows/workflows/base.py +503 -50
- vellum/workflows/workflows/event_filters.py +13 -0
- vellum/workflows/workflows/tests/test_base_workflow.py +169 -6
- vellum/workflows/workflows/tests/test_event_filters.py +126 -0
- {vellum_ai-0.14.63.dist-info → vellum_ai-1.13.5.dist-info}/METADATA +17 -13
- vellum_ai-1.13.5.dist-info/RECORD +2224 -0
- vellum_ai-1.13.5.dist-info/entry_points.txt +4 -0
- vellum_cli/__init__.py +55 -4
- vellum_cli/config.py +21 -5
- vellum_cli/image_push.py +106 -8
- vellum_cli/move.py +56 -0
- vellum_cli/ping.py +6 -0
- vellum_cli/pull.py +50 -14
- vellum_cli/push.py +124 -34
- vellum_cli/tests/conftest.py +13 -12
- vellum_cli/tests/test_image_push.py +192 -21
- vellum_cli/tests/test_image_push_error_handling.py +258 -0
- vellum_cli/tests/test_init.py +7 -24
- vellum_cli/tests/test_move.py +154 -0
- vellum_cli/tests/test_ping.py +15 -0
- vellum_cli/tests/test_pull.py +125 -129
- vellum_cli/tests/test_push.py +693 -12
- vellum_ee/assets/node-definitions.json +1348 -0
- vellum_ee/scripts/generate_node_definitions.py +101 -0
- vellum_ee/workflows/display/base.py +33 -58
- vellum_ee/workflows/display/editor/types.py +3 -0
- vellum_ee/workflows/display/exceptions.py +3 -0
- vellum_ee/workflows/display/nodes/base_node_display.py +199 -58
- vellum_ee/workflows/display/nodes/tests/test_base_node_display.py +242 -3
- vellum_ee/workflows/display/nodes/types.py +1 -0
- vellum_ee/workflows/display/nodes/vellum/api_node.py +26 -13
- vellum_ee/workflows/display/nodes/vellum/base_adornment_node.py +8 -5
- vellum_ee/workflows/display/nodes/vellum/code_execution_node.py +23 -7
- vellum_ee/workflows/display/nodes/vellum/conditional_node.py +18 -7
- vellum_ee/workflows/display/nodes/vellum/error_node.py +2 -4
- vellum_ee/workflows/display/nodes/vellum/final_output_node.py +3 -14
- vellum_ee/workflows/display/nodes/vellum/guardrail_node.py +2 -5
- vellum_ee/workflows/display/nodes/vellum/inline_prompt_node.py +85 -44
- vellum_ee/workflows/display/nodes/vellum/inline_subworkflow_node.py +44 -18
- vellum_ee/workflows/display/nodes/vellum/map_node.py +31 -15
- vellum_ee/workflows/display/nodes/vellum/merge_node.py +2 -5
- vellum_ee/workflows/display/nodes/vellum/note_node.py +20 -6
- vellum_ee/workflows/display/nodes/vellum/prompt_deployment_node.py +13 -9
- vellum_ee/workflows/display/nodes/vellum/retry_node.py +5 -6
- vellum_ee/workflows/display/nodes/vellum/search_node.py +76 -19
- vellum_ee/workflows/display/nodes/vellum/subworkflow_deployment_node.py +46 -12
- vellum_ee/workflows/display/nodes/vellum/templating_node.py +3 -6
- vellum_ee/workflows/display/nodes/vellum/tests/test_api_node.py +65 -0
- vellum_ee/workflows/display/nodes/vellum/tests/test_code_execution_node.py +236 -3
- vellum_ee/workflows/display/nodes/vellum/tests/test_final_output_node.py +216 -0
- vellum_ee/workflows/display/nodes/vellum/tests/test_inline_subworkflow_node.py +88 -0
- vellum_ee/workflows/display/nodes/vellum/tests/test_note_node.py +44 -7
- vellum_ee/workflows/display/nodes/vellum/tests/test_prompt_deployment_node.py +71 -1
- vellum_ee/workflows/display/nodes/vellum/tests/test_prompt_node.py +120 -26
- vellum_ee/workflows/display/nodes/vellum/tests/test_retry_node.py +1 -1
- vellum_ee/workflows/display/nodes/vellum/tests/test_search_node.py +104 -0
- vellum_ee/workflows/display/nodes/vellum/tests/test_subworkflow_deployment_node.py +28 -18
- vellum_ee/workflows/display/nodes/vellum/tests/test_templating_node.py +2 -2
- vellum_ee/workflows/display/nodes/vellum/tests/test_tool_calling_node.py +649 -49
- vellum_ee/workflows/display/nodes/vellum/tests/test_try_node.py +2 -2
- vellum_ee/workflows/display/nodes/vellum/tests/test_utils.py +114 -10
- vellum_ee/workflows/display/nodes/vellum/try_node.py +5 -6
- vellum_ee/workflows/display/nodes/vellum/utils.py +54 -12
- vellum_ee/workflows/display/tests/test_base_workflow_display.py +396 -25
- vellum_ee/workflows/display/tests/test_json_schema_validation.py +190 -0
- vellum_ee/workflows/display/tests/test_mocks.py +912 -0
- vellum_ee/workflows/display/tests/workflow_serialization/generic_nodes/conftest.py +2 -2
- vellum_ee/workflows/display/tests/workflow_serialization/generic_nodes/test_adornments_serialization.py +114 -39
- vellum_ee/workflows/display/tests/workflow_serialization/generic_nodes/test_attributes_serialization.py +342 -90
- vellum_ee/workflows/display/tests/workflow_serialization/generic_nodes/test_outputs_serialization.py +24 -17
- vellum_ee/workflows/display/tests/workflow_serialization/generic_nodes/test_ports_serialization.py +263 -65
- vellum_ee/workflows/display/tests/workflow_serialization/generic_nodes/test_trigger_serialization.py +69 -12
- vellum_ee/workflows/display/tests/workflow_serialization/test_basic_api_node_serialization.py +36 -305
- vellum_ee/workflows/display/tests/workflow_serialization/test_basic_code_execution_node_serialization.py +92 -431
- vellum_ee/workflows/display/tests/workflow_serialization/test_basic_conditional_node_serialization.py +143 -429
- vellum_ee/workflows/display/tests/workflow_serialization/test_basic_default_state_serialization.py +3 -123
- vellum_ee/workflows/display/tests/workflow_serialization/test_basic_error_node_serialization.py +24 -110
- vellum_ee/workflows/display/tests/workflow_serialization/test_basic_generic_node_serialization.py +12 -90
- vellum_ee/workflows/display/tests/workflow_serialization/test_basic_guardrail_node_serialization.py +17 -86
- vellum_ee/workflows/display/tests/workflow_serialization/test_basic_inline_prompt_node_serialization.py +363 -100
- vellum_ee/workflows/display/tests/workflow_serialization/test_basic_inline_subworkflow_serialization.py +97 -315
- vellum_ee/workflows/display/tests/workflow_serialization/test_basic_map_node_serialization.py +66 -319
- vellum_ee/workflows/display/tests/workflow_serialization/test_basic_merge_node_serialization.py +24 -99
- vellum_ee/workflows/display/tests/workflow_serialization/test_basic_prompt_deployment_serialization.py +54 -180
- vellum_ee/workflows/display/tests/workflow_serialization/test_basic_search_node_serialization.py +32 -88
- vellum_ee/workflows/display/tests/workflow_serialization/test_basic_set_state_node_serialization.py +86 -0
- vellum_ee/workflows/display/tests/workflow_serialization/test_basic_subworkflow_deployment_serialization.py +217 -142
- vellum_ee/workflows/display/tests/workflow_serialization/test_basic_templating_node_serialization.py +34 -142
- vellum_ee/workflows/display/tests/workflow_serialization/test_basic_terminal_node_serialization.py +15 -8
- vellum_ee/workflows/display/tests/workflow_serialization/test_basic_tool_calling_node_composio_serialization.py +89 -0
- vellum_ee/workflows/display/tests/workflow_serialization/test_basic_tool_calling_node_inline_workflow_serialization.py +184 -0
- vellum_ee/workflows/display/tests/workflow_serialization/test_basic_tool_calling_node_inline_workflow_tool_wrapper_serialization.py +84 -0
- vellum_ee/workflows/display/tests/workflow_serialization/test_basic_tool_calling_node_mcp_serialization.py +104 -0
- vellum_ee/workflows/display/tests/workflow_serialization/test_basic_tool_calling_node_parent_input.py +89 -0
- vellum_ee/workflows/display/tests/workflow_serialization/test_basic_tool_calling_node_serialization.py +71 -23
- vellum_ee/workflows/display/tests/workflow_serialization/test_basic_tool_calling_node_tool_wrapper_serialization.py +71 -0
- vellum_ee/workflows/display/tests/workflow_serialization/test_basic_tool_calling_node_vellum_integration_serialization.py +187 -0
- vellum_ee/workflows/display/tests/workflow_serialization/test_basic_tool_calling_node_workflow_deployment_serialization.py +107 -0
- vellum_ee/workflows/display/tests/workflow_serialization/test_basic_try_node_serialization.py +2 -4
- vellum_ee/workflows/display/tests/workflow_serialization/test_chat_message_dict_reference_serialization.py +129 -0
- vellum_ee/workflows/display/tests/workflow_serialization/test_chat_message_trigger_serialization.py +412 -0
- vellum_ee/workflows/display/tests/workflow_serialization/test_code_tool_node_reference_error.py +106 -0
- vellum_ee/workflows/display/tests/workflow_serialization/test_complex_terminal_node_serialization.py +20 -47
- vellum_ee/workflows/display/tests/workflow_serialization/test_duplicate_trigger_name_validation.py +208 -0
- vellum_ee/workflows/display/tests/workflow_serialization/test_final_output_node_map_reference_serialization.py +88 -0
- vellum_ee/workflows/display/tests/workflow_serialization/test_final_output_node_not_referenced_by_workflow_outputs.py +45 -0
- vellum_ee/workflows/display/tests/workflow_serialization/test_infinite_loop_validation.py +66 -0
- vellum_ee/workflows/display/tests/workflow_serialization/test_int_input_serialization.py +40 -0
- vellum_ee/workflows/display/tests/workflow_serialization/test_integration_trigger_serialization.py +300 -0
- vellum_ee/workflows/display/tests/workflow_serialization/test_integration_trigger_validation.py +173 -0
- vellum_ee/workflows/display/tests/workflow_serialization/test_integration_trigger_with_entrypoint_node_id.py +91 -0
- vellum_ee/workflows/display/tests/workflow_serialization/test_list_vellum_document_serialization.py +69 -0
- vellum_ee/workflows/display/tests/workflow_serialization/test_manual_trigger_serialization.py +120 -0
- vellum_ee/workflows/display/tests/workflow_serialization/test_map_node_with_terminal_nodes_serialization.py +62 -0
- vellum_ee/workflows/display/tests/workflow_serialization/test_multi_trigger_same_node_serialization.py +210 -0
- vellum_ee/workflows/display/tests/workflow_serialization/test_no_triggers_no_entrypoint_validation.py +64 -0
- vellum_ee/workflows/display/tests/workflow_serialization/test_partial_workflow_meta_display_override.py +55 -0
- vellum_ee/workflows/display/tests/workflow_serialization/test_sandbox_dataset_mocks_serialization.py +268 -0
- vellum_ee/workflows/display/tests/workflow_serialization/test_sandbox_invalid_pdf_data_url.py +49 -0
- vellum_ee/workflows/display/tests/workflow_serialization/test_sandbox_validation_errors.py +112 -0
- vellum_ee/workflows/display/tests/workflow_serialization/test_scheduled_trigger_serialization.py +276 -0
- vellum_ee/workflows/display/tests/workflow_serialization/test_terminal_node_any_serialization.py +49 -0
- vellum_ee/workflows/display/tests/workflow_serialization/test_terminal_node_in_unused_graphs_serialization.py +53 -0
- vellum_ee/workflows/display/tests/workflow_serialization/test_trigger_display_from_display_class.py +153 -0
- vellum_ee/workflows/display/tests/workflow_serialization/test_web_search_node_serialization.py +72 -0
- vellum_ee/workflows/display/tests/workflow_serialization/test_workflow_input_parameterization_error.py +37 -0
- vellum_ee/workflows/display/types.py +29 -2
- vellum_ee/workflows/display/utils/auto_layout.py +130 -0
- vellum_ee/workflows/display/utils/events.py +57 -0
- vellum_ee/workflows/display/utils/exceptions.py +53 -0
- vellum_ee/workflows/display/utils/expressions.py +669 -55
- vellum_ee/workflows/display/utils/metadata.py +211 -0
- vellum_ee/workflows/display/utils/registry.py +46 -0
- vellum_ee/workflows/display/utils/tests/__init__.py +0 -0
- vellum_ee/workflows/display/utils/tests/test_auto_layout.py +56 -0
- vellum_ee/workflows/display/utils/tests/test_events.py +185 -0
- vellum_ee/workflows/display/utils/tests/test_expressions.py +92 -0
- vellum_ee/workflows/display/utils/tests/test_metadata.py +31 -0
- vellum_ee/workflows/display/utils/triggers.py +153 -0
- vellum_ee/workflows/display/utils/vellum.py +94 -5
- vellum_ee/workflows/display/vellum.py +2 -128
- vellum_ee/workflows/display/workflows/__init__.py +0 -1
- vellum_ee/workflows/display/workflows/base_workflow_display.py +1224 -190
- vellum_ee/workflows/display/workflows/get_vellum_workflow_display_class.py +26 -0
- vellum_ee/workflows/display/workflows/tests/test_workflow_display.py +379 -41
- vellum_ee/workflows/server/namespaces.py +18 -0
- vellum_ee/workflows/server/virtual_file_loader.py +131 -6
- vellum_ee/workflows/tests/local_workflow/display/nodes/final_output.py +1 -1
- vellum_ee/workflows/tests/local_workflow/display/nodes/templating_node.py +1 -1
- vellum_ee/workflows/tests/local_workflow/display/workflow.py +11 -14
- vellum_ee/workflows/tests/test_display_meta.py +43 -0
- vellum_ee/workflows/tests/test_registry.py +169 -0
- vellum_ee/workflows/tests/test_serialize_module.py +432 -0
- vellum_ee/workflows/tests/test_server.py +616 -44
- vellum_ee/workflows/tests/test_virtual_files.py +48 -0
- vellum/client/resources/release_reviews/client.py +0 -137
- 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/workflows/nodes/experimental/tool_calling_node/__init__.py +0 -3
- vellum/workflows/nodes/experimental/tool_calling_node/node.py +0 -135
- vellum/workflows/nodes/experimental/tool_calling_node/tests/test_node.py +0 -53
- vellum/workflows/nodes/experimental/tool_calling_node/utils.py +0 -259
- vellum_ai-0.14.63.dist-info/RECORD +0 -1719
- vellum_ai-0.14.63.dist-info/entry_points.txt +0 -3
- vellum_ee/workflows/display/workflows/vellum_workflow_display.py +0 -9
- /vellum/{workflows/nodes/displayable/bases/inline_prompt_node → prompts}/constants.py +0 -0
- {vellum_ai-0.14.63.dist-info → vellum_ai-1.13.5.dist-info}/LICENSE +0 -0
- {vellum_ai-0.14.63.dist-info → vellum_ai-1.13.5.dist-info}/WHEEL +0 -0
|
@@ -0,0 +1,2725 @@
|
|
|
1
|
+
# This file was auto-generated by Fern from our API Definition.
|
|
2
|
+
|
|
3
|
+
import contextlib
|
|
4
|
+
import json
|
|
5
|
+
import typing
|
|
6
|
+
from json.decoder import JSONDecodeError
|
|
7
|
+
|
|
8
|
+
from .core.api_error import ApiError
|
|
9
|
+
from .core.client_wrapper import AsyncClientWrapper, SyncClientWrapper
|
|
10
|
+
from .core.http_response import AsyncHttpResponse, HttpResponse
|
|
11
|
+
from .core.pydantic_utilities import parse_obj_as
|
|
12
|
+
from .core.request_options import RequestOptions
|
|
13
|
+
from .core.serialization import convert_and_respect_annotation_metadata
|
|
14
|
+
from .errors.bad_request_error import BadRequestError
|
|
15
|
+
from .errors.forbidden_error import ForbiddenError
|
|
16
|
+
from .errors.internal_server_error import InternalServerError
|
|
17
|
+
from .errors.not_found_error import NotFoundError
|
|
18
|
+
from .types.code_execution_package import CodeExecutionPackage
|
|
19
|
+
from .types.code_execution_runtime import CodeExecutionRuntime
|
|
20
|
+
from .types.code_executor_input import CodeExecutorInput
|
|
21
|
+
from .types.code_executor_response import CodeExecutorResponse
|
|
22
|
+
from .types.execute_api_request_bearer_token import ExecuteApiRequestBearerToken
|
|
23
|
+
from .types.execute_api_request_body import ExecuteApiRequestBody
|
|
24
|
+
from .types.execute_api_request_headers_value import ExecuteApiRequestHeadersValue
|
|
25
|
+
from .types.execute_api_response import ExecuteApiResponse
|
|
26
|
+
from .types.execute_prompt_event import ExecutePromptEvent
|
|
27
|
+
from .types.execute_prompt_response import ExecutePromptResponse
|
|
28
|
+
from .types.execute_workflow_async_response import ExecuteWorkflowAsyncResponse
|
|
29
|
+
from .types.execute_workflow_response import ExecuteWorkflowResponse
|
|
30
|
+
from .types.generate_options_request import GenerateOptionsRequest
|
|
31
|
+
from .types.generate_request import GenerateRequest
|
|
32
|
+
from .types.generate_response import GenerateResponse
|
|
33
|
+
from .types.generate_stream_response import GenerateStreamResponse
|
|
34
|
+
from .types.method_enum import MethodEnum
|
|
35
|
+
from .types.prompt_deployment_expand_meta_request import PromptDeploymentExpandMetaRequest
|
|
36
|
+
from .types.prompt_deployment_input_request import PromptDeploymentInputRequest
|
|
37
|
+
from .types.raw_prompt_execution_overrides_request import RawPromptExecutionOverridesRequest
|
|
38
|
+
from .types.search_request_options_request import SearchRequestOptionsRequest
|
|
39
|
+
from .types.search_response import SearchResponse
|
|
40
|
+
from .types.submit_completion_actual_request import SubmitCompletionActualRequest
|
|
41
|
+
from .types.submit_workflow_execution_actual_request import SubmitWorkflowExecutionActualRequest
|
|
42
|
+
from .types.vellum_variable_type import VellumVariableType
|
|
43
|
+
from .types.workflow_execution_event_type import WorkflowExecutionEventType
|
|
44
|
+
from .types.workflow_expand_meta_request import WorkflowExpandMetaRequest
|
|
45
|
+
from .types.workflow_request_input_request import WorkflowRequestInputRequest
|
|
46
|
+
from .types.workflow_stream_event import WorkflowStreamEvent
|
|
47
|
+
|
|
48
|
+
# this is used as the default value for optional parameters
|
|
49
|
+
OMIT = typing.cast(typing.Any, ...)
|
|
50
|
+
|
|
51
|
+
|
|
52
|
+
class RawVellum:
|
|
53
|
+
def __init__(self, *, client_wrapper: SyncClientWrapper):
|
|
54
|
+
self._client_wrapper = client_wrapper
|
|
55
|
+
|
|
56
|
+
def execute_api(
|
|
57
|
+
self,
|
|
58
|
+
*,
|
|
59
|
+
url: str,
|
|
60
|
+
method: typing.Optional[MethodEnum] = OMIT,
|
|
61
|
+
body: typing.Optional[ExecuteApiRequestBody] = OMIT,
|
|
62
|
+
headers: typing.Optional[typing.Dict[str, ExecuteApiRequestHeadersValue]] = OMIT,
|
|
63
|
+
bearer_token: typing.Optional[ExecuteApiRequestBearerToken] = OMIT,
|
|
64
|
+
request_options: typing.Optional[RequestOptions] = None,
|
|
65
|
+
) -> HttpResponse[ExecuteApiResponse]:
|
|
66
|
+
"""
|
|
67
|
+
Parameters
|
|
68
|
+
----------
|
|
69
|
+
url : str
|
|
70
|
+
|
|
71
|
+
method : typing.Optional[MethodEnum]
|
|
72
|
+
|
|
73
|
+
body : typing.Optional[ExecuteApiRequestBody]
|
|
74
|
+
|
|
75
|
+
headers : typing.Optional[typing.Dict[str, ExecuteApiRequestHeadersValue]]
|
|
76
|
+
|
|
77
|
+
bearer_token : typing.Optional[ExecuteApiRequestBearerToken]
|
|
78
|
+
|
|
79
|
+
request_options : typing.Optional[RequestOptions]
|
|
80
|
+
Request-specific configuration.
|
|
81
|
+
|
|
82
|
+
Returns
|
|
83
|
+
-------
|
|
84
|
+
HttpResponse[ExecuteApiResponse]
|
|
85
|
+
|
|
86
|
+
"""
|
|
87
|
+
_response = self._client_wrapper.httpx_client.request(
|
|
88
|
+
"v1/execute-api",
|
|
89
|
+
base_url=self._client_wrapper.get_environment().default,
|
|
90
|
+
method="POST",
|
|
91
|
+
json={
|
|
92
|
+
"url": url,
|
|
93
|
+
"method": method,
|
|
94
|
+
"body": convert_and_respect_annotation_metadata(
|
|
95
|
+
object_=body, annotation=typing.Optional[ExecuteApiRequestBody], direction="write"
|
|
96
|
+
),
|
|
97
|
+
"headers": convert_and_respect_annotation_metadata(
|
|
98
|
+
object_=headers, annotation=typing.Dict[str, ExecuteApiRequestHeadersValue], direction="write"
|
|
99
|
+
),
|
|
100
|
+
"bearer_token": convert_and_respect_annotation_metadata(
|
|
101
|
+
object_=bearer_token, annotation=typing.Optional[ExecuteApiRequestBearerToken], direction="write"
|
|
102
|
+
),
|
|
103
|
+
},
|
|
104
|
+
headers={
|
|
105
|
+
"content-type": "application/json",
|
|
106
|
+
},
|
|
107
|
+
request_options=request_options,
|
|
108
|
+
omit=OMIT,
|
|
109
|
+
)
|
|
110
|
+
try:
|
|
111
|
+
if 200 <= _response.status_code < 300:
|
|
112
|
+
_data = typing.cast(
|
|
113
|
+
ExecuteApiResponse,
|
|
114
|
+
parse_obj_as(
|
|
115
|
+
type_=ExecuteApiResponse, # type: ignore
|
|
116
|
+
object_=_response.json(),
|
|
117
|
+
),
|
|
118
|
+
)
|
|
119
|
+
return HttpResponse(response=_response, data=_data)
|
|
120
|
+
_response_json = _response.json()
|
|
121
|
+
except JSONDecodeError:
|
|
122
|
+
raise ApiError(status_code=_response.status_code, headers=dict(_response.headers), body=_response.text)
|
|
123
|
+
raise ApiError(status_code=_response.status_code, headers=dict(_response.headers), body=_response_json)
|
|
124
|
+
|
|
125
|
+
def execute_code(
|
|
126
|
+
self,
|
|
127
|
+
*,
|
|
128
|
+
code: str,
|
|
129
|
+
runtime: CodeExecutionRuntime,
|
|
130
|
+
input_values: typing.Sequence[CodeExecutorInput],
|
|
131
|
+
packages: typing.Sequence[CodeExecutionPackage],
|
|
132
|
+
output_type: VellumVariableType,
|
|
133
|
+
request_options: typing.Optional[RequestOptions] = None,
|
|
134
|
+
) -> HttpResponse[CodeExecutorResponse]:
|
|
135
|
+
"""
|
|
136
|
+
Parameters
|
|
137
|
+
----------
|
|
138
|
+
code : str
|
|
139
|
+
|
|
140
|
+
runtime : CodeExecutionRuntime
|
|
141
|
+
|
|
142
|
+
input_values : typing.Sequence[CodeExecutorInput]
|
|
143
|
+
|
|
144
|
+
packages : typing.Sequence[CodeExecutionPackage]
|
|
145
|
+
|
|
146
|
+
output_type : VellumVariableType
|
|
147
|
+
|
|
148
|
+
request_options : typing.Optional[RequestOptions]
|
|
149
|
+
Request-specific configuration.
|
|
150
|
+
|
|
151
|
+
Returns
|
|
152
|
+
-------
|
|
153
|
+
HttpResponse[CodeExecutorResponse]
|
|
154
|
+
|
|
155
|
+
"""
|
|
156
|
+
_response = self._client_wrapper.httpx_client.request(
|
|
157
|
+
"v1/execute-code",
|
|
158
|
+
base_url=self._client_wrapper.get_environment().predict,
|
|
159
|
+
method="POST",
|
|
160
|
+
json={
|
|
161
|
+
"code": code,
|
|
162
|
+
"runtime": runtime,
|
|
163
|
+
"input_values": convert_and_respect_annotation_metadata(
|
|
164
|
+
object_=input_values, annotation=typing.Sequence[CodeExecutorInput], direction="write"
|
|
165
|
+
),
|
|
166
|
+
"packages": convert_and_respect_annotation_metadata(
|
|
167
|
+
object_=packages, annotation=typing.Sequence[CodeExecutionPackage], direction="write"
|
|
168
|
+
),
|
|
169
|
+
"output_type": output_type,
|
|
170
|
+
},
|
|
171
|
+
headers={
|
|
172
|
+
"content-type": "application/json",
|
|
173
|
+
},
|
|
174
|
+
request_options=request_options,
|
|
175
|
+
omit=OMIT,
|
|
176
|
+
)
|
|
177
|
+
try:
|
|
178
|
+
if 200 <= _response.status_code < 300:
|
|
179
|
+
_data = typing.cast(
|
|
180
|
+
CodeExecutorResponse,
|
|
181
|
+
parse_obj_as(
|
|
182
|
+
type_=CodeExecutorResponse, # type: ignore
|
|
183
|
+
object_=_response.json(),
|
|
184
|
+
),
|
|
185
|
+
)
|
|
186
|
+
return HttpResponse(response=_response, data=_data)
|
|
187
|
+
if _response.status_code == 400:
|
|
188
|
+
raise BadRequestError(
|
|
189
|
+
headers=dict(_response.headers),
|
|
190
|
+
body=typing.cast(
|
|
191
|
+
typing.Optional[typing.Any],
|
|
192
|
+
parse_obj_as(
|
|
193
|
+
type_=typing.Optional[typing.Any], # type: ignore
|
|
194
|
+
object_=_response.json(),
|
|
195
|
+
),
|
|
196
|
+
),
|
|
197
|
+
)
|
|
198
|
+
_response_json = _response.json()
|
|
199
|
+
except JSONDecodeError:
|
|
200
|
+
raise ApiError(status_code=_response.status_code, headers=dict(_response.headers), body=_response.text)
|
|
201
|
+
raise ApiError(status_code=_response.status_code, headers=dict(_response.headers), body=_response_json)
|
|
202
|
+
|
|
203
|
+
def execute_prompt(
|
|
204
|
+
self,
|
|
205
|
+
*,
|
|
206
|
+
inputs: typing.Sequence[PromptDeploymentInputRequest],
|
|
207
|
+
prompt_deployment_id: typing.Optional[str] = OMIT,
|
|
208
|
+
prompt_deployment_name: typing.Optional[str] = OMIT,
|
|
209
|
+
release_tag: typing.Optional[str] = OMIT,
|
|
210
|
+
external_id: typing.Optional[str] = OMIT,
|
|
211
|
+
expand_meta: typing.Optional[PromptDeploymentExpandMetaRequest] = OMIT,
|
|
212
|
+
raw_overrides: typing.Optional[RawPromptExecutionOverridesRequest] = OMIT,
|
|
213
|
+
expand_raw: typing.Optional[typing.Sequence[str]] = OMIT,
|
|
214
|
+
metadata: typing.Optional[typing.Dict[str, typing.Optional[typing.Any]]] = OMIT,
|
|
215
|
+
request_options: typing.Optional[RequestOptions] = None,
|
|
216
|
+
) -> HttpResponse[ExecutePromptResponse]:
|
|
217
|
+
"""
|
|
218
|
+
Executes a deployed Prompt and returns the result.
|
|
219
|
+
|
|
220
|
+
Parameters
|
|
221
|
+
----------
|
|
222
|
+
inputs : typing.Sequence[PromptDeploymentInputRequest]
|
|
223
|
+
A list consisting of the Prompt Deployment's input variables and their values.
|
|
224
|
+
|
|
225
|
+
prompt_deployment_id : typing.Optional[str]
|
|
226
|
+
The ID of the Prompt Deployment. Must provide either this or prompt_deployment_name.
|
|
227
|
+
|
|
228
|
+
prompt_deployment_name : typing.Optional[str]
|
|
229
|
+
The unique name of the Prompt Deployment. Must provide either this or prompt_deployment_id.
|
|
230
|
+
|
|
231
|
+
release_tag : typing.Optional[str]
|
|
232
|
+
Optionally specify a release tag if you want to pin to a specific release of the Prompt Deployment
|
|
233
|
+
|
|
234
|
+
external_id : typing.Optional[str]
|
|
235
|
+
Optionally include a unique identifier for tracking purposes. Must be unique within a given Workspace.
|
|
236
|
+
|
|
237
|
+
expand_meta : typing.Optional[PromptDeploymentExpandMetaRequest]
|
|
238
|
+
An optionally specified configuration used to opt in to including additional metadata about this prompt execution in the API response. Corresponding values will be returned under the `meta` key of the API response.
|
|
239
|
+
|
|
240
|
+
raw_overrides : typing.Optional[RawPromptExecutionOverridesRequest]
|
|
241
|
+
Overrides for the raw API request sent to the model host. Combined with `expand_raw`, it can be used to access new features from models.
|
|
242
|
+
|
|
243
|
+
expand_raw : typing.Optional[typing.Sequence[str]]
|
|
244
|
+
A list of keys whose values you'd like to directly return from the JSON response of the model provider. Useful if you need lower-level info returned by model providers that Vellum would otherwise omit. Corresponding key/value pairs will be returned under the `raw` key of the API response.
|
|
245
|
+
|
|
246
|
+
metadata : typing.Optional[typing.Dict[str, typing.Optional[typing.Any]]]
|
|
247
|
+
Arbitrary JSON metadata associated with this request. Can be used to capture additional monitoring data such as user id, session id, etc. for future analysis.
|
|
248
|
+
|
|
249
|
+
request_options : typing.Optional[RequestOptions]
|
|
250
|
+
Request-specific configuration.
|
|
251
|
+
|
|
252
|
+
Returns
|
|
253
|
+
-------
|
|
254
|
+
HttpResponse[ExecutePromptResponse]
|
|
255
|
+
|
|
256
|
+
"""
|
|
257
|
+
_response = self._client_wrapper.httpx_client.request(
|
|
258
|
+
"v1/execute-prompt",
|
|
259
|
+
base_url=self._client_wrapper.get_environment().predict,
|
|
260
|
+
method="POST",
|
|
261
|
+
json={
|
|
262
|
+
"inputs": convert_and_respect_annotation_metadata(
|
|
263
|
+
object_=inputs, annotation=typing.Sequence[PromptDeploymentInputRequest], direction="write"
|
|
264
|
+
),
|
|
265
|
+
"prompt_deployment_id": prompt_deployment_id,
|
|
266
|
+
"prompt_deployment_name": prompt_deployment_name,
|
|
267
|
+
"release_tag": release_tag,
|
|
268
|
+
"external_id": external_id,
|
|
269
|
+
"expand_meta": convert_and_respect_annotation_metadata(
|
|
270
|
+
object_=expand_meta,
|
|
271
|
+
annotation=typing.Optional[PromptDeploymentExpandMetaRequest],
|
|
272
|
+
direction="write",
|
|
273
|
+
),
|
|
274
|
+
"raw_overrides": convert_and_respect_annotation_metadata(
|
|
275
|
+
object_=raw_overrides,
|
|
276
|
+
annotation=typing.Optional[RawPromptExecutionOverridesRequest],
|
|
277
|
+
direction="write",
|
|
278
|
+
),
|
|
279
|
+
"expand_raw": expand_raw,
|
|
280
|
+
"metadata": metadata,
|
|
281
|
+
},
|
|
282
|
+
headers={
|
|
283
|
+
"content-type": "application/json",
|
|
284
|
+
},
|
|
285
|
+
request_options=request_options,
|
|
286
|
+
omit=OMIT,
|
|
287
|
+
)
|
|
288
|
+
try:
|
|
289
|
+
if 200 <= _response.status_code < 300:
|
|
290
|
+
_data = typing.cast(
|
|
291
|
+
ExecutePromptResponse,
|
|
292
|
+
parse_obj_as(
|
|
293
|
+
type_=ExecutePromptResponse, # type: ignore
|
|
294
|
+
object_=_response.json(),
|
|
295
|
+
),
|
|
296
|
+
)
|
|
297
|
+
return HttpResponse(response=_response, data=_data)
|
|
298
|
+
if _response.status_code == 400:
|
|
299
|
+
raise BadRequestError(
|
|
300
|
+
headers=dict(_response.headers),
|
|
301
|
+
body=typing.cast(
|
|
302
|
+
typing.Optional[typing.Any],
|
|
303
|
+
parse_obj_as(
|
|
304
|
+
type_=typing.Optional[typing.Any], # type: ignore
|
|
305
|
+
object_=_response.json(),
|
|
306
|
+
),
|
|
307
|
+
),
|
|
308
|
+
)
|
|
309
|
+
if _response.status_code == 403:
|
|
310
|
+
raise ForbiddenError(
|
|
311
|
+
headers=dict(_response.headers),
|
|
312
|
+
body=typing.cast(
|
|
313
|
+
typing.Optional[typing.Any],
|
|
314
|
+
parse_obj_as(
|
|
315
|
+
type_=typing.Optional[typing.Any], # type: ignore
|
|
316
|
+
object_=_response.json(),
|
|
317
|
+
),
|
|
318
|
+
),
|
|
319
|
+
)
|
|
320
|
+
if _response.status_code == 404:
|
|
321
|
+
raise NotFoundError(
|
|
322
|
+
headers=dict(_response.headers),
|
|
323
|
+
body=typing.cast(
|
|
324
|
+
typing.Optional[typing.Any],
|
|
325
|
+
parse_obj_as(
|
|
326
|
+
type_=typing.Optional[typing.Any], # type: ignore
|
|
327
|
+
object_=_response.json(),
|
|
328
|
+
),
|
|
329
|
+
),
|
|
330
|
+
)
|
|
331
|
+
if _response.status_code == 500:
|
|
332
|
+
raise InternalServerError(
|
|
333
|
+
headers=dict(_response.headers),
|
|
334
|
+
body=typing.cast(
|
|
335
|
+
typing.Optional[typing.Any],
|
|
336
|
+
parse_obj_as(
|
|
337
|
+
type_=typing.Optional[typing.Any], # type: ignore
|
|
338
|
+
object_=_response.json(),
|
|
339
|
+
),
|
|
340
|
+
),
|
|
341
|
+
)
|
|
342
|
+
_response_json = _response.json()
|
|
343
|
+
except JSONDecodeError:
|
|
344
|
+
raise ApiError(status_code=_response.status_code, headers=dict(_response.headers), body=_response.text)
|
|
345
|
+
raise ApiError(status_code=_response.status_code, headers=dict(_response.headers), body=_response_json)
|
|
346
|
+
|
|
347
|
+
@contextlib.contextmanager
|
|
348
|
+
def execute_prompt_stream(
|
|
349
|
+
self,
|
|
350
|
+
*,
|
|
351
|
+
inputs: typing.Sequence[PromptDeploymentInputRequest],
|
|
352
|
+
prompt_deployment_id: typing.Optional[str] = OMIT,
|
|
353
|
+
prompt_deployment_name: typing.Optional[str] = OMIT,
|
|
354
|
+
release_tag: typing.Optional[str] = OMIT,
|
|
355
|
+
external_id: typing.Optional[str] = OMIT,
|
|
356
|
+
expand_meta: typing.Optional[PromptDeploymentExpandMetaRequest] = OMIT,
|
|
357
|
+
raw_overrides: typing.Optional[RawPromptExecutionOverridesRequest] = OMIT,
|
|
358
|
+
expand_raw: typing.Optional[typing.Sequence[str]] = OMIT,
|
|
359
|
+
metadata: typing.Optional[typing.Dict[str, typing.Optional[typing.Any]]] = OMIT,
|
|
360
|
+
request_options: typing.Optional[RequestOptions] = None,
|
|
361
|
+
) -> typing.Iterator[HttpResponse[typing.Iterator[ExecutePromptEvent]]]:
|
|
362
|
+
"""
|
|
363
|
+
Executes a deployed Prompt and streams back the results.
|
|
364
|
+
|
|
365
|
+
Parameters
|
|
366
|
+
----------
|
|
367
|
+
inputs : typing.Sequence[PromptDeploymentInputRequest]
|
|
368
|
+
A list consisting of the Prompt Deployment's input variables and their values.
|
|
369
|
+
|
|
370
|
+
prompt_deployment_id : typing.Optional[str]
|
|
371
|
+
The ID of the Prompt Deployment. Must provide either this or prompt_deployment_name.
|
|
372
|
+
|
|
373
|
+
prompt_deployment_name : typing.Optional[str]
|
|
374
|
+
The unique name of the Prompt Deployment. Must provide either this or prompt_deployment_id.
|
|
375
|
+
|
|
376
|
+
release_tag : typing.Optional[str]
|
|
377
|
+
Optionally specify a release tag if you want to pin to a specific release of the Prompt Deployment
|
|
378
|
+
|
|
379
|
+
external_id : typing.Optional[str]
|
|
380
|
+
Optionally include a unique identifier for tracking purposes. Must be unique within a given Workspace.
|
|
381
|
+
|
|
382
|
+
expand_meta : typing.Optional[PromptDeploymentExpandMetaRequest]
|
|
383
|
+
An optionally specified configuration used to opt in to including additional metadata about this prompt execution in the API response. Corresponding values will be returned under the `meta` key of the API response.
|
|
384
|
+
|
|
385
|
+
raw_overrides : typing.Optional[RawPromptExecutionOverridesRequest]
|
|
386
|
+
Overrides for the raw API request sent to the model host. Combined with `expand_raw`, it can be used to access new features from models.
|
|
387
|
+
|
|
388
|
+
expand_raw : typing.Optional[typing.Sequence[str]]
|
|
389
|
+
A list of keys whose values you'd like to directly return from the JSON response of the model provider. Useful if you need lower-level info returned by model providers that Vellum would otherwise omit. Corresponding key/value pairs will be returned under the `raw` key of the API response.
|
|
390
|
+
|
|
391
|
+
metadata : typing.Optional[typing.Dict[str, typing.Optional[typing.Any]]]
|
|
392
|
+
Arbitrary JSON metadata associated with this request. Can be used to capture additional monitoring data such as user id, session id, etc. for future analysis.
|
|
393
|
+
|
|
394
|
+
request_options : typing.Optional[RequestOptions]
|
|
395
|
+
Request-specific configuration.
|
|
396
|
+
|
|
397
|
+
Yields
|
|
398
|
+
------
|
|
399
|
+
typing.Iterator[HttpResponse[typing.Iterator[ExecutePromptEvent]]]
|
|
400
|
+
|
|
401
|
+
"""
|
|
402
|
+
with self._client_wrapper.httpx_client.stream(
|
|
403
|
+
"v1/execute-prompt-stream",
|
|
404
|
+
base_url=self._client_wrapper.get_environment().predict,
|
|
405
|
+
method="POST",
|
|
406
|
+
json={
|
|
407
|
+
"inputs": convert_and_respect_annotation_metadata(
|
|
408
|
+
object_=inputs, annotation=typing.Sequence[PromptDeploymentInputRequest], direction="write"
|
|
409
|
+
),
|
|
410
|
+
"prompt_deployment_id": prompt_deployment_id,
|
|
411
|
+
"prompt_deployment_name": prompt_deployment_name,
|
|
412
|
+
"release_tag": release_tag,
|
|
413
|
+
"external_id": external_id,
|
|
414
|
+
"expand_meta": convert_and_respect_annotation_metadata(
|
|
415
|
+
object_=expand_meta,
|
|
416
|
+
annotation=typing.Optional[PromptDeploymentExpandMetaRequest],
|
|
417
|
+
direction="write",
|
|
418
|
+
),
|
|
419
|
+
"raw_overrides": convert_and_respect_annotation_metadata(
|
|
420
|
+
object_=raw_overrides,
|
|
421
|
+
annotation=typing.Optional[RawPromptExecutionOverridesRequest],
|
|
422
|
+
direction="write",
|
|
423
|
+
),
|
|
424
|
+
"expand_raw": expand_raw,
|
|
425
|
+
"metadata": metadata,
|
|
426
|
+
},
|
|
427
|
+
headers={
|
|
428
|
+
"content-type": "application/json",
|
|
429
|
+
},
|
|
430
|
+
request_options=request_options,
|
|
431
|
+
omit=OMIT,
|
|
432
|
+
) as _response:
|
|
433
|
+
|
|
434
|
+
def _stream() -> HttpResponse[typing.Iterator[ExecutePromptEvent]]:
|
|
435
|
+
try:
|
|
436
|
+
if 200 <= _response.status_code < 300:
|
|
437
|
+
|
|
438
|
+
def _iter():
|
|
439
|
+
for _text in _response.iter_lines():
|
|
440
|
+
try:
|
|
441
|
+
if len(_text) == 0:
|
|
442
|
+
continue
|
|
443
|
+
yield typing.cast(
|
|
444
|
+
ExecutePromptEvent,
|
|
445
|
+
parse_obj_as(
|
|
446
|
+
type_=ExecutePromptEvent, # type: ignore
|
|
447
|
+
object_=json.loads(_text),
|
|
448
|
+
),
|
|
449
|
+
)
|
|
450
|
+
except Exception:
|
|
451
|
+
pass
|
|
452
|
+
return
|
|
453
|
+
|
|
454
|
+
return HttpResponse(response=_response, data=_iter())
|
|
455
|
+
_response.read()
|
|
456
|
+
if _response.status_code == 400:
|
|
457
|
+
raise BadRequestError(
|
|
458
|
+
headers=dict(_response.headers),
|
|
459
|
+
body=typing.cast(
|
|
460
|
+
typing.Optional[typing.Any],
|
|
461
|
+
parse_obj_as(
|
|
462
|
+
type_=typing.Optional[typing.Any], # type: ignore
|
|
463
|
+
object_=_response.json(),
|
|
464
|
+
),
|
|
465
|
+
),
|
|
466
|
+
)
|
|
467
|
+
if _response.status_code == 403:
|
|
468
|
+
raise ForbiddenError(
|
|
469
|
+
headers=dict(_response.headers),
|
|
470
|
+
body=typing.cast(
|
|
471
|
+
typing.Optional[typing.Any],
|
|
472
|
+
parse_obj_as(
|
|
473
|
+
type_=typing.Optional[typing.Any], # type: ignore
|
|
474
|
+
object_=_response.json(),
|
|
475
|
+
),
|
|
476
|
+
),
|
|
477
|
+
)
|
|
478
|
+
if _response.status_code == 404:
|
|
479
|
+
raise NotFoundError(
|
|
480
|
+
headers=dict(_response.headers),
|
|
481
|
+
body=typing.cast(
|
|
482
|
+
typing.Optional[typing.Any],
|
|
483
|
+
parse_obj_as(
|
|
484
|
+
type_=typing.Optional[typing.Any], # type: ignore
|
|
485
|
+
object_=_response.json(),
|
|
486
|
+
),
|
|
487
|
+
),
|
|
488
|
+
)
|
|
489
|
+
if _response.status_code == 500:
|
|
490
|
+
raise InternalServerError(
|
|
491
|
+
headers=dict(_response.headers),
|
|
492
|
+
body=typing.cast(
|
|
493
|
+
typing.Optional[typing.Any],
|
|
494
|
+
parse_obj_as(
|
|
495
|
+
type_=typing.Optional[typing.Any], # type: ignore
|
|
496
|
+
object_=_response.json(),
|
|
497
|
+
),
|
|
498
|
+
),
|
|
499
|
+
)
|
|
500
|
+
_response_json = _response.json()
|
|
501
|
+
except JSONDecodeError:
|
|
502
|
+
raise ApiError(
|
|
503
|
+
status_code=_response.status_code, headers=dict(_response.headers), body=_response.text
|
|
504
|
+
)
|
|
505
|
+
raise ApiError(status_code=_response.status_code, headers=dict(_response.headers), body=_response_json)
|
|
506
|
+
|
|
507
|
+
yield _stream()
|
|
508
|
+
|
|
509
|
+
def execute_workflow(
|
|
510
|
+
self,
|
|
511
|
+
*,
|
|
512
|
+
inputs: typing.Sequence[WorkflowRequestInputRequest],
|
|
513
|
+
expand_meta: typing.Optional[WorkflowExpandMetaRequest] = OMIT,
|
|
514
|
+
workflow_deployment_id: typing.Optional[str] = OMIT,
|
|
515
|
+
workflow_deployment_name: typing.Optional[str] = OMIT,
|
|
516
|
+
release_tag: typing.Optional[str] = OMIT,
|
|
517
|
+
external_id: typing.Optional[str] = OMIT,
|
|
518
|
+
metadata: typing.Optional[typing.Dict[str, typing.Optional[typing.Any]]] = OMIT,
|
|
519
|
+
previous_execution_id: typing.Optional[str] = OMIT,
|
|
520
|
+
request_options: typing.Optional[RequestOptions] = None,
|
|
521
|
+
) -> HttpResponse[ExecuteWorkflowResponse]:
|
|
522
|
+
"""
|
|
523
|
+
Executes a deployed Workflow and returns its outputs.
|
|
524
|
+
|
|
525
|
+
Parameters
|
|
526
|
+
----------
|
|
527
|
+
inputs : typing.Sequence[WorkflowRequestInputRequest]
|
|
528
|
+
The list of inputs defined in the Workflow's Deployment with their corresponding values.
|
|
529
|
+
|
|
530
|
+
expand_meta : typing.Optional[WorkflowExpandMetaRequest]
|
|
531
|
+
An optionally specified configuration used to opt in to including additional metadata about this workflow execution in the API response. Corresponding values will be returned under the `execution_meta` key within NODE events in the response stream.
|
|
532
|
+
|
|
533
|
+
workflow_deployment_id : typing.Optional[str]
|
|
534
|
+
The ID of the Workflow Deployment. Must provide either this or workflow_deployment_name.
|
|
535
|
+
|
|
536
|
+
workflow_deployment_name : typing.Optional[str]
|
|
537
|
+
The name of the Workflow Deployment. Must provide either this or workflow_deployment_id.
|
|
538
|
+
|
|
539
|
+
release_tag : typing.Optional[str]
|
|
540
|
+
Optionally specify a release tag if you want to pin to a specific release of the Workflow Deployment
|
|
541
|
+
|
|
542
|
+
external_id : typing.Optional[str]
|
|
543
|
+
Optionally include a unique identifier for tracking purposes. Must be unique within a given Workspace.
|
|
544
|
+
|
|
545
|
+
metadata : typing.Optional[typing.Dict[str, typing.Optional[typing.Any]]]
|
|
546
|
+
Arbitrary JSON metadata associated with this request. Can be used to capture additional monitoring data such as user id, session id, etc. for future analysis.
|
|
547
|
+
|
|
548
|
+
previous_execution_id : typing.Optional[str]
|
|
549
|
+
The ID of a previous Workflow Execution to reference for initial State loading.
|
|
550
|
+
|
|
551
|
+
request_options : typing.Optional[RequestOptions]
|
|
552
|
+
Request-specific configuration.
|
|
553
|
+
|
|
554
|
+
Returns
|
|
555
|
+
-------
|
|
556
|
+
HttpResponse[ExecuteWorkflowResponse]
|
|
557
|
+
|
|
558
|
+
"""
|
|
559
|
+
_response = self._client_wrapper.httpx_client.request(
|
|
560
|
+
"v1/execute-workflow",
|
|
561
|
+
base_url=self._client_wrapper.get_environment().predict,
|
|
562
|
+
method="POST",
|
|
563
|
+
json={
|
|
564
|
+
"inputs": convert_and_respect_annotation_metadata(
|
|
565
|
+
object_=inputs, annotation=typing.Sequence[WorkflowRequestInputRequest], direction="write"
|
|
566
|
+
),
|
|
567
|
+
"expand_meta": convert_and_respect_annotation_metadata(
|
|
568
|
+
object_=expand_meta, annotation=typing.Optional[WorkflowExpandMetaRequest], direction="write"
|
|
569
|
+
),
|
|
570
|
+
"workflow_deployment_id": workflow_deployment_id,
|
|
571
|
+
"workflow_deployment_name": workflow_deployment_name,
|
|
572
|
+
"release_tag": release_tag,
|
|
573
|
+
"external_id": external_id,
|
|
574
|
+
"metadata": metadata,
|
|
575
|
+
"previous_execution_id": previous_execution_id,
|
|
576
|
+
},
|
|
577
|
+
headers={
|
|
578
|
+
"content-type": "application/json",
|
|
579
|
+
},
|
|
580
|
+
request_options=request_options,
|
|
581
|
+
omit=OMIT,
|
|
582
|
+
)
|
|
583
|
+
try:
|
|
584
|
+
if 200 <= _response.status_code < 300:
|
|
585
|
+
_data = typing.cast(
|
|
586
|
+
ExecuteWorkflowResponse,
|
|
587
|
+
parse_obj_as(
|
|
588
|
+
type_=ExecuteWorkflowResponse, # type: ignore
|
|
589
|
+
object_=_response.json(),
|
|
590
|
+
),
|
|
591
|
+
)
|
|
592
|
+
return HttpResponse(response=_response, data=_data)
|
|
593
|
+
if _response.status_code == 400:
|
|
594
|
+
raise BadRequestError(
|
|
595
|
+
headers=dict(_response.headers),
|
|
596
|
+
body=typing.cast(
|
|
597
|
+
typing.Optional[typing.Any],
|
|
598
|
+
parse_obj_as(
|
|
599
|
+
type_=typing.Optional[typing.Any], # type: ignore
|
|
600
|
+
object_=_response.json(),
|
|
601
|
+
),
|
|
602
|
+
),
|
|
603
|
+
)
|
|
604
|
+
if _response.status_code == 404:
|
|
605
|
+
raise NotFoundError(
|
|
606
|
+
headers=dict(_response.headers),
|
|
607
|
+
body=typing.cast(
|
|
608
|
+
typing.Optional[typing.Any],
|
|
609
|
+
parse_obj_as(
|
|
610
|
+
type_=typing.Optional[typing.Any], # type: ignore
|
|
611
|
+
object_=_response.json(),
|
|
612
|
+
),
|
|
613
|
+
),
|
|
614
|
+
)
|
|
615
|
+
if _response.status_code == 500:
|
|
616
|
+
raise InternalServerError(
|
|
617
|
+
headers=dict(_response.headers),
|
|
618
|
+
body=typing.cast(
|
|
619
|
+
typing.Optional[typing.Any],
|
|
620
|
+
parse_obj_as(
|
|
621
|
+
type_=typing.Optional[typing.Any], # type: ignore
|
|
622
|
+
object_=_response.json(),
|
|
623
|
+
),
|
|
624
|
+
),
|
|
625
|
+
)
|
|
626
|
+
_response_json = _response.json()
|
|
627
|
+
except JSONDecodeError:
|
|
628
|
+
raise ApiError(status_code=_response.status_code, headers=dict(_response.headers), body=_response.text)
|
|
629
|
+
raise ApiError(status_code=_response.status_code, headers=dict(_response.headers), body=_response_json)
|
|
630
|
+
|
|
631
|
+
def execute_workflow_async(
|
|
632
|
+
self,
|
|
633
|
+
*,
|
|
634
|
+
inputs: typing.Sequence[WorkflowRequestInputRequest],
|
|
635
|
+
workflow_deployment_id: typing.Optional[str] = OMIT,
|
|
636
|
+
workflow_deployment_name: typing.Optional[str] = OMIT,
|
|
637
|
+
release_tag: typing.Optional[str] = OMIT,
|
|
638
|
+
external_id: typing.Optional[str] = OMIT,
|
|
639
|
+
previous_execution_id: typing.Optional[str] = OMIT,
|
|
640
|
+
metadata: typing.Optional[typing.Dict[str, typing.Optional[typing.Any]]] = OMIT,
|
|
641
|
+
request_options: typing.Optional[RequestOptions] = None,
|
|
642
|
+
) -> HttpResponse[ExecuteWorkflowAsyncResponse]:
|
|
643
|
+
"""
|
|
644
|
+
Executes a deployed Workflow asynchronously and returns the execution ID.
|
|
645
|
+
|
|
646
|
+
Parameters
|
|
647
|
+
----------
|
|
648
|
+
inputs : typing.Sequence[WorkflowRequestInputRequest]
|
|
649
|
+
The list of inputs defined in the Workflow's Deployment with their corresponding values.
|
|
650
|
+
|
|
651
|
+
workflow_deployment_id : typing.Optional[str]
|
|
652
|
+
The ID of the Workflow Deployment. Must provide either this or workflow_deployment_name.
|
|
653
|
+
|
|
654
|
+
workflow_deployment_name : typing.Optional[str]
|
|
655
|
+
The name of the Workflow Deployment. Must provide either this or workflow_deployment_id.
|
|
656
|
+
|
|
657
|
+
release_tag : typing.Optional[str]
|
|
658
|
+
Optionally specify a release tag if you want to pin to a specific release of the Workflow Deployment
|
|
659
|
+
|
|
660
|
+
external_id : typing.Optional[str]
|
|
661
|
+
Optionally include a unique identifier for tracking purposes. Must be unique within a given Workspace.
|
|
662
|
+
|
|
663
|
+
previous_execution_id : typing.Optional[str]
|
|
664
|
+
The ID of a previous Workflow Execution to reference for initial State loading.
|
|
665
|
+
|
|
666
|
+
metadata : typing.Optional[typing.Dict[str, typing.Optional[typing.Any]]]
|
|
667
|
+
Arbitrary JSON metadata associated with this request. Can be used to capture additional monitoring data such as user id, session id, etc. for future analysis.
|
|
668
|
+
|
|
669
|
+
request_options : typing.Optional[RequestOptions]
|
|
670
|
+
Request-specific configuration.
|
|
671
|
+
|
|
672
|
+
Returns
|
|
673
|
+
-------
|
|
674
|
+
HttpResponse[ExecuteWorkflowAsyncResponse]
|
|
675
|
+
|
|
676
|
+
"""
|
|
677
|
+
_response = self._client_wrapper.httpx_client.request(
|
|
678
|
+
"v1/execute-workflow-async",
|
|
679
|
+
base_url=self._client_wrapper.get_environment().predict,
|
|
680
|
+
method="POST",
|
|
681
|
+
json={
|
|
682
|
+
"inputs": convert_and_respect_annotation_metadata(
|
|
683
|
+
object_=inputs, annotation=typing.Sequence[WorkflowRequestInputRequest], direction="write"
|
|
684
|
+
),
|
|
685
|
+
"workflow_deployment_id": workflow_deployment_id,
|
|
686
|
+
"workflow_deployment_name": workflow_deployment_name,
|
|
687
|
+
"release_tag": release_tag,
|
|
688
|
+
"external_id": external_id,
|
|
689
|
+
"previous_execution_id": previous_execution_id,
|
|
690
|
+
"metadata": metadata,
|
|
691
|
+
},
|
|
692
|
+
headers={
|
|
693
|
+
"content-type": "application/json",
|
|
694
|
+
},
|
|
695
|
+
request_options=request_options,
|
|
696
|
+
omit=OMIT,
|
|
697
|
+
)
|
|
698
|
+
try:
|
|
699
|
+
if 200 <= _response.status_code < 300:
|
|
700
|
+
_data = typing.cast(
|
|
701
|
+
ExecuteWorkflowAsyncResponse,
|
|
702
|
+
parse_obj_as(
|
|
703
|
+
type_=ExecuteWorkflowAsyncResponse, # type: ignore
|
|
704
|
+
object_=_response.json(),
|
|
705
|
+
),
|
|
706
|
+
)
|
|
707
|
+
return HttpResponse(response=_response, data=_data)
|
|
708
|
+
if _response.status_code == 400:
|
|
709
|
+
raise BadRequestError(
|
|
710
|
+
headers=dict(_response.headers),
|
|
711
|
+
body=typing.cast(
|
|
712
|
+
typing.Optional[typing.Any],
|
|
713
|
+
parse_obj_as(
|
|
714
|
+
type_=typing.Optional[typing.Any], # type: ignore
|
|
715
|
+
object_=_response.json(),
|
|
716
|
+
),
|
|
717
|
+
),
|
|
718
|
+
)
|
|
719
|
+
if _response.status_code == 404:
|
|
720
|
+
raise NotFoundError(
|
|
721
|
+
headers=dict(_response.headers),
|
|
722
|
+
body=typing.cast(
|
|
723
|
+
typing.Optional[typing.Any],
|
|
724
|
+
parse_obj_as(
|
|
725
|
+
type_=typing.Optional[typing.Any], # type: ignore
|
|
726
|
+
object_=_response.json(),
|
|
727
|
+
),
|
|
728
|
+
),
|
|
729
|
+
)
|
|
730
|
+
if _response.status_code == 500:
|
|
731
|
+
raise InternalServerError(
|
|
732
|
+
headers=dict(_response.headers),
|
|
733
|
+
body=typing.cast(
|
|
734
|
+
typing.Optional[typing.Any],
|
|
735
|
+
parse_obj_as(
|
|
736
|
+
type_=typing.Optional[typing.Any], # type: ignore
|
|
737
|
+
object_=_response.json(),
|
|
738
|
+
),
|
|
739
|
+
),
|
|
740
|
+
)
|
|
741
|
+
_response_json = _response.json()
|
|
742
|
+
except JSONDecodeError:
|
|
743
|
+
raise ApiError(status_code=_response.status_code, headers=dict(_response.headers), body=_response.text)
|
|
744
|
+
raise ApiError(status_code=_response.status_code, headers=dict(_response.headers), body=_response_json)
|
|
745
|
+
|
|
746
|
+
@contextlib.contextmanager
|
|
747
|
+
def execute_workflow_stream(
|
|
748
|
+
self,
|
|
749
|
+
*,
|
|
750
|
+
inputs: typing.Sequence[WorkflowRequestInputRequest],
|
|
751
|
+
expand_meta: typing.Optional[WorkflowExpandMetaRequest] = OMIT,
|
|
752
|
+
workflow_deployment_id: typing.Optional[str] = OMIT,
|
|
753
|
+
workflow_deployment_name: typing.Optional[str] = OMIT,
|
|
754
|
+
release_tag: typing.Optional[str] = OMIT,
|
|
755
|
+
external_id: typing.Optional[str] = OMIT,
|
|
756
|
+
event_types: typing.Optional[typing.Sequence[WorkflowExecutionEventType]] = OMIT,
|
|
757
|
+
metadata: typing.Optional[typing.Dict[str, typing.Optional[typing.Any]]] = OMIT,
|
|
758
|
+
previous_execution_id: typing.Optional[str] = OMIT,
|
|
759
|
+
request_options: typing.Optional[RequestOptions] = None,
|
|
760
|
+
) -> typing.Iterator[HttpResponse[typing.Iterator[WorkflowStreamEvent]]]:
|
|
761
|
+
"""
|
|
762
|
+
Executes a deployed Workflow and streams back its results.
|
|
763
|
+
|
|
764
|
+
Parameters
|
|
765
|
+
----------
|
|
766
|
+
inputs : typing.Sequence[WorkflowRequestInputRequest]
|
|
767
|
+
The list of inputs defined in the Workflow's Deployment with their corresponding values.
|
|
768
|
+
|
|
769
|
+
expand_meta : typing.Optional[WorkflowExpandMetaRequest]
|
|
770
|
+
An optionally specified configuration used to opt in to including additional metadata about this workflow execution in the API response. Corresponding values will be returned under the `execution_meta` key within NODE events in the response stream.
|
|
771
|
+
|
|
772
|
+
workflow_deployment_id : typing.Optional[str]
|
|
773
|
+
The ID of the Workflow Deployment. Must provide either this or workflow_deployment_name.
|
|
774
|
+
|
|
775
|
+
workflow_deployment_name : typing.Optional[str]
|
|
776
|
+
The name of the Workflow Deployment. Must provide either this or workflow_deployment_id.
|
|
777
|
+
|
|
778
|
+
release_tag : typing.Optional[str]
|
|
779
|
+
Optionally specify a release tag if you want to pin to a specific release of the Workflow Deployment
|
|
780
|
+
|
|
781
|
+
external_id : typing.Optional[str]
|
|
782
|
+
Optionally include a unique identifier for tracking purposes. Must be unique within a given Workspace.
|
|
783
|
+
|
|
784
|
+
event_types : typing.Optional[typing.Sequence[WorkflowExecutionEventType]]
|
|
785
|
+
Optionally specify which events you want to receive. Defaults to only WORKFLOW events. Note that the schema of non-WORKFLOW events is unstable and should be used with caution.
|
|
786
|
+
|
|
787
|
+
metadata : typing.Optional[typing.Dict[str, typing.Optional[typing.Any]]]
|
|
788
|
+
Arbitrary JSON metadata associated with this request. Can be used to capture additional monitoring data such as user id, session id, etc. for future analysis.
|
|
789
|
+
|
|
790
|
+
previous_execution_id : typing.Optional[str]
|
|
791
|
+
The ID of a previous Workflow Execution to reference for initial State loading.
|
|
792
|
+
|
|
793
|
+
request_options : typing.Optional[RequestOptions]
|
|
794
|
+
Request-specific configuration.
|
|
795
|
+
|
|
796
|
+
Yields
|
|
797
|
+
------
|
|
798
|
+
typing.Iterator[HttpResponse[typing.Iterator[WorkflowStreamEvent]]]
|
|
799
|
+
|
|
800
|
+
"""
|
|
801
|
+
with self._client_wrapper.httpx_client.stream(
|
|
802
|
+
"v1/execute-workflow-stream",
|
|
803
|
+
base_url=self._client_wrapper.get_environment().predict,
|
|
804
|
+
method="POST",
|
|
805
|
+
json={
|
|
806
|
+
"inputs": convert_and_respect_annotation_metadata(
|
|
807
|
+
object_=inputs, annotation=typing.Sequence[WorkflowRequestInputRequest], direction="write"
|
|
808
|
+
),
|
|
809
|
+
"expand_meta": convert_and_respect_annotation_metadata(
|
|
810
|
+
object_=expand_meta, annotation=typing.Optional[WorkflowExpandMetaRequest], direction="write"
|
|
811
|
+
),
|
|
812
|
+
"workflow_deployment_id": workflow_deployment_id,
|
|
813
|
+
"workflow_deployment_name": workflow_deployment_name,
|
|
814
|
+
"release_tag": release_tag,
|
|
815
|
+
"external_id": external_id,
|
|
816
|
+
"event_types": event_types,
|
|
817
|
+
"metadata": metadata,
|
|
818
|
+
"previous_execution_id": previous_execution_id,
|
|
819
|
+
},
|
|
820
|
+
headers={
|
|
821
|
+
"content-type": "application/json",
|
|
822
|
+
},
|
|
823
|
+
request_options=request_options,
|
|
824
|
+
omit=OMIT,
|
|
825
|
+
) as _response:
|
|
826
|
+
|
|
827
|
+
def _stream() -> HttpResponse[typing.Iterator[WorkflowStreamEvent]]:
|
|
828
|
+
try:
|
|
829
|
+
if 200 <= _response.status_code < 300:
|
|
830
|
+
|
|
831
|
+
def _iter():
|
|
832
|
+
for _text in _response.iter_lines():
|
|
833
|
+
try:
|
|
834
|
+
if len(_text) == 0:
|
|
835
|
+
continue
|
|
836
|
+
yield typing.cast(
|
|
837
|
+
WorkflowStreamEvent,
|
|
838
|
+
parse_obj_as(
|
|
839
|
+
type_=WorkflowStreamEvent, # type: ignore
|
|
840
|
+
object_=json.loads(_text),
|
|
841
|
+
),
|
|
842
|
+
)
|
|
843
|
+
except Exception:
|
|
844
|
+
pass
|
|
845
|
+
return
|
|
846
|
+
|
|
847
|
+
return HttpResponse(response=_response, data=_iter())
|
|
848
|
+
_response.read()
|
|
849
|
+
if _response.status_code == 400:
|
|
850
|
+
raise BadRequestError(
|
|
851
|
+
headers=dict(_response.headers),
|
|
852
|
+
body=typing.cast(
|
|
853
|
+
typing.Optional[typing.Any],
|
|
854
|
+
parse_obj_as(
|
|
855
|
+
type_=typing.Optional[typing.Any], # type: ignore
|
|
856
|
+
object_=_response.json(),
|
|
857
|
+
),
|
|
858
|
+
),
|
|
859
|
+
)
|
|
860
|
+
if _response.status_code == 404:
|
|
861
|
+
raise NotFoundError(
|
|
862
|
+
headers=dict(_response.headers),
|
|
863
|
+
body=typing.cast(
|
|
864
|
+
typing.Optional[typing.Any],
|
|
865
|
+
parse_obj_as(
|
|
866
|
+
type_=typing.Optional[typing.Any], # type: ignore
|
|
867
|
+
object_=_response.json(),
|
|
868
|
+
),
|
|
869
|
+
),
|
|
870
|
+
)
|
|
871
|
+
if _response.status_code == 500:
|
|
872
|
+
raise InternalServerError(
|
|
873
|
+
headers=dict(_response.headers),
|
|
874
|
+
body=typing.cast(
|
|
875
|
+
typing.Optional[typing.Any],
|
|
876
|
+
parse_obj_as(
|
|
877
|
+
type_=typing.Optional[typing.Any], # type: ignore
|
|
878
|
+
object_=_response.json(),
|
|
879
|
+
),
|
|
880
|
+
),
|
|
881
|
+
)
|
|
882
|
+
_response_json = _response.json()
|
|
883
|
+
except JSONDecodeError:
|
|
884
|
+
raise ApiError(
|
|
885
|
+
status_code=_response.status_code, headers=dict(_response.headers), body=_response.text
|
|
886
|
+
)
|
|
887
|
+
raise ApiError(status_code=_response.status_code, headers=dict(_response.headers), body=_response_json)
|
|
888
|
+
|
|
889
|
+
yield _stream()
|
|
890
|
+
|
|
891
|
+
def generate(
|
|
892
|
+
self,
|
|
893
|
+
*,
|
|
894
|
+
requests: typing.Sequence[GenerateRequest],
|
|
895
|
+
deployment_id: typing.Optional[str] = OMIT,
|
|
896
|
+
deployment_name: typing.Optional[str] = OMIT,
|
|
897
|
+
options: typing.Optional[GenerateOptionsRequest] = OMIT,
|
|
898
|
+
request_options: typing.Optional[RequestOptions] = None,
|
|
899
|
+
) -> HttpResponse[GenerateResponse]:
|
|
900
|
+
"""
|
|
901
|
+
Generate a completion using a previously defined deployment.
|
|
902
|
+
|
|
903
|
+
Important: This endpoint is DEPRECATED and has been superseded by
|
|
904
|
+
[execute-prompt](/api-reference/api-reference/execute-prompt).
|
|
905
|
+
|
|
906
|
+
Parameters
|
|
907
|
+
----------
|
|
908
|
+
requests : typing.Sequence[GenerateRequest]
|
|
909
|
+
The generation request to make. Bulk requests are no longer supported, this field must be an array of length 1.
|
|
910
|
+
|
|
911
|
+
deployment_id : typing.Optional[str]
|
|
912
|
+
The ID of the deployment. Must provide either this or deployment_name.
|
|
913
|
+
|
|
914
|
+
deployment_name : typing.Optional[str]
|
|
915
|
+
The name of the deployment. Must provide either this or deployment_id.
|
|
916
|
+
|
|
917
|
+
options : typing.Optional[GenerateOptionsRequest]
|
|
918
|
+
Additional configuration that can be used to control what's included in the response.
|
|
919
|
+
|
|
920
|
+
request_options : typing.Optional[RequestOptions]
|
|
921
|
+
Request-specific configuration.
|
|
922
|
+
|
|
923
|
+
Returns
|
|
924
|
+
-------
|
|
925
|
+
HttpResponse[GenerateResponse]
|
|
926
|
+
|
|
927
|
+
"""
|
|
928
|
+
_response = self._client_wrapper.httpx_client.request(
|
|
929
|
+
"v1/generate",
|
|
930
|
+
base_url=self._client_wrapper.get_environment().predict,
|
|
931
|
+
method="POST",
|
|
932
|
+
json={
|
|
933
|
+
"deployment_id": deployment_id,
|
|
934
|
+
"deployment_name": deployment_name,
|
|
935
|
+
"requests": convert_and_respect_annotation_metadata(
|
|
936
|
+
object_=requests, annotation=typing.Sequence[GenerateRequest], direction="write"
|
|
937
|
+
),
|
|
938
|
+
"options": convert_and_respect_annotation_metadata(
|
|
939
|
+
object_=options, annotation=typing.Optional[GenerateOptionsRequest], direction="write"
|
|
940
|
+
),
|
|
941
|
+
},
|
|
942
|
+
headers={
|
|
943
|
+
"content-type": "application/json",
|
|
944
|
+
},
|
|
945
|
+
request_options=request_options,
|
|
946
|
+
omit=OMIT,
|
|
947
|
+
)
|
|
948
|
+
try:
|
|
949
|
+
if 200 <= _response.status_code < 300:
|
|
950
|
+
_data = typing.cast(
|
|
951
|
+
GenerateResponse,
|
|
952
|
+
parse_obj_as(
|
|
953
|
+
type_=GenerateResponse, # type: ignore
|
|
954
|
+
object_=_response.json(),
|
|
955
|
+
),
|
|
956
|
+
)
|
|
957
|
+
return HttpResponse(response=_response, data=_data)
|
|
958
|
+
if _response.status_code == 400:
|
|
959
|
+
raise BadRequestError(
|
|
960
|
+
headers=dict(_response.headers),
|
|
961
|
+
body=typing.cast(
|
|
962
|
+
typing.Optional[typing.Any],
|
|
963
|
+
parse_obj_as(
|
|
964
|
+
type_=typing.Optional[typing.Any], # type: ignore
|
|
965
|
+
object_=_response.json(),
|
|
966
|
+
),
|
|
967
|
+
),
|
|
968
|
+
)
|
|
969
|
+
if _response.status_code == 403:
|
|
970
|
+
raise ForbiddenError(
|
|
971
|
+
headers=dict(_response.headers),
|
|
972
|
+
body=typing.cast(
|
|
973
|
+
typing.Optional[typing.Any],
|
|
974
|
+
parse_obj_as(
|
|
975
|
+
type_=typing.Optional[typing.Any], # type: ignore
|
|
976
|
+
object_=_response.json(),
|
|
977
|
+
),
|
|
978
|
+
),
|
|
979
|
+
)
|
|
980
|
+
if _response.status_code == 404:
|
|
981
|
+
raise NotFoundError(
|
|
982
|
+
headers=dict(_response.headers),
|
|
983
|
+
body=typing.cast(
|
|
984
|
+
typing.Optional[typing.Any],
|
|
985
|
+
parse_obj_as(
|
|
986
|
+
type_=typing.Optional[typing.Any], # type: ignore
|
|
987
|
+
object_=_response.json(),
|
|
988
|
+
),
|
|
989
|
+
),
|
|
990
|
+
)
|
|
991
|
+
if _response.status_code == 500:
|
|
992
|
+
raise InternalServerError(
|
|
993
|
+
headers=dict(_response.headers),
|
|
994
|
+
body=typing.cast(
|
|
995
|
+
typing.Optional[typing.Any],
|
|
996
|
+
parse_obj_as(
|
|
997
|
+
type_=typing.Optional[typing.Any], # type: ignore
|
|
998
|
+
object_=_response.json(),
|
|
999
|
+
),
|
|
1000
|
+
),
|
|
1001
|
+
)
|
|
1002
|
+
_response_json = _response.json()
|
|
1003
|
+
except JSONDecodeError:
|
|
1004
|
+
raise ApiError(status_code=_response.status_code, headers=dict(_response.headers), body=_response.text)
|
|
1005
|
+
raise ApiError(status_code=_response.status_code, headers=dict(_response.headers), body=_response_json)
|
|
1006
|
+
|
|
1007
|
+
@contextlib.contextmanager
|
|
1008
|
+
def generate_stream(
|
|
1009
|
+
self,
|
|
1010
|
+
*,
|
|
1011
|
+
requests: typing.Sequence[GenerateRequest],
|
|
1012
|
+
deployment_id: typing.Optional[str] = OMIT,
|
|
1013
|
+
deployment_name: typing.Optional[str] = OMIT,
|
|
1014
|
+
options: typing.Optional[GenerateOptionsRequest] = OMIT,
|
|
1015
|
+
request_options: typing.Optional[RequestOptions] = None,
|
|
1016
|
+
) -> typing.Iterator[HttpResponse[typing.Iterator[GenerateStreamResponse]]]:
|
|
1017
|
+
"""
|
|
1018
|
+
Generate a stream of completions using a previously defined deployment.
|
|
1019
|
+
|
|
1020
|
+
Important: This endpoint is DEPRECATED and has been superseded by
|
|
1021
|
+
[execute-prompt-stream](/api-reference/api-reference/execute-prompt-stream).
|
|
1022
|
+
|
|
1023
|
+
Parameters
|
|
1024
|
+
----------
|
|
1025
|
+
requests : typing.Sequence[GenerateRequest]
|
|
1026
|
+
The generation request to make. Bulk requests are no longer supported, this field must be an array of length 1.
|
|
1027
|
+
|
|
1028
|
+
deployment_id : typing.Optional[str]
|
|
1029
|
+
The ID of the deployment. Must provide either this or deployment_name.
|
|
1030
|
+
|
|
1031
|
+
deployment_name : typing.Optional[str]
|
|
1032
|
+
The name of the deployment. Must provide either this or deployment_id.
|
|
1033
|
+
|
|
1034
|
+
options : typing.Optional[GenerateOptionsRequest]
|
|
1035
|
+
Additional configuration that can be used to control what's included in the response.
|
|
1036
|
+
|
|
1037
|
+
request_options : typing.Optional[RequestOptions]
|
|
1038
|
+
Request-specific configuration.
|
|
1039
|
+
|
|
1040
|
+
Yields
|
|
1041
|
+
------
|
|
1042
|
+
typing.Iterator[HttpResponse[typing.Iterator[GenerateStreamResponse]]]
|
|
1043
|
+
|
|
1044
|
+
"""
|
|
1045
|
+
with self._client_wrapper.httpx_client.stream(
|
|
1046
|
+
"v1/generate-stream",
|
|
1047
|
+
base_url=self._client_wrapper.get_environment().predict,
|
|
1048
|
+
method="POST",
|
|
1049
|
+
json={
|
|
1050
|
+
"deployment_id": deployment_id,
|
|
1051
|
+
"deployment_name": deployment_name,
|
|
1052
|
+
"requests": convert_and_respect_annotation_metadata(
|
|
1053
|
+
object_=requests, annotation=typing.Sequence[GenerateRequest], direction="write"
|
|
1054
|
+
),
|
|
1055
|
+
"options": convert_and_respect_annotation_metadata(
|
|
1056
|
+
object_=options, annotation=typing.Optional[GenerateOptionsRequest], direction="write"
|
|
1057
|
+
),
|
|
1058
|
+
},
|
|
1059
|
+
headers={
|
|
1060
|
+
"content-type": "application/json",
|
|
1061
|
+
},
|
|
1062
|
+
request_options=request_options,
|
|
1063
|
+
omit=OMIT,
|
|
1064
|
+
) as _response:
|
|
1065
|
+
|
|
1066
|
+
def _stream() -> HttpResponse[typing.Iterator[GenerateStreamResponse]]:
|
|
1067
|
+
try:
|
|
1068
|
+
if 200 <= _response.status_code < 300:
|
|
1069
|
+
|
|
1070
|
+
def _iter():
|
|
1071
|
+
for _text in _response.iter_lines():
|
|
1072
|
+
try:
|
|
1073
|
+
if len(_text) == 0:
|
|
1074
|
+
continue
|
|
1075
|
+
yield typing.cast(
|
|
1076
|
+
GenerateStreamResponse,
|
|
1077
|
+
parse_obj_as(
|
|
1078
|
+
type_=GenerateStreamResponse, # type: ignore
|
|
1079
|
+
object_=json.loads(_text),
|
|
1080
|
+
),
|
|
1081
|
+
)
|
|
1082
|
+
except Exception:
|
|
1083
|
+
pass
|
|
1084
|
+
return
|
|
1085
|
+
|
|
1086
|
+
return HttpResponse(response=_response, data=_iter())
|
|
1087
|
+
_response.read()
|
|
1088
|
+
if _response.status_code == 400:
|
|
1089
|
+
raise BadRequestError(
|
|
1090
|
+
headers=dict(_response.headers),
|
|
1091
|
+
body=typing.cast(
|
|
1092
|
+
typing.Optional[typing.Any],
|
|
1093
|
+
parse_obj_as(
|
|
1094
|
+
type_=typing.Optional[typing.Any], # type: ignore
|
|
1095
|
+
object_=_response.json(),
|
|
1096
|
+
),
|
|
1097
|
+
),
|
|
1098
|
+
)
|
|
1099
|
+
if _response.status_code == 403:
|
|
1100
|
+
raise ForbiddenError(
|
|
1101
|
+
headers=dict(_response.headers),
|
|
1102
|
+
body=typing.cast(
|
|
1103
|
+
typing.Optional[typing.Any],
|
|
1104
|
+
parse_obj_as(
|
|
1105
|
+
type_=typing.Optional[typing.Any], # type: ignore
|
|
1106
|
+
object_=_response.json(),
|
|
1107
|
+
),
|
|
1108
|
+
),
|
|
1109
|
+
)
|
|
1110
|
+
if _response.status_code == 404:
|
|
1111
|
+
raise NotFoundError(
|
|
1112
|
+
headers=dict(_response.headers),
|
|
1113
|
+
body=typing.cast(
|
|
1114
|
+
typing.Optional[typing.Any],
|
|
1115
|
+
parse_obj_as(
|
|
1116
|
+
type_=typing.Optional[typing.Any], # type: ignore
|
|
1117
|
+
object_=_response.json(),
|
|
1118
|
+
),
|
|
1119
|
+
),
|
|
1120
|
+
)
|
|
1121
|
+
if _response.status_code == 500:
|
|
1122
|
+
raise InternalServerError(
|
|
1123
|
+
headers=dict(_response.headers),
|
|
1124
|
+
body=typing.cast(
|
|
1125
|
+
typing.Optional[typing.Any],
|
|
1126
|
+
parse_obj_as(
|
|
1127
|
+
type_=typing.Optional[typing.Any], # type: ignore
|
|
1128
|
+
object_=_response.json(),
|
|
1129
|
+
),
|
|
1130
|
+
),
|
|
1131
|
+
)
|
|
1132
|
+
_response_json = _response.json()
|
|
1133
|
+
except JSONDecodeError:
|
|
1134
|
+
raise ApiError(
|
|
1135
|
+
status_code=_response.status_code, headers=dict(_response.headers), body=_response.text
|
|
1136
|
+
)
|
|
1137
|
+
raise ApiError(status_code=_response.status_code, headers=dict(_response.headers), body=_response_json)
|
|
1138
|
+
|
|
1139
|
+
yield _stream()
|
|
1140
|
+
|
|
1141
|
+
def search(
|
|
1142
|
+
self,
|
|
1143
|
+
*,
|
|
1144
|
+
query: str,
|
|
1145
|
+
index_id: typing.Optional[str] = OMIT,
|
|
1146
|
+
index_name: typing.Optional[str] = OMIT,
|
|
1147
|
+
options: typing.Optional[SearchRequestOptionsRequest] = OMIT,
|
|
1148
|
+
document_index: typing.Optional[str] = OMIT,
|
|
1149
|
+
request_options: typing.Optional[RequestOptions] = None,
|
|
1150
|
+
) -> HttpResponse[SearchResponse]:
|
|
1151
|
+
"""
|
|
1152
|
+
Perform a search against a document index.
|
|
1153
|
+
|
|
1154
|
+
Parameters
|
|
1155
|
+
----------
|
|
1156
|
+
query : str
|
|
1157
|
+
The query to search for.
|
|
1158
|
+
|
|
1159
|
+
index_id : typing.Optional[str]
|
|
1160
|
+
The ID of the index to search against. Must provide either this, index_name or document_index.
|
|
1161
|
+
|
|
1162
|
+
index_name : typing.Optional[str]
|
|
1163
|
+
The name of the index to search against. Must provide either this, index_id or document_index.
|
|
1164
|
+
|
|
1165
|
+
options : typing.Optional[SearchRequestOptionsRequest]
|
|
1166
|
+
Configuration options for the search.
|
|
1167
|
+
|
|
1168
|
+
document_index : typing.Optional[str]
|
|
1169
|
+
Either the index name or index ID to search against. Must provide either this, index_id or index_name.
|
|
1170
|
+
|
|
1171
|
+
request_options : typing.Optional[RequestOptions]
|
|
1172
|
+
Request-specific configuration.
|
|
1173
|
+
|
|
1174
|
+
Returns
|
|
1175
|
+
-------
|
|
1176
|
+
HttpResponse[SearchResponse]
|
|
1177
|
+
|
|
1178
|
+
"""
|
|
1179
|
+
_response = self._client_wrapper.httpx_client.request(
|
|
1180
|
+
"v1/search",
|
|
1181
|
+
base_url=self._client_wrapper.get_environment().predict,
|
|
1182
|
+
method="POST",
|
|
1183
|
+
json={
|
|
1184
|
+
"index_id": index_id,
|
|
1185
|
+
"index_name": index_name,
|
|
1186
|
+
"query": query,
|
|
1187
|
+
"options": convert_and_respect_annotation_metadata(
|
|
1188
|
+
object_=options, annotation=typing.Optional[SearchRequestOptionsRequest], direction="write"
|
|
1189
|
+
),
|
|
1190
|
+
"document_index": document_index,
|
|
1191
|
+
},
|
|
1192
|
+
headers={
|
|
1193
|
+
"content-type": "application/json",
|
|
1194
|
+
},
|
|
1195
|
+
request_options=request_options,
|
|
1196
|
+
omit=OMIT,
|
|
1197
|
+
)
|
|
1198
|
+
try:
|
|
1199
|
+
if 200 <= _response.status_code < 300:
|
|
1200
|
+
_data = typing.cast(
|
|
1201
|
+
SearchResponse,
|
|
1202
|
+
parse_obj_as(
|
|
1203
|
+
type_=SearchResponse, # type: ignore
|
|
1204
|
+
object_=_response.json(),
|
|
1205
|
+
),
|
|
1206
|
+
)
|
|
1207
|
+
return HttpResponse(response=_response, data=_data)
|
|
1208
|
+
if _response.status_code == 400:
|
|
1209
|
+
raise BadRequestError(
|
|
1210
|
+
headers=dict(_response.headers),
|
|
1211
|
+
body=typing.cast(
|
|
1212
|
+
typing.Optional[typing.Any],
|
|
1213
|
+
parse_obj_as(
|
|
1214
|
+
type_=typing.Optional[typing.Any], # type: ignore
|
|
1215
|
+
object_=_response.json(),
|
|
1216
|
+
),
|
|
1217
|
+
),
|
|
1218
|
+
)
|
|
1219
|
+
if _response.status_code == 404:
|
|
1220
|
+
raise NotFoundError(
|
|
1221
|
+
headers=dict(_response.headers),
|
|
1222
|
+
body=typing.cast(
|
|
1223
|
+
typing.Optional[typing.Any],
|
|
1224
|
+
parse_obj_as(
|
|
1225
|
+
type_=typing.Optional[typing.Any], # type: ignore
|
|
1226
|
+
object_=_response.json(),
|
|
1227
|
+
),
|
|
1228
|
+
),
|
|
1229
|
+
)
|
|
1230
|
+
if _response.status_code == 500:
|
|
1231
|
+
raise InternalServerError(
|
|
1232
|
+
headers=dict(_response.headers),
|
|
1233
|
+
body=typing.cast(
|
|
1234
|
+
typing.Optional[typing.Any],
|
|
1235
|
+
parse_obj_as(
|
|
1236
|
+
type_=typing.Optional[typing.Any], # type: ignore
|
|
1237
|
+
object_=_response.json(),
|
|
1238
|
+
),
|
|
1239
|
+
),
|
|
1240
|
+
)
|
|
1241
|
+
_response_json = _response.json()
|
|
1242
|
+
except JSONDecodeError:
|
|
1243
|
+
raise ApiError(status_code=_response.status_code, headers=dict(_response.headers), body=_response.text)
|
|
1244
|
+
raise ApiError(status_code=_response.status_code, headers=dict(_response.headers), body=_response_json)
|
|
1245
|
+
|
|
1246
|
+
def submit_completion_actuals(
|
|
1247
|
+
self,
|
|
1248
|
+
*,
|
|
1249
|
+
actuals: typing.Sequence[SubmitCompletionActualRequest],
|
|
1250
|
+
deployment_id: typing.Optional[str] = OMIT,
|
|
1251
|
+
deployment_name: typing.Optional[str] = OMIT,
|
|
1252
|
+
request_options: typing.Optional[RequestOptions] = None,
|
|
1253
|
+
) -> HttpResponse[None]:
|
|
1254
|
+
"""
|
|
1255
|
+
Used to submit feedback regarding the quality of previously generated completions.
|
|
1256
|
+
|
|
1257
|
+
Parameters
|
|
1258
|
+
----------
|
|
1259
|
+
actuals : typing.Sequence[SubmitCompletionActualRequest]
|
|
1260
|
+
Feedback regarding the quality of previously generated completions
|
|
1261
|
+
|
|
1262
|
+
deployment_id : typing.Optional[str]
|
|
1263
|
+
The ID of the deployment. Must provide either this or deployment_name.
|
|
1264
|
+
|
|
1265
|
+
deployment_name : typing.Optional[str]
|
|
1266
|
+
The name of the deployment. Must provide either this or deployment_id.
|
|
1267
|
+
|
|
1268
|
+
request_options : typing.Optional[RequestOptions]
|
|
1269
|
+
Request-specific configuration.
|
|
1270
|
+
|
|
1271
|
+
Returns
|
|
1272
|
+
-------
|
|
1273
|
+
HttpResponse[None]
|
|
1274
|
+
"""
|
|
1275
|
+
_response = self._client_wrapper.httpx_client.request(
|
|
1276
|
+
"v1/submit-completion-actuals",
|
|
1277
|
+
base_url=self._client_wrapper.get_environment().predict,
|
|
1278
|
+
method="POST",
|
|
1279
|
+
json={
|
|
1280
|
+
"deployment_id": deployment_id,
|
|
1281
|
+
"deployment_name": deployment_name,
|
|
1282
|
+
"actuals": convert_and_respect_annotation_metadata(
|
|
1283
|
+
object_=actuals, annotation=typing.Sequence[SubmitCompletionActualRequest], direction="write"
|
|
1284
|
+
),
|
|
1285
|
+
},
|
|
1286
|
+
headers={
|
|
1287
|
+
"content-type": "application/json",
|
|
1288
|
+
},
|
|
1289
|
+
request_options=request_options,
|
|
1290
|
+
omit=OMIT,
|
|
1291
|
+
)
|
|
1292
|
+
try:
|
|
1293
|
+
if 200 <= _response.status_code < 300:
|
|
1294
|
+
return HttpResponse(response=_response, data=None)
|
|
1295
|
+
if _response.status_code == 400:
|
|
1296
|
+
raise BadRequestError(
|
|
1297
|
+
headers=dict(_response.headers),
|
|
1298
|
+
body=typing.cast(
|
|
1299
|
+
typing.Optional[typing.Any],
|
|
1300
|
+
parse_obj_as(
|
|
1301
|
+
type_=typing.Optional[typing.Any], # type: ignore
|
|
1302
|
+
object_=_response.json(),
|
|
1303
|
+
),
|
|
1304
|
+
),
|
|
1305
|
+
)
|
|
1306
|
+
if _response.status_code == 404:
|
|
1307
|
+
raise NotFoundError(
|
|
1308
|
+
headers=dict(_response.headers),
|
|
1309
|
+
body=typing.cast(
|
|
1310
|
+
typing.Optional[typing.Any],
|
|
1311
|
+
parse_obj_as(
|
|
1312
|
+
type_=typing.Optional[typing.Any], # type: ignore
|
|
1313
|
+
object_=_response.json(),
|
|
1314
|
+
),
|
|
1315
|
+
),
|
|
1316
|
+
)
|
|
1317
|
+
if _response.status_code == 500:
|
|
1318
|
+
raise InternalServerError(
|
|
1319
|
+
headers=dict(_response.headers),
|
|
1320
|
+
body=typing.cast(
|
|
1321
|
+
typing.Optional[typing.Any],
|
|
1322
|
+
parse_obj_as(
|
|
1323
|
+
type_=typing.Optional[typing.Any], # type: ignore
|
|
1324
|
+
object_=_response.json(),
|
|
1325
|
+
),
|
|
1326
|
+
),
|
|
1327
|
+
)
|
|
1328
|
+
_response_json = _response.json()
|
|
1329
|
+
except JSONDecodeError:
|
|
1330
|
+
raise ApiError(status_code=_response.status_code, headers=dict(_response.headers), body=_response.text)
|
|
1331
|
+
raise ApiError(status_code=_response.status_code, headers=dict(_response.headers), body=_response_json)
|
|
1332
|
+
|
|
1333
|
+
def submit_workflow_execution_actuals(
|
|
1334
|
+
self,
|
|
1335
|
+
*,
|
|
1336
|
+
actuals: typing.Sequence[SubmitWorkflowExecutionActualRequest],
|
|
1337
|
+
execution_id: typing.Optional[str] = OMIT,
|
|
1338
|
+
external_id: typing.Optional[str] = OMIT,
|
|
1339
|
+
request_options: typing.Optional[RequestOptions] = None,
|
|
1340
|
+
) -> HttpResponse[None]:
|
|
1341
|
+
"""
|
|
1342
|
+
Used to submit feedback regarding the quality of previous workflow execution and its outputs.
|
|
1343
|
+
|
|
1344
|
+
**Note:** Uses a base url of `https://predict.vellum.ai`.
|
|
1345
|
+
|
|
1346
|
+
Parameters
|
|
1347
|
+
----------
|
|
1348
|
+
actuals : typing.Sequence[SubmitWorkflowExecutionActualRequest]
|
|
1349
|
+
Feedback regarding the quality of an output on a previously executed workflow.
|
|
1350
|
+
|
|
1351
|
+
execution_id : typing.Optional[str]
|
|
1352
|
+
The Vellum-generated ID of a previously executed workflow. Must provide either this or external_id.
|
|
1353
|
+
|
|
1354
|
+
external_id : typing.Optional[str]
|
|
1355
|
+
The external ID that was originally provided by when executing the workflow, if applicable, that you'd now like to submit actuals for. Must provide either this or execution_id.
|
|
1356
|
+
|
|
1357
|
+
request_options : typing.Optional[RequestOptions]
|
|
1358
|
+
Request-specific configuration.
|
|
1359
|
+
|
|
1360
|
+
Returns
|
|
1361
|
+
-------
|
|
1362
|
+
HttpResponse[None]
|
|
1363
|
+
"""
|
|
1364
|
+
_response = self._client_wrapper.httpx_client.request(
|
|
1365
|
+
"v1/submit-workflow-execution-actuals",
|
|
1366
|
+
base_url=self._client_wrapper.get_environment().predict,
|
|
1367
|
+
method="POST",
|
|
1368
|
+
json={
|
|
1369
|
+
"actuals": convert_and_respect_annotation_metadata(
|
|
1370
|
+
object_=actuals, annotation=typing.Sequence[SubmitWorkflowExecutionActualRequest], direction="write"
|
|
1371
|
+
),
|
|
1372
|
+
"execution_id": execution_id,
|
|
1373
|
+
"external_id": external_id,
|
|
1374
|
+
},
|
|
1375
|
+
headers={
|
|
1376
|
+
"content-type": "application/json",
|
|
1377
|
+
},
|
|
1378
|
+
request_options=request_options,
|
|
1379
|
+
omit=OMIT,
|
|
1380
|
+
)
|
|
1381
|
+
try:
|
|
1382
|
+
if 200 <= _response.status_code < 300:
|
|
1383
|
+
return HttpResponse(response=_response, data=None)
|
|
1384
|
+
_response_json = _response.json()
|
|
1385
|
+
except JSONDecodeError:
|
|
1386
|
+
raise ApiError(status_code=_response.status_code, headers=dict(_response.headers), body=_response.text)
|
|
1387
|
+
raise ApiError(status_code=_response.status_code, headers=dict(_response.headers), body=_response_json)
|
|
1388
|
+
|
|
1389
|
+
|
|
1390
|
+
class AsyncRawVellum:
|
|
1391
|
+
def __init__(self, *, client_wrapper: AsyncClientWrapper):
|
|
1392
|
+
self._client_wrapper = client_wrapper
|
|
1393
|
+
|
|
1394
|
+
async def execute_api(
|
|
1395
|
+
self,
|
|
1396
|
+
*,
|
|
1397
|
+
url: str,
|
|
1398
|
+
method: typing.Optional[MethodEnum] = OMIT,
|
|
1399
|
+
body: typing.Optional[ExecuteApiRequestBody] = OMIT,
|
|
1400
|
+
headers: typing.Optional[typing.Dict[str, ExecuteApiRequestHeadersValue]] = OMIT,
|
|
1401
|
+
bearer_token: typing.Optional[ExecuteApiRequestBearerToken] = OMIT,
|
|
1402
|
+
request_options: typing.Optional[RequestOptions] = None,
|
|
1403
|
+
) -> AsyncHttpResponse[ExecuteApiResponse]:
|
|
1404
|
+
"""
|
|
1405
|
+
Parameters
|
|
1406
|
+
----------
|
|
1407
|
+
url : str
|
|
1408
|
+
|
|
1409
|
+
method : typing.Optional[MethodEnum]
|
|
1410
|
+
|
|
1411
|
+
body : typing.Optional[ExecuteApiRequestBody]
|
|
1412
|
+
|
|
1413
|
+
headers : typing.Optional[typing.Dict[str, ExecuteApiRequestHeadersValue]]
|
|
1414
|
+
|
|
1415
|
+
bearer_token : typing.Optional[ExecuteApiRequestBearerToken]
|
|
1416
|
+
|
|
1417
|
+
request_options : typing.Optional[RequestOptions]
|
|
1418
|
+
Request-specific configuration.
|
|
1419
|
+
|
|
1420
|
+
Returns
|
|
1421
|
+
-------
|
|
1422
|
+
AsyncHttpResponse[ExecuteApiResponse]
|
|
1423
|
+
|
|
1424
|
+
"""
|
|
1425
|
+
_response = await self._client_wrapper.httpx_client.request(
|
|
1426
|
+
"v1/execute-api",
|
|
1427
|
+
base_url=self._client_wrapper.get_environment().default,
|
|
1428
|
+
method="POST",
|
|
1429
|
+
json={
|
|
1430
|
+
"url": url,
|
|
1431
|
+
"method": method,
|
|
1432
|
+
"body": convert_and_respect_annotation_metadata(
|
|
1433
|
+
object_=body, annotation=typing.Optional[ExecuteApiRequestBody], direction="write"
|
|
1434
|
+
),
|
|
1435
|
+
"headers": convert_and_respect_annotation_metadata(
|
|
1436
|
+
object_=headers, annotation=typing.Dict[str, ExecuteApiRequestHeadersValue], direction="write"
|
|
1437
|
+
),
|
|
1438
|
+
"bearer_token": convert_and_respect_annotation_metadata(
|
|
1439
|
+
object_=bearer_token, annotation=typing.Optional[ExecuteApiRequestBearerToken], direction="write"
|
|
1440
|
+
),
|
|
1441
|
+
},
|
|
1442
|
+
headers={
|
|
1443
|
+
"content-type": "application/json",
|
|
1444
|
+
},
|
|
1445
|
+
request_options=request_options,
|
|
1446
|
+
omit=OMIT,
|
|
1447
|
+
)
|
|
1448
|
+
try:
|
|
1449
|
+
if 200 <= _response.status_code < 300:
|
|
1450
|
+
_data = typing.cast(
|
|
1451
|
+
ExecuteApiResponse,
|
|
1452
|
+
parse_obj_as(
|
|
1453
|
+
type_=ExecuteApiResponse, # type: ignore
|
|
1454
|
+
object_=_response.json(),
|
|
1455
|
+
),
|
|
1456
|
+
)
|
|
1457
|
+
return AsyncHttpResponse(response=_response, data=_data)
|
|
1458
|
+
_response_json = _response.json()
|
|
1459
|
+
except JSONDecodeError:
|
|
1460
|
+
raise ApiError(status_code=_response.status_code, headers=dict(_response.headers), body=_response.text)
|
|
1461
|
+
raise ApiError(status_code=_response.status_code, headers=dict(_response.headers), body=_response_json)
|
|
1462
|
+
|
|
1463
|
+
async def execute_code(
|
|
1464
|
+
self,
|
|
1465
|
+
*,
|
|
1466
|
+
code: str,
|
|
1467
|
+
runtime: CodeExecutionRuntime,
|
|
1468
|
+
input_values: typing.Sequence[CodeExecutorInput],
|
|
1469
|
+
packages: typing.Sequence[CodeExecutionPackage],
|
|
1470
|
+
output_type: VellumVariableType,
|
|
1471
|
+
request_options: typing.Optional[RequestOptions] = None,
|
|
1472
|
+
) -> AsyncHttpResponse[CodeExecutorResponse]:
|
|
1473
|
+
"""
|
|
1474
|
+
Parameters
|
|
1475
|
+
----------
|
|
1476
|
+
code : str
|
|
1477
|
+
|
|
1478
|
+
runtime : CodeExecutionRuntime
|
|
1479
|
+
|
|
1480
|
+
input_values : typing.Sequence[CodeExecutorInput]
|
|
1481
|
+
|
|
1482
|
+
packages : typing.Sequence[CodeExecutionPackage]
|
|
1483
|
+
|
|
1484
|
+
output_type : VellumVariableType
|
|
1485
|
+
|
|
1486
|
+
request_options : typing.Optional[RequestOptions]
|
|
1487
|
+
Request-specific configuration.
|
|
1488
|
+
|
|
1489
|
+
Returns
|
|
1490
|
+
-------
|
|
1491
|
+
AsyncHttpResponse[CodeExecutorResponse]
|
|
1492
|
+
|
|
1493
|
+
"""
|
|
1494
|
+
_response = await self._client_wrapper.httpx_client.request(
|
|
1495
|
+
"v1/execute-code",
|
|
1496
|
+
base_url=self._client_wrapper.get_environment().predict,
|
|
1497
|
+
method="POST",
|
|
1498
|
+
json={
|
|
1499
|
+
"code": code,
|
|
1500
|
+
"runtime": runtime,
|
|
1501
|
+
"input_values": convert_and_respect_annotation_metadata(
|
|
1502
|
+
object_=input_values, annotation=typing.Sequence[CodeExecutorInput], direction="write"
|
|
1503
|
+
),
|
|
1504
|
+
"packages": convert_and_respect_annotation_metadata(
|
|
1505
|
+
object_=packages, annotation=typing.Sequence[CodeExecutionPackage], direction="write"
|
|
1506
|
+
),
|
|
1507
|
+
"output_type": output_type,
|
|
1508
|
+
},
|
|
1509
|
+
headers={
|
|
1510
|
+
"content-type": "application/json",
|
|
1511
|
+
},
|
|
1512
|
+
request_options=request_options,
|
|
1513
|
+
omit=OMIT,
|
|
1514
|
+
)
|
|
1515
|
+
try:
|
|
1516
|
+
if 200 <= _response.status_code < 300:
|
|
1517
|
+
_data = typing.cast(
|
|
1518
|
+
CodeExecutorResponse,
|
|
1519
|
+
parse_obj_as(
|
|
1520
|
+
type_=CodeExecutorResponse, # type: ignore
|
|
1521
|
+
object_=_response.json(),
|
|
1522
|
+
),
|
|
1523
|
+
)
|
|
1524
|
+
return AsyncHttpResponse(response=_response, data=_data)
|
|
1525
|
+
if _response.status_code == 400:
|
|
1526
|
+
raise BadRequestError(
|
|
1527
|
+
headers=dict(_response.headers),
|
|
1528
|
+
body=typing.cast(
|
|
1529
|
+
typing.Optional[typing.Any],
|
|
1530
|
+
parse_obj_as(
|
|
1531
|
+
type_=typing.Optional[typing.Any], # type: ignore
|
|
1532
|
+
object_=_response.json(),
|
|
1533
|
+
),
|
|
1534
|
+
),
|
|
1535
|
+
)
|
|
1536
|
+
_response_json = _response.json()
|
|
1537
|
+
except JSONDecodeError:
|
|
1538
|
+
raise ApiError(status_code=_response.status_code, headers=dict(_response.headers), body=_response.text)
|
|
1539
|
+
raise ApiError(status_code=_response.status_code, headers=dict(_response.headers), body=_response_json)
|
|
1540
|
+
|
|
1541
|
+
async def execute_prompt(
|
|
1542
|
+
self,
|
|
1543
|
+
*,
|
|
1544
|
+
inputs: typing.Sequence[PromptDeploymentInputRequest],
|
|
1545
|
+
prompt_deployment_id: typing.Optional[str] = OMIT,
|
|
1546
|
+
prompt_deployment_name: typing.Optional[str] = OMIT,
|
|
1547
|
+
release_tag: typing.Optional[str] = OMIT,
|
|
1548
|
+
external_id: typing.Optional[str] = OMIT,
|
|
1549
|
+
expand_meta: typing.Optional[PromptDeploymentExpandMetaRequest] = OMIT,
|
|
1550
|
+
raw_overrides: typing.Optional[RawPromptExecutionOverridesRequest] = OMIT,
|
|
1551
|
+
expand_raw: typing.Optional[typing.Sequence[str]] = OMIT,
|
|
1552
|
+
metadata: typing.Optional[typing.Dict[str, typing.Optional[typing.Any]]] = OMIT,
|
|
1553
|
+
request_options: typing.Optional[RequestOptions] = None,
|
|
1554
|
+
) -> AsyncHttpResponse[ExecutePromptResponse]:
|
|
1555
|
+
"""
|
|
1556
|
+
Executes a deployed Prompt and returns the result.
|
|
1557
|
+
|
|
1558
|
+
Parameters
|
|
1559
|
+
----------
|
|
1560
|
+
inputs : typing.Sequence[PromptDeploymentInputRequest]
|
|
1561
|
+
A list consisting of the Prompt Deployment's input variables and their values.
|
|
1562
|
+
|
|
1563
|
+
prompt_deployment_id : typing.Optional[str]
|
|
1564
|
+
The ID of the Prompt Deployment. Must provide either this or prompt_deployment_name.
|
|
1565
|
+
|
|
1566
|
+
prompt_deployment_name : typing.Optional[str]
|
|
1567
|
+
The unique name of the Prompt Deployment. Must provide either this or prompt_deployment_id.
|
|
1568
|
+
|
|
1569
|
+
release_tag : typing.Optional[str]
|
|
1570
|
+
Optionally specify a release tag if you want to pin to a specific release of the Prompt Deployment
|
|
1571
|
+
|
|
1572
|
+
external_id : typing.Optional[str]
|
|
1573
|
+
Optionally include a unique identifier for tracking purposes. Must be unique within a given Workspace.
|
|
1574
|
+
|
|
1575
|
+
expand_meta : typing.Optional[PromptDeploymentExpandMetaRequest]
|
|
1576
|
+
An optionally specified configuration used to opt in to including additional metadata about this prompt execution in the API response. Corresponding values will be returned under the `meta` key of the API response.
|
|
1577
|
+
|
|
1578
|
+
raw_overrides : typing.Optional[RawPromptExecutionOverridesRequest]
|
|
1579
|
+
Overrides for the raw API request sent to the model host. Combined with `expand_raw`, it can be used to access new features from models.
|
|
1580
|
+
|
|
1581
|
+
expand_raw : typing.Optional[typing.Sequence[str]]
|
|
1582
|
+
A list of keys whose values you'd like to directly return from the JSON response of the model provider. Useful if you need lower-level info returned by model providers that Vellum would otherwise omit. Corresponding key/value pairs will be returned under the `raw` key of the API response.
|
|
1583
|
+
|
|
1584
|
+
metadata : typing.Optional[typing.Dict[str, typing.Optional[typing.Any]]]
|
|
1585
|
+
Arbitrary JSON metadata associated with this request. Can be used to capture additional monitoring data such as user id, session id, etc. for future analysis.
|
|
1586
|
+
|
|
1587
|
+
request_options : typing.Optional[RequestOptions]
|
|
1588
|
+
Request-specific configuration.
|
|
1589
|
+
|
|
1590
|
+
Returns
|
|
1591
|
+
-------
|
|
1592
|
+
AsyncHttpResponse[ExecutePromptResponse]
|
|
1593
|
+
|
|
1594
|
+
"""
|
|
1595
|
+
_response = await self._client_wrapper.httpx_client.request(
|
|
1596
|
+
"v1/execute-prompt",
|
|
1597
|
+
base_url=self._client_wrapper.get_environment().predict,
|
|
1598
|
+
method="POST",
|
|
1599
|
+
json={
|
|
1600
|
+
"inputs": convert_and_respect_annotation_metadata(
|
|
1601
|
+
object_=inputs, annotation=typing.Sequence[PromptDeploymentInputRequest], direction="write"
|
|
1602
|
+
),
|
|
1603
|
+
"prompt_deployment_id": prompt_deployment_id,
|
|
1604
|
+
"prompt_deployment_name": prompt_deployment_name,
|
|
1605
|
+
"release_tag": release_tag,
|
|
1606
|
+
"external_id": external_id,
|
|
1607
|
+
"expand_meta": convert_and_respect_annotation_metadata(
|
|
1608
|
+
object_=expand_meta,
|
|
1609
|
+
annotation=typing.Optional[PromptDeploymentExpandMetaRequest],
|
|
1610
|
+
direction="write",
|
|
1611
|
+
),
|
|
1612
|
+
"raw_overrides": convert_and_respect_annotation_metadata(
|
|
1613
|
+
object_=raw_overrides,
|
|
1614
|
+
annotation=typing.Optional[RawPromptExecutionOverridesRequest],
|
|
1615
|
+
direction="write",
|
|
1616
|
+
),
|
|
1617
|
+
"expand_raw": expand_raw,
|
|
1618
|
+
"metadata": metadata,
|
|
1619
|
+
},
|
|
1620
|
+
headers={
|
|
1621
|
+
"content-type": "application/json",
|
|
1622
|
+
},
|
|
1623
|
+
request_options=request_options,
|
|
1624
|
+
omit=OMIT,
|
|
1625
|
+
)
|
|
1626
|
+
try:
|
|
1627
|
+
if 200 <= _response.status_code < 300:
|
|
1628
|
+
_data = typing.cast(
|
|
1629
|
+
ExecutePromptResponse,
|
|
1630
|
+
parse_obj_as(
|
|
1631
|
+
type_=ExecutePromptResponse, # type: ignore
|
|
1632
|
+
object_=_response.json(),
|
|
1633
|
+
),
|
|
1634
|
+
)
|
|
1635
|
+
return AsyncHttpResponse(response=_response, data=_data)
|
|
1636
|
+
if _response.status_code == 400:
|
|
1637
|
+
raise BadRequestError(
|
|
1638
|
+
headers=dict(_response.headers),
|
|
1639
|
+
body=typing.cast(
|
|
1640
|
+
typing.Optional[typing.Any],
|
|
1641
|
+
parse_obj_as(
|
|
1642
|
+
type_=typing.Optional[typing.Any], # type: ignore
|
|
1643
|
+
object_=_response.json(),
|
|
1644
|
+
),
|
|
1645
|
+
),
|
|
1646
|
+
)
|
|
1647
|
+
if _response.status_code == 403:
|
|
1648
|
+
raise ForbiddenError(
|
|
1649
|
+
headers=dict(_response.headers),
|
|
1650
|
+
body=typing.cast(
|
|
1651
|
+
typing.Optional[typing.Any],
|
|
1652
|
+
parse_obj_as(
|
|
1653
|
+
type_=typing.Optional[typing.Any], # type: ignore
|
|
1654
|
+
object_=_response.json(),
|
|
1655
|
+
),
|
|
1656
|
+
),
|
|
1657
|
+
)
|
|
1658
|
+
if _response.status_code == 404:
|
|
1659
|
+
raise NotFoundError(
|
|
1660
|
+
headers=dict(_response.headers),
|
|
1661
|
+
body=typing.cast(
|
|
1662
|
+
typing.Optional[typing.Any],
|
|
1663
|
+
parse_obj_as(
|
|
1664
|
+
type_=typing.Optional[typing.Any], # type: ignore
|
|
1665
|
+
object_=_response.json(),
|
|
1666
|
+
),
|
|
1667
|
+
),
|
|
1668
|
+
)
|
|
1669
|
+
if _response.status_code == 500:
|
|
1670
|
+
raise InternalServerError(
|
|
1671
|
+
headers=dict(_response.headers),
|
|
1672
|
+
body=typing.cast(
|
|
1673
|
+
typing.Optional[typing.Any],
|
|
1674
|
+
parse_obj_as(
|
|
1675
|
+
type_=typing.Optional[typing.Any], # type: ignore
|
|
1676
|
+
object_=_response.json(),
|
|
1677
|
+
),
|
|
1678
|
+
),
|
|
1679
|
+
)
|
|
1680
|
+
_response_json = _response.json()
|
|
1681
|
+
except JSONDecodeError:
|
|
1682
|
+
raise ApiError(status_code=_response.status_code, headers=dict(_response.headers), body=_response.text)
|
|
1683
|
+
raise ApiError(status_code=_response.status_code, headers=dict(_response.headers), body=_response_json)
|
|
1684
|
+
|
|
1685
|
+
@contextlib.asynccontextmanager
|
|
1686
|
+
async def execute_prompt_stream(
|
|
1687
|
+
self,
|
|
1688
|
+
*,
|
|
1689
|
+
inputs: typing.Sequence[PromptDeploymentInputRequest],
|
|
1690
|
+
prompt_deployment_id: typing.Optional[str] = OMIT,
|
|
1691
|
+
prompt_deployment_name: typing.Optional[str] = OMIT,
|
|
1692
|
+
release_tag: typing.Optional[str] = OMIT,
|
|
1693
|
+
external_id: typing.Optional[str] = OMIT,
|
|
1694
|
+
expand_meta: typing.Optional[PromptDeploymentExpandMetaRequest] = OMIT,
|
|
1695
|
+
raw_overrides: typing.Optional[RawPromptExecutionOverridesRequest] = OMIT,
|
|
1696
|
+
expand_raw: typing.Optional[typing.Sequence[str]] = OMIT,
|
|
1697
|
+
metadata: typing.Optional[typing.Dict[str, typing.Optional[typing.Any]]] = OMIT,
|
|
1698
|
+
request_options: typing.Optional[RequestOptions] = None,
|
|
1699
|
+
) -> typing.AsyncIterator[AsyncHttpResponse[typing.AsyncIterator[ExecutePromptEvent]]]:
|
|
1700
|
+
"""
|
|
1701
|
+
Executes a deployed Prompt and streams back the results.
|
|
1702
|
+
|
|
1703
|
+
Parameters
|
|
1704
|
+
----------
|
|
1705
|
+
inputs : typing.Sequence[PromptDeploymentInputRequest]
|
|
1706
|
+
A list consisting of the Prompt Deployment's input variables and their values.
|
|
1707
|
+
|
|
1708
|
+
prompt_deployment_id : typing.Optional[str]
|
|
1709
|
+
The ID of the Prompt Deployment. Must provide either this or prompt_deployment_name.
|
|
1710
|
+
|
|
1711
|
+
prompt_deployment_name : typing.Optional[str]
|
|
1712
|
+
The unique name of the Prompt Deployment. Must provide either this or prompt_deployment_id.
|
|
1713
|
+
|
|
1714
|
+
release_tag : typing.Optional[str]
|
|
1715
|
+
Optionally specify a release tag if you want to pin to a specific release of the Prompt Deployment
|
|
1716
|
+
|
|
1717
|
+
external_id : typing.Optional[str]
|
|
1718
|
+
Optionally include a unique identifier for tracking purposes. Must be unique within a given Workspace.
|
|
1719
|
+
|
|
1720
|
+
expand_meta : typing.Optional[PromptDeploymentExpandMetaRequest]
|
|
1721
|
+
An optionally specified configuration used to opt in to including additional metadata about this prompt execution in the API response. Corresponding values will be returned under the `meta` key of the API response.
|
|
1722
|
+
|
|
1723
|
+
raw_overrides : typing.Optional[RawPromptExecutionOverridesRequest]
|
|
1724
|
+
Overrides for the raw API request sent to the model host. Combined with `expand_raw`, it can be used to access new features from models.
|
|
1725
|
+
|
|
1726
|
+
expand_raw : typing.Optional[typing.Sequence[str]]
|
|
1727
|
+
A list of keys whose values you'd like to directly return from the JSON response of the model provider. Useful if you need lower-level info returned by model providers that Vellum would otherwise omit. Corresponding key/value pairs will be returned under the `raw` key of the API response.
|
|
1728
|
+
|
|
1729
|
+
metadata : typing.Optional[typing.Dict[str, typing.Optional[typing.Any]]]
|
|
1730
|
+
Arbitrary JSON metadata associated with this request. Can be used to capture additional monitoring data such as user id, session id, etc. for future analysis.
|
|
1731
|
+
|
|
1732
|
+
request_options : typing.Optional[RequestOptions]
|
|
1733
|
+
Request-specific configuration.
|
|
1734
|
+
|
|
1735
|
+
Yields
|
|
1736
|
+
------
|
|
1737
|
+
typing.AsyncIterator[AsyncHttpResponse[typing.AsyncIterator[ExecutePromptEvent]]]
|
|
1738
|
+
|
|
1739
|
+
"""
|
|
1740
|
+
async with self._client_wrapper.httpx_client.stream(
|
|
1741
|
+
"v1/execute-prompt-stream",
|
|
1742
|
+
base_url=self._client_wrapper.get_environment().predict,
|
|
1743
|
+
method="POST",
|
|
1744
|
+
json={
|
|
1745
|
+
"inputs": convert_and_respect_annotation_metadata(
|
|
1746
|
+
object_=inputs, annotation=typing.Sequence[PromptDeploymentInputRequest], direction="write"
|
|
1747
|
+
),
|
|
1748
|
+
"prompt_deployment_id": prompt_deployment_id,
|
|
1749
|
+
"prompt_deployment_name": prompt_deployment_name,
|
|
1750
|
+
"release_tag": release_tag,
|
|
1751
|
+
"external_id": external_id,
|
|
1752
|
+
"expand_meta": convert_and_respect_annotation_metadata(
|
|
1753
|
+
object_=expand_meta,
|
|
1754
|
+
annotation=typing.Optional[PromptDeploymentExpandMetaRequest],
|
|
1755
|
+
direction="write",
|
|
1756
|
+
),
|
|
1757
|
+
"raw_overrides": convert_and_respect_annotation_metadata(
|
|
1758
|
+
object_=raw_overrides,
|
|
1759
|
+
annotation=typing.Optional[RawPromptExecutionOverridesRequest],
|
|
1760
|
+
direction="write",
|
|
1761
|
+
),
|
|
1762
|
+
"expand_raw": expand_raw,
|
|
1763
|
+
"metadata": metadata,
|
|
1764
|
+
},
|
|
1765
|
+
headers={
|
|
1766
|
+
"content-type": "application/json",
|
|
1767
|
+
},
|
|
1768
|
+
request_options=request_options,
|
|
1769
|
+
omit=OMIT,
|
|
1770
|
+
) as _response:
|
|
1771
|
+
|
|
1772
|
+
async def _stream() -> AsyncHttpResponse[typing.AsyncIterator[ExecutePromptEvent]]:
|
|
1773
|
+
try:
|
|
1774
|
+
if 200 <= _response.status_code < 300:
|
|
1775
|
+
|
|
1776
|
+
async def _iter():
|
|
1777
|
+
async for _text in _response.aiter_lines():
|
|
1778
|
+
try:
|
|
1779
|
+
if len(_text) == 0:
|
|
1780
|
+
continue
|
|
1781
|
+
yield typing.cast(
|
|
1782
|
+
ExecutePromptEvent,
|
|
1783
|
+
parse_obj_as(
|
|
1784
|
+
type_=ExecutePromptEvent, # type: ignore
|
|
1785
|
+
object_=json.loads(_text),
|
|
1786
|
+
),
|
|
1787
|
+
)
|
|
1788
|
+
except Exception:
|
|
1789
|
+
pass
|
|
1790
|
+
return
|
|
1791
|
+
|
|
1792
|
+
return AsyncHttpResponse(response=_response, data=_iter())
|
|
1793
|
+
await _response.aread()
|
|
1794
|
+
if _response.status_code == 400:
|
|
1795
|
+
raise BadRequestError(
|
|
1796
|
+
headers=dict(_response.headers),
|
|
1797
|
+
body=typing.cast(
|
|
1798
|
+
typing.Optional[typing.Any],
|
|
1799
|
+
parse_obj_as(
|
|
1800
|
+
type_=typing.Optional[typing.Any], # type: ignore
|
|
1801
|
+
object_=_response.json(),
|
|
1802
|
+
),
|
|
1803
|
+
),
|
|
1804
|
+
)
|
|
1805
|
+
if _response.status_code == 403:
|
|
1806
|
+
raise ForbiddenError(
|
|
1807
|
+
headers=dict(_response.headers),
|
|
1808
|
+
body=typing.cast(
|
|
1809
|
+
typing.Optional[typing.Any],
|
|
1810
|
+
parse_obj_as(
|
|
1811
|
+
type_=typing.Optional[typing.Any], # type: ignore
|
|
1812
|
+
object_=_response.json(),
|
|
1813
|
+
),
|
|
1814
|
+
),
|
|
1815
|
+
)
|
|
1816
|
+
if _response.status_code == 404:
|
|
1817
|
+
raise NotFoundError(
|
|
1818
|
+
headers=dict(_response.headers),
|
|
1819
|
+
body=typing.cast(
|
|
1820
|
+
typing.Optional[typing.Any],
|
|
1821
|
+
parse_obj_as(
|
|
1822
|
+
type_=typing.Optional[typing.Any], # type: ignore
|
|
1823
|
+
object_=_response.json(),
|
|
1824
|
+
),
|
|
1825
|
+
),
|
|
1826
|
+
)
|
|
1827
|
+
if _response.status_code == 500:
|
|
1828
|
+
raise InternalServerError(
|
|
1829
|
+
headers=dict(_response.headers),
|
|
1830
|
+
body=typing.cast(
|
|
1831
|
+
typing.Optional[typing.Any],
|
|
1832
|
+
parse_obj_as(
|
|
1833
|
+
type_=typing.Optional[typing.Any], # type: ignore
|
|
1834
|
+
object_=_response.json(),
|
|
1835
|
+
),
|
|
1836
|
+
),
|
|
1837
|
+
)
|
|
1838
|
+
_response_json = _response.json()
|
|
1839
|
+
except JSONDecodeError:
|
|
1840
|
+
raise ApiError(
|
|
1841
|
+
status_code=_response.status_code, headers=dict(_response.headers), body=_response.text
|
|
1842
|
+
)
|
|
1843
|
+
raise ApiError(status_code=_response.status_code, headers=dict(_response.headers), body=_response_json)
|
|
1844
|
+
|
|
1845
|
+
yield await _stream()
|
|
1846
|
+
|
|
1847
|
+
async def execute_workflow(
|
|
1848
|
+
self,
|
|
1849
|
+
*,
|
|
1850
|
+
inputs: typing.Sequence[WorkflowRequestInputRequest],
|
|
1851
|
+
expand_meta: typing.Optional[WorkflowExpandMetaRequest] = OMIT,
|
|
1852
|
+
workflow_deployment_id: typing.Optional[str] = OMIT,
|
|
1853
|
+
workflow_deployment_name: typing.Optional[str] = OMIT,
|
|
1854
|
+
release_tag: typing.Optional[str] = OMIT,
|
|
1855
|
+
external_id: typing.Optional[str] = OMIT,
|
|
1856
|
+
metadata: typing.Optional[typing.Dict[str, typing.Optional[typing.Any]]] = OMIT,
|
|
1857
|
+
previous_execution_id: typing.Optional[str] = OMIT,
|
|
1858
|
+
request_options: typing.Optional[RequestOptions] = None,
|
|
1859
|
+
) -> AsyncHttpResponse[ExecuteWorkflowResponse]:
|
|
1860
|
+
"""
|
|
1861
|
+
Executes a deployed Workflow and returns its outputs.
|
|
1862
|
+
|
|
1863
|
+
Parameters
|
|
1864
|
+
----------
|
|
1865
|
+
inputs : typing.Sequence[WorkflowRequestInputRequest]
|
|
1866
|
+
The list of inputs defined in the Workflow's Deployment with their corresponding values.
|
|
1867
|
+
|
|
1868
|
+
expand_meta : typing.Optional[WorkflowExpandMetaRequest]
|
|
1869
|
+
An optionally specified configuration used to opt in to including additional metadata about this workflow execution in the API response. Corresponding values will be returned under the `execution_meta` key within NODE events in the response stream.
|
|
1870
|
+
|
|
1871
|
+
workflow_deployment_id : typing.Optional[str]
|
|
1872
|
+
The ID of the Workflow Deployment. Must provide either this or workflow_deployment_name.
|
|
1873
|
+
|
|
1874
|
+
workflow_deployment_name : typing.Optional[str]
|
|
1875
|
+
The name of the Workflow Deployment. Must provide either this or workflow_deployment_id.
|
|
1876
|
+
|
|
1877
|
+
release_tag : typing.Optional[str]
|
|
1878
|
+
Optionally specify a release tag if you want to pin to a specific release of the Workflow Deployment
|
|
1879
|
+
|
|
1880
|
+
external_id : typing.Optional[str]
|
|
1881
|
+
Optionally include a unique identifier for tracking purposes. Must be unique within a given Workspace.
|
|
1882
|
+
|
|
1883
|
+
metadata : typing.Optional[typing.Dict[str, typing.Optional[typing.Any]]]
|
|
1884
|
+
Arbitrary JSON metadata associated with this request. Can be used to capture additional monitoring data such as user id, session id, etc. for future analysis.
|
|
1885
|
+
|
|
1886
|
+
previous_execution_id : typing.Optional[str]
|
|
1887
|
+
The ID of a previous Workflow Execution to reference for initial State loading.
|
|
1888
|
+
|
|
1889
|
+
request_options : typing.Optional[RequestOptions]
|
|
1890
|
+
Request-specific configuration.
|
|
1891
|
+
|
|
1892
|
+
Returns
|
|
1893
|
+
-------
|
|
1894
|
+
AsyncHttpResponse[ExecuteWorkflowResponse]
|
|
1895
|
+
|
|
1896
|
+
"""
|
|
1897
|
+
_response = await self._client_wrapper.httpx_client.request(
|
|
1898
|
+
"v1/execute-workflow",
|
|
1899
|
+
base_url=self._client_wrapper.get_environment().predict,
|
|
1900
|
+
method="POST",
|
|
1901
|
+
json={
|
|
1902
|
+
"inputs": convert_and_respect_annotation_metadata(
|
|
1903
|
+
object_=inputs, annotation=typing.Sequence[WorkflowRequestInputRequest], direction="write"
|
|
1904
|
+
),
|
|
1905
|
+
"expand_meta": convert_and_respect_annotation_metadata(
|
|
1906
|
+
object_=expand_meta, annotation=typing.Optional[WorkflowExpandMetaRequest], direction="write"
|
|
1907
|
+
),
|
|
1908
|
+
"workflow_deployment_id": workflow_deployment_id,
|
|
1909
|
+
"workflow_deployment_name": workflow_deployment_name,
|
|
1910
|
+
"release_tag": release_tag,
|
|
1911
|
+
"external_id": external_id,
|
|
1912
|
+
"metadata": metadata,
|
|
1913
|
+
"previous_execution_id": previous_execution_id,
|
|
1914
|
+
},
|
|
1915
|
+
headers={
|
|
1916
|
+
"content-type": "application/json",
|
|
1917
|
+
},
|
|
1918
|
+
request_options=request_options,
|
|
1919
|
+
omit=OMIT,
|
|
1920
|
+
)
|
|
1921
|
+
try:
|
|
1922
|
+
if 200 <= _response.status_code < 300:
|
|
1923
|
+
_data = typing.cast(
|
|
1924
|
+
ExecuteWorkflowResponse,
|
|
1925
|
+
parse_obj_as(
|
|
1926
|
+
type_=ExecuteWorkflowResponse, # type: ignore
|
|
1927
|
+
object_=_response.json(),
|
|
1928
|
+
),
|
|
1929
|
+
)
|
|
1930
|
+
return AsyncHttpResponse(response=_response, data=_data)
|
|
1931
|
+
if _response.status_code == 400:
|
|
1932
|
+
raise BadRequestError(
|
|
1933
|
+
headers=dict(_response.headers),
|
|
1934
|
+
body=typing.cast(
|
|
1935
|
+
typing.Optional[typing.Any],
|
|
1936
|
+
parse_obj_as(
|
|
1937
|
+
type_=typing.Optional[typing.Any], # type: ignore
|
|
1938
|
+
object_=_response.json(),
|
|
1939
|
+
),
|
|
1940
|
+
),
|
|
1941
|
+
)
|
|
1942
|
+
if _response.status_code == 404:
|
|
1943
|
+
raise NotFoundError(
|
|
1944
|
+
headers=dict(_response.headers),
|
|
1945
|
+
body=typing.cast(
|
|
1946
|
+
typing.Optional[typing.Any],
|
|
1947
|
+
parse_obj_as(
|
|
1948
|
+
type_=typing.Optional[typing.Any], # type: ignore
|
|
1949
|
+
object_=_response.json(),
|
|
1950
|
+
),
|
|
1951
|
+
),
|
|
1952
|
+
)
|
|
1953
|
+
if _response.status_code == 500:
|
|
1954
|
+
raise InternalServerError(
|
|
1955
|
+
headers=dict(_response.headers),
|
|
1956
|
+
body=typing.cast(
|
|
1957
|
+
typing.Optional[typing.Any],
|
|
1958
|
+
parse_obj_as(
|
|
1959
|
+
type_=typing.Optional[typing.Any], # type: ignore
|
|
1960
|
+
object_=_response.json(),
|
|
1961
|
+
),
|
|
1962
|
+
),
|
|
1963
|
+
)
|
|
1964
|
+
_response_json = _response.json()
|
|
1965
|
+
except JSONDecodeError:
|
|
1966
|
+
raise ApiError(status_code=_response.status_code, headers=dict(_response.headers), body=_response.text)
|
|
1967
|
+
raise ApiError(status_code=_response.status_code, headers=dict(_response.headers), body=_response_json)
|
|
1968
|
+
|
|
1969
|
+
async def execute_workflow_async(
|
|
1970
|
+
self,
|
|
1971
|
+
*,
|
|
1972
|
+
inputs: typing.Sequence[WorkflowRequestInputRequest],
|
|
1973
|
+
workflow_deployment_id: typing.Optional[str] = OMIT,
|
|
1974
|
+
workflow_deployment_name: typing.Optional[str] = OMIT,
|
|
1975
|
+
release_tag: typing.Optional[str] = OMIT,
|
|
1976
|
+
external_id: typing.Optional[str] = OMIT,
|
|
1977
|
+
previous_execution_id: typing.Optional[str] = OMIT,
|
|
1978
|
+
metadata: typing.Optional[typing.Dict[str, typing.Optional[typing.Any]]] = OMIT,
|
|
1979
|
+
request_options: typing.Optional[RequestOptions] = None,
|
|
1980
|
+
) -> AsyncHttpResponse[ExecuteWorkflowAsyncResponse]:
|
|
1981
|
+
"""
|
|
1982
|
+
Executes a deployed Workflow asynchronously and returns the execution ID.
|
|
1983
|
+
|
|
1984
|
+
Parameters
|
|
1985
|
+
----------
|
|
1986
|
+
inputs : typing.Sequence[WorkflowRequestInputRequest]
|
|
1987
|
+
The list of inputs defined in the Workflow's Deployment with their corresponding values.
|
|
1988
|
+
|
|
1989
|
+
workflow_deployment_id : typing.Optional[str]
|
|
1990
|
+
The ID of the Workflow Deployment. Must provide either this or workflow_deployment_name.
|
|
1991
|
+
|
|
1992
|
+
workflow_deployment_name : typing.Optional[str]
|
|
1993
|
+
The name of the Workflow Deployment. Must provide either this or workflow_deployment_id.
|
|
1994
|
+
|
|
1995
|
+
release_tag : typing.Optional[str]
|
|
1996
|
+
Optionally specify a release tag if you want to pin to a specific release of the Workflow Deployment
|
|
1997
|
+
|
|
1998
|
+
external_id : typing.Optional[str]
|
|
1999
|
+
Optionally include a unique identifier for tracking purposes. Must be unique within a given Workspace.
|
|
2000
|
+
|
|
2001
|
+
previous_execution_id : typing.Optional[str]
|
|
2002
|
+
The ID of a previous Workflow Execution to reference for initial State loading.
|
|
2003
|
+
|
|
2004
|
+
metadata : typing.Optional[typing.Dict[str, typing.Optional[typing.Any]]]
|
|
2005
|
+
Arbitrary JSON metadata associated with this request. Can be used to capture additional monitoring data such as user id, session id, etc. for future analysis.
|
|
2006
|
+
|
|
2007
|
+
request_options : typing.Optional[RequestOptions]
|
|
2008
|
+
Request-specific configuration.
|
|
2009
|
+
|
|
2010
|
+
Returns
|
|
2011
|
+
-------
|
|
2012
|
+
AsyncHttpResponse[ExecuteWorkflowAsyncResponse]
|
|
2013
|
+
|
|
2014
|
+
"""
|
|
2015
|
+
_response = await self._client_wrapper.httpx_client.request(
|
|
2016
|
+
"v1/execute-workflow-async",
|
|
2017
|
+
base_url=self._client_wrapper.get_environment().predict,
|
|
2018
|
+
method="POST",
|
|
2019
|
+
json={
|
|
2020
|
+
"inputs": convert_and_respect_annotation_metadata(
|
|
2021
|
+
object_=inputs, annotation=typing.Sequence[WorkflowRequestInputRequest], direction="write"
|
|
2022
|
+
),
|
|
2023
|
+
"workflow_deployment_id": workflow_deployment_id,
|
|
2024
|
+
"workflow_deployment_name": workflow_deployment_name,
|
|
2025
|
+
"release_tag": release_tag,
|
|
2026
|
+
"external_id": external_id,
|
|
2027
|
+
"previous_execution_id": previous_execution_id,
|
|
2028
|
+
"metadata": metadata,
|
|
2029
|
+
},
|
|
2030
|
+
headers={
|
|
2031
|
+
"content-type": "application/json",
|
|
2032
|
+
},
|
|
2033
|
+
request_options=request_options,
|
|
2034
|
+
omit=OMIT,
|
|
2035
|
+
)
|
|
2036
|
+
try:
|
|
2037
|
+
if 200 <= _response.status_code < 300:
|
|
2038
|
+
_data = typing.cast(
|
|
2039
|
+
ExecuteWorkflowAsyncResponse,
|
|
2040
|
+
parse_obj_as(
|
|
2041
|
+
type_=ExecuteWorkflowAsyncResponse, # type: ignore
|
|
2042
|
+
object_=_response.json(),
|
|
2043
|
+
),
|
|
2044
|
+
)
|
|
2045
|
+
return AsyncHttpResponse(response=_response, data=_data)
|
|
2046
|
+
if _response.status_code == 400:
|
|
2047
|
+
raise BadRequestError(
|
|
2048
|
+
headers=dict(_response.headers),
|
|
2049
|
+
body=typing.cast(
|
|
2050
|
+
typing.Optional[typing.Any],
|
|
2051
|
+
parse_obj_as(
|
|
2052
|
+
type_=typing.Optional[typing.Any], # type: ignore
|
|
2053
|
+
object_=_response.json(),
|
|
2054
|
+
),
|
|
2055
|
+
),
|
|
2056
|
+
)
|
|
2057
|
+
if _response.status_code == 404:
|
|
2058
|
+
raise NotFoundError(
|
|
2059
|
+
headers=dict(_response.headers),
|
|
2060
|
+
body=typing.cast(
|
|
2061
|
+
typing.Optional[typing.Any],
|
|
2062
|
+
parse_obj_as(
|
|
2063
|
+
type_=typing.Optional[typing.Any], # type: ignore
|
|
2064
|
+
object_=_response.json(),
|
|
2065
|
+
),
|
|
2066
|
+
),
|
|
2067
|
+
)
|
|
2068
|
+
if _response.status_code == 500:
|
|
2069
|
+
raise InternalServerError(
|
|
2070
|
+
headers=dict(_response.headers),
|
|
2071
|
+
body=typing.cast(
|
|
2072
|
+
typing.Optional[typing.Any],
|
|
2073
|
+
parse_obj_as(
|
|
2074
|
+
type_=typing.Optional[typing.Any], # type: ignore
|
|
2075
|
+
object_=_response.json(),
|
|
2076
|
+
),
|
|
2077
|
+
),
|
|
2078
|
+
)
|
|
2079
|
+
_response_json = _response.json()
|
|
2080
|
+
except JSONDecodeError:
|
|
2081
|
+
raise ApiError(status_code=_response.status_code, headers=dict(_response.headers), body=_response.text)
|
|
2082
|
+
raise ApiError(status_code=_response.status_code, headers=dict(_response.headers), body=_response_json)
|
|
2083
|
+
|
|
2084
|
+
@contextlib.asynccontextmanager
|
|
2085
|
+
async def execute_workflow_stream(
|
|
2086
|
+
self,
|
|
2087
|
+
*,
|
|
2088
|
+
inputs: typing.Sequence[WorkflowRequestInputRequest],
|
|
2089
|
+
expand_meta: typing.Optional[WorkflowExpandMetaRequest] = OMIT,
|
|
2090
|
+
workflow_deployment_id: typing.Optional[str] = OMIT,
|
|
2091
|
+
workflow_deployment_name: typing.Optional[str] = OMIT,
|
|
2092
|
+
release_tag: typing.Optional[str] = OMIT,
|
|
2093
|
+
external_id: typing.Optional[str] = OMIT,
|
|
2094
|
+
event_types: typing.Optional[typing.Sequence[WorkflowExecutionEventType]] = OMIT,
|
|
2095
|
+
metadata: typing.Optional[typing.Dict[str, typing.Optional[typing.Any]]] = OMIT,
|
|
2096
|
+
previous_execution_id: typing.Optional[str] = OMIT,
|
|
2097
|
+
request_options: typing.Optional[RequestOptions] = None,
|
|
2098
|
+
) -> typing.AsyncIterator[AsyncHttpResponse[typing.AsyncIterator[WorkflowStreamEvent]]]:
|
|
2099
|
+
"""
|
|
2100
|
+
Executes a deployed Workflow and streams back its results.
|
|
2101
|
+
|
|
2102
|
+
Parameters
|
|
2103
|
+
----------
|
|
2104
|
+
inputs : typing.Sequence[WorkflowRequestInputRequest]
|
|
2105
|
+
The list of inputs defined in the Workflow's Deployment with their corresponding values.
|
|
2106
|
+
|
|
2107
|
+
expand_meta : typing.Optional[WorkflowExpandMetaRequest]
|
|
2108
|
+
An optionally specified configuration used to opt in to including additional metadata about this workflow execution in the API response. Corresponding values will be returned under the `execution_meta` key within NODE events in the response stream.
|
|
2109
|
+
|
|
2110
|
+
workflow_deployment_id : typing.Optional[str]
|
|
2111
|
+
The ID of the Workflow Deployment. Must provide either this or workflow_deployment_name.
|
|
2112
|
+
|
|
2113
|
+
workflow_deployment_name : typing.Optional[str]
|
|
2114
|
+
The name of the Workflow Deployment. Must provide either this or workflow_deployment_id.
|
|
2115
|
+
|
|
2116
|
+
release_tag : typing.Optional[str]
|
|
2117
|
+
Optionally specify a release tag if you want to pin to a specific release of the Workflow Deployment
|
|
2118
|
+
|
|
2119
|
+
external_id : typing.Optional[str]
|
|
2120
|
+
Optionally include a unique identifier for tracking purposes. Must be unique within a given Workspace.
|
|
2121
|
+
|
|
2122
|
+
event_types : typing.Optional[typing.Sequence[WorkflowExecutionEventType]]
|
|
2123
|
+
Optionally specify which events you want to receive. Defaults to only WORKFLOW events. Note that the schema of non-WORKFLOW events is unstable and should be used with caution.
|
|
2124
|
+
|
|
2125
|
+
metadata : typing.Optional[typing.Dict[str, typing.Optional[typing.Any]]]
|
|
2126
|
+
Arbitrary JSON metadata associated with this request. Can be used to capture additional monitoring data such as user id, session id, etc. for future analysis.
|
|
2127
|
+
|
|
2128
|
+
previous_execution_id : typing.Optional[str]
|
|
2129
|
+
The ID of a previous Workflow Execution to reference for initial State loading.
|
|
2130
|
+
|
|
2131
|
+
request_options : typing.Optional[RequestOptions]
|
|
2132
|
+
Request-specific configuration.
|
|
2133
|
+
|
|
2134
|
+
Yields
|
|
2135
|
+
------
|
|
2136
|
+
typing.AsyncIterator[AsyncHttpResponse[typing.AsyncIterator[WorkflowStreamEvent]]]
|
|
2137
|
+
|
|
2138
|
+
"""
|
|
2139
|
+
async with self._client_wrapper.httpx_client.stream(
|
|
2140
|
+
"v1/execute-workflow-stream",
|
|
2141
|
+
base_url=self._client_wrapper.get_environment().predict,
|
|
2142
|
+
method="POST",
|
|
2143
|
+
json={
|
|
2144
|
+
"inputs": convert_and_respect_annotation_metadata(
|
|
2145
|
+
object_=inputs, annotation=typing.Sequence[WorkflowRequestInputRequest], direction="write"
|
|
2146
|
+
),
|
|
2147
|
+
"expand_meta": convert_and_respect_annotation_metadata(
|
|
2148
|
+
object_=expand_meta, annotation=typing.Optional[WorkflowExpandMetaRequest], direction="write"
|
|
2149
|
+
),
|
|
2150
|
+
"workflow_deployment_id": workflow_deployment_id,
|
|
2151
|
+
"workflow_deployment_name": workflow_deployment_name,
|
|
2152
|
+
"release_tag": release_tag,
|
|
2153
|
+
"external_id": external_id,
|
|
2154
|
+
"event_types": event_types,
|
|
2155
|
+
"metadata": metadata,
|
|
2156
|
+
"previous_execution_id": previous_execution_id,
|
|
2157
|
+
},
|
|
2158
|
+
headers={
|
|
2159
|
+
"content-type": "application/json",
|
|
2160
|
+
},
|
|
2161
|
+
request_options=request_options,
|
|
2162
|
+
omit=OMIT,
|
|
2163
|
+
) as _response:
|
|
2164
|
+
|
|
2165
|
+
async def _stream() -> AsyncHttpResponse[typing.AsyncIterator[WorkflowStreamEvent]]:
|
|
2166
|
+
try:
|
|
2167
|
+
if 200 <= _response.status_code < 300:
|
|
2168
|
+
|
|
2169
|
+
async def _iter():
|
|
2170
|
+
async for _text in _response.aiter_lines():
|
|
2171
|
+
try:
|
|
2172
|
+
if len(_text) == 0:
|
|
2173
|
+
continue
|
|
2174
|
+
yield typing.cast(
|
|
2175
|
+
WorkflowStreamEvent,
|
|
2176
|
+
parse_obj_as(
|
|
2177
|
+
type_=WorkflowStreamEvent, # type: ignore
|
|
2178
|
+
object_=json.loads(_text),
|
|
2179
|
+
),
|
|
2180
|
+
)
|
|
2181
|
+
except Exception:
|
|
2182
|
+
pass
|
|
2183
|
+
return
|
|
2184
|
+
|
|
2185
|
+
return AsyncHttpResponse(response=_response, data=_iter())
|
|
2186
|
+
await _response.aread()
|
|
2187
|
+
if _response.status_code == 400:
|
|
2188
|
+
raise BadRequestError(
|
|
2189
|
+
headers=dict(_response.headers),
|
|
2190
|
+
body=typing.cast(
|
|
2191
|
+
typing.Optional[typing.Any],
|
|
2192
|
+
parse_obj_as(
|
|
2193
|
+
type_=typing.Optional[typing.Any], # type: ignore
|
|
2194
|
+
object_=_response.json(),
|
|
2195
|
+
),
|
|
2196
|
+
),
|
|
2197
|
+
)
|
|
2198
|
+
if _response.status_code == 404:
|
|
2199
|
+
raise NotFoundError(
|
|
2200
|
+
headers=dict(_response.headers),
|
|
2201
|
+
body=typing.cast(
|
|
2202
|
+
typing.Optional[typing.Any],
|
|
2203
|
+
parse_obj_as(
|
|
2204
|
+
type_=typing.Optional[typing.Any], # type: ignore
|
|
2205
|
+
object_=_response.json(),
|
|
2206
|
+
),
|
|
2207
|
+
),
|
|
2208
|
+
)
|
|
2209
|
+
if _response.status_code == 500:
|
|
2210
|
+
raise InternalServerError(
|
|
2211
|
+
headers=dict(_response.headers),
|
|
2212
|
+
body=typing.cast(
|
|
2213
|
+
typing.Optional[typing.Any],
|
|
2214
|
+
parse_obj_as(
|
|
2215
|
+
type_=typing.Optional[typing.Any], # type: ignore
|
|
2216
|
+
object_=_response.json(),
|
|
2217
|
+
),
|
|
2218
|
+
),
|
|
2219
|
+
)
|
|
2220
|
+
_response_json = _response.json()
|
|
2221
|
+
except JSONDecodeError:
|
|
2222
|
+
raise ApiError(
|
|
2223
|
+
status_code=_response.status_code, headers=dict(_response.headers), body=_response.text
|
|
2224
|
+
)
|
|
2225
|
+
raise ApiError(status_code=_response.status_code, headers=dict(_response.headers), body=_response_json)
|
|
2226
|
+
|
|
2227
|
+
yield await _stream()
|
|
2228
|
+
|
|
2229
|
+
async def generate(
|
|
2230
|
+
self,
|
|
2231
|
+
*,
|
|
2232
|
+
requests: typing.Sequence[GenerateRequest],
|
|
2233
|
+
deployment_id: typing.Optional[str] = OMIT,
|
|
2234
|
+
deployment_name: typing.Optional[str] = OMIT,
|
|
2235
|
+
options: typing.Optional[GenerateOptionsRequest] = OMIT,
|
|
2236
|
+
request_options: typing.Optional[RequestOptions] = None,
|
|
2237
|
+
) -> AsyncHttpResponse[GenerateResponse]:
|
|
2238
|
+
"""
|
|
2239
|
+
Generate a completion using a previously defined deployment.
|
|
2240
|
+
|
|
2241
|
+
Important: This endpoint is DEPRECATED and has been superseded by
|
|
2242
|
+
[execute-prompt](/api-reference/api-reference/execute-prompt).
|
|
2243
|
+
|
|
2244
|
+
Parameters
|
|
2245
|
+
----------
|
|
2246
|
+
requests : typing.Sequence[GenerateRequest]
|
|
2247
|
+
The generation request to make. Bulk requests are no longer supported, this field must be an array of length 1.
|
|
2248
|
+
|
|
2249
|
+
deployment_id : typing.Optional[str]
|
|
2250
|
+
The ID of the deployment. Must provide either this or deployment_name.
|
|
2251
|
+
|
|
2252
|
+
deployment_name : typing.Optional[str]
|
|
2253
|
+
The name of the deployment. Must provide either this or deployment_id.
|
|
2254
|
+
|
|
2255
|
+
options : typing.Optional[GenerateOptionsRequest]
|
|
2256
|
+
Additional configuration that can be used to control what's included in the response.
|
|
2257
|
+
|
|
2258
|
+
request_options : typing.Optional[RequestOptions]
|
|
2259
|
+
Request-specific configuration.
|
|
2260
|
+
|
|
2261
|
+
Returns
|
|
2262
|
+
-------
|
|
2263
|
+
AsyncHttpResponse[GenerateResponse]
|
|
2264
|
+
|
|
2265
|
+
"""
|
|
2266
|
+
_response = await self._client_wrapper.httpx_client.request(
|
|
2267
|
+
"v1/generate",
|
|
2268
|
+
base_url=self._client_wrapper.get_environment().predict,
|
|
2269
|
+
method="POST",
|
|
2270
|
+
json={
|
|
2271
|
+
"deployment_id": deployment_id,
|
|
2272
|
+
"deployment_name": deployment_name,
|
|
2273
|
+
"requests": convert_and_respect_annotation_metadata(
|
|
2274
|
+
object_=requests, annotation=typing.Sequence[GenerateRequest], direction="write"
|
|
2275
|
+
),
|
|
2276
|
+
"options": convert_and_respect_annotation_metadata(
|
|
2277
|
+
object_=options, annotation=typing.Optional[GenerateOptionsRequest], direction="write"
|
|
2278
|
+
),
|
|
2279
|
+
},
|
|
2280
|
+
headers={
|
|
2281
|
+
"content-type": "application/json",
|
|
2282
|
+
},
|
|
2283
|
+
request_options=request_options,
|
|
2284
|
+
omit=OMIT,
|
|
2285
|
+
)
|
|
2286
|
+
try:
|
|
2287
|
+
if 200 <= _response.status_code < 300:
|
|
2288
|
+
_data = typing.cast(
|
|
2289
|
+
GenerateResponse,
|
|
2290
|
+
parse_obj_as(
|
|
2291
|
+
type_=GenerateResponse, # type: ignore
|
|
2292
|
+
object_=_response.json(),
|
|
2293
|
+
),
|
|
2294
|
+
)
|
|
2295
|
+
return AsyncHttpResponse(response=_response, data=_data)
|
|
2296
|
+
if _response.status_code == 400:
|
|
2297
|
+
raise BadRequestError(
|
|
2298
|
+
headers=dict(_response.headers),
|
|
2299
|
+
body=typing.cast(
|
|
2300
|
+
typing.Optional[typing.Any],
|
|
2301
|
+
parse_obj_as(
|
|
2302
|
+
type_=typing.Optional[typing.Any], # type: ignore
|
|
2303
|
+
object_=_response.json(),
|
|
2304
|
+
),
|
|
2305
|
+
),
|
|
2306
|
+
)
|
|
2307
|
+
if _response.status_code == 403:
|
|
2308
|
+
raise ForbiddenError(
|
|
2309
|
+
headers=dict(_response.headers),
|
|
2310
|
+
body=typing.cast(
|
|
2311
|
+
typing.Optional[typing.Any],
|
|
2312
|
+
parse_obj_as(
|
|
2313
|
+
type_=typing.Optional[typing.Any], # type: ignore
|
|
2314
|
+
object_=_response.json(),
|
|
2315
|
+
),
|
|
2316
|
+
),
|
|
2317
|
+
)
|
|
2318
|
+
if _response.status_code == 404:
|
|
2319
|
+
raise NotFoundError(
|
|
2320
|
+
headers=dict(_response.headers),
|
|
2321
|
+
body=typing.cast(
|
|
2322
|
+
typing.Optional[typing.Any],
|
|
2323
|
+
parse_obj_as(
|
|
2324
|
+
type_=typing.Optional[typing.Any], # type: ignore
|
|
2325
|
+
object_=_response.json(),
|
|
2326
|
+
),
|
|
2327
|
+
),
|
|
2328
|
+
)
|
|
2329
|
+
if _response.status_code == 500:
|
|
2330
|
+
raise InternalServerError(
|
|
2331
|
+
headers=dict(_response.headers),
|
|
2332
|
+
body=typing.cast(
|
|
2333
|
+
typing.Optional[typing.Any],
|
|
2334
|
+
parse_obj_as(
|
|
2335
|
+
type_=typing.Optional[typing.Any], # type: ignore
|
|
2336
|
+
object_=_response.json(),
|
|
2337
|
+
),
|
|
2338
|
+
),
|
|
2339
|
+
)
|
|
2340
|
+
_response_json = _response.json()
|
|
2341
|
+
except JSONDecodeError:
|
|
2342
|
+
raise ApiError(status_code=_response.status_code, headers=dict(_response.headers), body=_response.text)
|
|
2343
|
+
raise ApiError(status_code=_response.status_code, headers=dict(_response.headers), body=_response_json)
|
|
2344
|
+
|
|
2345
|
+
@contextlib.asynccontextmanager
|
|
2346
|
+
async def generate_stream(
|
|
2347
|
+
self,
|
|
2348
|
+
*,
|
|
2349
|
+
requests: typing.Sequence[GenerateRequest],
|
|
2350
|
+
deployment_id: typing.Optional[str] = OMIT,
|
|
2351
|
+
deployment_name: typing.Optional[str] = OMIT,
|
|
2352
|
+
options: typing.Optional[GenerateOptionsRequest] = OMIT,
|
|
2353
|
+
request_options: typing.Optional[RequestOptions] = None,
|
|
2354
|
+
) -> typing.AsyncIterator[AsyncHttpResponse[typing.AsyncIterator[GenerateStreamResponse]]]:
|
|
2355
|
+
"""
|
|
2356
|
+
Generate a stream of completions using a previously defined deployment.
|
|
2357
|
+
|
|
2358
|
+
Important: This endpoint is DEPRECATED and has been superseded by
|
|
2359
|
+
[execute-prompt-stream](/api-reference/api-reference/execute-prompt-stream).
|
|
2360
|
+
|
|
2361
|
+
Parameters
|
|
2362
|
+
----------
|
|
2363
|
+
requests : typing.Sequence[GenerateRequest]
|
|
2364
|
+
The generation request to make. Bulk requests are no longer supported, this field must be an array of length 1.
|
|
2365
|
+
|
|
2366
|
+
deployment_id : typing.Optional[str]
|
|
2367
|
+
The ID of the deployment. Must provide either this or deployment_name.
|
|
2368
|
+
|
|
2369
|
+
deployment_name : typing.Optional[str]
|
|
2370
|
+
The name of the deployment. Must provide either this or deployment_id.
|
|
2371
|
+
|
|
2372
|
+
options : typing.Optional[GenerateOptionsRequest]
|
|
2373
|
+
Additional configuration that can be used to control what's included in the response.
|
|
2374
|
+
|
|
2375
|
+
request_options : typing.Optional[RequestOptions]
|
|
2376
|
+
Request-specific configuration.
|
|
2377
|
+
|
|
2378
|
+
Yields
|
|
2379
|
+
------
|
|
2380
|
+
typing.AsyncIterator[AsyncHttpResponse[typing.AsyncIterator[GenerateStreamResponse]]]
|
|
2381
|
+
|
|
2382
|
+
"""
|
|
2383
|
+
async with self._client_wrapper.httpx_client.stream(
|
|
2384
|
+
"v1/generate-stream",
|
|
2385
|
+
base_url=self._client_wrapper.get_environment().predict,
|
|
2386
|
+
method="POST",
|
|
2387
|
+
json={
|
|
2388
|
+
"deployment_id": deployment_id,
|
|
2389
|
+
"deployment_name": deployment_name,
|
|
2390
|
+
"requests": convert_and_respect_annotation_metadata(
|
|
2391
|
+
object_=requests, annotation=typing.Sequence[GenerateRequest], direction="write"
|
|
2392
|
+
),
|
|
2393
|
+
"options": convert_and_respect_annotation_metadata(
|
|
2394
|
+
object_=options, annotation=typing.Optional[GenerateOptionsRequest], direction="write"
|
|
2395
|
+
),
|
|
2396
|
+
},
|
|
2397
|
+
headers={
|
|
2398
|
+
"content-type": "application/json",
|
|
2399
|
+
},
|
|
2400
|
+
request_options=request_options,
|
|
2401
|
+
omit=OMIT,
|
|
2402
|
+
) as _response:
|
|
2403
|
+
|
|
2404
|
+
async def _stream() -> AsyncHttpResponse[typing.AsyncIterator[GenerateStreamResponse]]:
|
|
2405
|
+
try:
|
|
2406
|
+
if 200 <= _response.status_code < 300:
|
|
2407
|
+
|
|
2408
|
+
async def _iter():
|
|
2409
|
+
async for _text in _response.aiter_lines():
|
|
2410
|
+
try:
|
|
2411
|
+
if len(_text) == 0:
|
|
2412
|
+
continue
|
|
2413
|
+
yield typing.cast(
|
|
2414
|
+
GenerateStreamResponse,
|
|
2415
|
+
parse_obj_as(
|
|
2416
|
+
type_=GenerateStreamResponse, # type: ignore
|
|
2417
|
+
object_=json.loads(_text),
|
|
2418
|
+
),
|
|
2419
|
+
)
|
|
2420
|
+
except Exception:
|
|
2421
|
+
pass
|
|
2422
|
+
return
|
|
2423
|
+
|
|
2424
|
+
return AsyncHttpResponse(response=_response, data=_iter())
|
|
2425
|
+
await _response.aread()
|
|
2426
|
+
if _response.status_code == 400:
|
|
2427
|
+
raise BadRequestError(
|
|
2428
|
+
headers=dict(_response.headers),
|
|
2429
|
+
body=typing.cast(
|
|
2430
|
+
typing.Optional[typing.Any],
|
|
2431
|
+
parse_obj_as(
|
|
2432
|
+
type_=typing.Optional[typing.Any], # type: ignore
|
|
2433
|
+
object_=_response.json(),
|
|
2434
|
+
),
|
|
2435
|
+
),
|
|
2436
|
+
)
|
|
2437
|
+
if _response.status_code == 403:
|
|
2438
|
+
raise ForbiddenError(
|
|
2439
|
+
headers=dict(_response.headers),
|
|
2440
|
+
body=typing.cast(
|
|
2441
|
+
typing.Optional[typing.Any],
|
|
2442
|
+
parse_obj_as(
|
|
2443
|
+
type_=typing.Optional[typing.Any], # type: ignore
|
|
2444
|
+
object_=_response.json(),
|
|
2445
|
+
),
|
|
2446
|
+
),
|
|
2447
|
+
)
|
|
2448
|
+
if _response.status_code == 404:
|
|
2449
|
+
raise NotFoundError(
|
|
2450
|
+
headers=dict(_response.headers),
|
|
2451
|
+
body=typing.cast(
|
|
2452
|
+
typing.Optional[typing.Any],
|
|
2453
|
+
parse_obj_as(
|
|
2454
|
+
type_=typing.Optional[typing.Any], # type: ignore
|
|
2455
|
+
object_=_response.json(),
|
|
2456
|
+
),
|
|
2457
|
+
),
|
|
2458
|
+
)
|
|
2459
|
+
if _response.status_code == 500:
|
|
2460
|
+
raise InternalServerError(
|
|
2461
|
+
headers=dict(_response.headers),
|
|
2462
|
+
body=typing.cast(
|
|
2463
|
+
typing.Optional[typing.Any],
|
|
2464
|
+
parse_obj_as(
|
|
2465
|
+
type_=typing.Optional[typing.Any], # type: ignore
|
|
2466
|
+
object_=_response.json(),
|
|
2467
|
+
),
|
|
2468
|
+
),
|
|
2469
|
+
)
|
|
2470
|
+
_response_json = _response.json()
|
|
2471
|
+
except JSONDecodeError:
|
|
2472
|
+
raise ApiError(
|
|
2473
|
+
status_code=_response.status_code, headers=dict(_response.headers), body=_response.text
|
|
2474
|
+
)
|
|
2475
|
+
raise ApiError(status_code=_response.status_code, headers=dict(_response.headers), body=_response_json)
|
|
2476
|
+
|
|
2477
|
+
yield await _stream()
|
|
2478
|
+
|
|
2479
|
+
async def search(
|
|
2480
|
+
self,
|
|
2481
|
+
*,
|
|
2482
|
+
query: str,
|
|
2483
|
+
index_id: typing.Optional[str] = OMIT,
|
|
2484
|
+
index_name: typing.Optional[str] = OMIT,
|
|
2485
|
+
options: typing.Optional[SearchRequestOptionsRequest] = OMIT,
|
|
2486
|
+
document_index: typing.Optional[str] = OMIT,
|
|
2487
|
+
request_options: typing.Optional[RequestOptions] = None,
|
|
2488
|
+
) -> AsyncHttpResponse[SearchResponse]:
|
|
2489
|
+
"""
|
|
2490
|
+
Perform a search against a document index.
|
|
2491
|
+
|
|
2492
|
+
Parameters
|
|
2493
|
+
----------
|
|
2494
|
+
query : str
|
|
2495
|
+
The query to search for.
|
|
2496
|
+
|
|
2497
|
+
index_id : typing.Optional[str]
|
|
2498
|
+
The ID of the index to search against. Must provide either this, index_name or document_index.
|
|
2499
|
+
|
|
2500
|
+
index_name : typing.Optional[str]
|
|
2501
|
+
The name of the index to search against. Must provide either this, index_id or document_index.
|
|
2502
|
+
|
|
2503
|
+
options : typing.Optional[SearchRequestOptionsRequest]
|
|
2504
|
+
Configuration options for the search.
|
|
2505
|
+
|
|
2506
|
+
document_index : typing.Optional[str]
|
|
2507
|
+
Either the index name or index ID to search against. Must provide either this, index_id or index_name.
|
|
2508
|
+
|
|
2509
|
+
request_options : typing.Optional[RequestOptions]
|
|
2510
|
+
Request-specific configuration.
|
|
2511
|
+
|
|
2512
|
+
Returns
|
|
2513
|
+
-------
|
|
2514
|
+
AsyncHttpResponse[SearchResponse]
|
|
2515
|
+
|
|
2516
|
+
"""
|
|
2517
|
+
_response = await self._client_wrapper.httpx_client.request(
|
|
2518
|
+
"v1/search",
|
|
2519
|
+
base_url=self._client_wrapper.get_environment().predict,
|
|
2520
|
+
method="POST",
|
|
2521
|
+
json={
|
|
2522
|
+
"index_id": index_id,
|
|
2523
|
+
"index_name": index_name,
|
|
2524
|
+
"query": query,
|
|
2525
|
+
"options": convert_and_respect_annotation_metadata(
|
|
2526
|
+
object_=options, annotation=typing.Optional[SearchRequestOptionsRequest], direction="write"
|
|
2527
|
+
),
|
|
2528
|
+
"document_index": document_index,
|
|
2529
|
+
},
|
|
2530
|
+
headers={
|
|
2531
|
+
"content-type": "application/json",
|
|
2532
|
+
},
|
|
2533
|
+
request_options=request_options,
|
|
2534
|
+
omit=OMIT,
|
|
2535
|
+
)
|
|
2536
|
+
try:
|
|
2537
|
+
if 200 <= _response.status_code < 300:
|
|
2538
|
+
_data = typing.cast(
|
|
2539
|
+
SearchResponse,
|
|
2540
|
+
parse_obj_as(
|
|
2541
|
+
type_=SearchResponse, # type: ignore
|
|
2542
|
+
object_=_response.json(),
|
|
2543
|
+
),
|
|
2544
|
+
)
|
|
2545
|
+
return AsyncHttpResponse(response=_response, data=_data)
|
|
2546
|
+
if _response.status_code == 400:
|
|
2547
|
+
raise BadRequestError(
|
|
2548
|
+
headers=dict(_response.headers),
|
|
2549
|
+
body=typing.cast(
|
|
2550
|
+
typing.Optional[typing.Any],
|
|
2551
|
+
parse_obj_as(
|
|
2552
|
+
type_=typing.Optional[typing.Any], # type: ignore
|
|
2553
|
+
object_=_response.json(),
|
|
2554
|
+
),
|
|
2555
|
+
),
|
|
2556
|
+
)
|
|
2557
|
+
if _response.status_code == 404:
|
|
2558
|
+
raise NotFoundError(
|
|
2559
|
+
headers=dict(_response.headers),
|
|
2560
|
+
body=typing.cast(
|
|
2561
|
+
typing.Optional[typing.Any],
|
|
2562
|
+
parse_obj_as(
|
|
2563
|
+
type_=typing.Optional[typing.Any], # type: ignore
|
|
2564
|
+
object_=_response.json(),
|
|
2565
|
+
),
|
|
2566
|
+
),
|
|
2567
|
+
)
|
|
2568
|
+
if _response.status_code == 500:
|
|
2569
|
+
raise InternalServerError(
|
|
2570
|
+
headers=dict(_response.headers),
|
|
2571
|
+
body=typing.cast(
|
|
2572
|
+
typing.Optional[typing.Any],
|
|
2573
|
+
parse_obj_as(
|
|
2574
|
+
type_=typing.Optional[typing.Any], # type: ignore
|
|
2575
|
+
object_=_response.json(),
|
|
2576
|
+
),
|
|
2577
|
+
),
|
|
2578
|
+
)
|
|
2579
|
+
_response_json = _response.json()
|
|
2580
|
+
except JSONDecodeError:
|
|
2581
|
+
raise ApiError(status_code=_response.status_code, headers=dict(_response.headers), body=_response.text)
|
|
2582
|
+
raise ApiError(status_code=_response.status_code, headers=dict(_response.headers), body=_response_json)
|
|
2583
|
+
|
|
2584
|
+
async def submit_completion_actuals(
|
|
2585
|
+
self,
|
|
2586
|
+
*,
|
|
2587
|
+
actuals: typing.Sequence[SubmitCompletionActualRequest],
|
|
2588
|
+
deployment_id: typing.Optional[str] = OMIT,
|
|
2589
|
+
deployment_name: typing.Optional[str] = OMIT,
|
|
2590
|
+
request_options: typing.Optional[RequestOptions] = None,
|
|
2591
|
+
) -> AsyncHttpResponse[None]:
|
|
2592
|
+
"""
|
|
2593
|
+
Used to submit feedback regarding the quality of previously generated completions.
|
|
2594
|
+
|
|
2595
|
+
Parameters
|
|
2596
|
+
----------
|
|
2597
|
+
actuals : typing.Sequence[SubmitCompletionActualRequest]
|
|
2598
|
+
Feedback regarding the quality of previously generated completions
|
|
2599
|
+
|
|
2600
|
+
deployment_id : typing.Optional[str]
|
|
2601
|
+
The ID of the deployment. Must provide either this or deployment_name.
|
|
2602
|
+
|
|
2603
|
+
deployment_name : typing.Optional[str]
|
|
2604
|
+
The name of the deployment. Must provide either this or deployment_id.
|
|
2605
|
+
|
|
2606
|
+
request_options : typing.Optional[RequestOptions]
|
|
2607
|
+
Request-specific configuration.
|
|
2608
|
+
|
|
2609
|
+
Returns
|
|
2610
|
+
-------
|
|
2611
|
+
AsyncHttpResponse[None]
|
|
2612
|
+
"""
|
|
2613
|
+
_response = await self._client_wrapper.httpx_client.request(
|
|
2614
|
+
"v1/submit-completion-actuals",
|
|
2615
|
+
base_url=self._client_wrapper.get_environment().predict,
|
|
2616
|
+
method="POST",
|
|
2617
|
+
json={
|
|
2618
|
+
"deployment_id": deployment_id,
|
|
2619
|
+
"deployment_name": deployment_name,
|
|
2620
|
+
"actuals": convert_and_respect_annotation_metadata(
|
|
2621
|
+
object_=actuals, annotation=typing.Sequence[SubmitCompletionActualRequest], direction="write"
|
|
2622
|
+
),
|
|
2623
|
+
},
|
|
2624
|
+
headers={
|
|
2625
|
+
"content-type": "application/json",
|
|
2626
|
+
},
|
|
2627
|
+
request_options=request_options,
|
|
2628
|
+
omit=OMIT,
|
|
2629
|
+
)
|
|
2630
|
+
try:
|
|
2631
|
+
if 200 <= _response.status_code < 300:
|
|
2632
|
+
return AsyncHttpResponse(response=_response, data=None)
|
|
2633
|
+
if _response.status_code == 400:
|
|
2634
|
+
raise BadRequestError(
|
|
2635
|
+
headers=dict(_response.headers),
|
|
2636
|
+
body=typing.cast(
|
|
2637
|
+
typing.Optional[typing.Any],
|
|
2638
|
+
parse_obj_as(
|
|
2639
|
+
type_=typing.Optional[typing.Any], # type: ignore
|
|
2640
|
+
object_=_response.json(),
|
|
2641
|
+
),
|
|
2642
|
+
),
|
|
2643
|
+
)
|
|
2644
|
+
if _response.status_code == 404:
|
|
2645
|
+
raise NotFoundError(
|
|
2646
|
+
headers=dict(_response.headers),
|
|
2647
|
+
body=typing.cast(
|
|
2648
|
+
typing.Optional[typing.Any],
|
|
2649
|
+
parse_obj_as(
|
|
2650
|
+
type_=typing.Optional[typing.Any], # type: ignore
|
|
2651
|
+
object_=_response.json(),
|
|
2652
|
+
),
|
|
2653
|
+
),
|
|
2654
|
+
)
|
|
2655
|
+
if _response.status_code == 500:
|
|
2656
|
+
raise InternalServerError(
|
|
2657
|
+
headers=dict(_response.headers),
|
|
2658
|
+
body=typing.cast(
|
|
2659
|
+
typing.Optional[typing.Any],
|
|
2660
|
+
parse_obj_as(
|
|
2661
|
+
type_=typing.Optional[typing.Any], # type: ignore
|
|
2662
|
+
object_=_response.json(),
|
|
2663
|
+
),
|
|
2664
|
+
),
|
|
2665
|
+
)
|
|
2666
|
+
_response_json = _response.json()
|
|
2667
|
+
except JSONDecodeError:
|
|
2668
|
+
raise ApiError(status_code=_response.status_code, headers=dict(_response.headers), body=_response.text)
|
|
2669
|
+
raise ApiError(status_code=_response.status_code, headers=dict(_response.headers), body=_response_json)
|
|
2670
|
+
|
|
2671
|
+
async def submit_workflow_execution_actuals(
|
|
2672
|
+
self,
|
|
2673
|
+
*,
|
|
2674
|
+
actuals: typing.Sequence[SubmitWorkflowExecutionActualRequest],
|
|
2675
|
+
execution_id: typing.Optional[str] = OMIT,
|
|
2676
|
+
external_id: typing.Optional[str] = OMIT,
|
|
2677
|
+
request_options: typing.Optional[RequestOptions] = None,
|
|
2678
|
+
) -> AsyncHttpResponse[None]:
|
|
2679
|
+
"""
|
|
2680
|
+
Used to submit feedback regarding the quality of previous workflow execution and its outputs.
|
|
2681
|
+
|
|
2682
|
+
**Note:** Uses a base url of `https://predict.vellum.ai`.
|
|
2683
|
+
|
|
2684
|
+
Parameters
|
|
2685
|
+
----------
|
|
2686
|
+
actuals : typing.Sequence[SubmitWorkflowExecutionActualRequest]
|
|
2687
|
+
Feedback regarding the quality of an output on a previously executed workflow.
|
|
2688
|
+
|
|
2689
|
+
execution_id : typing.Optional[str]
|
|
2690
|
+
The Vellum-generated ID of a previously executed workflow. Must provide either this or external_id.
|
|
2691
|
+
|
|
2692
|
+
external_id : typing.Optional[str]
|
|
2693
|
+
The external ID that was originally provided by when executing the workflow, if applicable, that you'd now like to submit actuals for. Must provide either this or execution_id.
|
|
2694
|
+
|
|
2695
|
+
request_options : typing.Optional[RequestOptions]
|
|
2696
|
+
Request-specific configuration.
|
|
2697
|
+
|
|
2698
|
+
Returns
|
|
2699
|
+
-------
|
|
2700
|
+
AsyncHttpResponse[None]
|
|
2701
|
+
"""
|
|
2702
|
+
_response = await self._client_wrapper.httpx_client.request(
|
|
2703
|
+
"v1/submit-workflow-execution-actuals",
|
|
2704
|
+
base_url=self._client_wrapper.get_environment().predict,
|
|
2705
|
+
method="POST",
|
|
2706
|
+
json={
|
|
2707
|
+
"actuals": convert_and_respect_annotation_metadata(
|
|
2708
|
+
object_=actuals, annotation=typing.Sequence[SubmitWorkflowExecutionActualRequest], direction="write"
|
|
2709
|
+
),
|
|
2710
|
+
"execution_id": execution_id,
|
|
2711
|
+
"external_id": external_id,
|
|
2712
|
+
},
|
|
2713
|
+
headers={
|
|
2714
|
+
"content-type": "application/json",
|
|
2715
|
+
},
|
|
2716
|
+
request_options=request_options,
|
|
2717
|
+
omit=OMIT,
|
|
2718
|
+
)
|
|
2719
|
+
try:
|
|
2720
|
+
if 200 <= _response.status_code < 300:
|
|
2721
|
+
return AsyncHttpResponse(response=_response, data=None)
|
|
2722
|
+
_response_json = _response.json()
|
|
2723
|
+
except JSONDecodeError:
|
|
2724
|
+
raise ApiError(status_code=_response.status_code, headers=dict(_response.headers), body=_response.text)
|
|
2725
|
+
raise ApiError(status_code=_response.status_code, headers=dict(_response.headers), body=_response_json)
|