fix: improve file content extraction logic in OpenAIProvider

- Updated the file content extraction method to check for non-empty file arrays, enhancing the handling of messages with files.
- Replaced the previous check for `message.files` with a more robust check using `isEmpty` from lodash to ensure proper validation.
This commit is contained in:
kangfenmao 2025-03-19 15:04:27 +08:00
parent a0cdf08c07
commit a3552fbfc6

View File

@ -34,7 +34,7 @@ import {
openAIToolsToMcpTool, openAIToolsToMcpTool,
upsertMCPToolResponse upsertMCPToolResponse
} from '@renderer/utils/mcp-tools' } from '@renderer/utils/mcp-tools'
import { takeRight } from 'lodash' import { isEmpty, takeRight } from 'lodash'
import OpenAI, { AzureOpenAI } from 'openai' import OpenAI, { AzureOpenAI } from 'openai'
import { import {
ChatCompletionAssistantMessageParam, ChatCompletionAssistantMessageParam,
@ -92,7 +92,7 @@ export default class OpenAIProvider extends BaseProvider {
* @returns The file content * @returns The file content
*/ */
private async extractFileContent(message: Message) { private async extractFileContent(message: Message) {
if (message.files) { if (message.files && message.files.length > 0) {
const textFiles = message.files.filter((file) => [FileTypes.TEXT, FileTypes.DOCUMENT].includes(file.type)) const textFiles = message.files.filter((file) => [FileTypes.TEXT, FileTypes.DOCUMENT].includes(file.type))
if (textFiles.length > 0) { if (textFiles.length > 0) {
@ -126,7 +126,7 @@ export default class OpenAIProvider extends BaseProvider {
const content = await this.getMessageContent(message) const content = await this.getMessageContent(message)
// If the message does not have files, return the message // If the message does not have files, return the message
if (!message.files) { if (isEmpty(message.files)) {
return { return {
role: message.role, role: message.role,
content content