import { ToolItem } from "@/hook/type"; import { ref } from "vue"; export interface ChatMessage { role: 'user' | 'assistant' | 'system' | 'tool'; content: string; tool_call_id?: string name?: string // 工具名称,当 role 为 tool tool_calls?: ToolCall[] } // 新增状态和工具数据 interface EnableToolItem { name: string; description: string; enabled: boolean; } export interface ChatSetting { modelIndex: number systemPrompt: string enableTools: EnableToolItem[] temperature: number enableWebSearch: boolean contextLength: number } export interface ChatStorage { messages: ChatMessage[] settings: ChatSetting } export interface ToolCall { id?: string; index?: number; type: string; function: { name: string; arguments: string; } } export const allTools = ref([]); export function getToolSchema(enableTools: EnableToolItem[]) { const toolsSchema = []; for (let i = 0; i < enableTools.length; i++) { if (enableTools[i].enabled) { const tool = allTools.value[i]; toolsSchema.push({ type: 'function', function: { name: tool.name, description: tool.description || "", parameters: tool.inputSchema } }); } } return toolsSchema; }