Files
MyGoNavi/frontend/src/utils/aiMessagePayload.ts
2026-06-22 15:12:42 +08:00

40 lines
1.1 KiB
TypeScript

import type { AIChatMessage, AIToolCall } from '../types';
import {
appendAIChatAttachmentsToContent,
type AIChatAttachmentTranslator,
} from '../components/ai/aiChatAttachments';
export interface AIRequestMessage {
role: AIChatMessage['role'];
content: string;
images?: string[];
tool_calls?: AIToolCall[];
tool_call_id?: string;
reasoning_content?: string;
}
export const toAIRequestMessage = (
message: AIChatMessage,
translate?: AIChatAttachmentTranslator,
): AIRequestMessage => {
const payload: AIRequestMessage = {
role: message.role,
content: appendAIChatAttachmentsToContent(message.content, message.attachments, translate),
};
if (message.images && message.images.length > 0) {
payload.images = message.images;
}
if (message.tool_calls && message.tool_calls.length > 0) {
payload.tool_calls = message.tool_calls;
}
if (message.tool_call_id) {
payload.tool_call_id = message.tool_call_id;
}
if (message.role === 'assistant' && message.reasoning_content) {
payload.reasoning_content = message.reasoning_content;
}
return payload;
};