"use client"; import { useState } from "react"; import { LoaderCircle, Send } from "lucide-react"; import { Button } from "@/components/ui/button"; import { Input } from "@/components/ui/input"; import { Label } from "@/components/ui/label"; import { Textarea } from "@/components/ui/textarea"; import { httpRequest } from "@/lib/request"; import { pretty, type ChatCompletionResponse, type ChatMessage } from "./types"; export function ChatPanel() { const [model, setModel] = useState("auto"); const [input, setInput] = useState("你好,先记住我的项目叫 chatgpt2api。"); const [messages, setMessages] = useState([]); const [raw, setRaw] = useState(null); const [loading, setLoading] = useState(false); const [error, setError] = useState(""); const sendChat = async () => { const content = input.trim(); if (!content) return; const nextMessages: ChatMessage[] = [...messages, { role: "user", content }]; setMessages(nextMessages); setInput(""); setLoading(true); setError(""); try { const result = await httpRequest("/v1/chat/completions", { method: "POST", body: { model: model.trim() || "auto", messages: nextMessages } }); setRaw(result); setMessages([...nextMessages, { role: "assistant", content: String(result.choices?.[0]?.message?.content || "") }]); } catch (err) { setError(err instanceof Error ? err.message : String(err)); } finally { setLoading(false); } }; const clearChat = () => { setMessages([]); setRaw(null); setError(""); }; return (

请求

setModel(event.target.value)} className="rounded-md border-stone-200/70 bg-transparent shadow-none dark:border-white/10" />