From 5e410785f8ddb03a6966b968411e2883fdcdb496 Mon Sep 17 00:00:00 2001 From: Marcus Schiesser <mail@marcusschiesser.de> Date: Fri, 27 Oct 2023 15:20:51 +0700 Subject: [PATCH] feat: add simple chat for nextjs template --- templates/simple/nextjs/README-template.md | 32 ++++---- .../nextjs/app/components/chat-avatar.tsx | 34 +++++++++ .../nextjs/app/components/chat-history.tsx | 34 +++++++++ .../nextjs/app/components/chat-item.tsx | 13 ++++ .../nextjs/app/components/chat-section.tsx | 45 +++++++++++ .../simple/nextjs/app/components/header.tsx | 28 +++++++ .../nextjs/app/components/message-form.tsx | 72 ++++++++++++++---- templates/simple/nextjs/app/favicon.ico | Bin 25931 -> 15406 bytes templates/simple/nextjs/app/globals.css | 12 +++ templates/simple/nextjs/app/page.tsx | 33 ++------ .../app/services/chatStorage.service.ts | 35 +++++++++ templates/simple/nextjs/public/llama.png | Bin 0 -> 36985 bytes templates/simple/nextjs/public/next.svg | 1 - templates/simple/nextjs/public/vercel.svg | 1 - 14 files changed, 275 insertions(+), 65 deletions(-) create mode 100644 templates/simple/nextjs/app/components/chat-avatar.tsx create mode 100644 templates/simple/nextjs/app/components/chat-history.tsx create mode 100644 templates/simple/nextjs/app/components/chat-item.tsx create mode 100644 templates/simple/nextjs/app/components/chat-section.tsx create mode 100644 templates/simple/nextjs/app/components/header.tsx create mode 100644 templates/simple/nextjs/app/services/chatStorage.service.ts create mode 100644 templates/simple/nextjs/public/llama.png delete mode 100644 templates/simple/nextjs/public/next.svg delete mode 100644 templates/simple/nextjs/public/vercel.svg diff --git a/templates/simple/nextjs/README-template.md b/templates/simple/nextjs/README-template.md index c4033664..1509ded7 100644 --- a/templates/simple/nextjs/README-template.md +++ b/templates/simple/nextjs/README-template.md @@ -1,17 +1,17 @@ -This is a [Next.js](https://nextjs.org/) project bootstrapped with [`create-next-app`](https://github.com/vercel/next.js/tree/canary/packages/create-next-app). +This is a [LlamaIndex](https://www.llamaindex.ai/) project using [Next.js](https://nextjs.org/) bootstrapped with [`create-llama`](https://github.com/run-llama/LlamaIndexTS/tree/main/packages/create-llama). ## Getting Started -First, run the development server: +First, install the dependencies: -```bash +``` +npm install +``` + +Second, run the development server: + +``` npm run dev -# or -yarn dev -# or -pnpm dev -# or -bun dev ``` Open [http://localhost:3000](http://localhost:3000) with your browser to see the result. @@ -22,15 +22,9 @@ This project uses [`next/font`](https://nextjs.org/docs/basic-features/font-opti ## Learn More -To learn more about Next.js, take a look at the following resources: - -- [Next.js Documentation](https://nextjs.org/docs) - learn about Next.js features and API. -- [Learn Next.js](https://nextjs.org/learn) - an interactive Next.js tutorial. - -You can check out [the Next.js GitHub repository](https://github.com/vercel/next.js/) - your feedback and contributions are welcome! - -## Deploy on Vercel +To learn more about LlamaIndex, take a look at the following resources: -The easiest way to deploy your Next.js app is to use the [Vercel Platform](https://vercel.com/new?utm_medium=default-template&filter=next.js&utm_source=create-next-app&utm_campaign=create-next-app-readme) from the creators of Next.js. +- [LlamaIndex Documentation](https://docs.llamaindex.ai) - learn about LlamaIndex (Python features). +- [LlamaIndexTS Documentation](https://ts.llamaindex.ai) - learn about LlamaIndex (Typescript features). -Check out our [Next.js deployment documentation](https://nextjs.org/docs/deployment) for more details. +You can check out [the LlamaIndexTS GitHub repository](https://github.com/run-llama/LlamaIndexTS) - your feedback and contributions are welcome! diff --git a/templates/simple/nextjs/app/components/chat-avatar.tsx b/templates/simple/nextjs/app/components/chat-avatar.tsx new file mode 100644 index 00000000..2f79edae --- /dev/null +++ b/templates/simple/nextjs/app/components/chat-avatar.tsx @@ -0,0 +1,34 @@ +"use client"; + +import { ChatMessage } from "llamaindex"; +import Image from "next/image"; + +export default function ChatAvatar(chatMessage: ChatMessage) { + if (chatMessage.role === "user") { + return ( + <div className="flex h-8 w-8 shrink-0 select-none items-center justify-center rounded-md border shadow bg-background"> + <svg + xmlns="http://www.w3.org/2000/svg" + viewBox="0 0 256 256" + fill="currentColor" + className="h-4 w-4" + > + <path d="M230.92 212c-15.23-26.33-38.7-45.21-66.09-54.16a72 72 0 1 0-73.66 0c-27.39 8.94-50.86 27.82-66.09 54.16a8 8 0 1 0 13.85 8c18.84-32.56 52.14-52 89.07-52s70.23 19.44 89.07 52a8 8 0 1 0 13.85-8ZM72 96a56 56 0 1 1 56 56 56.06 56.06 0 0 1-56-56Z"></path> + </svg> + </div> + ); + } + + return ( + <div className="flex h-8 w-8 shrink-0 select-none items-center justify-center rounded-md border bg-black text-white"> + <Image + className="rounded-md" + src="/llama.png" + alt="Llama Logo" + width={24} + height={24} + priority + /> + </div> + ); +} diff --git a/templates/simple/nextjs/app/components/chat-history.tsx b/templates/simple/nextjs/app/components/chat-history.tsx new file mode 100644 index 00000000..2eafff4c --- /dev/null +++ b/templates/simple/nextjs/app/components/chat-history.tsx @@ -0,0 +1,34 @@ +"use client"; + +import ChatItem from "@/app/components/chat-item"; +import { useChat } from "@/app/components/chat-section"; +import { useEffect, useRef } from "react"; + +export default function ChatHistory() { + const scrollableChatContainerRef = useRef<HTMLDivElement>(null); + const { chatHistory } = useChat(); + + const scrollToBottom = () => { + if (scrollableChatContainerRef.current) { + scrollableChatContainerRef.current.scrollTop = + scrollableChatContainerRef.current.scrollHeight; + } + }; + + useEffect(() => { + scrollToBottom(); + }, [chatHistory.length]); + + return ( + <div className="w-full max-w-5xl p-4 bg-white rounded-xl shadow-xl"> + <div + className="flex flex-col gap-5 divide-y h-[50vh] overflow-auto" + ref={scrollableChatContainerRef} + > + {chatHistory.map((chatMessage, index) => ( + <ChatItem key={index} {...chatMessage} /> + ))} + </div> + </div> + ); +} diff --git a/templates/simple/nextjs/app/components/chat-item.tsx b/templates/simple/nextjs/app/components/chat-item.tsx new file mode 100644 index 00000000..5d32c64e --- /dev/null +++ b/templates/simple/nextjs/app/components/chat-item.tsx @@ -0,0 +1,13 @@ +"use client"; + +import ChatAvatar from "@/app/components/chat-avatar"; +import { ChatMessage } from "llamaindex"; + +export default function ChatItem(chatMessage: ChatMessage) { + return ( + <div className="flex items-start gap-4 pt-5"> + <ChatAvatar {...chatMessage} /> + <p className="break-words">{chatMessage.content}</p> + </div> + ); +} diff --git a/templates/simple/nextjs/app/components/chat-section.tsx b/templates/simple/nextjs/app/components/chat-section.tsx new file mode 100644 index 00000000..416c56cd --- /dev/null +++ b/templates/simple/nextjs/app/components/chat-section.tsx @@ -0,0 +1,45 @@ +"use client"; + +import ChatHistory from "@/app/components/chat-history"; +import MessageForm from "@/app/components/message-form"; +import ChatStorageService from "@/app/services/chatStorage.service"; +import { ChatMessage } from "llamaindex"; +import { createContext, useContext, useEffect, useState } from "react"; + +const ChatSectionContext = createContext<{ + chatHistory: ChatMessage[]; + loadChat: () => void; +}>({ + chatHistory: [], + loadChat: () => {}, +}); + +const ChatSectionContextProvider = (props: { children: JSX.Element[] }) => { + const [chatHistory, setChatHistory] = useState<ChatMessage[]>([]); + + const loadChat = () => { + const data = ChatStorageService.getChatHistory(); + setChatHistory(data); + }; + + useEffect(() => { + loadChat(); + }, []); + + return ( + <ChatSectionContext.Provider value={{ chatHistory, loadChat }}> + {props.children} + </ChatSectionContext.Provider> + ); +}; + +export default function ChatSection() { + return ( + <ChatSectionContextProvider> + <ChatHistory /> + <MessageForm /> + </ChatSectionContextProvider> + ); +} + +export const useChat = () => useContext(ChatSectionContext); diff --git a/templates/simple/nextjs/app/components/header.tsx b/templates/simple/nextjs/app/components/header.tsx new file mode 100644 index 00000000..2b0e488f --- /dev/null +++ b/templates/simple/nextjs/app/components/header.tsx @@ -0,0 +1,28 @@ +import Image from "next/image"; + +export default function Header() { + return ( + <div className="z-10 max-w-5xl w-full items-center justify-between font-mono text-sm lg:flex"> + <p className="fixed left-0 top-0 flex w-full justify-center border-b border-gray-300 bg-gradient-to-b from-zinc-200 pb-6 pt-8 backdrop-blur-2xl dark:border-neutral-800 dark:bg-zinc-800/30 dark:from-inherit lg:static lg:w-auto lg:rounded-xl lg:border lg:bg-gray-200 lg:p-4 lg:dark:bg-zinc-800/30"> + Get started by editing + <code className="font-mono font-bold">app/page.tsx</code> + </p> + <div className="fixed bottom-0 left-0 flex h-48 w-full items-end justify-center bg-gradient-to-t from-white via-white dark:from-black dark:via-black lg:static lg:h-auto lg:w-auto lg:bg-none"> + <a + href="https://www.llamaindex.ai/" + className="flex items-center justify-center font-nunito text-lg font-bold gap-2" + > + <span>Built by LlamaIndex</span> + <Image + className="rounded-xl" + src="/llama.png" + alt="Llama Logo" + width={40} + height={40} + priority + /> + </a> + </div> + </div> + ); +} diff --git a/templates/simple/nextjs/app/components/message-form.tsx b/templates/simple/nextjs/app/components/message-form.tsx index 59f42ce3..fff39b9a 100644 --- a/templates/simple/nextjs/app/components/message-form.tsx +++ b/templates/simple/nextjs/app/components/message-form.tsx @@ -1,40 +1,80 @@ "use client"; +import { useChat } from "@/app/components/chat-section"; +import ChatStorageService from "@/app/services/chatStorage.service"; import { ChatMessage } from "llamaindex"; +import { useState } from "react"; + +const LLM_API_ROUTE = "/api/llm"; export default function MessageForm() { - const testSendMessage = async (message: string) => { - const chatHistory: ChatMessage[] = []; - const apiRoute = "/api/llm"; - const response = await fetch(apiRoute, { + const { loadChat } = useChat(); + const [loading, setLoading] = useState(false); + + const getAssistantMessage = async (message: string) => { + const response = await fetch(LLM_API_ROUTE, { method: "POST", headers: { "Content-Type": "application/json", }, - body: JSON.stringify({ message, chatHistory }), + body: JSON.stringify({ + message, + chatHistory: ChatStorageService.getChatHistory(), + }), }); const data = await response.json(); - alert(JSON.stringify(data)); + const assistantMessage = data.result as ChatMessage; + return assistantMessage; + }; + + const sendMessage = async (message: string) => { + if (!message) return; + try { + setLoading(true); + const userMessage: ChatMessage = { content: message, role: "user" }; + ChatStorageService.addChatMessage(userMessage); + loadChat(); + const assistantMessage = await getAssistantMessage(message); + ChatStorageService.addChatMessage(assistantMessage); + setLoading(false); + loadChat(); + } catch (error: any) { + alert(JSON.stringify(error)); + } + }; + + const handleFormSubmit = async (e: React.FormEvent<HTMLFormElement>) => { + e.preventDefault(); + const message = e.currentTarget.message.value; + await sendMessage(message); + }; + + const handleKeyDown = async (e: React.KeyboardEvent<HTMLTextAreaElement>) => { + if (e.key === "Enter" && !e.shiftKey) { + e.preventDefault(); + const message = e.currentTarget.value; + if (message !== "") { + await sendMessage(message); + } + } }; return ( <form - onSubmit={(e) => { - e.preventDefault(); - const message = e.currentTarget.message.value; - testSendMessage(message); - }} - className="flex flex-col items-center justify-center w-full max-w-5xl p-4 space-y-4 bg-white rounded-xl shadow-xl" + onSubmit={handleFormSubmit} + className="flex items-start justify-between w-full max-w-5xl p-4 bg-white rounded-xl shadow-xl gap-4" > - <input + <textarea + rows={1} autoFocus - type="text" name="message" placeholder="Type a message" - className="w-full p-4 rounded-xl shadow-inner" + className="w-full p-4 rounded-xl shadow-inner flex-1" + onKeyDown={handleKeyDown} /> <button + disabled={loading} type="submit" - className="p-4 text-white rounded-xl shadow-xl bg-gradient-to-r from-cyan-500 to-sky-500 dark:from-cyan-600 dark:to-sky-600" + className="p-4 text-white rounded-xl shadow-xl bg-gradient-to-r from-cyan-500 to-sky-500 disabled:opacity-50 disabled:cursor-not-allowed" > Send message </button> diff --git a/templates/simple/nextjs/app/favicon.ico b/templates/simple/nextjs/app/favicon.ico index 718d6fea4835ec2d246af9800eddb7ffb276240c..a1eaef62f2dfa895f1bbffc6595bb53d9604963e 100644 GIT binary patch literal 15406 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 KfA0a-1OEqKLE94m literal 25931 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 LrJugUA?W`A8`#=m diff --git a/templates/simple/nextjs/app/globals.css b/templates/simple/nextjs/app/globals.css index fd81e885..d85e2eec 100644 --- a/templates/simple/nextjs/app/globals.css +++ b/templates/simple/nextjs/app/globals.css @@ -25,3 +25,15 @@ body { ) rgb(var(--background-start-rgb)); } + +.background-gradient { + background-color: #fff; + background-image: radial-gradient( + at 21% 11%, + rgba(186, 186, 233, 0.53) 0, + transparent 50% + ), + radial-gradient(at 85% 0, hsla(46, 57%, 78%, 0.52) 0, transparent 50%), + radial-gradient(at 91% 36%, rgba(194, 213, 255, 0.68) 0, transparent 50%), + radial-gradient(at 8% 40%, rgba(251, 218, 239, 0.46) 0, transparent 50%); +} diff --git a/templates/simple/nextjs/app/page.tsx b/templates/simple/nextjs/app/page.tsx index a6c7e79f..31f51fac 100644 --- a/templates/simple/nextjs/app/page.tsx +++ b/templates/simple/nextjs/app/page.tsx @@ -1,34 +1,11 @@ -import MessageForm from "@/app/components/message-form"; -import Image from "next/image"; +import ChatSection from "@/app/components/chat-section"; +import Header from "@/app/components/header"; export default function Home() { return ( - <main className="flex min-h-screen flex-col items-center gap-10 p-24"> - <div className="z-10 max-w-5xl w-full items-center justify-between font-mono text-sm lg:flex"> - <p className="fixed left-0 top-0 flex w-full justify-center border-b border-gray-300 bg-gradient-to-b from-zinc-200 pb-6 pt-8 backdrop-blur-2xl dark:border-neutral-800 dark:bg-zinc-800/30 dark:from-inherit lg:static lg:w-auto lg:rounded-xl lg:border lg:bg-gray-200 lg:p-4 lg:dark:bg-zinc-800/30"> - Get started by editing - <code className="font-mono font-bold">app/page.tsx</code> - </p> - <div className="fixed bottom-0 left-0 flex h-48 w-full items-end justify-center bg-gradient-to-t from-white via-white dark:from-black dark:via-black lg:static lg:h-auto lg:w-auto lg:bg-none"> - <a - className="pointer-events-none flex place-items-center gap-2 p-8 lg:pointer-events-auto lg:p-0" - href="https://vercel.com?utm_source=create-next-app&utm_medium=appdir-template&utm_campaign=create-next-app" - target="_blank" - rel="noopener noreferrer" - > - By{" "} - <Image - src="/vercel.svg" - alt="Vercel Logo" - className="dark:invert" - width={100} - height={24} - priority - /> - </a> - </div> - </div> - <MessageForm /> + <main className="flex min-h-screen flex-col items-center gap-10 p-24 background-gradient"> + <Header /> + <ChatSection /> </main> ); } diff --git a/templates/simple/nextjs/app/services/chatStorage.service.ts b/templates/simple/nextjs/app/services/chatStorage.service.ts new file mode 100644 index 00000000..6f92ce86 --- /dev/null +++ b/templates/simple/nextjs/app/services/chatStorage.service.ts @@ -0,0 +1,35 @@ +import { ChatMessage } from "llamaindex"; + +export const CHAT_STORAGE_KEY = "chatHistory"; + +class _ChatStorageService { + public getChatHistory(): ChatMessage[] { + const chatHistory = localStorage.getItem(CHAT_STORAGE_KEY); + return chatHistory ? JSON.parse(chatHistory) : []; + } + + public saveChatHistory(chatHistory: ChatMessage[]) { + localStorage.setItem(CHAT_STORAGE_KEY, JSON.stringify(chatHistory)); + } + + public clearChatHistory() { + localStorage.removeItem(CHAT_STORAGE_KEY); + } + + public addChatMessage(chatMessage: ChatMessage) { + const chatHistory = this.getChatHistory(); + chatHistory.push(chatMessage); + this.saveChatHistory(chatHistory); + } + + constructor() { + if (typeof window !== "undefined") { + const chatHistory = localStorage.getItem(CHAT_STORAGE_KEY); + if (!chatHistory) this.saveChatHistory([]); + } + } +} + +const ChatStorageService = new _ChatStorageService(); + +export default ChatStorageService; diff --git a/templates/simple/nextjs/public/llama.png b/templates/simple/nextjs/public/llama.png new file mode 100644 index 0000000000000000000000000000000000000000..d4efba3b816bf765439c6d01b322b02684e946c3 GIT binary patch literal 36985 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 literal 0 HcmV?d00001 diff --git a/templates/simple/nextjs/public/next.svg b/templates/simple/nextjs/public/next.svg deleted file mode 100644 index 5174b28c..00000000 --- a/templates/simple/nextjs/public/next.svg +++ /dev/null @@ -1 +0,0 @@ -<svg xmlns="http://www.w3.org/2000/svg" fill="none" viewBox="0 0 394 80"><path fill="#000" d="M262 0h68.5v12.7h-27.2v66.6h-13.6V12.7H262V0ZM149 0v12.7H94v20.4h44.3v12.6H94v21h55v12.6H80.5V0h68.7zm34.3 0h-17.8l63.8 79.4h17.9l-32-39.7 32-39.6h-17.9l-23 28.6-23-28.6zm18.3 56.7-9-11-27.1 33.7h17.8l18.3-22.7z"/><path fill="#000" d="M81 79.3 17 0H0v79.3h13.6V17l50.2 62.3H81Zm252.6-.4c-1 0-1.8-.4-2.5-1s-1.1-1.6-1.1-2.6.3-1.8 1-2.5 1.6-1 2.6-1 1.8.3 2.5 1a3.4 3.4 0 0 1 .6 4.3 3.7 3.7 0 0 1-3 1.8zm23.2-33.5h6v23.3c0 2.1-.4 4-1.3 5.5a9.1 9.1 0 0 1-3.8 3.5c-1.6.8-3.5 1.3-5.7 1.3-2 0-3.7-.4-5.3-1s-2.8-1.8-3.7-3.2c-.9-1.3-1.4-3-1.4-5h6c.1.8.3 1.6.7 2.2s1 1.2 1.6 1.5c.7.4 1.5.5 2.4.5 1 0 1.8-.2 2.4-.6a4 4 0 0 0 1.6-1.8c.3-.8.5-1.8.5-3V45.5zm30.9 9.1a4.4 4.4 0 0 0-2-3.3 7.5 7.5 0 0 0-4.3-1.1c-1.3 0-2.4.2-3.3.5-.9.4-1.6 1-2 1.6a3.5 3.5 0 0 0-.3 4c.3.5.7.9 1.3 1.2l1.8 1 2 .5 3.2.8c1.3.3 2.5.7 3.7 1.2a13 13 0 0 1 3.2 1.8 8.1 8.1 0 0 1 3 6.5c0 2-.5 3.7-1.5 5.1a10 10 0 0 1-4.4 3.5c-1.8.8-4.1 1.2-6.8 1.2-2.6 0-4.9-.4-6.8-1.2-2-.8-3.4-2-4.5-3.5a10 10 0 0 1-1.7-5.6h6a5 5 0 0 0 3.5 4.6c1 .4 2.2.6 3.4.6 1.3 0 2.5-.2 3.5-.6 1-.4 1.8-1 2.4-1.7a4 4 0 0 0 .8-2.4c0-.9-.2-1.6-.7-2.2a11 11 0 0 0-2.1-1.4l-3.2-1-3.8-1c-2.8-.7-5-1.7-6.6-3.2a7.2 7.2 0 0 1-2.4-5.7 8 8 0 0 1 1.7-5 10 10 0 0 1 4.3-3.5c2-.8 4-1.2 6.4-1.2 2.3 0 4.4.4 6.2 1.2 1.8.8 3.2 2 4.3 3.4 1 1.4 1.5 3 1.5 5h-5.8z"/></svg> \ No newline at end of file diff --git a/templates/simple/nextjs/public/vercel.svg b/templates/simple/nextjs/public/vercel.svg deleted file mode 100644 index d2f84222..00000000 --- a/templates/simple/nextjs/public/vercel.svg +++ /dev/null @@ -1 +0,0 @@ -<svg xmlns="http://www.w3.org/2000/svg" fill="none" viewBox="0 0 283 64"><path fill="black" d="M141 16c-11 0-19 7-19 18s9 18 20 18c7 0 13-3 16-7l-7-5c-2 3-6 4-9 4-5 0-9-3-10-7h28v-3c0-11-8-18-19-18zm-9 15c1-4 4-7 9-7s8 3 9 7h-18zm117-15c-11 0-19 7-19 18s9 18 20 18c6 0 12-3 16-7l-8-5c-2 3-5 4-8 4-5 0-9-3-11-7h28l1-3c0-11-8-18-19-18zm-10 15c2-4 5-7 10-7s8 3 9 7h-19zm-39 3c0 6 4 10 10 10 4 0 7-2 9-5l8 5c-3 5-9 8-17 8-11 0-19-7-19-18s8-18 19-18c8 0 14 3 17 8l-8 5c-2-3-5-5-9-5-6 0-10 4-10 10zm83-29v46h-9V5h9zM37 0l37 64H0L37 0zm92 5-27 48L74 5h10l18 30 17-30h10zm59 12v10l-3-1c-6 0-10 4-10 10v15h-9V17h9v9c0-5 6-9 13-9z"/></svg> \ No newline at end of file -- GitLab