Skip to content

Commit 688e5ee

Browse files
sinomoe刘江波
authored and
刘江波
committed
feat(ark): support doubao vision series models (langgenius#11740)
1 parent 0436db4 commit 688e5ee

File tree

4 files changed

+30
-4
lines changed

4 files changed

+30
-4
lines changed

api/core/model_runtime/model_providers/volcengine_maas/client.py

+2-4
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,3 @@
1-
import re
21
from collections.abc import Generator
32
from typing import Optional, cast
43

@@ -104,17 +103,16 @@ def convert_prompt_message(message: PromptMessage) -> ChatCompletionMessageParam
104103
if message_content.type == PromptMessageContentType.TEXT:
105104
content.append(
106105
ChatCompletionContentPartTextParam(
107-
text=message_content.text,
106+
text=message_content.data,
108107
type="text",
109108
)
110109
)
111110
elif message_content.type == PromptMessageContentType.IMAGE:
112111
message_content = cast(ImagePromptMessageContent, message_content)
113-
image_data = re.sub(r"^data:image\/[a-zA-Z]+;base64,", "", message_content.data)
114112
content.append(
115113
ChatCompletionContentPartImageParam(
116114
image_url=ImageURL(
117-
url=image_data,
115+
url=message_content.data,
118116
detail=message_content.detail.value,
119117
),
120118
type="image_url",

api/core/model_runtime/model_providers/volcengine_maas/llm/llm.py

+8
Original file line numberDiff line numberDiff line change
@@ -132,6 +132,14 @@ def _get_num_tokens_v3(self, messages: list[PromptMessage]) -> int:
132132
messages_dict = [ArkClientV3.convert_prompt_message(m) for m in messages]
133133
for message in messages_dict:
134134
for key, value in message.items():
135+
# Ignore tokens for image type
136+
if isinstance(value, list):
137+
text = ""
138+
for item in value:
139+
if isinstance(item, dict) and item["type"] == "text":
140+
text += item["text"]
141+
142+
value = text
135143
num_tokens += self._get_num_tokens_by_gpt2(str(key))
136144
num_tokens += self._get_num_tokens_by_gpt2(str(value))
137145

api/core/model_runtime/model_providers/volcengine_maas/llm/models.py

+8
Original file line numberDiff line numberDiff line change
@@ -16,6 +16,14 @@ class ModelConfig(BaseModel):
1616

1717

1818
configs: dict[str, ModelConfig] = {
19+
"Doubao-vision-pro-32k": ModelConfig(
20+
properties=ModelProperties(context_size=32768, max_tokens=4096, mode=LLMMode.CHAT),
21+
features=[ModelFeature.VISION],
22+
),
23+
"Doubao-vision-lite-32k": ModelConfig(
24+
properties=ModelProperties(context_size=32768, max_tokens=4096, mode=LLMMode.CHAT),
25+
features=[ModelFeature.VISION],
26+
),
1927
"Doubao-pro-4k": ModelConfig(
2028
properties=ModelProperties(context_size=4096, max_tokens=4096, mode=LLMMode.CHAT),
2129
features=[ModelFeature.TOOL_CALL],

api/core/model_runtime/model_providers/volcengine_maas/volcengine_maas.yaml

+12
Original file line numberDiff line numberDiff line change
@@ -118,6 +118,18 @@ model_credential_schema:
118118
type: select
119119
required: true
120120
options:
121+
- label:
122+
en_US: Doubao-vision-pro-32k
123+
value: Doubao-vision-pro-32k
124+
show_on:
125+
- variable: __model_type
126+
value: llm
127+
- label:
128+
en_US: Doubao-vision-lite-32k
129+
value: Doubao-vision-lite-32k
130+
show_on:
131+
- variable: __model_type
132+
value: llm
121133
- label:
122134
en_US: Doubao-pro-4k
123135
value: Doubao-pro-4k

0 commit comments

Comments
 (0)