Skip to content

Commit a4bf25c

Browse files
authored
Merge pull request #1304 from narengogi/chore/video-support-bedrock
support video on bedrock
2 parents 425ea8a + da0fd23 commit a4bf25c

File tree

3 files changed

+72
-12
lines changed

3 files changed

+72
-12
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+
threegpp: 'video/three_gpp',
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.threegpp,
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 & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -1,8 +1,8 @@
11
import {
22
BEDROCK,
3-
documentMimeTypes,
43
fileExtensionMimeTypeMap,
54
imagesMimeTypes,
5+
videoMimeTypes,
66
} from '../../globals';
77
import {
88
Message,
@@ -190,7 +190,16 @@ const getMessageContent = (message: Message) => {
190190
format: fileFormat,
191191
},
192192
});
193-
} else if (documentMimeTypes.includes(mimeType)) {
193+
} else if (videoMimeTypes.includes(mimeType)) {
194+
out.push({
195+
video: {
196+
format: fileFormat,
197+
source: {
198+
bytes,
199+
},
200+
},
201+
});
202+
} else {
194203
out.push({
195204
document: {
196205
format: fileFormat,
@@ -204,25 +213,46 @@ const getMessageContent = (message: Message) => {
204213
} else if (item.type === 'file') {
205214
const mimeType = item.file?.mime_type || fileExtensionMimeTypeMap.pdf;
206215
const fileFormat = mimeType.split('/')[1];
207-
if (item.file?.file_url) {
216+
if (imagesMimeTypes.includes(mimeType)) {
208217
out.push({
209-
document: {
218+
image: {
219+
source: {
220+
...(item.file?.file_data && { bytes: item.file.file_data }),
221+
...(item.file?.file_url && {
222+
s3Location: {
223+
uri: item.file.file_url,
224+
},
225+
}),
226+
},
227+
format: fileFormat,
228+
},
229+
});
230+
} else if (videoMimeTypes.includes(mimeType)) {
231+
out.push({
232+
video: {
210233
format: fileFormat,
211-
name: item.file.file_name || crypto.randomUUID(),
212234
source: {
213-
s3Location: {
214-
uri: item.file.file_url,
215-
},
235+
...(item.file?.file_data && { bytes: item.file.file_data }),
236+
...(item.file?.file_url && {
237+
s3Location: {
238+
uri: item.file.file_url,
239+
},
240+
}),
216241
},
217242
},
218243
});
219-
} else if (item.file?.file_data) {
244+
} else {
220245
out.push({
221246
document: {
222247
format: fileFormat,
223-
name: item.file.file_name || crypto.randomUUID(),
248+
name: item.file?.file_name || crypto.randomUUID(),
224249
source: {
225-
bytes: item.file.file_data,
250+
...(item.file?.file_data && { bytes: item.file.file_data }),
251+
...(item.file?.file_url && {
252+
s3Location: {
253+
uri: item.file.file_url,
254+
},
255+
}),
226256
},
227257
},
228258
});

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)