“好事”文章推荐:《从输入 URL 到浏览器呈现页面的整体流程》
文章地址:https://cloud.tencent.com/developer/article/2471893
好文介绍:文章讲述了浏览器接收到网站地址后,经历URL解析、缓存、DNS解析、建立TCP🔗、发送http请求、服务器处理请求并响应、浏览器接收返回并解析、页面渲染八个步骤,了解这些步骤有利于开发从各个部分去做页面加载性能优化。
Ant Design X 是基于RICH,延续熟悉的 Ant Design 设计语言,全新 AGI 混合界面(Hybrid-UI)解决方案,完美融合 GUI 和自然会话交互。从唤醒到表达,从过程到反馈,合适的组件恰当的呈现在所有的人机互动过程中。是一套AI界面解决方案
@ant-design/x 是遵循 Ant Design 设计体系的一个 React UI 库,用于构建由 AI 驱动的界面,一键接入智能对话组件与 API 服务。
以npm为例,同时还支持 yarn 或 pnpm 或 bun 或 cnpm 安装
npm install @ant-design/x --save
我们基于 RICH 交互范式,在不同的交互阶段提供了大量的原子组件,帮助你灵活搭建你的 AI 对话应用:
Bubble结合markdown-it 实现打字机效果
import { UserOutlined } from '@ant-design/icons';
import { Bubble } from '@ant-design/x';
import type { BubbleProps } from '@ant-design/x';
import { Typography } from 'antd';
import markdownit from 'markdown-it';
/* eslint-disable react/no-danger */
import React from 'react';
const md = markdownit({ html: true, breaks: true });
const text = `
> Render as markdown content to show rich text!
Link: [Ant Design X](https://x.ant.design)
`.trim();
const renderMarkdown: BubbleProps['messageRender'] = (content) => (
<Typography>
{/* biome-ignore lint/security/noDangerouslySetInnerHtml: used in demo */}
<div dangerouslySetInnerHTML={{ __html: md.render(content) }} />
</Typography>
);
const App = () => {
const [renderKey, setRenderKey] = React.useState(0);
React.useEffect(() => {
const id = setTimeout(
() => {
setRenderKey((prev) => prev + 1);
},
text.length * 100 + 2000,
);
return () => {
clearTimeout(id);
};
}, [renderKey]);
return (
<div style={{ height: 100 }} key={renderKey}>
<Bubble
typing
content={text}
messageRender={renderMarkdown}
avatar={{ icon: <UserOutlined /> }}
/>
</div>
);
};
export default App;
基础示例,Sender还支持loading状态、语音输入、粘贴图片等等
import React, { useState } from 'react';
import './index.css';
import { Sender } from '@ant-design/x';
import { App, Flex } from 'antd';
const Demo: React.FC = () => {
const [value, setValue] = useState<string>('Hello? this is X!');
const [loading, setLoading] = useState<boolean>(false);
const { message } = App.useApp();
// Mock send message
React.useEffect(() => {
if (loading) {
const timer = setTimeout(() => {
setLoading(false);
message.success('Send message successfully!');
}, 3000);
return () => {
clearTimeout(timer);
};
}
}, [loading]);
return (
<Flex vertical gap="middle">
<Sender
loading={loading}
value={value}
onChange={(v) => {
setValue(v);
}}
onSubmit={() => {
setValue('');
setLoading(true);
message.info('Send message!');
}}
onCancel={() => {
setLoading(false);
message.error('Cancel sending!');
}}
/>
<Sender value="Force as loading" loading readOnly />
<Sender disabled value="Set to disabled" />
</Flex>
);
};
export default () => (
<App>
<Demo />
</App>
);
Ant Design X通过提供 useXAgent 运行时工具,帮助你开箱即用的对接符合 OpenAI 标准的模型推理服务。
import React from 'react';
import { useXAgent, Sender } from '@ant-design/x';
const App = () => {
const [agent] = useXAgent({
// 模型推理服务地址
baseURL: 'https://your.api.host',
// 模型名称
model: 'gpt-3.5',
});
function chatRequest(text: string) {
agent.request({
// 消息
messages: [
{
content: text,
role: 'user',
},
],
// 开启流式
stream: true,
});
}
return <Sender onSubmit={chatRequest} />;
};
export default App;
import React from 'react';
import { useXChat, useXAgent } from '@ant-design/x';
const App = () => {
const [agent] = useXAgent({
// 模型推理服务地址
baseURL: 'https://your.api.host',
// 模型名称
model: 'gpt-3.5',
});
const {
// 发起聊天请求
onRequest,
// 消息列表
messages,
} = useXChat({ agent });
return (
<div>
<Bubble.List items={messages} />
<Sender onSubmit={onRequest} />
</div>
);
};
export default App;
Ant Design X 作为一款专注于 AI 应用的 UI 框架,为开发者提供了完善的组件库和工具支持,简化了界面开发的流程。从设计到集成,从交互到定制,Ant Design X 提供了多种解决方案,适合不同规模和复杂度的项目需求。
如果你正在从事 AI 应用开发,Ant Design X 是一个值得尝试的选择。它能够帮助你更高效地完成界面设计和开发工作,让你的产品更快地面向用户。
Ant Design X 官方文档:https://x.ant.design/index-cn
原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。
如有侵权,请联系 cloudcommunity@tencent.com 删除。
原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。
如有侵权,请联系 cloudcommunity@tencent.com 删除。