Skip to content

Commit e9bdc4c

Browse files
rcogalclaudesteebchen
authored
feat: add ByteDance ModelArk provider with 8 models (#1435)
Co-authored-by: Claude <noreply@anthropic.com> Co-authored-by: Luca Steeb <contact@luca-steeb.com>
1 parent 201494e commit e9bdc4c

File tree

8 files changed

+228
-0
lines changed

8 files changed

+228
-0
lines changed

.github/workflows/e2e.yml

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -78,6 +78,7 @@ jobs:
7878
LLM_AZURE_RESOURCE: ${{ secrets.AZURE_RESOURCE }}
7979
LLM_CANOPY_WAVE_API_KEY: ${{ secrets.CANOPY_WAVE_API_KEY }}
8080
LLM_CEREBRAS_API_KEY: ${{ secrets.CEREBRAS_API_KEY }}
81+
LLM_BYTEDANCE_API_KEY: ${{ secrets.LLM_BYTEDANCE_API_KEY }}
8182

8283
- name: Upload shard results
8384
if: always()

packages/models/src/get-provider-endpoint.ts

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -110,6 +110,9 @@ export function getProviderEndpoint(
110110
case "nanogpt":
111111
url = "https://nano-gpt.com/api";
112112
break;
113+
case "bytedance":
114+
url = "https://ark.ap-southeast.bytepluses.com/api/v3";
115+
break;
113116
case "aws-bedrock":
114117
url =
115118
getProviderEnvValue(
@@ -293,6 +296,8 @@ export function getProviderEndpoint(
293296
return `${url}/api/v1/services/aigc/multimodal-generation/generation`;
294297
}
295298
return `${url}/v1/chat/completions`;
299+
case "bytedance":
300+
return `${url}/chat/completions`;
296301
case "inference.net":
297302
case "llmgateway":
298303
case "cloudrift":

packages/models/src/models.ts

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,6 @@
11
import { alibabaModels } from "./models/alibaba.js";
22
import { anthropicModels } from "./models/anthropic.js";
3+
import { bytedanceModels } from "./models/bytedance.js";
34
import { deepseekModels } from "./models/deepseek.js";
45
import { googleModels } from "./models/google.js";
56
import { llmgatewayModels } from "./models/llmgateway.js";
@@ -253,6 +254,7 @@ export const models = [
253254
...minimaxModels,
254255
...moonshotModels,
255256
...alibabaModels,
257+
...bytedanceModels,
256258
...nousresearchModels,
257259
...routewayModels,
258260
...zaiModels,
Lines changed: 108 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,108 @@
1+
import type { ModelDefinition } from "@/models.js";
2+
3+
export const bytedanceModels = [
4+
{
5+
id: "seed-1-6-250615",
6+
name: "Seed 1.6 (250615)",
7+
description:
8+
"ByteDance Seed 1.6 vision model with thinking/non-thinking modes, multimodal inputs, and 256K context window",
9+
family: "bytedance",
10+
releasedAt: new Date("2025-06-15"),
11+
publishedAt: new Date("2026-01-12"),
12+
providers: [
13+
{
14+
providerId: "bytedance",
15+
modelName: "seed-1-6-250615",
16+
inputPrice: 0.00025 / 1000,
17+
outputPrice: 0.002 / 1000,
18+
cachedInputPrice: 0.00005 / 1000,
19+
requestPrice: 0,
20+
contextSize: 256000,
21+
maxOutput: undefined,
22+
streaming: true,
23+
reasoning: true,
24+
vision: true,
25+
tools: true,
26+
jsonOutput: true,
27+
},
28+
],
29+
},
30+
{
31+
id: "seed-1-6-250915",
32+
name: "Seed 1.6 (250915)",
33+
description:
34+
"ByteDance Seed 1.6 vision model released September 15, 2025 with thinking/non-thinking modes and multimodal inputs",
35+
family: "bytedance",
36+
releasedAt: new Date("2025-09-15"),
37+
publishedAt: new Date("2026-01-13"),
38+
providers: [
39+
{
40+
providerId: "bytedance",
41+
modelName: "seed-1-6-250915",
42+
inputPrice: 0.00025 / 1000,
43+
cachedInputPrice: 0.00005 / 1000,
44+
outputPrice: 0.002 / 1000,
45+
requestPrice: 0,
46+
contextSize: 256000,
47+
maxOutput: undefined,
48+
streaming: true,
49+
reasoning: true,
50+
vision: true,
51+
tools: true,
52+
jsonOutput: true,
53+
},
54+
],
55+
},
56+
{
57+
id: "seed-1-6-flash-250715",
58+
name: "Seed 1.6 Flash (250715)",
59+
description:
60+
"ByteDance Seed 1.6 Flash - faster, cost-effective vision model released July 15, 2025",
61+
family: "bytedance",
62+
releasedAt: new Date("2025-07-15"),
63+
publishedAt: new Date("2026-01-13"),
64+
providers: [
65+
{
66+
providerId: "bytedance",
67+
modelName: "seed-1-6-flash-250715",
68+
inputPrice: 0.00007 / 1000,
69+
cachedInputPrice: 0.000015 / 1000,
70+
outputPrice: 0.0003 / 1000,
71+
requestPrice: 0,
72+
contextSize: 256000,
73+
maxOutput: undefined,
74+
streaming: true,
75+
reasoning: true,
76+
vision: true,
77+
tools: true,
78+
jsonOutput: true,
79+
},
80+
],
81+
},
82+
{
83+
id: "seed-1-8-251228",
84+
name: "Seed 1.8 (251228)",
85+
description:
86+
"ByteDance Seed 1.8 advanced vision model released December 28, 2025 with enhanced capabilities",
87+
family: "bytedance",
88+
releasedAt: new Date("2025-12-28"),
89+
publishedAt: new Date("2026-01-13"),
90+
providers: [
91+
{
92+
providerId: "bytedance",
93+
modelName: "seed-1-8-251228",
94+
inputPrice: 0.00025 / 1000,
95+
cachedInputPrice: 0.00005 / 1000,
96+
outputPrice: 0.002 / 1000,
97+
requestPrice: 0,
98+
contextSize: 256000,
99+
maxOutput: undefined,
100+
streaming: true,
101+
reasoning: true,
102+
vision: true,
103+
tools: true,
104+
jsonOutput: true,
105+
},
106+
],
107+
},
108+
] as const satisfies ModelDefinition[];

packages/models/src/models/deepseek.ts

Lines changed: 32 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -128,6 +128,22 @@ export const deepseekModels = [
128128
jsonOutputSchema: false,
129129
jsonOutput: true,
130130
},
131+
{
132+
providerId: "bytedance",
133+
modelName: "deepseek-v3-1-250821",
134+
inputPrice: 0.56 / 1e6,
135+
cachedInputPrice: 0.112 / 1e6,
136+
outputPrice: 1.68 / 1e6,
137+
requestPrice: 0,
138+
contextSize: 128000,
139+
maxOutput: 32768,
140+
reasoning: true,
141+
reasoningOutput: "omit" as const,
142+
streaming: true,
143+
vision: false,
144+
tools: true,
145+
jsonOutput: false,
146+
},
131147
],
132148
},
133149
{
@@ -169,6 +185,22 @@ export const deepseekModels = [
169185
jsonOutputSchema: false,
170186
jsonOutput: true,
171187
},
188+
{
189+
providerId: "bytedance",
190+
modelName: "deepseek-v3-2-251201",
191+
inputPrice: 0.28 / 1e6,
192+
cachedInputPrice: 0.056 / 1e6,
193+
outputPrice: 0.42 / 1e6,
194+
requestPrice: 0,
195+
contextSize: 131072,
196+
reasoning: true,
197+
reasoningOutput: "omit" as const,
198+
maxOutput: 131072,
199+
streaming: true,
200+
vision: false,
201+
tools: true,
202+
jsonOutput: false,
203+
},
172204
],
173205
},
174206
] as const satisfies ModelDefinition[];

packages/models/src/models/moonshot.ts

Lines changed: 29 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -91,6 +91,20 @@ export const moonshotModels = [
9191
tools: true,
9292
jsonOutput: true,
9393
},
94+
{
95+
providerId: "bytedance",
96+
modelName: "kimi-k2-250905",
97+
inputPrice: 0.6 / 1e6,
98+
cachedInputPrice: 0.12 / 1e6,
99+
outputPrice: 2.5 / 1e6,
100+
requestPrice: 0,
101+
contextSize: 256000,
102+
maxOutput: 32768,
103+
streaming: true,
104+
vision: false,
105+
tools: true,
106+
jsonOutput: false,
107+
},
94108
],
95109
},
96110
{
@@ -129,6 +143,21 @@ export const moonshotModels = [
129143
tools: true,
130144
jsonOutput: true,
131145
},
146+
{
147+
providerId: "bytedance",
148+
modelName: "kimi-k2-thinking-251104",
149+
inputPrice: 0.6 / 1e6,
150+
cachedInputPrice: 0.12 / 1e6,
151+
outputPrice: 2.5 / 1e6,
152+
requestPrice: 0,
153+
contextSize: 256000,
154+
maxOutput: 32768,
155+
reasoning: true,
156+
streaming: true,
157+
vision: false,
158+
tools: true,
159+
jsonOutput: false,
160+
},
132161
],
133162
},
134163
{

packages/models/src/providers.ts

Lines changed: 16 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -441,6 +441,22 @@ export const providers = [
441441
website: "https://nano-gpt.com",
442442
announcement: null,
443443
},
444+
{
445+
id: "bytedance",
446+
name: "ByteDance",
447+
description:
448+
"ByteDance's ModelArk platform with OpenAI-compatible API for large language models",
449+
env: {
450+
required: {
451+
apiKey: "LLM_BYTEDANCE_API_KEY",
452+
},
453+
},
454+
streaming: true,
455+
cancellation: true,
456+
color: "#FF4757",
457+
website: "https://www.byteplus.com/en/product/modelark",
458+
announcement: null,
459+
},
444460
] as const satisfies ProviderDefinition[];
445461

446462
export type ProviderId = (typeof providers)[number]["id"];

packages/shared/src/components/provider-icons.tsx

Lines changed: 35 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -103,6 +103,39 @@ export const DeepseekIcon: React.FC<React.SVGProps<SVGSVGElement>> = (
103103
</svg>
104104
);
105105

106+
// ByteDance Icon
107+
export const BytedanceIcon: React.FC<React.SVGProps<SVGSVGElement>> = (
108+
props,
109+
) => (
110+
<svg
111+
height="1em"
112+
viewBox="0 0 24 24"
113+
width="1em"
114+
xmlns="http://www.w3.org/2000/svg"
115+
{...props}
116+
>
117+
<path
118+
d="M14.944 18.587l-1.704-.445V10.01l1.824-.462c1-.254 1.84-.461 1.88-.453.032 0 .056 2.235.056 4.972v4.973l-.176-.008c-.104 0-.952-.207-1.88-.446z"
119+
fill="#00C8D2"
120+
fillRule="nonzero"
121+
/>
122+
<path
123+
d="M7 16.542c0-2.736.024-4.98.064-4.98.032-.008.872.2 1.88.454l1.816.461-.016 4.05-.024 4.049-1.632.422c-.896.23-1.736.445-1.856.469L7 21.523v-4.98z"
124+
fill="#3C8CFF"
125+
fillRule="nonzero"
126+
/>
127+
<path
128+
d="M19.24 12.477c0-9.03.008-9.515.144-9.475.072.024.784.207 1.576.406.792.207 1.576.405 1.744.445l.296.08-.016 8.56-.024 8.568-1.624.414c-.888.23-1.728.437-1.856.47l-.24.055v-9.523z"
129+
fill="#78E6DC"
130+
fillRule="nonzero"
131+
/>
132+
<path
133+
d="M1 12.509c0-4.678.024-8.505.064-8.505.032 0 .872.207 1.872.454l1.824.461v7.582c0 4.16-.016 7.574-.032 7.574-.024 0-.872.215-1.88.47L1 21.013v-8.505z"
134+
fill="#325AB4"
135+
/>
136+
</svg>
137+
);
138+
106139
// Google Studio AI Icon
107140
export const GoogleStudioAIIcon: React.FC<React.SVGProps<SVGSVGElement>> = (
108141
props,
@@ -1184,6 +1217,7 @@ export const CerebrasIcon: React.FC<React.SVGProps<SVGSVGElement>> = (
11841217
// Export all icons as a map for easy access
11851218
export const ProviderIcons = {
11861219
anthropic: AnthropicIcon,
1220+
bytedance: BytedanceIcon,
11871221
cloudrift: CloudriftIcon,
11881222
deepseek: DeepseekIcon,
11891223
"google-ai-studio": GoogleStudioAIIcon,
@@ -1216,6 +1250,7 @@ export const providerLogoUrls: Partial<
12161250
> = {
12171251
openai: ProviderIcons.openai,
12181252
anthropic: ProviderIcons.anthropic,
1253+
bytedance: ProviderIcons.bytedance,
12191254
"google-ai-studio": ProviderIcons["google-ai-studio"],
12201255
"google-vertex": ProviderIcons["google-vertex"],
12211256
"inference.net": ProviderIcons["inference.net"],

0 commit comments

Comments
 (0)