Skip to content

Commit 180f78c

Browse files
committed
support video on bedrock
1 parent da07600 commit 180f78c

File tree

3 files changed

+72
-11
lines changed

3 files changed

+72
-11
lines changed

src/globals.ts

Lines changed: 15 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -215,6 +215,8 @@ export const fileExtensionMimeTypeMap = {
215215
mpegps: 'video/mpegps',
216216
flv: 'video/flv',
217217
webm: 'video/webm',
218+
mkv: 'video/mkv',
219+
three_gpp: 'video/3gpp',
218220
};
219221

220222
export const imagesMimeTypes = [
@@ -238,6 +240,19 @@ export const documentMimeTypes = [
238240
fileExtensionMimeTypeMap.txt,
239241
];
240242

243+
export const videoMimeTypes = [
244+
fileExtensionMimeTypeMap.mkv,
245+
fileExtensionMimeTypeMap.mov,
246+
fileExtensionMimeTypeMap.mp4,
247+
fileExtensionMimeTypeMap.webm,
248+
fileExtensionMimeTypeMap.flv,
249+
fileExtensionMimeTypeMap.mpeg,
250+
fileExtensionMimeTypeMap.mpg,
251+
fileExtensionMimeTypeMap.wmv,
252+
fileExtensionMimeTypeMap.three_gpp,
253+
fileExtensionMimeTypeMap.avi,
254+
];
255+
241256
export enum BatchEndpoints {
242257
CHAT_COMPLETIONS = '/v1/chat/completions',
243258
COMPLETIONS = '/v1/completions',

src/providers/bedrock/chatComplete.ts

Lines changed: 41 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -3,6 +3,7 @@ import {
33
documentMimeTypes,
44
fileExtensionMimeTypeMap,
55
imagesMimeTypes,
6+
videoMimeTypes,
67
} from '../../globals';
78
import {
89
Message,
@@ -190,7 +191,16 @@ const getMessageContent = (message: Message) => {
190191
format: fileFormat,
191192
},
192193
});
193-
} else if (documentMimeTypes.includes(mimeType)) {
194+
} else if (videoMimeTypes.includes(mimeType)) {
195+
out.push({
196+
video: {
197+
format: fileFormat,
198+
source: {
199+
bytes,
200+
},
201+
},
202+
});
203+
} else {
194204
out.push({
195205
document: {
196206
format: fileFormat,
@@ -204,25 +214,46 @@ const getMessageContent = (message: Message) => {
204214
} else if (item.type === 'file') {
205215
const mimeType = item.file?.mime_type || fileExtensionMimeTypeMap.pdf;
206216
const fileFormat = mimeType.split('/')[1];
207-
if (item.file?.file_url) {
217+
if (imagesMimeTypes.includes(mimeType)) {
208218
out.push({
209-
document: {
219+
image: {
220+
source: {
221+
...(item.file?.file_data && { bytes: item.file.file_data }),
222+
...(item.file?.file_url && {
223+
s3Location: {
224+
uri: item.file.file_url,
225+
},
226+
}),
227+
},
228+
format: fileFormat,
229+
},
230+
});
231+
} else if (videoMimeTypes.includes(mimeType)) {
232+
out.push({
233+
video: {
210234
format: fileFormat,
211-
name: item.file.file_name || crypto.randomUUID(),
212235
source: {
213-
s3Location: {
214-
uri: item.file.file_url,
215-
},
236+
...(item.file?.file_data && { bytes: item.file.file_data }),
237+
...(item.file?.file_url && {
238+
s3Location: {
239+
uri: item.file.file_url,
240+
},
241+
}),
216242
},
217243
},
218244
});
219-
} else if (item.file?.file_data) {
245+
} else {
220246
out.push({
221247
document: {
222248
format: fileFormat,
223-
name: item.file.file_name || crypto.randomUUID(),
249+
name: item.file?.file_name || crypto.randomUUID(),
224250
source: {
225-
bytes: item.file.file_data,
251+
...(item.file?.file_data && { bytes: item.file.file_data }),
252+
...(item.file?.file_url && {
253+
s3Location: {
254+
uri: item.file.file_url,
255+
},
256+
}),
226257
},
227258
},
228259
});

src/providers/bedrock/types.ts

Lines changed: 16 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -136,7 +136,11 @@ export type BedrockContentItem = {
136136
};
137137
image?: {
138138
source: {
139-
bytes: string;
139+
bytes?: string;
140+
s3Location?: {
141+
uri: string;
142+
bucketOwner?: string;
143+
};
140144
};
141145
format: string;
142146
};
@@ -147,6 +151,17 @@ export type BedrockContentItem = {
147151
bytes?: string;
148152
s3Location?: {
149153
uri: string;
154+
bucketOwner?: string;
155+
};
156+
};
157+
};
158+
video?: {
159+
format: string;
160+
source: {
161+
bytes?: string;
162+
s3Location?: {
163+
uri: string;
164+
bucketOwner?: string;
150165
};
151166
};
152167
};

0 commit comments

Comments
 (0)