useChat 钩子,构建一个由您的 Agent 服务驱动的简洁无头聊天界面。
前提条件
- 运行中的 Agent 服务,需暴露
send-message端点(SSE) - 已安装
@ag-kit/ui-react的 React 应用
快速开始(React)
typescript
功能说明
- 从
uiMessages渲染用户和助手的文本消息 - 流式交互体验:通过
streaming禁用输入并显示简单的”正在输入”提示 - 无头模式:您可完全控制布局和样式
创建智能聊天界面
useChat 钩子,构建一个由您的 Agent 服务驱动的简洁无头聊天界面。
send-message 端点(SSE)@ag-kit/ui-react 的 React 应用import React, { useState } from "react";
import { useChat } from "@ag-kit/ui-react";
export default function Chat() {
const { uiMessages, sendMessage, streaming } = useChat({
// Defaults to "/send-message"; update if your endpoint differs
url: "/send-message",
});
const [input, setInput] = useState("");
return (
<div>
<div>
{uiMessages
.filter((m) => m.role === "user" || m.role === "assistant")
.map((m, mi) => (
<div key={mi}>
{m.parts.map((p, pi) =>
p.type === "text" ? (
<p key={pi}>
{m.role}: {p.text}
</p>
) : null
)}
</div>
))}
{streaming && <p>Assistant is typing…</p>}
</div>
<form
onSubmit={(e) => {
e.preventDefault();
if (!input.trim()) return;
sendMessage(input);
setInput("");
}}
>
<input
value={input}
onChange={(e) => setInput(e.target.value)}
placeholder="Type a message"
disabled={streaming}
/>
<button disabled={streaming || !input.trim()}>Send</button>
</form>
</div>
);
}
uiMessages 渲染用户和助手的文本消息streaming 禁用输入并显示简单的”正在输入”提示此页面对您有帮助吗?