diff --git a/src/app/api/chat/route.ts b/src/app/api/chat/route.ts new file mode 100644 index 0000000..4a59e6b --- /dev/null +++ b/src/app/api/chat/route.ts @@ -0,0 +1,20 @@ +import { streamText } from "ai"; +import { createOpenAI } from "@ai-sdk/openai"; + +const openai = createOpenAI({ + apiKey: process.env.OPENAI_API_KEY || "", + baseURL: process.env.OPENAI_BASE_URL || "", +}); + +export const maxDuration = 30; + +export async function POST(req: Request) { + const { messages } = await req.json(); + + const result = await streamText({ + model: openai("gpt-4o-mini"), + messages, + }); + + return result.toDataStreamResponse(); +} diff --git a/src/components/chat-support.tsx b/src/components/chat-support.tsx index 106365e..0fb0e13 100644 --- a/src/components/chat-support.tsx +++ b/src/components/chat-support.tsx @@ -1,3 +1,5 @@ +"use client"; + import { ChatBubble, ChatBubbleAvatar, @@ -13,8 +15,10 @@ import { import { ChatMessageList } from "@/components/ui/chat/chat-message-list"; import { Button } from "./ui/button"; import { Send } from "lucide-react"; +import { useChat } from "ai/react"; export default function ChatSupport() { + const { messages, input, handleInputChange, handleSubmit } = useChat(); return ( @@ -27,17 +31,33 @@ export default function ChatSupport() { - - - {/* {message.content} */} - + {messages.map((message, index) => ( + + + + {message.content} + + + ))} - - +
+
+ + +
+
);