Commit 523a9374 by Archer Committed by GitHub

fix: make file url name optional (#6951)

parent d4996303
...@@ -76,7 +76,7 @@ export const ChatCompletionContentPartFileSchema = z.object({ ...@@ -76,7 +76,7 @@ export const ChatCompletionContentPartFileSchema = z.object({
// FastGPT 自定义扩展:外链文件 // FastGPT 自定义扩展:外链文件
export const ChatCompletionContentPartFileTypeSchema = z.object({ export const ChatCompletionContentPartFileTypeSchema = z.object({
type: z.literal('file_url'), type: z.literal('file_url'),
name: z.string(), name: z.string().optional(),
url: z.string(), url: z.string(),
key: z.string().optional() key: z.string().optional()
}); });
......
...@@ -587,7 +587,7 @@ export const GPTMessages2Chats = ({ ...@@ -587,7 +587,7 @@ export const GPTMessages2Chats = ({
value.push({ value.push({
file: { file: {
type: ChatFileTypeEnum.file, type: ChatFileTypeEnum.file,
name: item.name, name: item.name || '',
url: item.url, url: item.url,
key: item.key key: item.key
} }
......
...@@ -1581,6 +1581,22 @@ describe('GPTMessages2Chats', () => { ...@@ -1581,6 +1581,22 @@ describe('GPTMessages2Chats', () => {
expect(fileValue.file?.name).toBe('document.pdf'); expect(fileValue.file?.name).toBe('document.pdf');
}); });
it('should convert user message with file_url content without name', () => {
const messages: ChatCompletionMessageParam[] = [
{
role: ChatCompletionRequestMessageRoleEnum.User,
content: [{ type: 'file_url', url: 'http://example.com/doc.pdf', key: 'key1' }]
}
];
const result = GPTMessages2Chats({ messages });
expect(result).toHaveLength(1);
const fileValue = result[0].value[0] as { file?: { type: string; name: string } };
expect(fileValue.file?.type).toBe(ChatFileTypeEnum.file);
expect(fileValue.file?.name).toBe('');
});
it('should convert system message with array content', () => { it('should convert system message with array content', () => {
const messages: ChatCompletionMessageParam[] = [ const messages: ChatCompletionMessageParam[] = [
{ {
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or sign in to comment