mirror of
https://github.com/Syngnat/GoNavi.git
synced 2026-08-11 09:13:36 +08:00
40 lines
1.1 KiB
TypeScript
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;
|
|
};
|