diff --git a/src/pages/TestPrompt.tsx b/src/pages/TestPrompt.tsx index 07e8e37..88cd29c 100644 --- a/src/pages/TestPrompt.tsx +++ b/src/pages/TestPrompt.tsx @@ -1,9 +1,10 @@ -import { useState } from "react"; +import { useState, useRef, useEffect } from "react"; import { Card } from "@/components/ui/card"; import { Button } from "@/components/ui/button"; -import { Textarea } from "@/components/ui/textarea"; +import { Input } from "@/components/ui/input"; import { Label } from "@/components/ui/label"; -import { ThumbsUp, ThumbsDown, Send, Sparkles } from "lucide-react"; +import { ScrollArea } from "@/components/ui/scroll-area"; +import { Send, Bot, User } from "lucide-react"; import { Select, SelectContent, @@ -12,102 +13,159 @@ import { SelectValue, } from "@/components/ui/select"; +type Message = { + id: string; + role: "user" | "assistant"; + content: string; +}; + export default function TestPrompt() { const [input, setInput] = useState(""); - const [output, setOutput] = useState(""); + const [messages, setMessages] = useState([]); const [isLoading, setIsLoading] = useState(false); + const [selectedPrompt, setSelectedPrompt] = useState(""); + const scrollRef = useRef(null); - const handleTest = () => { + useEffect(() => { + if (scrollRef.current) { + scrollRef.current.scrollTop = scrollRef.current.scrollHeight; + } + }, [messages]); + + const handleSend = () => { + if (!input.trim() || !selectedPrompt) return; + + const userMessage: Message = { + id: Date.now().toString(), + role: "user", + content: input, + }; + + setMessages((prev) => [...prev, userMessage]); + setInput(""); setIsLoading(true); + setTimeout(() => { - setOutput( - "Esta é uma resposta simulada do agente de IA. Em produção, esta resposta seria gerada pelo modelo de IA configurado com o prompt selecionado." - ); + const aiMessage: Message = { + id: (Date.now() + 1).toString(), + role: "assistant", + content: + "Esta é uma resposta simulada do agente de IA. Em produção, esta resposta seria gerada pelo modelo de IA configurado com o prompt selecionado. A conversa continua naturalmente.", + }; + setMessages((prev) => [...prev, aiMessage]); setIsLoading(false); }, 1500); }; + const handleKeyPress = (e: React.KeyboardEvent) => { + if (e.key === "Enter" && !e.shiftKey) { + e.preventDefault(); + handleSend(); + } + }; + return ( -
-
+
+

Teste de Prompt

- Teste seus prompts em tempo real e avalie as respostas geradas + Converse com a IA para testar como o prompt se comporta

-
- + + {/* Selector de Prompt */} +
+ + +
+ + {/* Chat Area */} +
-
- - -
+ {messages.length === 0 ? ( +
+

Selecione um prompt e comece a conversar

+
+ ) : ( + messages.map((message) => ( +
+ {message.role === "assistant" && ( +
+ +
+ )} +
+

{message.content}

+
+ {message.role === "user" && ( +
+ +
+ )} +
+ )) + )} + {isLoading && ( +
+
+ +
+
+
+
+
+
+
+
+
+ )} +
+ -
- -