vectorvein 0.2.51__tar.gz → 0.2.53__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.
- {vectorvein-0.2.51 → vectorvein-0.2.53}/PKG-INFO +1 -1
- {vectorvein-0.2.51 → vectorvein-0.2.53}/pyproject.toml +1 -1
- {vectorvein-0.2.51 → vectorvein-0.2.53}/src/vectorvein/chat_clients/openai_compatible_client.py +0 -15
- {vectorvein-0.2.51 → vectorvein-0.2.53}/src/vectorvein/chat_clients/utils.py +17 -18
- {vectorvein-0.2.51 → vectorvein-0.2.53}/src/vectorvein/workflow/utils/check.py +4 -2
- {vectorvein-0.2.51 → vectorvein-0.2.53}/README.md +0 -0
- {vectorvein-0.2.51 → vectorvein-0.2.53}/src/vectorvein/__init__.py +0 -0
- {vectorvein-0.2.51 → vectorvein-0.2.53}/src/vectorvein/api/__init__.py +0 -0
- {vectorvein-0.2.51 → vectorvein-0.2.53}/src/vectorvein/api/client.py +0 -0
- {vectorvein-0.2.51 → vectorvein-0.2.53}/src/vectorvein/api/exceptions.py +0 -0
- {vectorvein-0.2.51 → vectorvein-0.2.53}/src/vectorvein/api/models.py +0 -0
- {vectorvein-0.2.51 → vectorvein-0.2.53}/src/vectorvein/chat_clients/__init__.py +0 -0
- {vectorvein-0.2.51 → vectorvein-0.2.53}/src/vectorvein/chat_clients/anthropic_client.py +0 -0
- {vectorvein-0.2.51 → vectorvein-0.2.53}/src/vectorvein/chat_clients/baichuan_client.py +0 -0
- {vectorvein-0.2.51 → vectorvein-0.2.53}/src/vectorvein/chat_clients/base_client.py +0 -0
- {vectorvein-0.2.51 → vectorvein-0.2.53}/src/vectorvein/chat_clients/deepseek_client.py +0 -0
- {vectorvein-0.2.51 → vectorvein-0.2.53}/src/vectorvein/chat_clients/ernie_client.py +0 -0
- {vectorvein-0.2.51 → vectorvein-0.2.53}/src/vectorvein/chat_clients/gemini_client.py +0 -0
- {vectorvein-0.2.51 → vectorvein-0.2.53}/src/vectorvein/chat_clients/groq_client.py +0 -0
- {vectorvein-0.2.51 → vectorvein-0.2.53}/src/vectorvein/chat_clients/local_client.py +0 -0
- {vectorvein-0.2.51 → vectorvein-0.2.53}/src/vectorvein/chat_clients/minimax_client.py +0 -0
- {vectorvein-0.2.51 → vectorvein-0.2.53}/src/vectorvein/chat_clients/mistral_client.py +0 -0
- {vectorvein-0.2.51 → vectorvein-0.2.53}/src/vectorvein/chat_clients/moonshot_client.py +0 -0
- {vectorvein-0.2.51 → vectorvein-0.2.53}/src/vectorvein/chat_clients/openai_client.py +0 -0
- {vectorvein-0.2.51 → vectorvein-0.2.53}/src/vectorvein/chat_clients/py.typed +0 -0
- {vectorvein-0.2.51 → vectorvein-0.2.53}/src/vectorvein/chat_clients/qwen_client.py +0 -0
- {vectorvein-0.2.51 → vectorvein-0.2.53}/src/vectorvein/chat_clients/stepfun_client.py +0 -0
- {vectorvein-0.2.51 → vectorvein-0.2.53}/src/vectorvein/chat_clients/xai_client.py +0 -0
- {vectorvein-0.2.51 → vectorvein-0.2.53}/src/vectorvein/chat_clients/yi_client.py +0 -0
- {vectorvein-0.2.51 → vectorvein-0.2.53}/src/vectorvein/chat_clients/zhipuai_client.py +0 -0
- {vectorvein-0.2.51 → vectorvein-0.2.53}/src/vectorvein/py.typed +0 -0
- {vectorvein-0.2.51 → vectorvein-0.2.53}/src/vectorvein/server/token_server.py +0 -0
- {vectorvein-0.2.51 → vectorvein-0.2.53}/src/vectorvein/settings/__init__.py +0 -0
- {vectorvein-0.2.51 → vectorvein-0.2.53}/src/vectorvein/settings/py.typed +0 -0
- {vectorvein-0.2.51 → vectorvein-0.2.53}/src/vectorvein/types/__init__.py +0 -0
- {vectorvein-0.2.51 → vectorvein-0.2.53}/src/vectorvein/types/defaults.py +0 -0
- {vectorvein-0.2.51 → vectorvein-0.2.53}/src/vectorvein/types/enums.py +0 -0
- {vectorvein-0.2.51 → vectorvein-0.2.53}/src/vectorvein/types/exception.py +0 -0
- {vectorvein-0.2.51 → vectorvein-0.2.53}/src/vectorvein/types/llm_parameters.py +0 -0
- {vectorvein-0.2.51 → vectorvein-0.2.53}/src/vectorvein/types/py.typed +0 -0
- {vectorvein-0.2.51 → vectorvein-0.2.53}/src/vectorvein/types/settings.py +0 -0
- {vectorvein-0.2.51 → vectorvein-0.2.53}/src/vectorvein/utilities/media_processing.py +0 -0
- {vectorvein-0.2.51 → vectorvein-0.2.53}/src/vectorvein/utilities/rate_limiter.py +0 -0
- {vectorvein-0.2.51 → vectorvein-0.2.53}/src/vectorvein/utilities/retry.py +0 -0
- {vectorvein-0.2.51 → vectorvein-0.2.53}/src/vectorvein/workflow/graph/edge.py +0 -0
- {vectorvein-0.2.51 → vectorvein-0.2.53}/src/vectorvein/workflow/graph/node.py +0 -0
- {vectorvein-0.2.51 → vectorvein-0.2.53}/src/vectorvein/workflow/graph/port.py +0 -0
- {vectorvein-0.2.51 → vectorvein-0.2.53}/src/vectorvein/workflow/graph/workflow.py +0 -0
- {vectorvein-0.2.51 → vectorvein-0.2.53}/src/vectorvein/workflow/nodes/__init__.py +0 -0
- {vectorvein-0.2.51 → vectorvein-0.2.53}/src/vectorvein/workflow/nodes/audio_generation.py +0 -0
- {vectorvein-0.2.51 → vectorvein-0.2.53}/src/vectorvein/workflow/nodes/control_flows.py +0 -0
- {vectorvein-0.2.51 → vectorvein-0.2.53}/src/vectorvein/workflow/nodes/file_processing.py +0 -0
- {vectorvein-0.2.51 → vectorvein-0.2.53}/src/vectorvein/workflow/nodes/image_generation.py +0 -0
- {vectorvein-0.2.51 → vectorvein-0.2.53}/src/vectorvein/workflow/nodes/llms.py +0 -0
- {vectorvein-0.2.51 → vectorvein-0.2.53}/src/vectorvein/workflow/nodes/media_editing.py +0 -0
- {vectorvein-0.2.51 → vectorvein-0.2.53}/src/vectorvein/workflow/nodes/media_processing.py +0 -0
- {vectorvein-0.2.51 → vectorvein-0.2.53}/src/vectorvein/workflow/nodes/output.py +0 -0
- {vectorvein-0.2.51 → vectorvein-0.2.53}/src/vectorvein/workflow/nodes/relational_db.py +0 -0
- {vectorvein-0.2.51 → vectorvein-0.2.53}/src/vectorvein/workflow/nodes/text_processing.py +0 -0
- {vectorvein-0.2.51 → vectorvein-0.2.53}/src/vectorvein/workflow/nodes/tools.py +0 -0
- {vectorvein-0.2.51 → vectorvein-0.2.53}/src/vectorvein/workflow/nodes/triggers.py +0 -0
- {vectorvein-0.2.51 → vectorvein-0.2.53}/src/vectorvein/workflow/nodes/vector_db.py +0 -0
- {vectorvein-0.2.51 → vectorvein-0.2.53}/src/vectorvein/workflow/nodes/video_generation.py +0 -0
- {vectorvein-0.2.51 → vectorvein-0.2.53}/src/vectorvein/workflow/nodes/web_crawlers.py +0 -0
- {vectorvein-0.2.51 → vectorvein-0.2.53}/src/vectorvein/workflow/utils/json_to_code.py +0 -0
- {vectorvein-0.2.51 → vectorvein-0.2.53}/src/vectorvein/workflow/utils/layout.py +0 -0
{vectorvein-0.2.51 → vectorvein-0.2.53}/src/vectorvein/chat_clients/openai_compatible_client.py
RENAMED
@@ -331,11 +331,6 @@ class OpenAICompatibleChatClient(BaseChatClient):
|
|
331
331
|
else:
|
332
332
|
max_tokens = self.model_setting.context_length - token_counts - 64
|
333
333
|
|
334
|
-
if response_format and self.model_setting.response_format_available:
|
335
|
-
self.response_format = {"response_format": response_format}
|
336
|
-
else:
|
337
|
-
self.response_format = {}
|
338
|
-
|
339
334
|
self._acquire_rate_limit(self.endpoint, self.model, messages)
|
340
335
|
|
341
336
|
if self.stream:
|
@@ -797,16 +792,6 @@ class AsyncOpenAICompatibleChatClient(BaseAsyncChatClient):
|
|
797
792
|
else:
|
798
793
|
tools_params = {}
|
799
794
|
|
800
|
-
if response_format and self.model_setting.response_format_available:
|
801
|
-
self.response_format = {"response_format": response_format}
|
802
|
-
else:
|
803
|
-
self.response_format = {}
|
804
|
-
|
805
|
-
if stream_options:
|
806
|
-
_stream_options_params = {"stream_options": stream_options}
|
807
|
-
else:
|
808
|
-
_stream_options_params = {}
|
809
|
-
|
810
795
|
if max_tokens is None:
|
811
796
|
max_output_tokens = self.model_setting.max_output_tokens
|
812
797
|
token_counts = get_message_token_counts(messages=messages, tools=tools, model=self.model)
|
@@ -55,30 +55,29 @@ class ToolCallContentProcessor:
|
|
55
55
|
return {}
|
56
56
|
tool_calls_matches = re.findall(self.tool_use_re, self.content)
|
57
57
|
if tool_calls_matches:
|
58
|
-
|
59
|
-
for match in tool_calls_matches:
|
58
|
+
tool_calls = []
|
59
|
+
for idx, match in enumerate(tool_calls_matches):
|
60
60
|
try:
|
61
61
|
tool_call_data = json.loads(match)
|
62
|
+
arguments = json.dumps(tool_call_data["arguments"], ensure_ascii=False)
|
63
|
+
tool_calls.append(
|
64
|
+
{
|
65
|
+
"index": idx,
|
66
|
+
"id": f"call_{idx}",
|
67
|
+
"function": {
|
68
|
+
"arguments": arguments,
|
69
|
+
"name": tool_call_data["name"],
|
70
|
+
},
|
71
|
+
"type": "function",
|
72
|
+
}
|
73
|
+
)
|
62
74
|
except json.JSONDecodeError:
|
63
75
|
print(f"Failed to parse tool call data:\nContent: {self.content}\nMatch: {match}")
|
64
76
|
|
65
|
-
if not
|
77
|
+
if not tool_calls:
|
66
78
|
return {}
|
67
79
|
|
68
|
-
|
69
|
-
return {
|
70
|
-
"tool_calls": [
|
71
|
-
{
|
72
|
-
"index": 0,
|
73
|
-
"id": "call_0",
|
74
|
-
"function": {
|
75
|
-
"arguments": arguments,
|
76
|
-
"name": tool_call_data["name"],
|
77
|
-
},
|
78
|
-
"type": "function",
|
79
|
-
}
|
80
|
-
]
|
81
|
-
}
|
80
|
+
return {"tool_calls": tool_calls}
|
82
81
|
else:
|
83
82
|
return {}
|
84
83
|
|
@@ -127,7 +126,7 @@ def get_token_counts(text: str | dict, model: str = "", use_token_server_first:
|
|
127
126
|
text = str(text)
|
128
127
|
if model == "gpt-3.5-turbo":
|
129
128
|
return len(get_gpt_35_encoding().encode(text))
|
130
|
-
elif model.startswith(("gpt-4o", "o1-")):
|
129
|
+
elif model.startswith(("gpt-4o", "o1-", "o3-")):
|
131
130
|
return len(get_gpt_4o_encoding().encode(text))
|
132
131
|
elif model.startswith(("abab", "MiniMax")):
|
133
132
|
backend_setting = settings.get_backend(BackendType.MiniMax).models[model]
|
@@ -139,10 +139,12 @@ def check_ui(workflow: "Workflow") -> UIWarning:
|
|
139
139
|
# 检查是否为输出节点
|
140
140
|
if hasattr(node, "category") and node.category == "outputs":
|
141
141
|
warnings["has_output_nodes"] = True
|
142
|
+
continue # 输出节点不检查连接覆盖问题
|
142
143
|
|
143
144
|
# 检查节点的输入端口
|
144
|
-
|
145
|
-
|
145
|
+
ports = node.ports if hasattr(node, "ports") else {}
|
146
|
+
for port_name in ports.keys():
|
147
|
+
port = ports.get(port_name)
|
146
148
|
# 确保是输入端口且设置为显示
|
147
149
|
if hasattr(port, "show") and getattr(port, "show", False) and isinstance(port, InputPort):
|
148
150
|
has_shown_input_ports = True
|
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
|
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
|
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
|
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
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|