diff --git a/frontend/.env.example b/frontend/.env.example index d527d98..3ae5493 100644 --- a/frontend/.env.example +++ b/frontend/.env.example @@ -1 +1,2 @@ -OPENAI_API_KEY=YOUR_API_KEY \ No newline at end of file +OPENAI_API_KEY=YOUR_API_KEY +NEXT_PUBLIC_DOCKER_URL=http://localhost:3333 \ No newline at end of file diff --git a/frontend/package.json b/frontend/package.json index cce0694..81e0fa2 100644 --- a/frontend/package.json +++ b/frontend/package.json @@ -12,6 +12,7 @@ "@headlessui/react": "^1.7.15", "@headlessui/tailwindcss": "^0.1.3", "@heroicons/react": "^2.0.18", + "@tailwindcss/typography": "^0.5.9", "@types/node": "20.3.1", "@types/react": "18.2.14", "@types/react-dom": "18.2.6", @@ -37,6 +38,7 @@ "sqlite3": "^5.1.6", "tailwindcss": "3.3.2", "typescript": "5.1.3", + "uuid": "^9.0.0", "winston": "^3.9.0" }, "devDependencies": { diff --git a/frontend/src/pages/chat.tsx b/frontend/src/pages/chat.tsx index d7cd5d2..913e8ab 100644 --- a/frontend/src/pages/chat.tsx +++ b/frontend/src/pages/chat.tsx @@ -46,7 +46,7 @@ export default function Chat() { console.log('formData: ', formData); try { - const response = await fetch('http://localhost:3333/upload', { + const response = await fetch(`${process.env.NEXT_PUBLIC_DOCKER_URL}/upload`, { method: 'POST', body: formData }); @@ -71,7 +71,7 @@ export default function Chat() { const onDeleteFile = async () => { try { - const response = await fetch(`http://localhost:3333/delete-file?fileName=${uploadedFileName}`, { + const response = await fetch(`${process.env.NEXT_PUBLIC_DOCKER_URL}/delete-file?fileName=${uploadedFileName}`, { method: 'DELETE', }); @@ -113,7 +113,7 @@ export default function Chat() { if (reader) { while (!done) { - setMessageIsStreaming(true); + if (cancelStreamRef.current === true) { abortController.abort(); done = true; @@ -168,7 +168,7 @@ export default function Chat() { } } } - setMessageIsStreaming(false); + } return assistantMessageContent; @@ -225,7 +225,7 @@ export default function Chat() { // throw new Error('Endpoint is undefined'); const functionCallMessage: Message = { role: 'assistant', content: `I'm sorry, I used the incorret function name '${functionName}'. Let me try again:\n` }; setMessages(prevMessages => [...prevMessages, functionCallMessage]); - fetchChat([...messages, functionCallMessage], abortController); + await fetchChat([...messages, functionCallMessage], abortController); } else { console.log('endpoint: ', endpoint) const pluginResponse = await fetch(`${serverUrl}${endpoint}`, { @@ -239,7 +239,7 @@ export default function Chat() { console.log('parsedFunctionCallResponse.result: ', parsedFunctionCallResponse.result ?? '') const functionCallMessage: Message = { role: 'function', name: functionName, content: `result: ${parsedFunctionCallResponse.result}` ?? 'result: ok' }; setMessages(prevMessages => [...prevMessages, functionCallMessage]); - fetchChat([...messages, functionCallMessage], abortController); + await fetchChat([...messages, functionCallMessage], abortController); } } } catch (error) {