diff --git a/src/api/chat.ts b/src/api/chat.ts index 66eb5dc..2dfba33 100644 --- a/src/api/chat.ts +++ b/src/api/chat.ts @@ -13,6 +13,14 @@ export interface ToolCallTrace { result: any; } +export interface ModelOverrides { + model?: string; + model_id?: string; + temperature?: number; + topP?: number; + maxTokens?: number; +} + export interface ChatMessage { id: string; role: 'user' | 'assistant' | 'agent' | 'system'; @@ -48,13 +56,12 @@ export interface ChatHistoryResp { export const ChatAPI = { history: (roomId: string) => api.get(`/rooms/${roomId}/messages`).then((r) => r.data), - send: (roomId: string, content: string, targetAgentId: string, model?: string, model_id?: string, imageUrls?: string[]) => + send: (roomId: string, content: string, targetAgentId: string, overrides?: ModelOverrides, imageUrls?: string[]) => api .post<{ user: ChatMessage; assistant: ChatMessage }>(`/rooms/${roomId}/messages`, { content, targetAgentId, - model, - model_id, + ...overrides, imageUrls }) .then((r) => r.data), diff --git a/src/api/streamChat.ts b/src/api/streamChat.ts index 1bcfc57..600b0f7 100644 --- a/src/api/streamChat.ts +++ b/src/api/streamChat.ts @@ -1,4 +1,4 @@ -import type { ChatMessage } from './chat'; +import type { ChatMessage, ModelOverrides } from './chat'; import { API_BASE_URL } from './http'; export interface StreamEvents { @@ -13,22 +13,13 @@ export interface StreamEvents { onError?: (msg: string) => void; } -export interface ModelOverrides { - model?: string; - model_id?: string; - temperature?: number; - topP?: number; - maxTokens?: number; -} - export async function streamChat( roomId: string, targetAgentId: string, content: string, handlers: StreamEvents, signal?: AbortSignal, - model?: string, - modelId?: string, + overrides?: ModelOverrides, imageUrls?: string[] ) { const resp = await fetch(`${API_BASE_URL}rooms/${roomId}/messages/stream`, { @@ -37,8 +28,7 @@ export async function streamChat( body: JSON.stringify({ content, targetAgentId, - model, - model_id: modelId, + ...overrides, imageUrls: imageUrls ?? [] }), signal, @@ -47,24 +37,6 @@ export async function streamChat( return await consumeSSE(resp, handlers, signal); } -export async function regenerateMessage( - agentId: string, - messageId: string, - handlers: StreamEvents, - signal?: AbortSignal, - overrides?: ModelOverrides, - attachmentsText?: string -) { - const resp = await fetch(`${API_BASE_URL}chat/${agentId}/messages/${messageId}/regenerate`, { - method: 'POST', - headers: { 'Content-Type': 'application/json', Accept: 'text/event-stream' }, - body: JSON.stringify({ overrides, attachmentsText }), - signal, - credentials: 'include' - }); - return await consumeSSE(resp, handlers, signal); -} - async function consumeSSE(resp: Response, h: StreamEvents, signal?: AbortSignal) { if (!resp.ok || !resp.body) { const txt = await resp.text().catch(() => ''); @@ -150,4 +122,3 @@ async function consumeSSE(resp: Response, h: StreamEvents, signal?: AbortSignal) reader.cancel().catch(() => {}); } } - diff --git a/src/components/ChatPreview.tsx b/src/components/ChatPreview.tsx index ab0d05b..bace61c 100644 --- a/src/components/ChatPreview.tsx +++ b/src/components/ChatPreview.tsx @@ -107,7 +107,7 @@ export default function ChatPreview({ agent, agentId }: Props) { }), onDone: (data) => { setMessages((m) => [...m.filter((x) => x.id !== tempUser.id), data.user, data.assistant]); - setStreaming({ active: false, text: '', retrieved: [], toolCalls: [] }); + setStreaming({ active: false, text: '', retrieved: [], toolCalls: [] }); scrollBottom(); }, onError: (errMsg) => { @@ -117,8 +117,7 @@ export default function ChatPreview({ agent, agentId }: Props) { } }, ctrl.signal, - model, - modelId + { model, model_id: modelId } ); } catch (e: any) { if (e?.name !== 'AbortError') { diff --git a/src/pages/chat/components/messages/MessageItem.tsx b/src/pages/chat/components/messages/MessageItem.tsx index 1619f63..bae761b 100644 --- a/src/pages/chat/components/messages/MessageItem.tsx +++ b/src/pages/chat/components/messages/MessageItem.tsx @@ -95,7 +95,7 @@ export default function MessageItem(props: {