qtype 0.1.12__py3-none-any.whl → 0.1.13__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.
- qtype/` +0 -0
- qtype/application/__init__.py +0 -2
- qtype/application/converters/tools_from_api.py +28 -22
- qtype/application/converters/tools_from_module.py +66 -32
- qtype/commands/generate.py +90 -7
- qtype/commands/run.py +116 -44
- qtype/docs/.pages +8 -0
- {docs → qtype/docs}/Concepts/mental-model-and-philosophy.md +1 -1
- qtype/docs/Contributing/.pages +4 -0
- {docs → qtype/docs}/Contributing/index.md +8 -1
- {docs → qtype/docs}/Gallery/dataflow_pipelines.md +3 -2
- {docs → qtype/docs}/Gallery/research_assistant.md +3 -4
- {docs → qtype/docs}/Gallery/simple_chatbot.md +3 -1
- {docs → qtype/docs}/How To/Authentication/configure_aws_authentication.md +2 -2
- {docs → qtype/docs}/How To/Authentication/use_api_key_authentication.md +2 -2
- {docs → qtype/docs}/How To/Command Line Usage/load_multiple_inputs_from_files.md +24 -9
- {docs → qtype/docs}/How To/Command Line Usage/pass_inputs_on_the_cli.md +3 -3
- {docs → qtype/docs}/How To/Command Line Usage/serve_with_auto_reload.md +3 -2
- {docs → qtype/docs}/How To/Data Processing/adjust_concurrency.md +3 -4
- {docs → qtype/docs}/How To/Data Processing/cache_step_results.md +2 -2
- {docs → qtype/docs}/How To/Data Processing/decode_json_xml.md +1 -1
- {docs → qtype/docs}/How To/Data Processing/explode_collections.md +2 -2
- {docs → qtype/docs}/How To/Data Processing/gather_results.md +4 -4
- qtype/docs/How To/Data Processing/invoke_other_flows.md +71 -0
- qtype/docs/How To/Data Processing/load_data_from_athena.md +49 -0
- qtype/docs/How To/Data Processing/read_data_from_files.md +61 -0
- {docs → qtype/docs}/How To/Data Processing/read_sql_databases.md +2 -3
- {docs → qtype/docs}/How To/Data Processing/write_data_to_file.md +1 -2
- {docs → qtype/docs}/How To/Invoke Models/call_large_language_models.md +1 -1
- {docs → qtype/docs}/How To/Invoke Models/create_embeddings.md +1 -1
- {docs → qtype/docs}/How To/Invoke Models/reuse_prompts_with_templates.md +2 -3
- {docs → qtype/docs}/How To/Language Features/include_raw_text_from_other_files.md +2 -1
- {docs → qtype/docs}/How To/Language Features/reference_entities_by_id.md +2 -2
- qtype/docs/How To/Language Features/use_agent_skills.md +29 -0
- {docs → qtype/docs}/How To/Language Features/use_environment_variables.md +2 -1
- qtype/docs/How To/Language Features/use_optional_variables.md +42 -0
- {docs → qtype/docs}/How To/Language Features/use_qtype_mcp.md +4 -4
- {docs → qtype/docs}/How To/Observability & Debugging/trace_calls_with_open_telemetry.md +1 -1
- {docs → qtype/docs}/How To/Observability & Debugging/validate_qtype_yaml.md +3 -2
- {docs → qtype/docs}/How To/Observability & Debugging/visualize_application_architecture.md +1 -1
- {docs → qtype/docs}/How To/Qtype Server/serve_flows_as_apis.md +3 -3
- {docs → qtype/docs}/How To/Qtype Server/serve_flows_as_ui.md +2 -3
- {docs → qtype/docs}/How To/Qtype Server/use_conversational_interfaces.md +1 -4
- {docs → qtype/docs}/How To/Qtype Server/use_variables_with_ui_hints.md +3 -2
- {docs → qtype/docs}/How To/Tools & Integration/bind_tool_inputs_and_outputs.md +1 -2
- {docs → qtype/docs}/How To/Tools & Integration/create_tools_from_openapi_specifications.md +10 -14
- {docs → qtype/docs}/How To/Tools & Integration/create_tools_from_python_modules.md +5 -8
- {docs → qtype/docs}/Reference/cli.md +13 -15
- {docs → qtype/docs}/Reference/plugins.md +4 -0
- {docs → qtype/docs}/Reference/semantic-validation-rules.md +6 -1
- qtype/docs/Tutorials/.pages +1 -0
- {docs → qtype/docs}/Tutorials/01-first-qtype-application.md +3 -2
- {docs → qtype/docs}/Tutorials/02-conversational-chatbot.md +3 -3
- {docs → qtype/docs}/Tutorials/03-structured-data.md +9 -10
- {docs → qtype/docs}/Tutorials/04-tools-and-function-calling.md +12 -19
- {docs → qtype/docs}/components/APITool.md +1 -1
- qtype/docs/components/Aggregate.md +7 -0
- qtype/docs/components/Collect.md +6 -0
- qtype/docs/components/Construct.md +6 -0
- {docs → qtype/docs}/components/DocumentEmbedder.md +0 -1
- {docs → qtype/docs}/components/DocumentSplitter.md +0 -1
- qtype/docs/components/Explode.md +5 -0
- {docs → qtype/docs}/components/FieldExtractor.md +2 -1
- qtype/docs/components/InvokeFlow.md +8 -0
- qtype/docs/components/InvokeTool.md +8 -0
- {docs → qtype/docs}/components/PrimitiveTypeEnum.md +0 -1
- {docs → qtype/docs}/components/Source.md +0 -1
- {docs → qtype/docs}/components/Step.md +0 -1
- {docs → qtype/docs}/components/Tool.md +2 -2
- {docs → qtype/docs}/components/Variable.md +2 -0
- qtype/docs/legacy_how_tos/.pages +6 -0
- qtype/docs/skills/architect/SKILL.md +188 -0
- qtype/docs/skills/architect/references/cheatsheet.md +198 -0
- qtype/docs/skills/architect/references/patterns.md +29 -0
- qtype/docs/stylesheets/extra.css +27 -0
- qtype/dsl/linker.py +8 -0
- qtype/dsl/model.py +177 -84
- qtype/examples/data_processing/athena_query.qtype.yaml +56 -0
- qtype/examples/data_processing/batch_inputs.csv +5 -0
- qtype/examples/data_processing/create_sample_db.py +129 -0
- qtype/examples/data_processing/invoke_other_flows.qtype.yaml +98 -0
- qtype/examples/data_processing/reviews.db +0 -0
- qtype/examples/data_processing/sample_article.txt +1 -0
- qtype/examples/data_processing/sample_documents.jsonl +5 -0
- qtype/examples/language_features/optional_variables.qtype.yaml +32 -0
- qtype/examples/language_features/story_prompt.txt +6 -0
- qtype/examples/legacy/data/customers.csv +6 -0
- qtype/examples/legacy/echo/readme.md +29 -0
- qtype/examples/legacy/qtype_plugin_example.py +51 -0
- qtype/examples/legacy/sample_data.txt +43 -0
- qtype/examples/legacy/vertex/README.md +11 -0
- qtype/examples/research_assistant/tavily.qtype.yaml +216 -0
- {examples → qtype/examples}/tutorials/03_structured_data.qtype.yaml +2 -2
- {examples → qtype/examples}/tutorials/04_tools_and_function_calling.qtype.yaml +5 -5
- qtype/interpreter/base/stream_emitter.py +19 -13
- qtype/interpreter/converters.py +142 -26
- qtype/interpreter/executors/agent_executor.py +2 -3
- qtype/interpreter/executors/aggregate_executor.py +3 -4
- qtype/interpreter/executors/construct_executor.py +15 -15
- qtype/interpreter/executors/doc_to_text_executor.py +1 -3
- qtype/interpreter/executors/field_extractor_executor.py +13 -12
- qtype/interpreter/executors/file_source_executor.py +18 -31
- qtype/interpreter/executors/invoke_embedding_executor.py +1 -4
- qtype/interpreter/executors/invoke_flow_executor.py +2 -2
- qtype/interpreter/executors/invoke_tool_executor.py +19 -18
- qtype/interpreter/executors/llm_inference_executor.py +16 -18
- qtype/interpreter/executors/prompt_template_executor.py +1 -3
- qtype/interpreter/tools/function_tool_helper.py +11 -10
- qtype/interpreter/types.py +89 -4
- qtype/interpreter/typing.py +31 -32
- qtype/mcp/server.py +312 -57
- {schema → qtype/schema}/qtype.schema.json +77 -79
- qtype/semantic/checker.py +19 -0
- qtype/semantic/generate.py +3 -6
- qtype/semantic/model.py +26 -33
- qtype/semantic/resolver.py +7 -0
- qtype/semantic/visualize.py +8 -3
- {qtype-0.1.12.dist-info → qtype-0.1.13.dist-info}/METADATA +47 -46
- qtype-0.1.13.dist-info/RECORD +352 -0
- {qtype-0.1.12.dist-info → qtype-0.1.13.dist-info}/WHEEL +1 -2
- docs/How To/Data Processing/read_data_from_files.md +0 -35
- docs/components/Aggregate.md +0 -8
- docs/components/InvokeFlow.md +0 -8
- docs/components/InvokeTool.md +0 -8
- docs/components/ToolParameter.md +0 -6
- examples/research_assistant/tavily.qtype.yaml +0 -289
- qtype/application/facade.py +0 -177
- qtype-0.1.12.dist-info/RECORD +0 -325
- qtype-0.1.12.dist-info/top_level.txt +0 -1
- {docs → qtype/docs}/Contributing/roadmap.md +0 -0
- {docs → qtype/docs}/Decisions/ADR-001-Chat-vs-Completion-Endpoint-Features.md +0 -0
- {docs → qtype/docs}/Gallery/dataflow_pipelines.mermaid +0 -0
- {docs → qtype/docs}/Gallery/research_assistant.mermaid +0 -0
- {docs → qtype/docs}/Gallery/simple_chatbot.mermaid +0 -0
- {docs → qtype/docs}/How To/Language Features/include_qtype_yaml.md +0 -0
- {docs → qtype/docs}/How To/Observability & Debugging/visualize_example.mermaid +0 -0
- {docs → qtype/docs}/How To/Qtype Server/flow_as_ui.png +0 -0
- {docs → qtype/docs}/Tutorials/example_chat.png +0 -0
- {docs → qtype/docs}/Tutorials/index.md +0 -0
- {docs → qtype/docs}/components/APIKeyAuthProvider.md +0 -0
- {docs → qtype/docs}/components/AWSAuthProvider.md +0 -0
- {docs → qtype/docs}/components/AWSSecretManager.md +0 -0
- {docs → qtype/docs}/components/Agent.md +0 -0
- {docs → qtype/docs}/components/AggregateStats.md +0 -0
- {docs → qtype/docs}/components/Application.md +0 -0
- {docs → qtype/docs}/components/AuthorizationProvider.md +0 -0
- {docs → qtype/docs}/components/AuthorizationProviderList.md +0 -0
- {docs → qtype/docs}/components/BearerTokenAuthProvider.md +0 -0
- {docs → qtype/docs}/components/BedrockReranker.md +0 -0
- {docs → qtype/docs}/components/ChatContent.md +0 -0
- {docs → qtype/docs}/components/ChatMessage.md +0 -0
- {docs → qtype/docs}/components/ConstantPath.md +0 -0
- {docs → qtype/docs}/components/CustomType.md +0 -0
- {docs → qtype/docs}/components/Decoder.md +0 -0
- {docs → qtype/docs}/components/DecoderFormat.md +0 -0
- {docs → qtype/docs}/components/DocToTextConverter.md +0 -0
- {docs → qtype/docs}/components/Document.md +0 -0
- {docs → qtype/docs}/components/DocumentIndex.md +0 -0
- {docs → qtype/docs}/components/DocumentSearch.md +0 -0
- {docs → qtype/docs}/components/DocumentSource.md +0 -0
- {docs → qtype/docs}/components/Echo.md +0 -0
- {docs → qtype/docs}/components/Embedding.md +0 -0
- {docs → qtype/docs}/components/EmbeddingModel.md +0 -0
- {docs → qtype/docs}/components/FileSource.md +0 -0
- {docs → qtype/docs}/components/FileWriter.md +0 -0
- {docs → qtype/docs}/components/Flow.md +0 -0
- {docs → qtype/docs}/components/FlowInterface.md +0 -0
- {docs → qtype/docs}/components/Index.md +0 -0
- {docs → qtype/docs}/components/IndexUpsert.md +0 -0
- {docs → qtype/docs}/components/InvokeEmbedding.md +0 -0
- {docs → qtype/docs}/components/LLMInference.md +0 -0
- {docs → qtype/docs}/components/ListType.md +0 -0
- {docs → qtype/docs}/components/Memory.md +0 -0
- {docs → qtype/docs}/components/MessageRole.md +0 -0
- {docs → qtype/docs}/components/Model.md +0 -0
- {docs → qtype/docs}/components/ModelList.md +0 -0
- {docs → qtype/docs}/components/OAuth2AuthProvider.md +0 -0
- {docs → qtype/docs}/components/PromptTemplate.md +0 -0
- {docs → qtype/docs}/components/PythonFunctionTool.md +0 -0
- {docs → qtype/docs}/components/RAGChunk.md +0 -0
- {docs → qtype/docs}/components/RAGDocument.md +0 -0
- {docs → qtype/docs}/components/RAGSearchResult.md +0 -0
- {docs → qtype/docs}/components/Reranker.md +0 -0
- {docs → qtype/docs}/components/SQLSource.md +0 -0
- {docs → qtype/docs}/components/Search.md +0 -0
- {docs → qtype/docs}/components/SearchResult.md +0 -0
- {docs → qtype/docs}/components/SecretManager.md +0 -0
- {docs → qtype/docs}/components/SecretReference.md +0 -0
- {docs → qtype/docs}/components/TelemetrySink.md +0 -0
- {docs → qtype/docs}/components/ToolList.md +0 -0
- {docs → qtype/docs}/components/TypeList.md +0 -0
- {docs → qtype/docs}/components/VariableList.md +0 -0
- {docs → qtype/docs}/components/VectorIndex.md +0 -0
- {docs → qtype/docs}/components/VectorSearch.md +0 -0
- {docs → qtype/docs}/components/VertexAuthProvider.md +0 -0
- {docs → qtype/docs}/components/Writer.md +0 -0
- {docs → qtype/docs}/example_ui.png +0 -0
- {docs → qtype/docs}/index.md +0 -0
- {docs → qtype/docs}/legacy_how_tos/Configuration/modular-yaml.md +0 -0
- {docs → qtype/docs}/legacy_how_tos/Configuration/phoenix_projects.png +0 -0
- {docs → qtype/docs}/legacy_how_tos/Configuration/phoenix_traces.png +0 -0
- {docs → qtype/docs}/legacy_how_tos/Configuration/reference-by-id.md +0 -0
- {docs → qtype/docs}/legacy_how_tos/Configuration/telemetry-setup.md +0 -0
- {docs → qtype/docs}/legacy_how_tos/Data Types/custom-types.md +0 -0
- {docs → qtype/docs}/legacy_how_tos/Data Types/domain-types.md +0 -0
- {docs → qtype/docs}/legacy_how_tos/Debugging/visualize-apps.md +0 -0
- {docs → qtype/docs}/legacy_how_tos/Tools/api-tools.md +0 -0
- {docs → qtype/docs}/legacy_how_tos/Tools/python-tools.md +0 -0
- {examples → qtype/examples}/authentication/aws_authentication.qtype.yaml +0 -0
- {examples → qtype/examples}/conversational_ai/hello_world_chat.qtype.yaml +0 -0
- {examples → qtype/examples}/conversational_ai/simple_chatbot.qtype.yaml +0 -0
- {examples → qtype/examples}/data_processing/batch_processing.qtype.yaml +0 -0
- {examples → qtype/examples}/data_processing/cache_step_results.qtype.yaml +0 -0
- {examples → qtype/examples}/data_processing/collect_results.qtype.yaml +0 -0
- {examples → qtype/examples}/data_processing/dataflow_pipelines.qtype.yaml +0 -0
- {examples → qtype/examples}/data_processing/decode_json.qtype.yaml +0 -0
- {examples → qtype/examples}/data_processing/explode_items.qtype.yaml +0 -0
- {examples → qtype/examples}/data_processing/read_file.qtype.yaml +0 -0
- {examples → qtype/examples}/invoke_models/create_embeddings.qtype.yaml +0 -0
- {examples → qtype/examples}/invoke_models/simple_llm_call.qtype.yaml +0 -0
- {examples → qtype/examples}/language_features/include_raw.qtype.yaml +0 -0
- {examples → qtype/examples}/language_features/ui_hints.qtype.yaml +0 -0
- {examples → qtype/examples}/legacy/bedrock/data_analysis_with_telemetry.qtype.yaml +0 -0
- {examples → qtype/examples}/legacy/bedrock/hello_world.qtype.yaml +0 -0
- {examples → qtype/examples}/legacy/bedrock/hello_world_chat.qtype.yaml +0 -0
- {examples → qtype/examples}/legacy/bedrock/hello_world_chat_with_telemetry.qtype.yaml +0 -0
- {examples → qtype/examples}/legacy/bedrock/hello_world_chat_with_thinking.qtype.yaml +0 -0
- {examples → qtype/examples}/legacy/bedrock/hello_world_completion.qtype.yaml +0 -0
- {examples → qtype/examples}/legacy/bedrock/hello_world_completion_with_auth.qtype.yaml +0 -0
- {examples → qtype/examples}/legacy/bedrock/simple_agent_chat.qtype.yaml +0 -0
- {examples → qtype/examples}/legacy/chat_with_langfuse.qtype.yaml +0 -0
- {examples → qtype/examples}/legacy/data_processor.qtype.yaml +0 -0
- {examples → qtype/examples}/legacy/echo/debug_example.qtype.yaml +0 -0
- {examples → qtype/examples}/legacy/echo/prompt.qtype.yaml +0 -0
- {examples → qtype/examples}/legacy/echo/test.qtype.yaml +0 -0
- {examples → qtype/examples}/legacy/echo/video.qtype.yaml +0 -0
- {examples → qtype/examples}/legacy/field_extractor_example.qtype.yaml +0 -0
- {examples → qtype/examples}/legacy/multi_flow_example.qtype.yaml +0 -0
- {examples → qtype/examples}/legacy/openai/hello_world_chat.qtype.yaml +0 -0
- {examples → qtype/examples}/legacy/openai/hello_world_chat_with_telemetry.qtype.yaml +0 -0
- {examples → qtype/examples}/legacy/rag.qtype.yaml +0 -0
- {examples → qtype/examples}/legacy/time_utilities.qtype.yaml +0 -0
- {examples → qtype/examples}/legacy/vertex/hello_world_chat.qtype.yaml +0 -0
- {examples → qtype/examples}/legacy/vertex/hello_world_completion.qtype.yaml +0 -0
- {examples → qtype/examples}/legacy/vertex/hello_world_completion_with_auth.qtype.yaml +0 -0
- {examples → qtype/examples}/observability_debugging/trace_with_opentelemetry.qtype.yaml +0 -0
- {examples → qtype/examples}/research_assistant/research_assistant.qtype.yaml +0 -0
- {examples → qtype/examples}/research_assistant/tavily.oas.yaml +0 -0
- {examples → qtype/examples}/tutorials/01_hello_world.qtype.yaml +0 -0
- {examples → qtype/examples}/tutorials/02_conversational_chat.qtype.yaml +0 -0
- {qtype-0.1.12.dist-info → qtype-0.1.13.dist-info}/entry_points.txt +0 -0
- {qtype-0.1.12.dist-info → qtype-0.1.13.dist-info}/licenses/LICENSE +0 -0
|
@@ -68,20 +68,20 @@
|
|
|
68
68
|
"type": "string"
|
|
69
69
|
},
|
|
70
70
|
"inputs": {
|
|
71
|
-
"additionalProperties": {
|
|
72
|
-
"$ref": "#/$defs/ToolParameter"
|
|
73
|
-
},
|
|
74
71
|
"description": "Input parameters required by this tool.",
|
|
72
|
+
"items": {
|
|
73
|
+
"$ref": "#/$defs/Variable"
|
|
74
|
+
},
|
|
75
75
|
"title": "Inputs",
|
|
76
|
-
"type": "
|
|
76
|
+
"type": "array"
|
|
77
77
|
},
|
|
78
78
|
"outputs": {
|
|
79
|
-
"additionalProperties": {
|
|
80
|
-
"$ref": "#/$defs/ToolParameter"
|
|
81
|
-
},
|
|
82
79
|
"description": "Output parameters produced by this tool.",
|
|
80
|
+
"items": {
|
|
81
|
+
"$ref": "#/$defs/Variable"
|
|
82
|
+
},
|
|
83
83
|
"title": "Outputs",
|
|
84
|
-
"type": "
|
|
84
|
+
"type": "array"
|
|
85
85
|
},
|
|
86
86
|
"type": {
|
|
87
87
|
"const": "APITool",
|
|
@@ -125,12 +125,12 @@
|
|
|
125
125
|
"type": "object"
|
|
126
126
|
},
|
|
127
127
|
"parameters": {
|
|
128
|
-
"
|
|
129
|
-
|
|
128
|
+
"description": "Path and query parameters for the API call.",
|
|
129
|
+
"items": {
|
|
130
|
+
"$ref": "#/$defs/Variable"
|
|
130
131
|
},
|
|
131
|
-
"description": "Output parameters produced by this tool.",
|
|
132
132
|
"title": "Parameters",
|
|
133
|
-
"type": "
|
|
133
|
+
"type": "array"
|
|
134
134
|
}
|
|
135
135
|
},
|
|
136
136
|
"required": [
|
|
@@ -439,7 +439,7 @@
|
|
|
439
439
|
},
|
|
440
440
|
"Aggregate": {
|
|
441
441
|
"additionalProperties": false,
|
|
442
|
-
"description": "A
|
|
442
|
+
"description": "A step that, after all messages have been processed,\nreturns a single message containing the counts of successful and failed\nmessages. Other messages are passed through unchanged.",
|
|
443
443
|
"properties": {
|
|
444
444
|
"cache_config": {
|
|
445
445
|
"anyOf": [
|
|
@@ -480,7 +480,7 @@
|
|
|
480
480
|
"type": "array"
|
|
481
481
|
},
|
|
482
482
|
"outputs": {
|
|
483
|
-
"description": "References to the variables
|
|
483
|
+
"description": "References to the variables where output is stored.",
|
|
484
484
|
"items": {
|
|
485
485
|
"anyOf": [
|
|
486
486
|
{
|
|
@@ -1084,18 +1084,25 @@
|
|
|
1084
1084
|
"title": "Outputs",
|
|
1085
1085
|
"type": "array"
|
|
1086
1086
|
},
|
|
1087
|
-
"
|
|
1087
|
+
"field_bindings": {
|
|
1088
1088
|
"additionalProperties": {
|
|
1089
|
-
"
|
|
1089
|
+
"anyOf": [
|
|
1090
|
+
{
|
|
1091
|
+
"$ref": "#/$defs/Reference_Variable_"
|
|
1092
|
+
},
|
|
1093
|
+
{
|
|
1094
|
+
"type": "string"
|
|
1095
|
+
}
|
|
1096
|
+
]
|
|
1090
1097
|
},
|
|
1091
|
-
"description": "Mapping
|
|
1092
|
-
"title": "Field
|
|
1098
|
+
"description": "Mapping from type field names to flow variable names.",
|
|
1099
|
+
"title": "Field Bindings",
|
|
1093
1100
|
"type": "object"
|
|
1094
1101
|
}
|
|
1095
1102
|
},
|
|
1096
1103
|
"required": [
|
|
1097
1104
|
"id",
|
|
1098
|
-
"
|
|
1105
|
+
"field_bindings"
|
|
1099
1106
|
],
|
|
1100
1107
|
"title": "Construct",
|
|
1101
1108
|
"type": "object"
|
|
@@ -1962,7 +1969,7 @@
|
|
|
1962
1969
|
},
|
|
1963
1970
|
"FieldExtractor": {
|
|
1964
1971
|
"additionalProperties": false,
|
|
1965
|
-
"description": "Extracts specific fields from input data using JSONPath expressions.\n\nThis step uses JSONPath syntax to extract data from structured inputs\n(Pydantic models, dicts, lists). The input is first converted to a dict\nusing model_dump() if it's a Pydantic model, then the JSONPath expression\nis evaluated.\n\nIf the JSONPath matches multiple values, the step yields multiple output\nmessages (1-to-many cardinality). If it matches a single value, it yields\none output message. If it matches nothing, it raises an error.\n\nThe extracted data is used to construct the output variable by passing it\nas keyword arguments to the output type's constructor.\n\nExample JSONPath expressions:\n- `$.field_name` - Extract a single field\n- `$.items[*]` - Extract all items from a list\n- `$.items[?(@.price > 10)]` - Filter items by condition",
|
|
1972
|
+
"description": "Extracts specific fields from input data using JSONPath expressions.\n\nThis step uses JSONPath syntax to extract data from structured inputs\n(Pydantic models, dicts, lists). The input is first converted to a dict\nusing model_dump() if it's a Pydantic model, then the JSONPath expression\nis evaluated.\n\nIf the JSONPath matches multiple values, the step yields multiple output\nmessages (1-to-many cardinality). If it matches a single value, it yields\none output message. If it matches nothing, it raises an error.\n\nThe extracted data is used to construct the output variable by passing it\nas keyword arguments to the output type's constructor.\n\nIf there is no match and the output variable is optional, it is set to None.\nIf there is no match and the output variable is required, an error is raised.\n\nExample JSONPath expressions:\n- `$.field_name` - Extract a single field\n- `$.items[*]` - Extract all items from a list\n- `$.items[?(@.price > 10)]` - Filter items by condition",
|
|
1966
1973
|
"properties": {
|
|
1967
1974
|
"cache_config": {
|
|
1968
1975
|
"anyOf": [
|
|
@@ -2021,12 +2028,6 @@
|
|
|
2021
2028
|
"description": "JSONPath expression to extract data from the input. Uses jsonpath-ng syntax.",
|
|
2022
2029
|
"title": "Json Path",
|
|
2023
2030
|
"type": "string"
|
|
2024
|
-
},
|
|
2025
|
-
"fail_on_missing": {
|
|
2026
|
-
"default": true,
|
|
2027
|
-
"description": "Whether to raise an error if the JSONPath matches no data. If False, returns None.",
|
|
2028
|
-
"title": "Fail On Missing",
|
|
2029
|
-
"type": "boolean"
|
|
2030
2031
|
}
|
|
2031
2032
|
},
|
|
2032
2033
|
"required": [
|
|
@@ -2678,23 +2679,31 @@
|
|
|
2678
2679
|
},
|
|
2679
2680
|
"input_bindings": {
|
|
2680
2681
|
"additionalProperties": {
|
|
2681
|
-
"
|
|
2682
|
-
|
|
2683
|
-
|
|
2684
|
-
|
|
2685
|
-
|
|
2682
|
+
"anyOf": [
|
|
2683
|
+
{
|
|
2684
|
+
"$ref": "#/$defs/Reference_Variable_"
|
|
2685
|
+
},
|
|
2686
|
+
{
|
|
2687
|
+
"type": "string"
|
|
2688
|
+
}
|
|
2689
|
+
]
|
|
2686
2690
|
},
|
|
2691
|
+
"description": "Mapping from flow input variable IDs to step variable names.",
|
|
2687
2692
|
"title": "Input Bindings",
|
|
2688
2693
|
"type": "object"
|
|
2689
2694
|
},
|
|
2690
2695
|
"output_bindings": {
|
|
2691
2696
|
"additionalProperties": {
|
|
2692
|
-
"
|
|
2693
|
-
|
|
2694
|
-
|
|
2695
|
-
|
|
2696
|
-
|
|
2697
|
+
"anyOf": [
|
|
2698
|
+
{
|
|
2699
|
+
"$ref": "#/$defs/Reference_Variable_"
|
|
2700
|
+
},
|
|
2701
|
+
{
|
|
2702
|
+
"type": "string"
|
|
2703
|
+
}
|
|
2704
|
+
]
|
|
2697
2705
|
},
|
|
2706
|
+
"description": "Mapping from flow output variable IDs to step variable names.",
|
|
2698
2707
|
"title": "Output Bindings",
|
|
2699
2708
|
"type": "object"
|
|
2700
2709
|
}
|
|
@@ -2783,17 +2792,31 @@
|
|
|
2783
2792
|
},
|
|
2784
2793
|
"input_bindings": {
|
|
2785
2794
|
"additionalProperties": {
|
|
2786
|
-
"
|
|
2795
|
+
"anyOf": [
|
|
2796
|
+
{
|
|
2797
|
+
"$ref": "#/$defs/Reference_Variable_"
|
|
2798
|
+
},
|
|
2799
|
+
{
|
|
2800
|
+
"type": "string"
|
|
2801
|
+
}
|
|
2802
|
+
]
|
|
2787
2803
|
},
|
|
2788
|
-
"description": "Mapping from
|
|
2804
|
+
"description": "Mapping from tool parameter names to flow variable names.",
|
|
2789
2805
|
"title": "Input Bindings",
|
|
2790
2806
|
"type": "object"
|
|
2791
2807
|
},
|
|
2792
2808
|
"output_bindings": {
|
|
2793
2809
|
"additionalProperties": {
|
|
2794
|
-
"
|
|
2810
|
+
"anyOf": [
|
|
2811
|
+
{
|
|
2812
|
+
"$ref": "#/$defs/Reference_Variable_"
|
|
2813
|
+
},
|
|
2814
|
+
{
|
|
2815
|
+
"type": "string"
|
|
2816
|
+
}
|
|
2817
|
+
]
|
|
2795
2818
|
},
|
|
2796
|
-
"description": "Mapping from
|
|
2819
|
+
"description": "Mapping from tool output names to flow variable names.",
|
|
2797
2820
|
"title": "Output Bindings",
|
|
2798
2821
|
"type": "object"
|
|
2799
2822
|
}
|
|
@@ -3230,20 +3253,20 @@
|
|
|
3230
3253
|
"type": "string"
|
|
3231
3254
|
},
|
|
3232
3255
|
"inputs": {
|
|
3233
|
-
"additionalProperties": {
|
|
3234
|
-
"$ref": "#/$defs/ToolParameter"
|
|
3235
|
-
},
|
|
3236
3256
|
"description": "Input parameters required by this tool.",
|
|
3257
|
+
"items": {
|
|
3258
|
+
"$ref": "#/$defs/Variable"
|
|
3259
|
+
},
|
|
3237
3260
|
"title": "Inputs",
|
|
3238
|
-
"type": "
|
|
3261
|
+
"type": "array"
|
|
3239
3262
|
},
|
|
3240
3263
|
"outputs": {
|
|
3241
|
-
"additionalProperties": {
|
|
3242
|
-
"$ref": "#/$defs/ToolParameter"
|
|
3243
|
-
},
|
|
3244
3264
|
"description": "Output parameters produced by this tool.",
|
|
3265
|
+
"items": {
|
|
3266
|
+
"$ref": "#/$defs/Variable"
|
|
3267
|
+
},
|
|
3245
3268
|
"title": "Outputs",
|
|
3246
|
-
"type": "
|
|
3269
|
+
"type": "array"
|
|
3247
3270
|
},
|
|
3248
3271
|
"type": {
|
|
3249
3272
|
"const": "PythonFunctionTool",
|
|
@@ -3658,37 +3681,6 @@
|
|
|
3658
3681
|
"title": "ToolList",
|
|
3659
3682
|
"type": "array"
|
|
3660
3683
|
},
|
|
3661
|
-
"ToolParameter": {
|
|
3662
|
-
"description": "Defines a tool input or output parameter with type and optional flag.",
|
|
3663
|
-
"properties": {
|
|
3664
|
-
"type": {
|
|
3665
|
-
"anyOf": [
|
|
3666
|
-
{
|
|
3667
|
-
"$ref": "#/$defs/PrimitiveTypeEnum"
|
|
3668
|
-
},
|
|
3669
|
-
{},
|
|
3670
|
-
{
|
|
3671
|
-
"$ref": "#/$defs/ListType"
|
|
3672
|
-
},
|
|
3673
|
-
{
|
|
3674
|
-
"type": "string"
|
|
3675
|
-
}
|
|
3676
|
-
],
|
|
3677
|
-
"title": "Type"
|
|
3678
|
-
},
|
|
3679
|
-
"optional": {
|
|
3680
|
-
"default": false,
|
|
3681
|
-
"description": "Whether this parameter is optional",
|
|
3682
|
-
"title": "Optional",
|
|
3683
|
-
"type": "boolean"
|
|
3684
|
-
}
|
|
3685
|
-
},
|
|
3686
|
-
"required": [
|
|
3687
|
-
"type"
|
|
3688
|
-
],
|
|
3689
|
-
"title": "ToolParameter",
|
|
3690
|
-
"type": "object"
|
|
3691
|
-
},
|
|
3692
3684
|
"TypeList": {
|
|
3693
3685
|
"description": "Schema for a standalone list of type definitions.",
|
|
3694
3686
|
"items": {
|
|
@@ -3722,6 +3714,12 @@
|
|
|
3722
3714
|
"description": "Type of data expected or produced. Either a CustomType or domain specific type.",
|
|
3723
3715
|
"title": "Type"
|
|
3724
3716
|
},
|
|
3717
|
+
"optional": {
|
|
3718
|
+
"default": false,
|
|
3719
|
+
"description": "Whether this variable can be unset or None. Use '?' suffix in type string as shorthand (e.g., 'text?').",
|
|
3720
|
+
"title": "Optional",
|
|
3721
|
+
"type": "boolean"
|
|
3722
|
+
},
|
|
3725
3723
|
"ui": {
|
|
3726
3724
|
"anyOf": [
|
|
3727
3725
|
{
|
qtype/semantic/checker.py
CHANGED
|
@@ -50,6 +50,10 @@ class FlowHasNoStepsError(QTypeValidationError):
|
|
|
50
50
|
# Alias for backward compatibility and semantic clarity
|
|
51
51
|
QTypeSemanticError = SemanticError
|
|
52
52
|
|
|
53
|
+
# Step types that support text streaming
|
|
54
|
+
# These are the only step types that can produce streaming text output
|
|
55
|
+
STREAMING_STEP_TYPES = (LLMInference, Agent)
|
|
56
|
+
|
|
53
57
|
|
|
54
58
|
# ---- Helper Functions for Common Validation Patterns ----
|
|
55
59
|
|
|
@@ -543,6 +547,21 @@ def _validate_flow(flow: Flow) -> None:
|
|
|
543
547
|
f"Flow {flow.id} has a Complete interface but {len(text_outputs)} text outputs -- there should be 1."
|
|
544
548
|
)
|
|
545
549
|
|
|
550
|
+
# Ensure the final step supports streaming for Complete interface
|
|
551
|
+
if flow.steps:
|
|
552
|
+
final_step = flow.steps[-1]
|
|
553
|
+
if not isinstance(final_step, STREAMING_STEP_TYPES):
|
|
554
|
+
streaming_type_names = ", ".join(
|
|
555
|
+
t.__name__ for t in STREAMING_STEP_TYPES
|
|
556
|
+
)
|
|
557
|
+
raise QTypeSemanticError(
|
|
558
|
+
(
|
|
559
|
+
f"Flow {flow.id} has a Complete interface which requires streaming output, "
|
|
560
|
+
f"but the final step '{final_step.id}' is of type '{final_step.type}' which does not support streaming. "
|
|
561
|
+
f"The final step must be one of: {streaming_type_names}."
|
|
562
|
+
)
|
|
563
|
+
)
|
|
564
|
+
|
|
546
565
|
|
|
547
566
|
def _has_secret_reference(obj: Any) -> bool:
|
|
548
567
|
"""
|
qtype/semantic/generate.py
CHANGED
|
@@ -144,8 +144,7 @@ def generate_semantic_model(args: argparse.Namespace) -> None:
|
|
|
144
144
|
CustomType,
|
|
145
145
|
DecoderFormat,
|
|
146
146
|
ListType,
|
|
147
|
-
PrimitiveTypeEnum
|
|
148
|
-
ToolParameter
|
|
147
|
+
PrimitiveTypeEnum
|
|
149
148
|
)
|
|
150
149
|
from qtype.dsl.model import Variable as DSLVariable # noqa: F401
|
|
151
150
|
from qtype.dsl.model import VariableType # noqa: F401
|
|
@@ -158,10 +157,8 @@ def generate_semantic_model(args: argparse.Namespace) -> None:
|
|
|
158
157
|
f.write(
|
|
159
158
|
dedent('''
|
|
160
159
|
class Variable(DSLVariable, BaseModel):
|
|
161
|
-
"""Semantic version of DSL Variable
|
|
162
|
-
|
|
163
|
-
def is_set(self) -> bool:
|
|
164
|
-
return self.value is not None
|
|
160
|
+
"""Semantic version of DSL Variable."""
|
|
161
|
+
pass
|
|
165
162
|
|
|
166
163
|
''').lstrip()
|
|
167
164
|
)
|
qtype/semantic/model.py
CHANGED
|
@@ -32,19 +32,15 @@ from qtype.dsl.model import ( # noqa: F401
|
|
|
32
32
|
DecoderFormat,
|
|
33
33
|
ListType,
|
|
34
34
|
PrimitiveTypeEnum,
|
|
35
|
-
ToolParameter,
|
|
36
35
|
)
|
|
37
36
|
from qtype.dsl.model import Variable as DSLVariable # noqa: F401
|
|
38
37
|
from qtype.semantic.base_types import ImmutableModel
|
|
39
38
|
|
|
40
39
|
|
|
41
40
|
class Variable(DSLVariable, BaseModel):
|
|
42
|
-
"""Semantic version of DSL Variable
|
|
41
|
+
"""Semantic version of DSL Variable."""
|
|
43
42
|
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
def is_set(self) -> bool:
|
|
47
|
-
return self.value is not None
|
|
43
|
+
pass
|
|
48
44
|
|
|
49
45
|
|
|
50
46
|
class AuthorizationProvider(ImmutableModel):
|
|
@@ -66,12 +62,12 @@ class Tool(ImmutableModel):
|
|
|
66
62
|
description: str = Field(
|
|
67
63
|
..., description="Description of what the tool does."
|
|
68
64
|
)
|
|
69
|
-
inputs:
|
|
70
|
-
default_factory=
|
|
65
|
+
inputs: list[Variable] = Field(
|
|
66
|
+
default_factory=list,
|
|
71
67
|
description="Input parameters required by this tool.",
|
|
72
68
|
)
|
|
73
|
-
outputs:
|
|
74
|
-
default_factory=
|
|
69
|
+
outputs: list[Variable] = Field(
|
|
70
|
+
default_factory=list,
|
|
75
71
|
description="Output parameters produced by this tool.",
|
|
76
72
|
)
|
|
77
73
|
|
|
@@ -421,9 +417,9 @@ class APITool(Tool):
|
|
|
421
417
|
default_factory=dict,
|
|
422
418
|
description="Optional HTTP headers to include in the request.",
|
|
423
419
|
)
|
|
424
|
-
parameters:
|
|
425
|
-
default_factory=
|
|
426
|
-
description="
|
|
420
|
+
parameters: list[Variable] = Field(
|
|
421
|
+
default_factory=list,
|
|
422
|
+
description="Path and query parameters for the API call.",
|
|
427
423
|
)
|
|
428
424
|
|
|
429
425
|
|
|
@@ -447,15 +443,12 @@ class AWSSecretManager(SecretManager):
|
|
|
447
443
|
|
|
448
444
|
class Aggregate(Step):
|
|
449
445
|
"""
|
|
450
|
-
A
|
|
451
|
-
|
|
446
|
+
A step that, after all messages have been processed,
|
|
447
|
+
returns a single message containing the counts of successful and failed
|
|
448
|
+
messages. Other messages are passed through unchanged.
|
|
452
449
|
"""
|
|
453
450
|
|
|
454
451
|
type: Literal["Aggregate"] = Field("Aggregate")
|
|
455
|
-
outputs: list[Variable] = Field(
|
|
456
|
-
default_factory=list,
|
|
457
|
-
description="References to the variables for the output. There should be one and only one output with type AggregateStats",
|
|
458
|
-
)
|
|
459
452
|
|
|
460
453
|
|
|
461
454
|
class Collect(Step, BatchableStepMixin):
|
|
@@ -472,8 +465,9 @@ class Construct(Step):
|
|
|
472
465
|
"""A step that converts variables into an instance of a Custom or Domain Type"""
|
|
473
466
|
|
|
474
467
|
type: Literal["Construct"] = Field("Construct")
|
|
475
|
-
|
|
476
|
-
...,
|
|
468
|
+
field_bindings: dict[str, Variable] = Field(
|
|
469
|
+
...,
|
|
470
|
+
description="Mapping from type field names to flow variable names.",
|
|
477
471
|
)
|
|
478
472
|
|
|
479
473
|
|
|
@@ -558,6 +552,9 @@ class FieldExtractor(Step):
|
|
|
558
552
|
The extracted data is used to construct the output variable by passing it
|
|
559
553
|
as keyword arguments to the output type's constructor.
|
|
560
554
|
|
|
555
|
+
If there is no match and the output variable is optional, it is set to None.
|
|
556
|
+
If there is no match and the output variable is required, an error is raised.
|
|
557
|
+
|
|
561
558
|
Example JSONPath expressions:
|
|
562
559
|
- `$.field_name` - Extract a single field
|
|
563
560
|
- `$.items[*]` - Extract all items from a list
|
|
@@ -569,10 +566,6 @@ class FieldExtractor(Step):
|
|
|
569
566
|
...,
|
|
570
567
|
description="JSONPath expression to extract data from the input. Uses jsonpath-ng syntax.",
|
|
571
568
|
)
|
|
572
|
-
fail_on_missing: bool = Field(
|
|
573
|
-
True,
|
|
574
|
-
description="Whether to raise an error if the JSONPath matches no data. If False, returns None.",
|
|
575
|
-
)
|
|
576
569
|
|
|
577
570
|
|
|
578
571
|
class InvokeEmbedding(Step, ConcurrentStepMixin):
|
|
@@ -590,13 +583,13 @@ class InvokeFlow(Step):
|
|
|
590
583
|
|
|
591
584
|
type: Literal["InvokeFlow"] = Field("InvokeFlow")
|
|
592
585
|
flow: Flow = Field(..., description="Flow to invoke.")
|
|
593
|
-
input_bindings: dict[
|
|
586
|
+
input_bindings: dict[str, Variable] = Field(
|
|
594
587
|
...,
|
|
595
|
-
description="Mapping from variable
|
|
588
|
+
description="Mapping from flow input variable IDs to step variable names.",
|
|
596
589
|
)
|
|
597
|
-
output_bindings: dict[
|
|
590
|
+
output_bindings: dict[str, Variable] = Field(
|
|
598
591
|
...,
|
|
599
|
-
description="Mapping from variable
|
|
592
|
+
description="Mapping from flow output variable IDs to step variable names.",
|
|
600
593
|
)
|
|
601
594
|
|
|
602
595
|
|
|
@@ -605,13 +598,13 @@ class InvokeTool(Step, ConcurrentStepMixin):
|
|
|
605
598
|
|
|
606
599
|
type: Literal["InvokeTool"] = Field("InvokeTool")
|
|
607
600
|
tool: Tool = Field(..., description="Tool to invoke.")
|
|
608
|
-
input_bindings: dict[str,
|
|
601
|
+
input_bindings: dict[str, Variable] = Field(
|
|
609
602
|
...,
|
|
610
|
-
description="Mapping from
|
|
603
|
+
description="Mapping from tool parameter names to flow variable names.",
|
|
611
604
|
)
|
|
612
|
-
output_bindings: dict[str,
|
|
605
|
+
output_bindings: dict[str, Variable] = Field(
|
|
613
606
|
...,
|
|
614
|
-
description="Mapping from
|
|
607
|
+
description="Mapping from tool output names to flow variable names.",
|
|
615
608
|
)
|
|
616
609
|
|
|
617
610
|
|
qtype/semantic/resolver.py
CHANGED
|
@@ -71,6 +71,13 @@ def to_semantic_ir(
|
|
|
71
71
|
# If the object is already in the symbol table, return it.
|
|
72
72
|
return symbol_table[obj_id]
|
|
73
73
|
|
|
74
|
+
if isinstance(dslobj, dict):
|
|
75
|
+
# If the object is a dict, recursively resolve each value
|
|
76
|
+
return {
|
|
77
|
+
key: to_semantic_ir(value, symbol_table)
|
|
78
|
+
for key, value in dslobj.items()
|
|
79
|
+
}
|
|
80
|
+
|
|
74
81
|
if isinstance(dslobj, list):
|
|
75
82
|
# If the object is a list, we will resolve each item in the list.
|
|
76
83
|
return [to_semantic_ir(item, symbol_table) for item in dslobj] # type: ignore
|
qtype/semantic/visualize.py
CHANGED
|
@@ -21,6 +21,7 @@ from qtype.semantic.model import (
|
|
|
21
21
|
DocumentIndex,
|
|
22
22
|
DocumentSearch,
|
|
23
23
|
Flow,
|
|
24
|
+
InvokeFlow,
|
|
24
25
|
InvokeTool,
|
|
25
26
|
LLMInference,
|
|
26
27
|
Memory,
|
|
@@ -168,10 +169,14 @@ def _generate_step_node(
|
|
|
168
169
|
lines = []
|
|
169
170
|
external_connections = []
|
|
170
171
|
|
|
171
|
-
if isinstance(step,
|
|
172
|
-
# Nested flow
|
|
172
|
+
if isinstance(step, InvokeFlow):
|
|
173
173
|
lines.append(
|
|
174
|
-
f' {node_id}@{{shape:
|
|
174
|
+
f' {node_id}@{{shape: sub-r, label: "🔄 {step.id}"}}'
|
|
175
|
+
)
|
|
176
|
+
# Connect to the invoked flow
|
|
177
|
+
invoked_flow_id = f"FLOW_{_sanitize_id(step.flow.id)}"
|
|
178
|
+
external_connections.append(
|
|
179
|
+
f" {node_id} -.->|invokes| {invoked_flow_id}"
|
|
175
180
|
)
|
|
176
181
|
elif isinstance(step, Agent):
|
|
177
182
|
# Agent with tools
|
|
@@ -1,60 +1,61 @@
|
|
|
1
1
|
Metadata-Version: 2.4
|
|
2
2
|
Name: qtype
|
|
3
|
-
Version: 0.1.
|
|
3
|
+
Version: 0.1.13
|
|
4
4
|
Summary: DSL for Generative AI Prototyping
|
|
5
|
+
Project-URL: Homepage, https://github.com/bazaarvoice/qtype
|
|
5
6
|
Author-email: Lou Kratz <lou.kratz+qtype@bazaarvoice.com>
|
|
6
7
|
License-Expression: Apache-2.0
|
|
7
|
-
Project-URL: Homepage, https://github.com/bazaarvoice/qtype
|
|
8
|
-
Requires-Python: >=3.10
|
|
9
|
-
Description-Content-Type: text/markdown
|
|
10
8
|
License-File: LICENSE
|
|
11
|
-
Requires-
|
|
12
|
-
Requires-Dist: pydantic>=2.12.4
|
|
13
|
-
Requires-Dist: pyyaml>=6.0.2
|
|
14
|
-
Requires-Dist: python-dotenv>=1.0.0
|
|
15
|
-
Requires-Dist: openai>=1.93.0
|
|
9
|
+
Requires-Python: >=3.10
|
|
16
10
|
Requires-Dist: fsspec>=2025.5.1
|
|
11
|
+
Requires-Dist: google-cloud-aiplatform>=1.120.0
|
|
12
|
+
Requires-Dist: jsonschema>=4.24.0
|
|
17
13
|
Requires-Dist: mkdocs-awesome-pages-plugin>=2.10.1
|
|
18
|
-
Requires-Dist:
|
|
14
|
+
Requires-Dist: openai>=1.93.0
|
|
19
15
|
Requires-Dist: openapi3-parser>=1.1.21
|
|
16
|
+
Requires-Dist: pip-system-certs>=5.2
|
|
20
17
|
Requires-Dist: pydantic-yaml>=1.6.0
|
|
21
|
-
Requires-Dist:
|
|
18
|
+
Requires-Dist: pydantic>=2.12.4
|
|
19
|
+
Requires-Dist: python-dotenv>=1.0.0
|
|
20
|
+
Requires-Dist: pyyaml>=6.0.2
|
|
22
21
|
Provides-Extra: interpreter
|
|
23
|
-
Requires-Dist: aiostream>=0.7.1; extra ==
|
|
24
|
-
Requires-Dist: arize-phoenix-otel>=0.12.1; extra ==
|
|
25
|
-
Requires-Dist: boto3>=1.34.0; extra ==
|
|
26
|
-
Requires-Dist: datasets>=4.4.1; extra ==
|
|
27
|
-
Requires-Dist: diskcache>=5.6.3; extra ==
|
|
28
|
-
Requires-Dist: docling>=2.55.1; extra ==
|
|
29
|
-
Requires-Dist: docx2txt>=0.9; extra ==
|
|
30
|
-
Requires-Dist: fastapi>=0.116.1; extra ==
|
|
31
|
-
Requires-Dist: jsonpath-ng>=1.7.0; extra ==
|
|
32
|
-
Requires-Dist: langfuse>=3.9.0; extra ==
|
|
33
|
-
Requires-Dist: llama-index-embeddings-bedrock>=0.5.2; extra ==
|
|
34
|
-
Requires-Dist: llama-index-embeddings-openai>=0.3.1; extra ==
|
|
35
|
-
Requires-Dist: llama-index-llms-bedrock-converse>=0.10.5; extra ==
|
|
36
|
-
Requires-Dist: llama-index-llms-bedrock>=0.3.8; extra ==
|
|
37
|
-
Requires-Dist: llama-index-llms-vertex>=0.6.1; extra ==
|
|
38
|
-
Requires-Dist: llama-index-postprocessor-bedrock-rerank>=0.5.1; extra ==
|
|
39
|
-
Requires-Dist: llama-index-readers-huggingface-fs>=0.4.1; extra ==
|
|
40
|
-
Requires-Dist: llama-index-vector-stores-qdrant>=0.8.6; extra ==
|
|
41
|
-
Requires-Dist: llama-index>=0.12.45; extra ==
|
|
42
|
-
Requires-Dist: openinference-instrumentation-llama-index>=4.3.4; extra ==
|
|
43
|
-
Requires-Dist: opensearch-py>=2.7.0; extra ==
|
|
44
|
-
Requires-Dist: opentelemetry-exporter-otlp>=1.35.0; extra ==
|
|
45
|
-
Requires-Dist: opentelemetry-sdk>=1.35.0; extra ==
|
|
46
|
-
Requires-Dist: pandas>=2.2.3; extra ==
|
|
47
|
-
Requires-Dist: psycopg2-binary>=2.9.10; extra ==
|
|
48
|
-
Requires-Dist: pyarrow>=21.0.0; extra ==
|
|
49
|
-
Requires-Dist: pyathena[sqlalchemy]>=3.18.0; extra ==
|
|
50
|
-
Requires-Dist: python-magic>=0.4.27; extra ==
|
|
51
|
-
Requires-Dist: s3fs>=2025.7.0; extra ==
|
|
52
|
-
Requires-Dist: sqlalchemy>=2.0.42; extra ==
|
|
53
|
-
Requires-Dist: uvicorn[standard]>=0.35.0; extra ==
|
|
22
|
+
Requires-Dist: aiostream>=0.7.1; extra == 'interpreter'
|
|
23
|
+
Requires-Dist: arize-phoenix-otel>=0.12.1; extra == 'interpreter'
|
|
24
|
+
Requires-Dist: boto3>=1.34.0; extra == 'interpreter'
|
|
25
|
+
Requires-Dist: datasets>=4.4.1; extra == 'interpreter'
|
|
26
|
+
Requires-Dist: diskcache>=5.6.3; extra == 'interpreter'
|
|
27
|
+
Requires-Dist: docling>=2.55.1; extra == 'interpreter'
|
|
28
|
+
Requires-Dist: docx2txt>=0.9; extra == 'interpreter'
|
|
29
|
+
Requires-Dist: fastapi>=0.116.1; extra == 'interpreter'
|
|
30
|
+
Requires-Dist: jsonpath-ng>=1.7.0; extra == 'interpreter'
|
|
31
|
+
Requires-Dist: langfuse>=3.9.0; extra == 'interpreter'
|
|
32
|
+
Requires-Dist: llama-index-embeddings-bedrock>=0.5.2; extra == 'interpreter'
|
|
33
|
+
Requires-Dist: llama-index-embeddings-openai>=0.3.1; extra == 'interpreter'
|
|
34
|
+
Requires-Dist: llama-index-llms-bedrock-converse>=0.10.5; extra == 'interpreter'
|
|
35
|
+
Requires-Dist: llama-index-llms-bedrock>=0.3.8; extra == 'interpreter'
|
|
36
|
+
Requires-Dist: llama-index-llms-vertex>=0.6.1; extra == 'interpreter'
|
|
37
|
+
Requires-Dist: llama-index-postprocessor-bedrock-rerank>=0.5.1; extra == 'interpreter'
|
|
38
|
+
Requires-Dist: llama-index-readers-huggingface-fs>=0.4.1; extra == 'interpreter'
|
|
39
|
+
Requires-Dist: llama-index-vector-stores-qdrant>=0.8.6; extra == 'interpreter'
|
|
40
|
+
Requires-Dist: llama-index>=0.12.45; extra == 'interpreter'
|
|
41
|
+
Requires-Dist: openinference-instrumentation-llama-index>=4.3.4; extra == 'interpreter'
|
|
42
|
+
Requires-Dist: opensearch-py>=2.7.0; extra == 'interpreter'
|
|
43
|
+
Requires-Dist: opentelemetry-exporter-otlp>=1.35.0; extra == 'interpreter'
|
|
44
|
+
Requires-Dist: opentelemetry-sdk>=1.35.0; extra == 'interpreter'
|
|
45
|
+
Requires-Dist: pandas>=2.2.3; extra == 'interpreter'
|
|
46
|
+
Requires-Dist: psycopg2-binary>=2.9.10; extra == 'interpreter'
|
|
47
|
+
Requires-Dist: pyarrow>=21.0.0; extra == 'interpreter'
|
|
48
|
+
Requires-Dist: pyathena[sqlalchemy]>=3.18.0; extra == 'interpreter'
|
|
49
|
+
Requires-Dist: python-magic>=0.4.27; extra == 'interpreter'
|
|
50
|
+
Requires-Dist: s3fs>=2025.7.0; extra == 'interpreter'
|
|
51
|
+
Requires-Dist: sqlalchemy>=2.0.42; extra == 'interpreter'
|
|
52
|
+
Requires-Dist: uvicorn[standard]>=0.35.0; extra == 'interpreter'
|
|
54
53
|
Provides-Extra: mcp
|
|
55
|
-
Requires-Dist:
|
|
56
|
-
Requires-Dist:
|
|
57
|
-
|
|
54
|
+
Requires-Dist: cachetools>=6.2.1; extra == 'mcp'
|
|
55
|
+
Requires-Dist: httpx>=0.28.1; extra == 'mcp'
|
|
56
|
+
Requires-Dist: mcp[cli]>=1.25.0; extra == 'mcp'
|
|
57
|
+
Requires-Dist: tantivy>=0.25.1; extra == 'mcp'
|
|
58
|
+
Description-Content-Type: text/markdown
|
|
58
59
|
|
|
59
60
|
# QType
|
|
60
61
|
|
|
@@ -178,4 +179,4 @@ Stay tuned for upcoming features like:
|
|
|
178
179
|
Happy hacking with QType! 🛠️
|
|
179
180
|
|
|
180
181
|
|
|
181
|
-
[](https://github.com/bazaarvoice/qtype/actions/workflows/github_workflows_generate-schema.yml) [](https://github.com/bazaarvoice/qtype/actions/workflows/publish-pypi.yml)
|
|
182
|
+
[](https://github.com/bazaarvoice/qtype/actions/workflows/github_workflows_generate-schema.yml) [](https://github.com/bazaarvoice/qtype/actions/workflows/publish-pypi.yml)
|