Full Thread Example
完整的聊天页面示例,展示如何使用 aui-components 构建 AI 聊天界面
以下是一个完整的 AI 聊天应用示例,涵盖了 Thread 组件的所有核心功能。
完整代码
Chat 组件
"use client";
import { AssistantRuntimeProvider, useChatRuntime } from "@assistant-ui/react";
import { Thread } from "aui-components";
export function Chat() {
const runtime = useChatRuntime({
api: "/api/chat",
});
return (
<AssistantRuntimeProvider aui={runtime.aui} runtime={runtime}>
<div className="h-screen">
<Thread />
</div>
</AssistantRuntimeProvider>
);
}API Route
import { openai } from "@ai-sdk/openai";
import { streamText } from "ai";
export async function POST(req: Request) {
const { messages } = await req.json();
const result = streamText({
model: openai("gpt-4o"),
messages,
// 启用推理可见性(Reasoning)
providerOptions: {
openai: { reasoningEffort: "medium" },
},
});
return result.toUIMessageStreamResponse();
}Page
import { Chat } from "@/components/chat";
export default function Home() {
return <Chat />;
}Layout
import type { Metadata } from "next";
import "./globals.css";
export const metadata: Metadata = {
title: "AI Chat Demo",
description: "A demo chat application using aui-components",
};
export default function RootLayout({
children,
}: {
children: React.ReactNode;
}) {
return (
<html lang="en" suppressHydrationWarning>
<body className="antialiased">
{children}
</body>
</html>
);
}CSS
@import "tailwindcss";
/* 添加 assistant-ui 所需的 CSS 变量 */
@theme {
--color-background: #fff;
--color-foreground: #0a0a0a;
--color-muted: #f5f5f5;
--color-muted-foreground: #737373;
--color-border: #e5e5e5;
--color-primary: #171717;
--color-primary-foreground: #fafafa;
--color-secondary: #f5f5f5;
--color-secondary-foreground: #171717;
--color-accent: #f5f5f5;
--color-accent-foreground: #171717;
--color-destructive: #ef4444;
--color-ring: #0a0a0a;
--color-popover: #fff;
--color-popover-foreground: #0a0a0a;
}
.dark {
--color-background: #0a0a0a;
--color-foreground: #fafafa;
--color-muted: #262626;
--color-muted-foreground: #a3a3a3;
--color-border: #262626;
--color-primary: #fafafa;
--color-primary-foreground: #171717;
--color-secondary: #262626;
--color-secondary-foreground: #fafafa;
--color-accent: #262626;
--color-accent-foreground: #fafafa;
--color-destructive: #7f1d1d;
--color-ring: #d4d4d4;
--color-popover: #0a0a0a;
--color-popover-foreground: #fafafa;
}环境变量
OPENAI_API_KEY=sk-your-key-here运行
pnpm dev打开 http://localhost:3000 即可看到聊天界面。
功能说明
这个示例展示了 aui-components 的以下功能:
- Thread — 完整聊天线程(消息列表 + 输入框)
- MarkdownText — AI 回复的 Markdown 渲染
- Composer — 输入框 + 发送/取消按钮
- 自动滚动 — 新消息自动滚动到底部
- BranchPicker — 消息分支切换
可选增强
添加工具调用
const result = streamText({
model: openai("gpt-4o"),
messages,
tools: {
search: {
description: "Search the web",
parameters: {},
execute: async ({ query }) => {
return { results: ["Result 1", "Result 2"] };
},
},
},
});自定义欢迎界面
<Thread
components={{
Welcome: () => (
<div className="flex flex-col items-center py-16">
<BotIcon className="size-12 text-primary" />
<h1 className="mt-4 text-2xl font-bold">AI Assistant</h1>
<p className="text-muted-foreground mt-2">Ask me anything!</p>
</div>
),
}}
/>相关链接
- Quick Start — 5 分钟快速开始
- Thread — Thread 组件完整 API
- Installation — 安装与配置