Spaces:
Runtime error
Runtime error
| "use client"; | |
| import { Dispatch, SetStateAction, useEffect, useState } from "react"; | |
| import { toast } from "sonner"; | |
| import { useDebounce } from "use-debounce"; | |
| import { useHasMounted } from "@/lib/utils"; | |
| import { ChatOptions } from "./chat/chat-options"; | |
| import { Textarea } from "./ui/textarea"; | |
| export interface SystemPromptProps { | |
| chatOptions: ChatOptions; | |
| setChatOptions: Dispatch<SetStateAction<ChatOptions>>; | |
| } | |
| export default function SystemPrompt({ | |
| chatOptions, | |
| setChatOptions, | |
| }: SystemPromptProps) { | |
| const hasMounted = useHasMounted(); | |
| const systemPrompt = chatOptions ? chatOptions.systemPrompt : ""; | |
| const [text, setText] = useState<string>(systemPrompt || ""); | |
| const [debouncedText] = useDebounce(text, 500); | |
| useEffect(() => { | |
| if (!hasMounted) { | |
| return; | |
| } | |
| if (debouncedText !== systemPrompt) { | |
| setChatOptions({ ...chatOptions, systemPrompt: debouncedText }); | |
| toast.success("System prompt updated", { duration: 1000 }); | |
| } | |
| }, [hasMounted, debouncedText]); | |
| return ( | |
| <div> | |
| <div className="justify-start gap-2 w-full rounded-sm px-2 text-xs"> | |
| <p>System prompt</p> | |
| </div> | |
| <div className="m-2"> | |
| <Textarea | |
| className="resize-none bg-white/20 dark:bg-card/35" | |
| autoComplete="off" | |
| rows={7} | |
| value={text} | |
| onChange={(e) => setText(e.currentTarget.value)} | |
| name="systemPrompt" | |
| placeholder="You are a helpful assistant." | |
| /> | |
| </div> | |
| </div> | |
| ); | |
| } | |