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.
Files changed (67) hide show
  1. {vectorvein-0.2.88 → vectorvein-0.2.90}/PKG-INFO +1 -1
  2. {vectorvein-0.2.88 → vectorvein-0.2.90}/pyproject.toml +1 -1
  3. {vectorvein-0.2.88 → vectorvein-0.2.90}/src/vectorvein/chat_clients/utils.py +17 -3
  4. {vectorvein-0.2.88 → vectorvein-0.2.90}/src/vectorvein/types/__init__.py +12 -0
  5. {vectorvein-0.2.88 → vectorvein-0.2.90}/src/vectorvein/types/llm_parameters.py +29 -0
  6. {vectorvein-0.2.88 → vectorvein-0.2.90}/README.md +0 -0
  7. {vectorvein-0.2.88 → vectorvein-0.2.90}/src/vectorvein/__init__.py +0 -0
  8. {vectorvein-0.2.88 → vectorvein-0.2.90}/src/vectorvein/api/__init__.py +0 -0
  9. {vectorvein-0.2.88 → vectorvein-0.2.90}/src/vectorvein/api/client.py +0 -0
  10. {vectorvein-0.2.88 → vectorvein-0.2.90}/src/vectorvein/api/exceptions.py +0 -0
  11. {vectorvein-0.2.88 → vectorvein-0.2.90}/src/vectorvein/api/models.py +0 -0
  12. {vectorvein-0.2.88 → vectorvein-0.2.90}/src/vectorvein/chat_clients/__init__.py +0 -0
  13. {vectorvein-0.2.88 → vectorvein-0.2.90}/src/vectorvein/chat_clients/anthropic_client.py +0 -0
  14. {vectorvein-0.2.88 → vectorvein-0.2.90}/src/vectorvein/chat_clients/baichuan_client.py +0 -0
  15. {vectorvein-0.2.88 → vectorvein-0.2.90}/src/vectorvein/chat_clients/base_client.py +0 -0
  16. {vectorvein-0.2.88 → vectorvein-0.2.90}/src/vectorvein/chat_clients/deepseek_client.py +0 -0
  17. {vectorvein-0.2.88 → vectorvein-0.2.90}/src/vectorvein/chat_clients/ernie_client.py +0 -0
  18. {vectorvein-0.2.88 → vectorvein-0.2.90}/src/vectorvein/chat_clients/gemini_client.py +0 -0
  19. {vectorvein-0.2.88 → vectorvein-0.2.90}/src/vectorvein/chat_clients/groq_client.py +0 -0
  20. {vectorvein-0.2.88 → vectorvein-0.2.90}/src/vectorvein/chat_clients/local_client.py +0 -0
  21. {vectorvein-0.2.88 → vectorvein-0.2.90}/src/vectorvein/chat_clients/minimax_client.py +0 -0
  22. {vectorvein-0.2.88 → vectorvein-0.2.90}/src/vectorvein/chat_clients/mistral_client.py +0 -0
  23. {vectorvein-0.2.88 → vectorvein-0.2.90}/src/vectorvein/chat_clients/moonshot_client.py +0 -0
  24. {vectorvein-0.2.88 → vectorvein-0.2.90}/src/vectorvein/chat_clients/openai_client.py +0 -0
  25. {vectorvein-0.2.88 → vectorvein-0.2.90}/src/vectorvein/chat_clients/openai_compatible_client.py +0 -0
  26. {vectorvein-0.2.88 → vectorvein-0.2.90}/src/vectorvein/chat_clients/py.typed +0 -0
  27. {vectorvein-0.2.88 → vectorvein-0.2.90}/src/vectorvein/chat_clients/qwen_client.py +0 -0
  28. {vectorvein-0.2.88 → vectorvein-0.2.90}/src/vectorvein/chat_clients/stepfun_client.py +0 -0
  29. {vectorvein-0.2.88 → vectorvein-0.2.90}/src/vectorvein/chat_clients/xai_client.py +0 -0
  30. {vectorvein-0.2.88 → vectorvein-0.2.90}/src/vectorvein/chat_clients/yi_client.py +0 -0
  31. {vectorvein-0.2.88 → vectorvein-0.2.90}/src/vectorvein/chat_clients/zhipuai_client.py +0 -0
  32. {vectorvein-0.2.88 → vectorvein-0.2.90}/src/vectorvein/py.typed +0 -0
  33. {vectorvein-0.2.88 → vectorvein-0.2.90}/src/vectorvein/server/token_server.py +0 -0
  34. {vectorvein-0.2.88 → vectorvein-0.2.90}/src/vectorvein/settings/__init__.py +0 -0
  35. {vectorvein-0.2.88 → vectorvein-0.2.90}/src/vectorvein/settings/py.typed +0 -0
  36. {vectorvein-0.2.88 → vectorvein-0.2.90}/src/vectorvein/types/defaults.py +0 -0
  37. {vectorvein-0.2.88 → vectorvein-0.2.90}/src/vectorvein/types/enums.py +0 -0
  38. {vectorvein-0.2.88 → vectorvein-0.2.90}/src/vectorvein/types/exception.py +0 -0
  39. {vectorvein-0.2.88 → vectorvein-0.2.90}/src/vectorvein/types/py.typed +0 -0
  40. {vectorvein-0.2.88 → vectorvein-0.2.90}/src/vectorvein/types/settings.py +0 -0
  41. {vectorvein-0.2.88 → vectorvein-0.2.90}/src/vectorvein/utilities/media_processing.py +0 -0
  42. {vectorvein-0.2.88 → vectorvein-0.2.90}/src/vectorvein/utilities/rate_limiter.py +0 -0
  43. {vectorvein-0.2.88 → vectorvein-0.2.90}/src/vectorvein/utilities/retry.py +0 -0
  44. {vectorvein-0.2.88 → vectorvein-0.2.90}/src/vectorvein/workflow/graph/edge.py +0 -0
  45. {vectorvein-0.2.88 → vectorvein-0.2.90}/src/vectorvein/workflow/graph/node.py +0 -0
  46. {vectorvein-0.2.88 → vectorvein-0.2.90}/src/vectorvein/workflow/graph/port.py +0 -0
  47. {vectorvein-0.2.88 → vectorvein-0.2.90}/src/vectorvein/workflow/graph/workflow.py +0 -0
  48. {vectorvein-0.2.88 → vectorvein-0.2.90}/src/vectorvein/workflow/nodes/__init__.py +0 -0
  49. {vectorvein-0.2.88 → vectorvein-0.2.90}/src/vectorvein/workflow/nodes/audio_generation.py +0 -0
  50. {vectorvein-0.2.88 → vectorvein-0.2.90}/src/vectorvein/workflow/nodes/control_flows.py +0 -0
  51. {vectorvein-0.2.88 → vectorvein-0.2.90}/src/vectorvein/workflow/nodes/file_processing.py +0 -0
  52. {vectorvein-0.2.88 → vectorvein-0.2.90}/src/vectorvein/workflow/nodes/image_generation.py +0 -0
  53. {vectorvein-0.2.88 → vectorvein-0.2.90}/src/vectorvein/workflow/nodes/llms.py +0 -0
  54. {vectorvein-0.2.88 → vectorvein-0.2.90}/src/vectorvein/workflow/nodes/media_editing.py +0 -0
  55. {vectorvein-0.2.88 → vectorvein-0.2.90}/src/vectorvein/workflow/nodes/media_processing.py +0 -0
  56. {vectorvein-0.2.88 → vectorvein-0.2.90}/src/vectorvein/workflow/nodes/output.py +0 -0
  57. {vectorvein-0.2.88 → vectorvein-0.2.90}/src/vectorvein/workflow/nodes/relational_db.py +0 -0
  58. {vectorvein-0.2.88 → vectorvein-0.2.90}/src/vectorvein/workflow/nodes/text_processing.py +0 -0
  59. {vectorvein-0.2.88 → vectorvein-0.2.90}/src/vectorvein/workflow/nodes/tools.py +0 -0
  60. {vectorvein-0.2.88 → vectorvein-0.2.90}/src/vectorvein/workflow/nodes/triggers.py +0 -0
  61. {vectorvein-0.2.88 → vectorvein-0.2.90}/src/vectorvein/workflow/nodes/vector_db.py +0 -0
  62. {vectorvein-0.2.88 → vectorvein-0.2.90}/src/vectorvein/workflow/nodes/video_generation.py +0 -0
  63. {vectorvein-0.2.88 → vectorvein-0.2.90}/src/vectorvein/workflow/nodes/web_crawlers.py +0 -0
  64. {vectorvein-0.2.88 → vectorvein-0.2.90}/src/vectorvein/workflow/utils/analyse.py +0 -0
  65. {vectorvein-0.2.88 → vectorvein-0.2.90}/src/vectorvein/workflow/utils/check.py +0 -0
  66. {vectorvein-0.2.88 → vectorvein-0.2.90}/src/vectorvein/workflow/utils/json_to_code.py +0 -0
  67. {vectorvein-0.2.88 → vectorvein-0.2.90}/src/vectorvein/workflow/utils/layout.py +0 -0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.1
2
2
  Name: vectorvein
3
- Version: 0.2.88
3
+ Version: 0.2.90
4
4
  Summary: VectorVein Python SDK
5
5
  Author-Email: Anderson <andersonby@163.com>
6
6
  License: MIT
@@ -17,7 +17,7 @@ description = "VectorVein Python SDK"
17
17
  name = "vectorvein"
18
18
  readme = "README.md"
19
19
  requires-python = ">=3.10"
20
- version = "0.2.88"
20
+ version = "0.2.90"
21
21
 
22
22
  [project.license]
23
23
  text = "MIT"
@@ -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: dict, content: str, backend: BackendType):
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: list,
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