From 0f8b0fc7731c6042e051292a1cae97f11f5d8bff Mon Sep 17 00:00:00 2001 From: mrevanzak Date: Sun, 26 May 2024 02:56:08 +0700 Subject: [PATCH] feat: chat api --- apps/web/package.json | 3 +- apps/web/src/app/api/chat/route.ts | 55 +++++++++++++ apps/web/src/env.ts | 1 + bun.lockb | Bin 542184 -> 542200 bytes packages/ui/src/chat.tsx | 15 +++- yarn.lock | 119 +++++++++++++++-------------- 6 files changed, 132 insertions(+), 61 deletions(-) create mode 100644 apps/web/src/app/api/chat/route.ts diff --git a/apps/web/package.json b/apps/web/package.json index 0c7bbb0..d343a76 100644 --- a/apps/web/package.json +++ b/apps/web/package.json @@ -41,7 +41,8 @@ "react-icons": "^5.2.0", "recharts": "^2.12.7", "superjson": "2.2.1", - "zod": "^3.23.0" + "zod": "^3.23.0", + "zod-validation-error": "^3.3.0" }, "devDependencies": { "@svgr/webpack": "^8.1.0", diff --git a/apps/web/src/app/api/chat/route.ts b/apps/web/src/app/api/chat/route.ts new file mode 100644 index 0000000..6329ec8 --- /dev/null +++ b/apps/web/src/app/api/chat/route.ts @@ -0,0 +1,55 @@ +import { env } from "@/env"; +import { z } from "zod"; +import { fromZodError } from "zod-validation-error"; + +export async function POST(req: Request) { + const body = z + .object({ + messages: z + .object({ + role: z.enum(["user", "assistant"] as const), + content: z.string(), + }) + .array(), + }) + .safeParse(await req.json()); + + if (body.error) { + const error = fromZodError(body.error).toString(); + return new Response(error, { status: 400 }); + } + + const res = await fetch(env.BACKEND_URL + "/questions", { + method: "POST", + headers: { + "Content-Type": "application/json", + }, + body: JSON.stringify({ + question: body.data.messages.pop()?.content, + isBahasa: true, + }), + }); + + if (!res.body) { + return new Response("No response body", { status: 500 }); + } + const reader = res.body.getReader(); + const stream = new ReadableStream({ + async start(controller) { + while (true) { + const { done, value } = await reader.read(); + if (done) { + controller.close(); + break; + } + // Convert Uint8Array to string and remove "data: " prefix + const text = new TextDecoder().decode(value).replace(/^data:\s*/gm, ""); + + // Enqueue the modified chunk back into the stream + controller.enqueue(new TextEncoder().encode(text)); + } + }, + }); + + return new Response(stream); +} diff --git a/apps/web/src/env.ts b/apps/web/src/env.ts index 2612592..eff6de2 100644 --- a/apps/web/src/env.ts +++ b/apps/web/src/env.ts @@ -20,6 +20,7 @@ export const env = createEnv({ POSTGRES_URL: z.string().min(1), PORT: z.string().default("3000"), VERCEL_TOKEN: z.string().min(1), + BACKEND_URL: z.string().url().min(1), }, /** diff --git a/bun.lockb b/bun.lockb index 789762fa0e320c65c0a523fbccd43342ebb943be..6fc48ab65b95551ccf072096885118c7991d88a5 100755 GIT binary patch delta 78614 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 delta 78237 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 diff --git a/packages/ui/src/chat.tsx b/packages/ui/src/chat.tsx index 929a9da..51fd90d 100644 --- a/packages/ui/src/chat.tsx +++ b/packages/ui/src/chat.tsx @@ -29,13 +29,26 @@ function useChatScroll(dep: T) { return ref; } +function getChatApi() { + if (process.env.CHAT_API) { + return process.env.CHAT_API; + } + + if (process.env.NODE_ENV !== "development") { + return "https://tanya-in.vercel.app/api/chat"; + } + + // default to '/api/chat' + return undefined; +} + export function Chat() { const { messages, isLoading, append: mutate, } = useChat({ - api: "http://localhost:8000/generate_stream", + api: getChatApi(), streamMode: "text", onError: (error) => toast.error(error.message), }); diff --git a/yarn.lock b/yarn.lock index 0e38340..b0b5cb3 100644 --- a/yarn.lock +++ b/yarn.lock @@ -1,21 +1,21 @@ # THIS IS AN AUTOGENERATED FILE. DO NOT EDIT THIS FILE DIRECTLY. # yarn lockfile v1 -# bun ./bun.lockb --hash: 198042D389D2B9C3-e0d552a6a876c6f9-247ACD9CB417E852-c12409ea040b0ad6 +# bun ./bun.lockb --hash: 94C751655075BDC3-8b5d55dd641c93d5-439A8AD76AE90791-92fbf465f864692f -"@ai-sdk/provider@0.0.5": - version "0.0.5" - resolved "https://registry.npmjs.org/@ai-sdk/provider/-/provider-0.0.5.tgz" - integrity sha512-TZDldBZ5clAsNwJ2PSeo/b1uILj9a2lvi0rnOj2RCNZDgaVqFRVIAnKyeHusCRv2lzhPIw03B3fiGI6VoLzOAA== +"@ai-sdk/provider@0.0.6": + version "0.0.6" + resolved "https://registry.npmjs.org/@ai-sdk/provider/-/provider-0.0.6.tgz" + integrity sha512-kiPqIsSnUimckaUn87WepxfjPNdy8SXlPP7P6yWuG3e1NmyFHcyuH6EBBZxXLmu0oZtkb+QEeP3UDWGSc+wwKQ== dependencies: json-schema "0.4.0" -"@ai-sdk/provider-utils@0.0.8": - version "0.0.8" - resolved "https://registry.npmjs.org/@ai-sdk/provider-utils/-/provider-utils-0.0.8.tgz" - integrity sha512-J/ZNvFhORd3gCeK3jFvNrxp1Dnvy6PvPq21RJ+OsIEjsoHeKQaHALCWG0aJunXDuzd+Mck/lCg7LqA0qmIbHIg== +"@ai-sdk/provider-utils@0.0.9": + version "0.0.9" + resolved "https://registry.npmjs.org/@ai-sdk/provider-utils/-/provider-utils-0.0.9.tgz" + integrity sha512-bZFTVp/GIZ3Yz4VejYs0B93bmnwfk+RoSHAQxAe9WamkQFrZLuNgd2ngAFjF6b4naLynWe1ZCk+dLWEtozCciw== dependencies: - "@ai-sdk/provider" "0.0.5" + "@ai-sdk/provider" "0.0.6" eventsource-parser "1.1.2" nanoid "3.3.6" secure-json-parse "2.7.0" @@ -1048,9 +1048,9 @@ regenerator-runtime "^0.14.0" "@babel/runtime-corejs3@^7.9.2": - version "7.24.5" - resolved "https://registry.npmjs.org/@babel/runtime-corejs3/-/runtime-corejs3-7.24.5.tgz" - integrity sha512-GWO0mgzNMLWaSYM4z4NVIuY0Cd1fl8cPnuetuddu5w/qGuvt5Y7oUi/kvvQGK9xgOkFJDQX2heIvTRn/OQ1XTg== + version "7.24.6" + resolved "https://registry.npmjs.org/@babel/runtime-corejs3/-/runtime-corejs3-7.24.6.tgz" + integrity sha512-tbC3o8uHK9xMgMsvUm9qGqxVpbv6yborMBLbDteHIc7JDNHsTV0vDMQ5j1O1NXvO+BDELtL9KgoWYaUVIVGt8w== dependencies: core-js-pure "^3.30.2" regenerator-runtime "^0.14.0" @@ -3867,6 +3867,7 @@ recharts "^2.12.7" superjson "2.2.1" zod "^3.23.0" + zod-validation-error "^3.3.0" "@tootallnate/quickjs-emscripten@^0.23.0": version "0.23.0" @@ -4349,12 +4350,12 @@ aggregate-error@^3.0.0: indent-string "^4.0.0" ai@^3.1.12: - version "3.1.12" - resolved "https://registry.npmjs.org/ai/-/ai-3.1.12.tgz" - integrity sha512-XlurBw1sdgQCFmCTPYjKjpm+fPS6iY+tLb/PYNUEjZn3bhqosAkcqUkGJTsFP49OMAWO1Lm2oPthCakKcn6Lzw== + version "3.1.14" + resolved "https://registry.npmjs.org/ai/-/ai-3.1.14.tgz" + integrity sha512-yW9ipraLm2PzzWc74eWUUVUIVZbO/Ggv//83iBfDkOTndrBmFqyIk6DtVVzf+RwKNUYuZzj8v5MKcgnHQhceXw== dependencies: - "@ai-sdk/provider" "0.0.5" - "@ai-sdk/provider-utils" "0.0.8" + "@ai-sdk/provider" "0.0.6" + "@ai-sdk/provider-utils" "0.0.9" secure-json-parse "2.7.0" eventsource-parser "1.1.2" jsondiffpatch "0.6.0" @@ -4805,7 +4806,7 @@ chalk@^4.0.0, chalk@^4.1.0, chalk@^4.1.1, chalk@^4.1.2: ansi-styles "^4.1.0" supports-color "^7.1.0" -chalk@5.3.0, chalk@^5.3.0: +chalk@^5.3.0, chalk@~5.3.0: version "5.3.0" resolved "https://registry.npmjs.org/chalk/-/chalk-5.3.0.tgz" integrity sha512-dLitG79d+GV1Nb/VYcCDFivJeK1hiukt9QjRNVOsUtTy1rR1YJsmpGGTZ3qJos+uw7WmWF4wUwBd9jxjocFC2w== @@ -5024,7 +5025,7 @@ commander@^10.0.0: resolved "https://registry.npmjs.org/commander/-/commander-10.0.1.tgz" integrity sha512-y4Mg2tXshplEbSGzx7amzPwKKOCGuoSRP/CjEdwwk0FOGlUbq6lKuoyDZTNZkmxHdJtp54hdfY/JUrdL7Xfdug== -commander@12.1.0: +commander@~12.1.0: version "12.1.0" resolved "https://registry.npmjs.org/commander/-/commander-12.1.0.tgz" integrity sha512-Vw8qHK3bZM9y/P10u3Vib8o/DdkvA2OtPtZvD871QKjy74Wj1WSKFILMPRPSdUSx5RFK1arlJzEtA4PkFgnbuA== @@ -5333,7 +5334,7 @@ debug@^3.2.7: dependencies: ms "^2.1.1" -debug@4, debug@4.3.4, debug@^4.1.0, debug@^4.1.1, debug@^4.3.1, debug@^4.3.2, debug@^4.3.4: +debug@4, debug@^4.1.0, debug@^4.1.1, debug@^4.3.1, debug@^4.3.2, debug@^4.3.4, debug@~4.3.4: version "4.3.4" resolved "https://registry.npmjs.org/debug/-/debug-4.3.4.tgz" integrity sha512-PRWFHuSU3eDtQJPvnNY7Jcket1j0t5OuOsFzPPzsekD52Zl8qUfFIPEiswXqIvHWGVHOgX+7G/vCNNhehwxfkQ== @@ -6134,7 +6135,7 @@ execa@5.1.1, execa@^5.0.0: signal-exit "^3.0.3" strip-final-newline "^2.0.0" -execa@8.0.1: +execa@~8.0.1: version "8.0.1" resolved "https://registry.npmjs.org/execa/-/execa-8.0.1.tgz" integrity sha512-VyhnebXciFV2DESc+p6B+y0LjSm0krU4OgJN44qFAhBY0TJ+1V61tYD2+wHusZ6F9n5K+vl8k0sTy7PEfV4qpg== @@ -7275,7 +7276,7 @@ lilconfig@^3.0.0: resolved "https://registry.npmjs.org/lilconfig/-/lilconfig-3.0.0.tgz" integrity sha512-K2U4W2Ff5ibV7j7ydLr+zLAkIg5JJ4lPn1Ltsdt+Tz/IjQ8buJ55pZAxoP34lqIiwtF9iAvtLv3JGv7CAyAg+g== -lilconfig@3.1.1: +lilconfig@~3.1.1: version "3.1.1" resolved "https://registry.npmjs.org/lilconfig/-/lilconfig-3.1.1.tgz" integrity sha512-O18pf7nyvHTckunPWCV1XUNXU1piu01y2b7ATJ0ppkUkk8ocqVWBrYjJBCwHDjD/ZWcfyrA0P4gKhzWGi5EINQ== @@ -7286,22 +7287,22 @@ lines-and-columns@^1.1.6: integrity sha512-7ylylesZQ/PV29jhEDl3Ufjo6ZX7gCqJr5F7PKrqc93v7fzSymt1BpwEU8nAUXs8qzzvqhbjhK5QZg6Mt/HkBg== lint-staged@^15.2.2: - version "15.2.4" - resolved "https://registry.npmjs.org/lint-staged/-/lint-staged-15.2.4.tgz" - integrity sha512-3F9KRQIS2fVDGtCkBp4Bx0jswjX7zUcKx6OF0ZeY1prksUyKPRIIUqZhIUYAstJfvj6i48VFs4dwVIbCYwvTYQ== - dependencies: - chalk "5.3.0" - commander "12.1.0" - debug "4.3.4" - execa "8.0.1" - lilconfig "3.1.1" - listr2 "8.2.1" - micromatch "4.0.6" - pidtree "0.6.0" - string-argv "0.3.2" - yaml "2.4.2" - -listr2@8.2.1: + version "15.2.5" + resolved "https://registry.npmjs.org/lint-staged/-/lint-staged-15.2.5.tgz" + integrity sha512-j+DfX7W9YUvdzEZl3Rk47FhDF6xwDBV5wwsCPw6BwWZVPYJemusQmvb9bRsW23Sqsaa+vRloAWogbK4BUuU2zA== + dependencies: + chalk "~5.3.0" + commander "~12.1.0" + debug "~4.3.4" + execa "~8.0.1" + lilconfig "~3.1.1" + listr2 "~8.2.1" + micromatch "~4.0.7" + pidtree "~0.6.0" + string-argv "~0.3.2" + yaml "~2.4.2" + +listr2@~8.2.1: version "8.2.1" resolved "https://registry.npmjs.org/listr2/-/listr2-8.2.1.tgz" integrity sha512-irTfvpib/rNiD637xeevjO2l3Z5loZmuaRi0L0YE5LfijwVY96oyVn0DFD3o/teAok7nfobMG1THvvcHh/BP6g== @@ -7541,13 +7542,13 @@ micromatch@^4.0.4, micromatch@^4.0.5: braces "^3.0.2" picomatch "^2.3.1" -micromatch@4.0.6: - version "4.0.6" - resolved "https://registry.npmjs.org/micromatch/-/micromatch-4.0.6.tgz" - integrity sha512-Y4Ypn3oujJYxJcMacVgcs92wofTHxp9FzfDpQON4msDefoC0lb3ETvQLOdLcbhSwU1bz8HrL/1sygfBIHudrkQ== +micromatch@~4.0.7: + version "4.0.7" + resolved "https://registry.npmjs.org/micromatch/-/micromatch-4.0.7.tgz" + integrity sha512-LPP/3KorzCwBxfeUuZmaR6bG2kdeHSbe0P2tY3FLRU4vYrjYz5hI4QZwV0njUx3jeuKe67YukQ1LSPZBKDqO/Q== dependencies: braces "^3.0.3" - picomatch "^4.0.2" + picomatch "^2.3.1" mimic-fn@^2.1.0: version "2.1.0" @@ -8128,12 +8129,7 @@ picomatch@^2.0.4, picomatch@^2.2.1, picomatch@^2.3.1: resolved "https://registry.npmjs.org/picomatch/-/picomatch-2.3.1.tgz" integrity sha512-JU3teHTNjmE2VCGFzuY8EXzCDVwEqB2a8fsIvwaStHhAWJEeVd1o1QD80CU6+ZdEXXSLbSsuLwJjkCBWqRQUVA== -picomatch@^4.0.2: - version "4.0.2" - resolved "https://registry.npmjs.org/picomatch/-/picomatch-4.0.2.tgz" - integrity sha512-M7BAV6Rlcy5u+m6oPhAPFgJTzAioX/6B0DxyvDlo9l8+T3nLKbrczg2WLUyzd45L8RqfUMyGPzekbMvX2Ldkwg== - -pidtree@0.6.0: +pidtree@~0.6.0: version "0.6.0" resolved "https://registry.npmjs.org/pidtree/-/pidtree-0.6.0.tgz" integrity sha512-eG2dWTVw5bzqGRztnHExczNxt5VGsE6OwTeCG3fdUf9KBsZzO3R5OIIIzWR+iZA0NtZ+RDVdaoE2dK1cn6jH4g== @@ -8900,7 +8896,7 @@ socks-proxy-agent@^8.0.2: debug "^4.3.4" socks "^2.7.1" -solid-js@^1.2, solid-js@^1.7.7: +solid-js@^1.2: version "1.8.17" resolved "https://registry.npmjs.org/solid-js/-/solid-js-1.8.17.tgz" integrity sha512-E0FkUgv9sG/gEBWkHr/2XkBluHb1fkrHywUgA6o6XolPDCJ4g1HaLmQufcBBhiF36ee40q+HpG/vCZu7fLpI3Q== @@ -8959,9 +8955,9 @@ spdx-expression-parse@^3.0.0: spdx-license-ids "^3.0.0" spdx-license-ids@^3.0.0: - version "3.0.17" - resolved "https://registry.npmjs.org/spdx-license-ids/-/spdx-license-ids-3.0.17.tgz" - integrity sha512-sh8PWc/ftMqAAdFiBu6Fy6JUOYjqDJBJvIhpfDMyHrr0Rbp5liZqd4TjtQ/RgfLjKFZb+LMx5hpml5qOWy0qvg== + version "3.0.18" + resolved "https://registry.npmjs.org/spdx-license-ids/-/spdx-license-ids-3.0.18.tgz" + integrity sha512-xxRs31BqRYHwiMzudOrpSiHtZ8i/GeionCBDSilhYRj+9gIcI8wCZTlXZKu9vZIVqViP3dcp9qE5G6AlIaD+TQ== split2@^3.0.0: version "3.2.2" @@ -8987,7 +8983,7 @@ streamsearch@^1.1.0: resolved "https://registry.npmjs.org/streamsearch/-/streamsearch-1.1.0.tgz" integrity sha512-Mcc5wHehp9aXz1ax6bZUyY5afg9u2rv5cqQI3mRrYkGC8rW2hM02jWuwjtL++LS5qinSyhj2QfLyNsuc+VsExg== -string-argv@0.3.2: +string-argv@~0.3.2: version "0.3.2" resolved "https://registry.npmjs.org/string-argv/-/string-argv-0.3.2.tgz" integrity sha512-aqD2Q0144Z+/RqG52NeHEkZauTAUWJO8c6yTftGJKO3Tja5tUgIfmIl6kExvhtxSDP7fXB6DvzkfMpCd/F3G+Q== @@ -9164,7 +9160,7 @@ supports-preserve-symlinks-flag@^1.0.0: resolved "https://registry.npmjs.org/supports-preserve-symlinks-flag/-/supports-preserve-symlinks-flag-1.0.0.tgz" integrity sha512-ot0WnXS9fgdkgIcePe6RHNk1WA8+muPa6cSjeR3V8K27q9BB1rTE3R1p7Hv0z1ZyAc8s6Vvv8DIyWf681MAt0w== -"svelte@^3.0.0 || ^4.0.0", svelte@^4.0.0: +svelte@^4.0.0: version "4.2.17" resolved "https://registry.npmjs.org/svelte/-/svelte-4.2.17.tgz" integrity sha512-N7m1YnoXtRf5wya5Gyx3TWuTddI4nAyayyIWFojiWV5IayDYNV5i2mRp/7qNGol4DtxEYxljmrbgp1HM6hUbmQ== @@ -9751,7 +9747,7 @@ victory-vendor@^36.6.8: d3-time "^3.0.0" d3-timer "^3.0.1" -vue@3.4.27, "vue@>=3.2.26 < 4", vue@^3.3.4: +vue@3.4.27, "vue@>=3.2.26 < 4": version "3.4.27" resolved "https://registry.npmjs.org/vue/-/vue-3.4.27.tgz" integrity sha512-8s/56uK6r01r1icG/aEOHqyMVxd1bkYcSe9j8HcKtr/xTOFWvnzIVTehNW+5Yt89f+DLBe4A569pnZLS5HzAMA== @@ -9912,7 +9908,7 @@ yaml@^2.3.4: resolved "https://registry.npmjs.org/yaml/-/yaml-2.3.4.tgz" integrity sha512-8aAvwVUSHpfEqTQ4w/KMlf3HcRdt50E5ODIQJBw1fQ5RL34xabzxtUlzTXVqc4rkZsPbvrXKWnABCD7kWSmocA== -yaml@2.4.2: +yaml@~2.4.2: version "2.4.2" resolved "https://registry.npmjs.org/yaml/-/yaml-2.4.2.tgz" integrity sha512-B3VqDZ+JAg1nZpaEmWtTXUlBneoGx6CPM9b0TENK6aoSu5t73dItudwdgmi6tHlIZZId4dZ9skcAQ2UbcyAeVA== @@ -9950,7 +9946,7 @@ yocto-queue@^0.1.0: resolved "https://registry.npmjs.org/yocto-queue/-/yocto-queue-0.1.0.tgz" integrity sha512-rVksvsnNCdJ/ohGc6xgPwyN8eheCxsiLM8mxuE/t/mOVqJewPuO1miLpTHQiRgTKCLexL4MeAFVagts7HmNZ2Q== -zod@*, zod@^3.0.0, zod@^3.20.2, zod@^3.22.4, zod@^3.23.0: +zod@*, zod@^3.0.0, zod@^3.18.0, zod@^3.20.2, zod@^3.22.4, zod@^3.23.0: version "3.23.8" resolved "https://registry.npmjs.org/zod/-/zod-3.23.8.tgz" integrity sha512-XBx9AXhXktjUqnepgTiE5flcKIYWi/rme0Eaj+5Y0lftuGBq+jyRu/md4WnuxqgP1ubdpNCsYEYPxrzVHD8d6g== @@ -9959,3 +9955,8 @@ zod-to-json-schema@3.22.5: version "3.22.5" resolved "https://registry.npmjs.org/zod-to-json-schema/-/zod-to-json-schema-3.22.5.tgz" integrity sha512-+akaPo6a0zpVCCseDed504KBJUQpEW5QZw7RMneNmKw+fGaML1Z9tUNLnHHAC8x6dzVRO1eB2oEMyZRnuBZg7Q== + +zod-validation-error@^3.3.0: + version "3.3.0" + resolved "https://registry.npmjs.org/zod-validation-error/-/zod-validation-error-3.3.0.tgz" + integrity sha512-Syib9oumw1NTqEv4LT0e6U83Td9aVRk9iTXPUQr1otyV1PuXQKOvOwhMNqZIq5hluzHP2pMgnOmHEo7kPdI2mw==