vectorvein 0.2.88__tar.gz → 0.2.90__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.88 → vectorvein-0.2.90}/PKG-INFO +1 -1
- {vectorvein-0.2.88 → vectorvein-0.2.90}/pyproject.toml +1 -1
- {vectorvein-0.2.88 → vectorvein-0.2.90}/src/vectorvein/chat_clients/utils.py +17 -3
- {vectorvein-0.2.88 → vectorvein-0.2.90}/src/vectorvein/types/__init__.py +12 -0
- {vectorvein-0.2.88 → vectorvein-0.2.90}/src/vectorvein/types/llm_parameters.py +29 -0
- {vectorvein-0.2.88 → vectorvein-0.2.90}/README.md +0 -0
- {vectorvein-0.2.88 → vectorvein-0.2.90}/src/vectorvein/__init__.py +0 -0
- {vectorvein-0.2.88 → vectorvein-0.2.90}/src/vectorvein/api/__init__.py +0 -0
- {vectorvein-0.2.88 → vectorvein-0.2.90}/src/vectorvein/api/client.py +0 -0
- {vectorvein-0.2.88 → vectorvein-0.2.90}/src/vectorvein/api/exceptions.py +0 -0
- {vectorvein-0.2.88 → vectorvein-0.2.90}/src/vectorvein/api/models.py +0 -0
- {vectorvein-0.2.88 → vectorvein-0.2.90}/src/vectorvein/chat_clients/__init__.py +0 -0
- {vectorvein-0.2.88 → vectorvein-0.2.90}/src/vectorvein/chat_clients/anthropic_client.py +0 -0
- {vectorvein-0.2.88 → vectorvein-0.2.90}/src/vectorvein/chat_clients/baichuan_client.py +0 -0
- {vectorvein-0.2.88 → vectorvein-0.2.90}/src/vectorvein/chat_clients/base_client.py +0 -0
- {vectorvein-0.2.88 → vectorvein-0.2.90}/src/vectorvein/chat_clients/deepseek_client.py +0 -0
- {vectorvein-0.2.88 → vectorvein-0.2.90}/src/vectorvein/chat_clients/ernie_client.py +0 -0
- {vectorvein-0.2.88 → vectorvein-0.2.90}/src/vectorvein/chat_clients/gemini_client.py +0 -0
- {vectorvein-0.2.88 → vectorvein-0.2.90}/src/vectorvein/chat_clients/groq_client.py +0 -0
- {vectorvein-0.2.88 → vectorvein-0.2.90}/src/vectorvein/chat_clients/local_client.py +0 -0
- {vectorvein-0.2.88 → vectorvein-0.2.90}/src/vectorvein/chat_clients/minimax_client.py +0 -0
- {vectorvein-0.2.88 → vectorvein-0.2.90}/src/vectorvein/chat_clients/mistral_client.py +0 -0
- {vectorvein-0.2.88 → vectorvein-0.2.90}/src/vectorvein/chat_clients/moonshot_client.py +0 -0
- {vectorvein-0.2.88 → vectorvein-0.2.90}/src/vectorvein/chat_clients/openai_client.py +0 -0
- {vectorvein-0.2.88 → vectorvein-0.2.90}/src/vectorvein/chat_clients/openai_compatible_client.py +0 -0
- {vectorvein-0.2.88 → vectorvein-0.2.90}/src/vectorvein/chat_clients/py.typed +0 -0
- {vectorvein-0.2.88 → vectorvein-0.2.90}/src/vectorvein/chat_clients/qwen_client.py +0 -0
- {vectorvein-0.2.88 → vectorvein-0.2.90}/src/vectorvein/chat_clients/stepfun_client.py +0 -0
- {vectorvein-0.2.88 → vectorvein-0.2.90}/src/vectorvein/chat_clients/xai_client.py +0 -0
- {vectorvein-0.2.88 → vectorvein-0.2.90}/src/vectorvein/chat_clients/yi_client.py +0 -0
- {vectorvein-0.2.88 → vectorvein-0.2.90}/src/vectorvein/chat_clients/zhipuai_client.py +0 -0
- {vectorvein-0.2.88 → vectorvein-0.2.90}/src/vectorvein/py.typed +0 -0
- {vectorvein-0.2.88 → vectorvein-0.2.90}/src/vectorvein/server/token_server.py +0 -0
- {vectorvein-0.2.88 → vectorvein-0.2.90}/src/vectorvein/settings/__init__.py +0 -0
- {vectorvein-0.2.88 → vectorvein-0.2.90}/src/vectorvein/settings/py.typed +0 -0
- {vectorvein-0.2.88 → vectorvein-0.2.90}/src/vectorvein/types/defaults.py +0 -0
- {vectorvein-0.2.88 → vectorvein-0.2.90}/src/vectorvein/types/enums.py +0 -0
- {vectorvein-0.2.88 → vectorvein-0.2.90}/src/vectorvein/types/exception.py +0 -0
- {vectorvein-0.2.88 → vectorvein-0.2.90}/src/vectorvein/types/py.typed +0 -0
- {vectorvein-0.2.88 → vectorvein-0.2.90}/src/vectorvein/types/settings.py +0 -0
- {vectorvein-0.2.88 → vectorvein-0.2.90}/src/vectorvein/utilities/media_processing.py +0 -0
- {vectorvein-0.2.88 → vectorvein-0.2.90}/src/vectorvein/utilities/rate_limiter.py +0 -0
- {vectorvein-0.2.88 → vectorvein-0.2.90}/src/vectorvein/utilities/retry.py +0 -0
- {vectorvein-0.2.88 → vectorvein-0.2.90}/src/vectorvein/workflow/graph/edge.py +0 -0
- {vectorvein-0.2.88 → vectorvein-0.2.90}/src/vectorvein/workflow/graph/node.py +0 -0
- {vectorvein-0.2.88 → vectorvein-0.2.90}/src/vectorvein/workflow/graph/port.py +0 -0
- {vectorvein-0.2.88 → vectorvein-0.2.90}/src/vectorvein/workflow/graph/workflow.py +0 -0
- {vectorvein-0.2.88 → vectorvein-0.2.90}/src/vectorvein/workflow/nodes/__init__.py +0 -0
- {vectorvein-0.2.88 → vectorvein-0.2.90}/src/vectorvein/workflow/nodes/audio_generation.py +0 -0
- {vectorvein-0.2.88 → vectorvein-0.2.90}/src/vectorvein/workflow/nodes/control_flows.py +0 -0
- {vectorvein-0.2.88 → vectorvein-0.2.90}/src/vectorvein/workflow/nodes/file_processing.py +0 -0
- {vectorvein-0.2.88 → vectorvein-0.2.90}/src/vectorvein/workflow/nodes/image_generation.py +0 -0
- {vectorvein-0.2.88 → vectorvein-0.2.90}/src/vectorvein/workflow/nodes/llms.py +0 -0
- {vectorvein-0.2.88 → vectorvein-0.2.90}/src/vectorvein/workflow/nodes/media_editing.py +0 -0
- {vectorvein-0.2.88 → vectorvein-0.2.90}/src/vectorvein/workflow/nodes/media_processing.py +0 -0
- {vectorvein-0.2.88 → vectorvein-0.2.90}/src/vectorvein/workflow/nodes/output.py +0 -0
- {vectorvein-0.2.88 → vectorvein-0.2.90}/src/vectorvein/workflow/nodes/relational_db.py +0 -0
- {vectorvein-0.2.88 → vectorvein-0.2.90}/src/vectorvein/workflow/nodes/text_processing.py +0 -0
- {vectorvein-0.2.88 → vectorvein-0.2.90}/src/vectorvein/workflow/nodes/tools.py +0 -0
- {vectorvein-0.2.88 → vectorvein-0.2.90}/src/vectorvein/workflow/nodes/triggers.py +0 -0
- {vectorvein-0.2.88 → vectorvein-0.2.90}/src/vectorvein/workflow/nodes/vector_db.py +0 -0
- {vectorvein-0.2.88 → vectorvein-0.2.90}/src/vectorvein/workflow/nodes/video_generation.py +0 -0
- {vectorvein-0.2.88 → vectorvein-0.2.90}/src/vectorvein/workflow/nodes/web_crawlers.py +0 -0
- {vectorvein-0.2.88 → vectorvein-0.2.90}/src/vectorvein/workflow/utils/analyse.py +0 -0
- {vectorvein-0.2.88 → vectorvein-0.2.90}/src/vectorvein/workflow/utils/check.py +0 -0
- {vectorvein-0.2.88 → vectorvein-0.2.90}/src/vectorvein/workflow/utils/json_to_code.py +0 -0
- {vectorvein-0.2.88 → vectorvein-0.2.90}/src/vectorvein/workflow/utils/layout.py +0 -0
@@ -4,7 +4,7 @@ import re
|
|
4
4
|
import json
|
5
5
|
import warnings
|
6
6
|
from math import ceil
|
7
|
-
from typing import Iterable
|
7
|
+
from typing import Iterable, cast
|
8
8
|
|
9
9
|
import httpx
|
10
10
|
import tiktoken
|
@@ -18,6 +18,9 @@ from ..types.llm_parameters import (
|
|
18
18
|
NotGiven,
|
19
19
|
NOT_GIVEN,
|
20
20
|
ToolParam,
|
21
|
+
VectorVeinMessage,
|
22
|
+
VectorVeinTextMessage,
|
23
|
+
VectorVeinWorkflowMessage,
|
21
24
|
)
|
22
25
|
|
23
26
|
|
@@ -435,7 +438,7 @@ def format_image_message(image: str, backend: BackendType = BackendType.OpenAI,
|
|
435
438
|
return {"type": "image_url", "image_url": {"url": image}}
|
436
439
|
|
437
440
|
|
438
|
-
def format_workflow_messages(message:
|
441
|
+
def format_workflow_messages(message: VectorVeinWorkflowMessage, content: str, backend: BackendType):
|
439
442
|
formatted_messages = []
|
440
443
|
|
441
444
|
# 工具调用消息
|
@@ -626,7 +629,7 @@ def transform_from_openai_message(
|
|
626
629
|
|
627
630
|
|
628
631
|
def format_messages(
|
629
|
-
messages:
|
632
|
+
messages: Iterable[ChatCompletionMessageParam | VectorVeinMessage],
|
630
633
|
backend: BackendType = BackendType.OpenAI,
|
631
634
|
native_multimodal: bool = False,
|
632
635
|
function_call_available: bool = False,
|
@@ -652,16 +655,27 @@ def format_messages(
|
|
652
655
|
|
653
656
|
for message in messages:
|
654
657
|
if is_vectorvein_message(message):
|
658
|
+
message = cast(VectorVeinMessage, message)
|
659
|
+
match message["content_type"]:
|
660
|
+
case "TXT":
|
661
|
+
message = cast(VectorVeinTextMessage, message)
|
662
|
+
case "WKF":
|
663
|
+
message = cast(VectorVeinWorkflowMessage, message)
|
664
|
+
case _:
|
665
|
+
raise ValueError(f"Unsupported message type: {message['content_type']}")
|
655
666
|
# 处理 VectorVein 格式的消息
|
656
667
|
content = message["content"]["text"]
|
657
668
|
if message["content_type"] == "TXT":
|
669
|
+
message = cast(VectorVeinTextMessage, message)
|
658
670
|
role = "user" if message["author_type"] == "U" else "assistant"
|
659
671
|
formatted_message = format_text_message(content, role, message.get("attachments", []), backend, native_multimodal, process_image)
|
660
672
|
formatted_messages.append(formatted_message)
|
661
673
|
elif message["content_type"] == "WKF" and message["status"] in ("S", "R"):
|
674
|
+
message = cast(VectorVeinWorkflowMessage, message)
|
662
675
|
formatted_messages.extend(format_workflow_messages(message, content, backend))
|
663
676
|
else:
|
664
677
|
# 处理 OpenAI 格式的消息
|
678
|
+
message = cast(ChatCompletionMessageParam, message)
|
665
679
|
formatted_message = transform_from_openai_message(message, backend, native_multimodal, function_call_available, process_image)
|
666
680
|
formatted_messages.append(formatted_message)
|
667
681
|
|
@@ -44,12 +44,18 @@ from .llm_parameters import (
|
|
44
44
|
Usage,
|
45
45
|
ChatCompletionMessage,
|
46
46
|
ChatCompletionDeltaMessage,
|
47
|
+
ChatCompletionStreamOptionsParam,
|
47
48
|
NotGiven,
|
48
49
|
NOT_GIVEN,
|
49
50
|
OpenAIToolParam,
|
50
51
|
ToolParam,
|
51
52
|
Tools,
|
52
53
|
ToolChoice,
|
54
|
+
AnthropicToolParam,
|
55
|
+
AnthropicToolChoice,
|
56
|
+
OPENAI_NOT_GIVEN,
|
57
|
+
ANTHROPIC_NOT_GIVEN,
|
58
|
+
VectorVeinMessage,
|
53
59
|
)
|
54
60
|
from .settings import (
|
55
61
|
RedisConfigDict,
|
@@ -117,6 +123,12 @@ __all__ = [
|
|
117
123
|
"Usage",
|
118
124
|
"ChatCompletionMessage",
|
119
125
|
"ChatCompletionDeltaMessage",
|
126
|
+
"ChatCompletionStreamOptionsParam",
|
127
|
+
"AnthropicToolParam",
|
128
|
+
"AnthropicToolChoice",
|
129
|
+
"OPENAI_NOT_GIVEN",
|
130
|
+
"ANTHROPIC_NOT_GIVEN",
|
131
|
+
"VectorVeinMessage",
|
120
132
|
"NotGiven",
|
121
133
|
"NOT_GIVEN",
|
122
134
|
"OpenAIToolParam",
|
@@ -1,6 +1,7 @@
|
|
1
1
|
# @Author: Bi Ying
|
2
2
|
# @Date: 2024-07-26 23:48:04
|
3
3
|
from typing import List, Dict, Optional, Union, Iterable, Literal
|
4
|
+
from typing_extensions import TypedDict, NotRequired
|
4
5
|
|
5
6
|
import httpx
|
6
7
|
from pydantic import BaseModel, Field
|
@@ -26,6 +27,33 @@ from . import defaults as defs
|
|
26
27
|
from .settings import EndpointOptionDict
|
27
28
|
|
28
29
|
|
30
|
+
class VectorVeinTextMessage(TypedDict):
|
31
|
+
mid: NotRequired[str]
|
32
|
+
author_type: Literal["U", "A"] # "U" for user, "A" for assistant
|
33
|
+
content_type: Literal["TXT"]
|
34
|
+
status: NotRequired[str]
|
35
|
+
create_time: NotRequired[int]
|
36
|
+
update_time: NotRequired[int]
|
37
|
+
metadata: NotRequired[dict]
|
38
|
+
content: Dict[str, str]
|
39
|
+
attachments: NotRequired[List[str]]
|
40
|
+
|
41
|
+
|
42
|
+
class VectorVeinWorkflowMessage(TypedDict):
|
43
|
+
mid: NotRequired[str]
|
44
|
+
author_type: Literal["U", "A"] # "U" for user, "A" for assistant
|
45
|
+
content_type: Literal["WKF"]
|
46
|
+
status: str
|
47
|
+
create_time: NotRequired[int]
|
48
|
+
update_time: NotRequired[int]
|
49
|
+
metadata: dict
|
50
|
+
content: Dict[str, str]
|
51
|
+
attachments: NotRequired[List[str]]
|
52
|
+
|
53
|
+
|
54
|
+
VectorVeinMessage = Union[VectorVeinTextMessage, VectorVeinWorkflowMessage]
|
55
|
+
|
56
|
+
|
29
57
|
class EndpointSetting(BaseModel):
|
30
58
|
id: str = Field(..., description="The id of the endpoint.")
|
31
59
|
region: Optional[str] = Field(None, description="The region for the endpoint.")
|
@@ -215,4 +243,5 @@ __all__ = [
|
|
215
243
|
"ResponseFormat",
|
216
244
|
"ThinkingConfigParam",
|
217
245
|
"ThinkingConfigEnabledParam",
|
246
|
+
"VectorVeinMessage",
|
218
247
|
]
|
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
|
{vectorvein-0.2.88 → vectorvein-0.2.90}/src/vectorvein/chat_clients/openai_compatible_client.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
|
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
|