universal-mcp-agents 0.1.23rc11__tar.gz → 0.1.24rc1__tar.gz
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 universal-mcp-agents might be problematic. Click here for more details.
- {universal_mcp_agents-0.1.23rc11 → universal_mcp_agents-0.1.24rc1}/PKG-INFO +1 -1
- {universal_mcp_agents-0.1.23rc11 → universal_mcp_agents-0.1.24rc1}/pyproject.toml +1 -1
- {universal_mcp_agents-0.1.23rc11 → universal_mcp_agents-0.1.24rc1}/src/universal_mcp/agents/codeact0/agent.py +1 -1
- {universal_mcp_agents-0.1.23rc11 → universal_mcp_agents-0.1.24rc1}/src/universal_mcp/agents/codeact0/prompts.py +60 -26
- {universal_mcp_agents-0.1.23rc11 → universal_mcp_agents-0.1.24rc1}/src/universal_mcp/agents/codeact0/tools.py +6 -6
- {universal_mcp_agents-0.1.23rc11 → universal_mcp_agents-0.1.24rc1}/src/universal_mcp/agents/codeact0/utils.py +1 -0
- {universal_mcp_agents-0.1.23rc11 → universal_mcp_agents-0.1.24rc1}/src/universal_mcp/agents/llm.py +7 -3
- {universal_mcp_agents-0.1.23rc11 → universal_mcp_agents-0.1.24rc1}/src/universal_mcp/applications/llm/app.py +4 -4
- {universal_mcp_agents-0.1.23rc11 → universal_mcp_agents-0.1.24rc1}/uv.lock +1 -1
- {universal_mcp_agents-0.1.23rc11 → universal_mcp_agents-0.1.24rc1}/.github/workflows/evals.yml +0 -0
- {universal_mcp_agents-0.1.23rc11 → universal_mcp_agents-0.1.24rc1}/.github/workflows/lint.yml +0 -0
- {universal_mcp_agents-0.1.23rc11 → universal_mcp_agents-0.1.24rc1}/.github/workflows/release-please.yml +0 -0
- {universal_mcp_agents-0.1.23rc11 → universal_mcp_agents-0.1.24rc1}/.github/workflows/tests.yml +0 -0
- {universal_mcp_agents-0.1.23rc11 → universal_mcp_agents-0.1.24rc1}/.gitignore +0 -0
- {universal_mcp_agents-0.1.23rc11 → universal_mcp_agents-0.1.24rc1}/.pre-commit-config.yaml +0 -0
- {universal_mcp_agents-0.1.23rc11 → universal_mcp_agents-0.1.24rc1}/GEMINI.md +0 -0
- {universal_mcp_agents-0.1.23rc11 → universal_mcp_agents-0.1.24rc1}/PROMPTS.md +0 -0
- {universal_mcp_agents-0.1.23rc11 → universal_mcp_agents-0.1.24rc1}/README.md +0 -0
- {universal_mcp_agents-0.1.23rc11 → universal_mcp_agents-0.1.24rc1}/bump_and_release.sh +0 -0
- {universal_mcp_agents-0.1.23rc11 → universal_mcp_agents-0.1.24rc1}/src/evals/__init__.py +0 -0
- {universal_mcp_agents-0.1.23rc11 → universal_mcp_agents-0.1.24rc1}/src/evals/dataset.py +0 -0
- {universal_mcp_agents-0.1.23rc11 → universal_mcp_agents-0.1.24rc1}/src/evals/datasets/exact.jsonl +0 -0
- {universal_mcp_agents-0.1.23rc11 → universal_mcp_agents-0.1.24rc1}/src/evals/datasets/tasks.jsonl +0 -0
- {universal_mcp_agents-0.1.23rc11 → universal_mcp_agents-0.1.24rc1}/src/evals/datasets/test.jsonl +0 -0
- {universal_mcp_agents-0.1.23rc11 → universal_mcp_agents-0.1.24rc1}/src/evals/evaluators.py +0 -0
- {universal_mcp_agents-0.1.23rc11 → universal_mcp_agents-0.1.24rc1}/src/evals/prompts.py +0 -0
- {universal_mcp_agents-0.1.23rc11 → universal_mcp_agents-0.1.24rc1}/src/evals/run.py +0 -0
- {universal_mcp_agents-0.1.23rc11 → universal_mcp_agents-0.1.24rc1}/src/evals/utils.py +0 -0
- {universal_mcp_agents-0.1.23rc11 → universal_mcp_agents-0.1.24rc1}/src/tests/test_agents.py +0 -0
- {universal_mcp_agents-0.1.23rc11 → universal_mcp_agents-0.1.24rc1}/src/tests/test_sandbox.py +0 -0
- {universal_mcp_agents-0.1.23rc11 → universal_mcp_agents-0.1.24rc1}/src/universal_mcp/agents/__init__.py +0 -0
- {universal_mcp_agents-0.1.23rc11 → universal_mcp_agents-0.1.24rc1}/src/universal_mcp/agents/base.py +0 -0
- {universal_mcp_agents-0.1.23rc11 → universal_mcp_agents-0.1.24rc1}/src/universal_mcp/agents/bigtool/__init__.py +0 -0
- {universal_mcp_agents-0.1.23rc11 → universal_mcp_agents-0.1.24rc1}/src/universal_mcp/agents/bigtool/__main__.py +0 -0
- {universal_mcp_agents-0.1.23rc11 → universal_mcp_agents-0.1.24rc1}/src/universal_mcp/agents/bigtool/agent.py +0 -0
- {universal_mcp_agents-0.1.23rc11 → universal_mcp_agents-0.1.24rc1}/src/universal_mcp/agents/bigtool/context.py +0 -0
- {universal_mcp_agents-0.1.23rc11 → universal_mcp_agents-0.1.24rc1}/src/universal_mcp/agents/bigtool/graph.py +0 -0
- {universal_mcp_agents-0.1.23rc11 → universal_mcp_agents-0.1.24rc1}/src/universal_mcp/agents/bigtool/prompts.py +0 -0
- {universal_mcp_agents-0.1.23rc11 → universal_mcp_agents-0.1.24rc1}/src/universal_mcp/agents/bigtool/state.py +0 -0
- {universal_mcp_agents-0.1.23rc11 → universal_mcp_agents-0.1.24rc1}/src/universal_mcp/agents/bigtool/tools.py +0 -0
- {universal_mcp_agents-0.1.23rc11 → universal_mcp_agents-0.1.24rc1}/src/universal_mcp/agents/builder/__main__.py +0 -0
- {universal_mcp_agents-0.1.23rc11 → universal_mcp_agents-0.1.24rc1}/src/universal_mcp/agents/builder/builder.py +0 -0
- {universal_mcp_agents-0.1.23rc11 → universal_mcp_agents-0.1.24rc1}/src/universal_mcp/agents/builder/helper.py +0 -0
- {universal_mcp_agents-0.1.23rc11 → universal_mcp_agents-0.1.24rc1}/src/universal_mcp/agents/builder/prompts.py +0 -0
- {universal_mcp_agents-0.1.23rc11 → universal_mcp_agents-0.1.24rc1}/src/universal_mcp/agents/builder/state.py +0 -0
- {universal_mcp_agents-0.1.23rc11 → universal_mcp_agents-0.1.24rc1}/src/universal_mcp/agents/cli.py +0 -0
- {universal_mcp_agents-0.1.23rc11 → universal_mcp_agents-0.1.24rc1}/src/universal_mcp/agents/codeact0/__init__.py +0 -0
- {universal_mcp_agents-0.1.23rc11 → universal_mcp_agents-0.1.24rc1}/src/universal_mcp/agents/codeact0/__main__.py +0 -0
- {universal_mcp_agents-0.1.23rc11 → universal_mcp_agents-0.1.24rc1}/src/universal_mcp/agents/codeact0/config.py +0 -0
- {universal_mcp_agents-0.1.23rc11 → universal_mcp_agents-0.1.24rc1}/src/universal_mcp/agents/codeact0/langgraph_agent.py +0 -0
- {universal_mcp_agents-0.1.23rc11 → universal_mcp_agents-0.1.24rc1}/src/universal_mcp/agents/codeact0/llm_tool.py +0 -0
- {universal_mcp_agents-0.1.23rc11 → universal_mcp_agents-0.1.24rc1}/src/universal_mcp/agents/codeact0/sandbox.py +0 -0
- {universal_mcp_agents-0.1.23rc11 → universal_mcp_agents-0.1.24rc1}/src/universal_mcp/agents/codeact0/state.py +0 -0
- {universal_mcp_agents-0.1.23rc11 → universal_mcp_agents-0.1.24rc1}/src/universal_mcp/agents/hil.py +0 -0
- {universal_mcp_agents-0.1.23rc11 → universal_mcp_agents-0.1.24rc1}/src/universal_mcp/agents/react.py +0 -0
- {universal_mcp_agents-0.1.23rc11 → universal_mcp_agents-0.1.24rc1}/src/universal_mcp/agents/sandbox.py +0 -0
- {universal_mcp_agents-0.1.23rc11 → universal_mcp_agents-0.1.24rc1}/src/universal_mcp/agents/shared/__main__.py +0 -0
- {universal_mcp_agents-0.1.23rc11 → universal_mcp_agents-0.1.24rc1}/src/universal_mcp/agents/shared/prompts.py +0 -0
- {universal_mcp_agents-0.1.23rc11 → universal_mcp_agents-0.1.24rc1}/src/universal_mcp/agents/shared/tool_node.py +0 -0
- {universal_mcp_agents-0.1.23rc11 → universal_mcp_agents-0.1.24rc1}/src/universal_mcp/agents/simple.py +0 -0
- {universal_mcp_agents-0.1.23rc11 → universal_mcp_agents-0.1.24rc1}/src/universal_mcp/agents/utils.py +0 -0
- {universal_mcp_agents-0.1.23rc11 → universal_mcp_agents-0.1.24rc1}/src/universal_mcp/applications/filesystem/__init__.py +0 -0
- {universal_mcp_agents-0.1.23rc11 → universal_mcp_agents-0.1.24rc1}/src/universal_mcp/applications/filesystem/app.py +0 -0
- {universal_mcp_agents-0.1.23rc11 → universal_mcp_agents-0.1.24rc1}/src/universal_mcp/applications/llm/__init__.py +0 -0
- {universal_mcp_agents-0.1.23rc11 → universal_mcp_agents-0.1.24rc1}/src/universal_mcp/applications/ui/app.py +0 -0
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Metadata-Version: 2.4
|
|
2
2
|
Name: universal-mcp-agents
|
|
3
|
-
Version: 0.1.
|
|
3
|
+
Version: 0.1.24rc1
|
|
4
4
|
Summary: Add your description here
|
|
5
5
|
Project-URL: Homepage, https://github.com/universal-mcp/applications
|
|
6
6
|
Project-URL: Repository, https://github.com/universal-mcp/applications
|
|
@@ -52,7 +52,7 @@ class CodeActPlaybookAgent(BaseAgent):
|
|
|
52
52
|
**kwargs,
|
|
53
53
|
)
|
|
54
54
|
self.model_instance = load_chat_model(model)
|
|
55
|
-
self.agent_builder_model_instance = load_chat_model("anthropic:claude-sonnet-4-5-20250929", thinking
|
|
55
|
+
self.agent_builder_model_instance = load_chat_model("anthropic:claude-sonnet-4-5-20250929", thinking=False)
|
|
56
56
|
self.registry = registry
|
|
57
57
|
self.agent_builder_registry = agent_builder_registry
|
|
58
58
|
self.agent = agent_builder_registry.get_agent() if agent_builder_registry else None
|
|
@@ -12,21 +12,33 @@ Your job is to answer the user's question or perform the task they ask for.
|
|
|
12
12
|
- For writing, text/document generation (like HTML/markdown document generation) or language processing tasks DO NOT answer directly. Instead you MUST use `execute_ipython_cell` tool with the llm functions provided to you for tasks like summarizing, text generation, classification, data extraction from text or unstructured data, etc. Avoid hardcoded approaches to classification, data extraction, or creative writing.
|
|
13
13
|
- You also have access to two tools for finding and loading more python functions- `search_functions` and `load_functions`, which you must use for finding functions for using different external applications or additional functionality.
|
|
14
14
|
- Prioritize connected applications over unconnected ones from the output of `search_functions`. However, if the user specifically asks for an application, you MUST use that irrespective of connection status.
|
|
15
|
-
- When multiple apps are connected, or none of the apps are connected, YOU MUST ask the user to choose the application(s). The search results
|
|
16
|
-
- The code you write will be executed in a sandbox environment, and you can use the output of previous executions in your code. variables, functions, imports are retained.
|
|
17
|
-
- Read and understand the output of the previous code snippet and use it to answer the user's request. Note that the code output is NOT visible to the user, so after the task is complete, you have to give the output to the user in a markdown format. Similarly, you should only use print/smart_print for your own analysis, the user does not get the output.
|
|
15
|
+
- When multiple relevant apps are connected, or none of the apps are connected, YOU MUST ask the user to choose the application(s). The search results may also inform you when such a case occurs, and you must stop and ask the user if multiple apps are relevant.
|
|
18
16
|
- If needed, feel free to ask for more information from the user (without using the `execute_ipython_cell` tool) to clarify the task.
|
|
19
17
|
|
|
20
|
-
**Code
|
|
21
|
-
- The code you write will be executed in a sandbox environment, and you can use the output of previous executions in your code. Variables, functions, imports are retained.
|
|
22
|
-
- Read and understand the output of the previous code snippet and use it to answer the user's request. Note that the code output is NOT visible to the user, so after the task is complete, you have to give the output to the user in a markdown format. Similarly, you should only use print/smart_print for your own analysis, the user does not get the output.
|
|
23
|
-
- If needed, feel free to ask for more information from the user (without using the `execute_ipython_cell` tool) to clarify the task.
|
|
24
|
-
- DO NOT use the code execution to communicate/show anything to the user. The user is not able to see the output of the code cells, it is only for your processing and actions.
|
|
25
|
-
- Whenever you need to generate a large body of text, such as a document, an HTML file, or a report, use llm functions and save the output file using save functions. Do not generate text yourself and do not print the entire text in order to save your memory.
|
|
26
|
-
|
|
27
|
-
**Coding Best Practices:**
|
|
18
|
+
**Code Design**:
|
|
28
19
|
- Structure your code into multiple small, well-defined functions within a single execution snippet. This ensures modularity and makes it easier to debug or update specific logic without rewriting or re-executing large portions of code. You can only rewrite the function/portion that you need to edit since the others are retained in context.
|
|
29
|
-
-
|
|
20
|
+
- Every snippet you execute using `execute_ipython_cell` MUST follow this structure:
|
|
21
|
+
- Break down logic into 3-5 small helper functions (30 lines each max)
|
|
22
|
+
- Each helper function should do ONE thing
|
|
23
|
+
- Example:
|
|
24
|
+
def _helper_function_1(...):
|
|
25
|
+
...
|
|
26
|
+
|
|
27
|
+
def _helper_function_2(...):
|
|
28
|
+
...
|
|
29
|
+
result1 = _helper_function_1(...)
|
|
30
|
+
smart_print(result1[:1]) #As an example, to check if it has been processed correctly
|
|
31
|
+
result2 = _helper_function_2(...)
|
|
32
|
+
smart_print(result2[:1])
|
|
33
|
+
final_result = ...
|
|
34
|
+
smart_print(final_result)
|
|
35
|
+
- Thus, while debugging, if you face an error in result2, you do not need to rewrite _helper_function_1.
|
|
36
|
+
|
|
37
|
+
|
|
38
|
+
**Code Writing Rules:**
|
|
39
|
+
- The code you write will be executed in a sandbox environment, and you can use the output of previous executions in your code. Variables, defined functions, imports, loaded functions are retained.
|
|
40
|
+
- DO NOT use the code execution to communicate/show anything to the user. The user is not able to see the output of the code cells, it is only for your processing and actions. Similarly, you should only use print/smart_print for your own analysis, the user does not get the output.
|
|
41
|
+
- Whenever you need to generate a large body of text, such as a document, an HTML file, or a report, use llm functions and save the output file using save/upload functions. Do not generate text yourself and do not print the entire text in order to save your memory.
|
|
30
42
|
- External functions which return a dict or list[dict] are ambiguous. Therefore, you MUST explore the structure of the returned data using `smart_print()` statements before using it, printing keys and values. `smart_print` truncates long strings from data, preventing huge output logs.
|
|
31
43
|
- When an operation involves running a fixed set of steps on a list of items, run one run correctly and then use a for loop to run the steps on each item in the list.
|
|
32
44
|
- You can only import libraries that come pre-installed with Python. However, do consider searching for external functions first, using the search and load tools to access them in the code.
|
|
@@ -91,16 +103,23 @@ Note that the following tools are pre-loaded for the agent's use, and can be inl
|
|
|
91
103
|
|
|
92
104
|
|
|
93
105
|
AGENT_BUILDER_GENERATING_PROMPT = """
|
|
94
|
-
You are tasked with generating
|
|
95
|
-
|
|
106
|
+
You are tasked with generating granular, reusable Python code for an agent based on the final confirmed plan and the conversation history (user messages, assistant messages, and code executions).
|
|
107
|
+
|
|
108
|
+
Produce a set of small, single-purpose functions—typically one function per plan step—plus one top-level orchestrator function that calls the step functions in order to complete the task.
|
|
109
|
+
|
|
96
110
|
Rules-
|
|
97
|
-
- Do NOT include the searching and loading of functions. Assume
|
|
98
|
-
- Your response must be **ONLY Python code
|
|
99
|
-
-
|
|
100
|
-
|
|
101
|
-
-
|
|
102
|
-
-
|
|
103
|
-
-
|
|
111
|
+
- Do NOT include the searching and loading of functions. Assume required functions have already been loaded. Include imports you need.
|
|
112
|
+
- Your response must be **ONLY Python code**. No markdown or explanations.
|
|
113
|
+
- Define multiple top-level functions:
|
|
114
|
+
1) One small, clear function for each plan step (as granular as practical).
|
|
115
|
+
2) One top-level orchestrator function that calls the step functions in sequence to achieve the plan objectives.
|
|
116
|
+
- The orchestrator function's parameters **must exactly match the external variables** in the agent plan (the ones marked with backticks `` `variable_name` ``). Provide defaults exactly as specified in the plan when present. Variables in italics (i.e. enclosed in *...*) are internal and must not be orchestrator parameters.
|
|
117
|
+
- The orchestrator function MUST be declared with `def` or `async def` and be directly runnable with a single Python command (e.g., `image_generator(...)`). If it is async, assume the caller will `await` it.
|
|
118
|
+
- Step functions should accept only the inputs they need, return explicit outputs, and pass intermediate results forward via return values—not globals.
|
|
119
|
+
- Name functions in snake_case derived from their purpose/step. Use keyword arguments in calls; avoid positional-only calls.
|
|
120
|
+
- Keep the code self-contained and executable. Put imports at the top of the code. Do not nest functions unless strictly necessary.
|
|
121
|
+
- If previously executed code snippets exist, adapt and reuse their validated logic inside the appropriate step functions.
|
|
122
|
+
- Do not print the final output; return it from the orchestrator.
|
|
104
123
|
|
|
105
124
|
Example:
|
|
106
125
|
|
|
@@ -113,16 +132,31 @@ If the plan has:
|
|
|
113
132
|
"Upload *temp_file_path* to OneDrive folder onedrive_parent_folder(default = 'root')"
|
|
114
133
|
]
|
|
115
134
|
|
|
116
|
-
Then the
|
|
135
|
+
Then the functions should look like:
|
|
117
136
|
|
|
118
137
|
```python
|
|
119
|
-
|
|
120
|
-
|
|
138
|
+
from typing import Dict
|
|
139
|
+
|
|
140
|
+
def generate_image(image_prompt: str, style: str = "comic") -> Dict:
|
|
141
|
+
# previously validated code to call Gemini
|
|
142
|
+
...
|
|
143
|
+
|
|
144
|
+
def save_temp_image(image_result: Dict) -> str:
|
|
145
|
+
# previously validated code to write bytes to a temp file
|
|
146
|
+
...
|
|
121
147
|
|
|
122
|
-
|
|
148
|
+
def upload_to_onedrive(temp_file_path: str, onedrive_parent_folder: str = "root") -> Dict:
|
|
149
|
+
# previously validated code to upload
|
|
150
|
+
...
|
|
123
151
|
|
|
152
|
+
def image_generator(image_prompt: str, style: str = "comic", onedrive_parent_folder: str = "root") -> Dict:
|
|
153
|
+
image_result = generate_image(image_prompt=image_prompt, style=style)
|
|
154
|
+
temp_file_path = save_temp_image(image_result=image_result)
|
|
155
|
+
upload_result = upload_to_onedrive(temp_file_path=temp_file_path, onedrive_parent_folder=onedrive_parent_folder)
|
|
156
|
+
return upload_result
|
|
157
|
+
```
|
|
124
158
|
|
|
125
|
-
Use this convention consistently to generate the final
|
|
159
|
+
Use this convention consistently to generate the final code.
|
|
126
160
|
Note that the following tools are pre-loaded for the agent's use, and can be included in your code-\n
|
|
127
161
|
"""
|
|
128
162
|
|
|
@@ -203,10 +203,10 @@ def create_meta_tools(tool_registry: AgentrRegistry) -> dict[str, Any]:
|
|
|
203
203
|
)
|
|
204
204
|
|
|
205
205
|
result_parts.append("Call load_functions to select the required functions only.")
|
|
206
|
-
if 0
|
|
206
|
+
if 0 <= len(connected_apps_in_results) < len(apps_in_results):
|
|
207
207
|
result_parts.append(
|
|
208
|
-
"Unconnected app functions can also be loaded if
|
|
209
|
-
"but prefer connected ones. Ask the user to choose if none of the "
|
|
208
|
+
"Unconnected app functions can also be loaded if asked for by the user, they will generate a connection link"
|
|
209
|
+
"but prefer connected ones. Ask the user to choose the app if none of the "
|
|
210
210
|
"relevant apps are connected."
|
|
211
211
|
)
|
|
212
212
|
|
|
@@ -396,7 +396,7 @@ def create_meta_tools(tool_registry: AgentrRegistry) -> dict[str, Any]:
|
|
|
396
396
|
response = await markitdown.convert_to_markdown(uri)
|
|
397
397
|
return response
|
|
398
398
|
|
|
399
|
-
|
|
399
|
+
def save_file(file_name: str, content: str) -> dict:
|
|
400
400
|
"""
|
|
401
401
|
Saves a file to the local filesystem.
|
|
402
402
|
|
|
@@ -418,7 +418,7 @@ def create_meta_tools(tool_registry: AgentrRegistry) -> dict[str, Any]:
|
|
|
418
418
|
"file_path": Path(file_name).absolute(),
|
|
419
419
|
}
|
|
420
420
|
|
|
421
|
-
|
|
421
|
+
def upload_file(file_name: str, mime_type: str, base64_data: str) -> dict:
|
|
422
422
|
"""
|
|
423
423
|
Uploads a file to the server via the AgentrClient.
|
|
424
424
|
|
|
@@ -503,7 +503,7 @@ async def get_valid_tools(tool_ids: list[str], registry: AgentrRegistry) -> tupl
|
|
|
503
503
|
start = text.find(":") + 1
|
|
504
504
|
end = text.find(". R", start)
|
|
505
505
|
url = text[start:end].strip()
|
|
506
|
-
markdown_link = f"
|
|
506
|
+
markdown_link = f"[Connect to {app.capitalize()}]({url})"
|
|
507
507
|
unconnected_links.append(markdown_link)
|
|
508
508
|
for tool_id, tool_name in tool_entries:
|
|
509
509
|
if tool_name in available:
|
{universal_mcp_agents-0.1.23rc11 → universal_mcp_agents-0.1.24rc1}/src/universal_mcp/agents/llm.py
RENAMED
|
@@ -9,7 +9,11 @@ from loguru import logger
|
|
|
9
9
|
|
|
10
10
|
@lru_cache(maxsize=8)
|
|
11
11
|
def load_chat_model(
|
|
12
|
-
fully_specified_name: str,
|
|
12
|
+
fully_specified_name: str,
|
|
13
|
+
temperature: float = 1.0,
|
|
14
|
+
tags: tuple[str, ...] | None = None,
|
|
15
|
+
thinking: bool = True,
|
|
16
|
+
disable_streaming: bool = False,
|
|
13
17
|
) -> BaseChatModel:
|
|
14
18
|
"""Load a chat model from a fully specified name.
|
|
15
19
|
Args:
|
|
@@ -30,7 +34,7 @@ def load_chat_model(
|
|
|
30
34
|
max_tokens=8096,
|
|
31
35
|
tags=tags,
|
|
32
36
|
stream_usage=True,
|
|
33
|
-
disable_streaming
|
|
37
|
+
disable_streaming=disable_streaming,
|
|
34
38
|
) # pyright: ignore[reportCallIssue]
|
|
35
39
|
elif provider == "azure":
|
|
36
40
|
return AzureChatOpenAI(
|
|
@@ -40,7 +44,7 @@ def load_chat_model(
|
|
|
40
44
|
temperature=temperature,
|
|
41
45
|
tags=tags,
|
|
42
46
|
stream_usage=True,
|
|
43
|
-
disable_streaming
|
|
47
|
+
disable_streaming=disable_streaming,
|
|
44
48
|
)
|
|
45
49
|
elif provider == "gemini":
|
|
46
50
|
return ChatGoogleGenerativeAI(model=model, temperature=temperature)
|
|
@@ -91,7 +91,7 @@ class LlmApp(BaseApplication):
|
|
|
91
91
|
|
|
92
92
|
full_prompt = f"{prompt}\n\nContext:\n{context_str}\n\n"
|
|
93
93
|
|
|
94
|
-
model = load_chat_model("azure/gpt-5-mini", disable_streaming
|
|
94
|
+
model = load_chat_model("azure/gpt-5-mini", disable_streaming=True, tags=("quiet",))
|
|
95
95
|
response = model.with_retry(stop_after_attempt=MAX_RETRIES).invoke(full_prompt, stream=False)
|
|
96
96
|
return str(response.content)
|
|
97
97
|
|
|
@@ -158,7 +158,7 @@ class LlmApp(BaseApplication):
|
|
|
158
158
|
reason: str = Field(..., description="The reasoning behind the classification.")
|
|
159
159
|
top_class: str = Field(..., description="The class with the highest probability.")
|
|
160
160
|
|
|
161
|
-
model = load_chat_model("azure/gpt-5-mini", temperature=0, disable_streaming
|
|
161
|
+
model = load_chat_model("azure/gpt-5-mini", temperature=0, disable_streaming=True, tags=("quiet",))
|
|
162
162
|
agent = create_agent(
|
|
163
163
|
model=model,
|
|
164
164
|
tools=[],
|
|
@@ -229,7 +229,7 @@ class LlmApp(BaseApplication):
|
|
|
229
229
|
"Return ONLY a valid JSON object that conforms to the provided schema, with no extra text."
|
|
230
230
|
)
|
|
231
231
|
|
|
232
|
-
model = load_chat_model("azure/gpt-5-mini", temperature=0, disable_streaming
|
|
232
|
+
model = load_chat_model("azure/gpt-5-mini", temperature=0, disable_streaming=True, tags=("quiet",))
|
|
233
233
|
|
|
234
234
|
response = (
|
|
235
235
|
model.with_structured_output(schema=output_schema, method="json_mode")
|
|
@@ -282,7 +282,7 @@ class LlmApp(BaseApplication):
|
|
|
282
282
|
|
|
283
283
|
prompt = f"{task_instructions}\n\nContext:\n{context_str}\n\nReturn ONLY a valid JSON object, no extra text."
|
|
284
284
|
|
|
285
|
-
model = load_chat_model("azure/gpt-5-mini", temperature=0, disable_streaming
|
|
285
|
+
model = load_chat_model("azure/gpt-5-mini", temperature=0, disable_streaming=True, tags=("quiet",))
|
|
286
286
|
|
|
287
287
|
agent = create_agent(
|
|
288
288
|
model=model,
|
{universal_mcp_agents-0.1.23rc11 → universal_mcp_agents-0.1.24rc1}/.github/workflows/evals.yml
RENAMED
|
File without changes
|
{universal_mcp_agents-0.1.23rc11 → universal_mcp_agents-0.1.24rc1}/.github/workflows/lint.yml
RENAMED
|
File without changes
|
|
File without changes
|
{universal_mcp_agents-0.1.23rc11 → universal_mcp_agents-0.1.24rc1}/.github/workflows/tests.yml
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{universal_mcp_agents-0.1.23rc11 → universal_mcp_agents-0.1.24rc1}/src/evals/datasets/exact.jsonl
RENAMED
|
File without changes
|
{universal_mcp_agents-0.1.23rc11 → universal_mcp_agents-0.1.24rc1}/src/evals/datasets/tasks.jsonl
RENAMED
|
File without changes
|
{universal_mcp_agents-0.1.23rc11 → universal_mcp_agents-0.1.24rc1}/src/evals/datasets/test.jsonl
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{universal_mcp_agents-0.1.23rc11 → universal_mcp_agents-0.1.24rc1}/src/tests/test_sandbox.py
RENAMED
|
File without changes
|
|
File without changes
|
{universal_mcp_agents-0.1.23rc11 → universal_mcp_agents-0.1.24rc1}/src/universal_mcp/agents/base.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{universal_mcp_agents-0.1.23rc11 → universal_mcp_agents-0.1.24rc1}/src/universal_mcp/agents/cli.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{universal_mcp_agents-0.1.23rc11 → universal_mcp_agents-0.1.24rc1}/src/universal_mcp/agents/hil.py
RENAMED
|
File without changes
|
{universal_mcp_agents-0.1.23rc11 → universal_mcp_agents-0.1.24rc1}/src/universal_mcp/agents/react.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{universal_mcp_agents-0.1.23rc11 → universal_mcp_agents-0.1.24rc1}/src/universal_mcp/agents/utils.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|