| |
| |
| export const runtime = 'edge'; |
|
|
| |
| const HUGGING_FACE_API_URL = 'https://umint-ai.hf.space/api/chat'; |
|
|
| |
| interface AssistantMessagePart { |
| type: 'text' | 'file'; |
| text?: string; |
| url?: string; |
| mediaType?: string; |
| } |
|
|
| interface AssistantMessage { |
| role: 'user' | 'assistant' | 'system'; |
| parts: AssistantMessagePart[]; |
| } |
|
|
| export async function POST(req: Request) { |
| try { |
| |
| const { messages }: { messages: AssistantMessage[] } = await req.json(); |
|
|
| |
| const requestBody = { |
| messages: messages.map((msg) => ({ |
| role: msg.role, |
| parts: msg.parts.map((part) => { |
| if (part.type === 'file' && part.url) { |
| return { |
| type: 'file', |
| url: part.url, |
| mediaType: part.mediaType || 'image/jpeg', |
| }; |
| } |
| return { |
| type: 'text', |
| text: part.text || '', |
| }; |
| }), |
| })), |
| id: 'chat_' + Date.now(), |
| trigger: 'submit-message', |
| }; |
|
|
| |
| const response = await fetch(HUGGING_FACE_API_URL, { |
| method: 'POST', |
| headers: { |
| 'Content-Type': 'application/json', |
| }, |
| body: JSON.stringify(requestBody), |
| }); |
|
|
| |
| if (!response.ok) { |
| const errorText = await response.text(); |
| return new Response( |
| `Error from Hugging Face API: ${response.status} ${errorText}`, |
| { status: response.status }, |
| ); |
| } |
|
|
| |
| |
| return new Response(response.body, { |
| headers: { |
| 'Content-Type': 'text/event-stream; charset=utf-8', |
| 'Cache-Control': 'no-cache', |
| 'Connection': 'keep-alive', |
| }, |
| }); |
| } catch (error) { |
| console.error('Error in chat API route:', error); |
| return new Response('An internal error occurred.', { status: 500 }); |
| } |
| } |