deepset-mcp 0.0.3rc1__py3-none-any.whl → 0.0.4__py3-none-any.whl

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (115) hide show
  1. deepset_mcp/__init__.py +10 -0
  2. deepset_mcp/api/__init__.py +4 -0
  3. deepset_mcp/api/client.py +4 -0
  4. deepset_mcp/api/custom_components/__init__.py +4 -0
  5. deepset_mcp/api/custom_components/models.py +4 -0
  6. deepset_mcp/api/custom_components/protocols.py +4 -0
  7. deepset_mcp/api/custom_components/resource.py +4 -0
  8. deepset_mcp/api/exceptions.py +4 -0
  9. deepset_mcp/api/haystack_service/__init__.py +4 -0
  10. deepset_mcp/api/haystack_service/protocols.py +4 -0
  11. deepset_mcp/api/haystack_service/resource.py +4 -0
  12. deepset_mcp/api/indexes/__init__.py +4 -0
  13. deepset_mcp/api/indexes/models.py +4 -0
  14. deepset_mcp/api/indexes/protocols.py +4 -0
  15. deepset_mcp/api/indexes/resource.py +4 -0
  16. deepset_mcp/api/integrations/__init__.py +4 -0
  17. deepset_mcp/api/integrations/models.py +4 -0
  18. deepset_mcp/api/integrations/protocols.py +4 -0
  19. deepset_mcp/api/integrations/resource.py +4 -0
  20. deepset_mcp/api/pipeline/__init__.py +4 -0
  21. deepset_mcp/api/pipeline/log_level.py +4 -0
  22. deepset_mcp/api/pipeline/models.py +4 -0
  23. deepset_mcp/api/pipeline/protocols.py +8 -0
  24. deepset_mcp/api/pipeline/resource.py +4 -0
  25. deepset_mcp/api/pipeline_template/__init__.py +4 -0
  26. deepset_mcp/api/pipeline_template/models.py +4 -0
  27. deepset_mcp/api/pipeline_template/protocols.py +4 -0
  28. deepset_mcp/api/pipeline_template/resource.py +4 -0
  29. deepset_mcp/api/protocols.py +4 -0
  30. deepset_mcp/api/secrets/__init__.py +4 -0
  31. deepset_mcp/api/secrets/models.py +4 -0
  32. deepset_mcp/api/secrets/protocols.py +4 -0
  33. deepset_mcp/api/secrets/resource.py +4 -0
  34. deepset_mcp/api/shared_models.py +4 -0
  35. deepset_mcp/api/transport.py +4 -0
  36. deepset_mcp/api/user/__init__.py +4 -0
  37. deepset_mcp/api/user/protocols.py +4 -0
  38. deepset_mcp/api/user/resource.py +4 -0
  39. deepset_mcp/api/workspace/__init__.py +4 -0
  40. deepset_mcp/api/workspace/models.py +4 -0
  41. deepset_mcp/api/workspace/protocols.py +4 -0
  42. deepset_mcp/api/workspace/resource.py +4 -0
  43. deepset_mcp/config.py +8 -0
  44. deepset_mcp/initialize_embedding_model.py +4 -0
  45. deepset_mcp/main.py +8 -0
  46. deepset_mcp/store.py +4 -0
  47. deepset_mcp/tool_factory.py +11 -4
  48. deepset_mcp/tools/__init__.py +4 -0
  49. deepset_mcp/tools/custom_components.py +4 -0
  50. deepset_mcp/tools/doc_search.py +4 -0
  51. deepset_mcp/tools/haystack_service.py +4 -0
  52. deepset_mcp/tools/haystack_service_models.py +4 -0
  53. deepset_mcp/tools/indexes.py +4 -0
  54. deepset_mcp/tools/model_protocol.py +4 -0
  55. deepset_mcp/tools/pipeline.py +4 -0
  56. deepset_mcp/tools/pipeline_template.py +4 -0
  57. deepset_mcp/tools/secrets.py +4 -0
  58. deepset_mcp/tools/tokonomics/__init__.py +4 -0
  59. deepset_mcp/tools/tokonomics/decorators.py +4 -0
  60. deepset_mcp/tools/tokonomics/explorer.py +4 -0
  61. deepset_mcp/tools/tokonomics/object_store.py +4 -0
  62. deepset_mcp/tools/workspace.py +4 -0
  63. deepset_mcp-0.0.4.dist-info/METADATA +761 -0
  64. deepset_mcp-0.0.4.dist-info/RECORD +70 -0
  65. {deepset_mcp-0.0.3rc1.dist-info → deepset_mcp-0.0.4.dist-info}/entry_points.txt +0 -1
  66. deepset_mcp-0.0.4.dist-info/licenses/LICENSE +202 -0
  67. deepset_mcp/agents/__init__.py +0 -0
  68. deepset_mcp/agents/debugging/__init__.py +0 -0
  69. deepset_mcp/agents/debugging/debugging_agent.py +0 -37
  70. deepset_mcp/agents/debugging/system_prompt.md +0 -214
  71. deepset_mcp/agents/generalist/__init__.py +0 -0
  72. deepset_mcp/agents/generalist/generalist_agent.py +0 -38
  73. deepset_mcp/agents/generalist/system_prompt.md +0 -241
  74. deepset_mcp/benchmark/README.md +0 -425
  75. deepset_mcp/benchmark/__init__.py +0 -1
  76. deepset_mcp/benchmark/agent_configs/debugging_agent.yml +0 -10
  77. deepset_mcp/benchmark/agent_configs/generalist_agent.yml +0 -6
  78. deepset_mcp/benchmark/dp_validation_error_analysis/__init__.py +0 -0
  79. deepset_mcp/benchmark/dp_validation_error_analysis/eda.ipynb +0 -757
  80. deepset_mcp/benchmark/dp_validation_error_analysis/prepare_interaction_data.ipynb +0 -167
  81. deepset_mcp/benchmark/dp_validation_error_analysis/preprocessing_utils.py +0 -213
  82. deepset_mcp/benchmark/runner/__init__.py +0 -0
  83. deepset_mcp/benchmark/runner/agent_benchmark_runner.py +0 -561
  84. deepset_mcp/benchmark/runner/agent_loader.py +0 -110
  85. deepset_mcp/benchmark/runner/cli.py +0 -39
  86. deepset_mcp/benchmark/runner/cli_agent.py +0 -373
  87. deepset_mcp/benchmark/runner/cli_index.py +0 -71
  88. deepset_mcp/benchmark/runner/cli_pipeline.py +0 -73
  89. deepset_mcp/benchmark/runner/cli_tests.py +0 -226
  90. deepset_mcp/benchmark/runner/cli_utils.py +0 -61
  91. deepset_mcp/benchmark/runner/config.py +0 -73
  92. deepset_mcp/benchmark/runner/config_loader.py +0 -64
  93. deepset_mcp/benchmark/runner/interactive.py +0 -140
  94. deepset_mcp/benchmark/runner/models.py +0 -203
  95. deepset_mcp/benchmark/runner/repl.py +0 -67
  96. deepset_mcp/benchmark/runner/setup_actions.py +0 -238
  97. deepset_mcp/benchmark/runner/streaming.py +0 -360
  98. deepset_mcp/benchmark/runner/teardown_actions.py +0 -196
  99. deepset_mcp/benchmark/runner/tracing.py +0 -21
  100. deepset_mcp/benchmark/tasks/chat_rag_answers_wrong_format.yml +0 -16
  101. deepset_mcp/benchmark/tasks/documents_output_wrong.yml +0 -13
  102. deepset_mcp/benchmark/tasks/jinja_str_instead_of_complex_type.yml +0 -11
  103. deepset_mcp/benchmark/tasks/jinja_syntax_error.yml +0 -11
  104. deepset_mcp/benchmark/tasks/missing_output_mapping.yml +0 -14
  105. deepset_mcp/benchmark/tasks/no_query_input.yml +0 -13
  106. deepset_mcp/benchmark/tasks/pipelines/chat_agent_jinja_str.yml +0 -141
  107. deepset_mcp/benchmark/tasks/pipelines/chat_agent_jinja_syntax.yml +0 -141
  108. deepset_mcp/benchmark/tasks/pipelines/chat_rag_answers_wrong_format.yml +0 -181
  109. deepset_mcp/benchmark/tasks/pipelines/chat_rag_missing_output_mapping.yml +0 -189
  110. deepset_mcp/benchmark/tasks/pipelines/rag_documents_wrong_format.yml +0 -193
  111. deepset_mcp/benchmark/tasks/pipelines/rag_no_query_input.yml +0 -191
  112. deepset_mcp/benchmark/tasks/pipelines/standard_index.yml +0 -167
  113. deepset_mcp-0.0.3rc1.dist-info/METADATA +0 -289
  114. deepset_mcp-0.0.3rc1.dist-info/RECORD +0 -115
  115. {deepset_mcp-0.0.3rc1.dist-info → deepset_mcp-0.0.4.dist-info}/WHEEL +0 -0
@@ -1,167 +0,0 @@
1
- {
2
- "cells": [
3
- {
4
- "cell_type": "code",
5
- "id": "initial_id",
6
- "metadata": {
7
- "collapsed": true
8
- },
9
- "source": "from deepset_mcp.benchmark.dp_validation_error_analysis.preprocessing_utils import drop_common_columns, rename_common_columns",
10
- "outputs": [],
11
- "execution_count": null
12
- },
13
- {
14
- "metadata": {},
15
- "cell_type": "code",
16
- "source": "import pandas as pd",
17
- "id": "5da2787af99aacb5",
18
- "outputs": [],
19
- "execution_count": null
20
- },
21
- {
22
- "metadata": {},
23
- "cell_type": "code",
24
- "source": "df_deployed = pd.read_csv(\"../../../../data/raw/metabase_pipeline_deployed_last_3_months_exported_30-05-2025.csv\")",
25
- "id": "d0f95cd76cba4183",
26
- "outputs": [],
27
- "execution_count": null
28
- },
29
- {
30
- "metadata": {},
31
- "cell_type": "code",
32
- "source": "len(df_deployed)",
33
- "id": "fe9618bca374d999",
34
- "outputs": [],
35
- "execution_count": null
36
- },
37
- {
38
- "metadata": {},
39
- "cell_type": "code",
40
- "source": [
41
- "df_deployed = drop_common_columns(df_deployed)\n",
42
- "df_deployed = rename_common_columns(df_deployed)\n",
43
- "df_deployed = df_deployed.drop(columns=['Deployment ID'])"
44
- ],
45
- "id": "f4ca30b2b962f75d",
46
- "outputs": [],
47
- "execution_count": null
48
- },
49
- {
50
- "metadata": {},
51
- "cell_type": "code",
52
- "source": "df_updated = pd.read_csv(\"../../../../data/raw/metabase_pipeline_updated_last_3_months_exported_30-05-2025.csv\")",
53
- "id": "f0ecb5eac5b0f179",
54
- "outputs": [],
55
- "execution_count": null
56
- },
57
- {
58
- "metadata": {},
59
- "cell_type": "code",
60
- "source": "len(df_updated)",
61
- "id": "b33f53618e8781a6",
62
- "outputs": [],
63
- "execution_count": null
64
- },
65
- {
66
- "metadata": {},
67
- "cell_type": "code",
68
- "source": [
69
- "df_updated = drop_common_columns(df_updated)\n",
70
- "df_updated = rename_common_columns(df_updated)\n",
71
- "df_updated = df_updated.drop(columns=['Pipeline Status'])"
72
- ],
73
- "id": "4f50ccfab0abc9b6",
74
- "outputs": [],
75
- "execution_count": null
76
- },
77
- {
78
- "metadata": {},
79
- "cell_type": "code",
80
- "source": "",
81
- "id": "eb76bfb9c789c8c0",
82
- "outputs": [],
83
- "execution_count": null
84
- },
85
- {
86
- "metadata": {},
87
- "cell_type": "code",
88
- "source": "df_created = pd.read_csv(\"../../../../data/raw/metabase_pipeline_created_last_3_months_exported_30-05-2025.csv\")",
89
- "id": "bd98e81e8409849d",
90
- "outputs": [],
91
- "execution_count": null
92
- },
93
- {
94
- "metadata": {},
95
- "cell_type": "code",
96
- "source": [
97
- "df_created = drop_common_columns(df_created)\n",
98
- "df_created = rename_common_columns(df_created)\n",
99
- "df_created = df_created.drop(columns=['Origin'])"
100
- ],
101
- "id": "74f10cd77832a58",
102
- "outputs": [],
103
- "execution_count": null
104
- },
105
- {
106
- "metadata": {},
107
- "cell_type": "code",
108
- "source": "len(df_created)",
109
- "id": "94eb65b1fca7b6e6",
110
- "outputs": [],
111
- "execution_count": null
112
- },
113
- {
114
- "metadata": {},
115
- "cell_type": "code",
116
- "source": "df_combined = pd.concat([df_created, df_deployed, df_updated])",
117
- "id": "a20170fc5dcc60f6",
118
- "outputs": [],
119
- "execution_count": null
120
- },
121
- {
122
- "metadata": {},
123
- "cell_type": "code",
124
- "source": "len(df_combined)",
125
- "id": "e89107d10cae3081",
126
- "outputs": [],
127
- "execution_count": null
128
- },
129
- {
130
- "metadata": {},
131
- "cell_type": "code",
132
- "source": "df_combined.to_csv(\"../../../data/processed/created_updated_deployed_events.csv\")",
133
- "id": "57c6dd0af364a0e0",
134
- "outputs": [],
135
- "execution_count": null
136
- },
137
- {
138
- "metadata": {},
139
- "cell_type": "code",
140
- "source": "",
141
- "id": "5a55efb7e9da2273",
142
- "outputs": [],
143
- "execution_count": null
144
- }
145
- ],
146
- "metadata": {
147
- "kernelspec": {
148
- "display_name": "Python 3",
149
- "language": "python",
150
- "name": "python3"
151
- },
152
- "language_info": {
153
- "codemirror_mode": {
154
- "name": "ipython",
155
- "version": 2
156
- },
157
- "file_extension": ".py",
158
- "mimetype": "text/x-python",
159
- "name": "python",
160
- "nbconvert_exporter": "python",
161
- "pygments_lexer": "ipython2",
162
- "version": "2.7.6"
163
- }
164
- },
165
- "nbformat": 4,
166
- "nbformat_minor": 5
167
- }
@@ -1,213 +0,0 @@
1
- import pandas as pd
2
-
3
-
4
- def rename_common_columns(df: pd.DataFrame) -> pd.DataFrame:
5
- """Rename common columns in metabase export."""
6
- return df.rename(
7
- columns={
8
- "ID": "event_id",
9
- "Pipeline Name": "pipeline_name",
10
- "Source": "event_source",
11
- "User ID": "user_id",
12
- "Event Text": "event_text",
13
- "Organization Name": "organization_name",
14
- "Deepset User": "is_deepset_user",
15
- "Deepset Orga": "is_deepset_org",
16
- "Original Timestamp": "event_timestamp",
17
- "Workspace Name": "workspace_name",
18
- "Workspace ID": "workspace_id",
19
- "Organization ID": "organization_id",
20
- "Organization Type": "organization_type",
21
- "User Email": "user_email",
22
- "Environment": "environment",
23
- "Pipeline ID": "pipeline_id",
24
- }
25
- )
26
-
27
-
28
- def drop_common_columns(df: pd.DataFrame) -> pd.DataFrame:
29
- """Drop unnecessary columns from the dataframe."""
30
- return df.drop(
31
- columns=[
32
- "Context Library Name",
33
- "Context Library Version",
34
- "Event",
35
- "Received At",
36
- "UUID Ts",
37
- "Timestamp",
38
- "Sent At",
39
- "Deepset Cloud Version",
40
- "Is External User",
41
- ],
42
- errors="ignore",
43
- )
44
-
45
-
46
- def classify_error_message(error_message: str, error_classes: dict[str, list[str]]) -> str:
47
- """
48
- Classify an error message based on substring matching.
49
-
50
- Args:
51
- error_message (str): The error message to classify
52
- error_classes (dict): Dictionary mapping error class names to lists of substrings
53
-
54
- Returns:
55
- str: The error class name or "other" if no match found
56
- """
57
- if pd.isna(error_message):
58
- return "not_available"
59
-
60
- error_message_lower = str(error_message).lower()
61
-
62
- # Check each error class
63
- for error_class, substrings in error_classes.items():
64
- for substring in substrings:
65
- if substring.lower() in error_message_lower:
66
- return error_class
67
-
68
- return "other"
69
-
70
-
71
- def add_error_class_column(
72
- df: pd.DataFrame, error_message_col: str = "error_message", error_classes: dict[str, list[str]] | None = None
73
- ) -> pd.DataFrame:
74
- """
75
- Add an error_class column to a dataframe based on substring matching.
76
-
77
- Args:
78
- df (pd.DataFrame): The dataframe to modify
79
- error_message_col (str): Name of the column containing error messages
80
- error_classes (dict): Dictionary mapping error class names to lists of substrings
81
-
82
- Returns:
83
- pd.DataFrame: The dataframe with added error_class column
84
- """
85
- if error_classes is None:
86
- error_classes = {
87
- "embeddings": [
88
- "The embedding model",
89
- "embedding dimension",
90
- "No embedding model found in indexing pipeline",
91
- "No embedding model found in index",
92
- ],
93
- "index_inputs_outputs": [
94
- "files input",
95
- "the input 'files'",
96
- "Indexing pipelines must start with a 'FilesInput'",
97
- "must receive files input.",
98
- "Indexing Pipeline YAMLs should not have outputs.",
99
- "must define a 'DocumentWriter'",
100
- ],
101
- "credentials": [
102
- "credentials",
103
- "OpenAI API token was provided",
104
- "No API key provided.",
105
- "You are trying to access a gated repo.",
106
- "Invalid API key",
107
- "The api_key client option must be set either by passing api_key to the client or by setting the"
108
- " TOGETHER_API_KEY environment variable",
109
- "None of the following authentication environment variables are set",
110
- "Could not connect to Amazon Bedrock. Make sure the AWS environment is configured correctly.",
111
- "Unknown secret type",
112
- "Please provide an Azure endpoint",
113
- "AZURE_OPENAI_ENDPOINT",
114
- "Unable to authenticate your request",
115
- "Unable to find your project",
116
- "Unsupported region for Vertex AI",
117
- "Could not auto-detect model family",
118
- "Unknown Hugging Face API type",
119
- "Unknown api_type",
120
- "`model_family` parameter must be one of",
121
- ],
122
- "custom_components": [
123
- "dc_custom_component",
124
- ],
125
- "pipeline_inputs_outputs": ["needs to output documents and/or answers", "receive the input 'query'"],
126
- "document_store_configuration": [
127
- "Connect a valid document store",
128
- "Pipeline index with name",
129
- "incorrectly configured document store",
130
- "Missing 'document_store' in serialization data",
131
- ],
132
- "models": [
133
- "not found on Hugging Face",
134
- " parameters. Please, use a model with less than ",
135
- "To use the Serverless Inference API, you need to specify the `model` parameter",
136
- "is not a valid DeepsetNVIDIAEmbeddingModels",
137
- ],
138
- "templating": [
139
- "There are configuration errors in the 'PromptBuilder'",
140
- "not found among inputs or outputs of component 'prompt_builder'",
141
- "There are configuration errors in the 'ChatPromptBuilder'",
142
- "component of type 'ChatPromptBuilder'",
143
- "Prompt must have at least one variable. No variables found in the prompt.",
144
- "Unexpected end of template. Jinja was looking for",
145
- "No filter named",
146
- "Jinja was looking for the following tags",
147
- "Jinja",
148
- "unknown tag",
149
- "Invalid template",
150
- "OutputAdapter",
151
- "ConditionalRouter",
152
- "PromptBuilder",
153
- ],
154
- "pipeline_connections": [
155
- "their declared input and output types do not match",
156
- "does not exist. Input connections of",
157
- "does not exist. Output connections of",
158
- "is already connected to",
159
- "not found among inputs or outputs of component",
160
- "not found among components who receive inputs or produce outputs",
161
- "Missing receiver in connection",
162
- "already connected to",
163
- "Connecting a Component to itself is not supported",
164
- "Ensure the output type is",
165
- ],
166
- "not_imported": [
167
- "not imported",
168
- "Could not import class",
169
- "Could not locate the module",
170
- "Could not import",
171
- ],
172
- "component_not_found": ["not found in the pipeline."],
173
- "missing_packages": ["pip install"],
174
- "wrong_init_param": [
175
- "__init__() got an unexpected keyword argument",
176
- "__init__() missing",
177
- "takes no arguments",
178
- "cannot be None or empty string",
179
- "must be set",
180
- "argument of type 'NoneType' is not iterable",
181
- ],
182
- "component_device": ["ComponentDevice", "component device type"],
183
- "tools": [
184
- "The value of 'tools' is not a list",
185
- "Serialized tool",
186
- "ToolInvoker requires at least one tool",
187
- "ToolInvoker requires at least one tool to be provided",
188
- "is not a subclass of Tool",
189
- "Duplicate tool names found",
190
- "Error: `data`",
191
- ],
192
- "component_type_missing": [
193
- "Missing 'type' in component",
194
- "Missing 'type' in",
195
- "not enough values to unpack (expected 2, got 1)",
196
- ],
197
- "serialization": [
198
- "Couldn't deserialize component",
199
- "Failed to validate component",
200
- "Possible reasons include malformed serialized data",
201
- "string indices must be integers, not 'str'",
202
- "Couldn't deserialize",
203
- "can't be deserialized as",
204
- ],
205
- }
206
-
207
- # Create a copy to avoid modifying the original dataframe
208
- df_result = df.copy()
209
-
210
- # Apply the classification function
211
- df_result["error_class"] = df_result[error_message_col].apply(lambda x: classify_error_message(x, error_classes))
212
-
213
- return df_result
File without changes