Ant Design X:用最少的代码快速构建 AI 聊天界面

news/2025/1/31 5:15:37/文章来源:https://www.cnblogs.com/o-O-oO/p/18694850

概述

随着人工智能(AI)技术的迅猛发展,尤其是通用人工智能(AGI)的进步,人机交互的方式正在经历深刻的变革。传统的图形用户界面(GUI)逐渐被更加自然、人性化的交互模式所取代。

为了应对这一变化,Ant Design X 团队提出了一种名为 RICH 的新设计范式,并开发了一系列专注于 React 生态的先进 AI 组件库,以简化与人工智能集成的开发过程,帮助开发者快速集成 AI 产品。

RICH 设计范式

RICH 范式是 Ant Design X 为适应 AGI 时代提出的一个人机交互界面设计的新框架。它由四个核心要素组成:意图(Intention)、角色(Role)、对话(Conversation)、混合界面(Hybrid UI),每个要素用于解决特定的设计挑战,以确保用户体验的最佳化。

Intention (意图):
AI 系统应能够理解用户的模糊意图,并协助用户自动完成方案计划和步骤拆解,进而推动任务的执行。

Role (角色):
AI 系统在交互中扮演特定的角色,如助手、老师或朋友等,来匹配用户的意图,确保互动顺畅且符合用户的预期。

Conversation (对话):
用户可以通过自然语言与 AI 进行对话,逐步澄清和细化他们的意图。这种对话式的交互方式允许用户以更加直观和人性化的方式表达需求。

Hybrid UI (混合界面):
混合界面结合了传统的图形用户界面元素和新的交互模式,如语音、手势等,提供一个融合多种交互方式的平台,使用户的操作和机器的反馈更加自然流畅。

Ant Design X 组件库

Ant Design X 提供了一个专注于 React 生态的 AI 组件库,帮助开发者轻松地将对话 AI 集成到应用中。
该库包括以下主要功能:
高度定制化的 AI 组件:允许开发者轻松地将对话 AI 集成到应用中,例如 Bubble 对话气泡、Conversations 管理对话、Welcome 欢迎界面、Prompts 提示集、Attachment 输入附件、Sender 输入框、Suggestion 快捷指令、ThoughtChain 思维链等。

API 解决方案:支持开发者通过令牌认证直接接入现有 AI 服务,无缝衔接与 AI 的对话和交互。例如,useXAgent 模型调度、useXChat 数据管理、XStream 流处理、XRequest 请求管理和 XProvider 全局化配置等工具,帮助开发者高效管理数据流和模型推理服务。

按需加载:默认支持基于 ES modules 的 tree shaking,确保代码的高效性和模块化。

TypeScript 支持:使用 TypeScript 编写并提供了完整的定义文件,增强了类型安全性和开发体验。

官网地址 :https://ant-design-x.antgroup.com/

github:https://github.com/ant-design/x

安装

用Vite先搭建一个React项目

yarn create vite ant-design-x --template react

安装@ant-design/x

yarn add @ant-design/x

基本使用

先试下官方示例代码,展示消息气泡和发送框:

import {// 消息气泡Bubble,// 发送框Sender,
} from '@ant-design/x';const messages = [{content: 'Hello, Ant Design X!',role: 'user',},
];
function App() {return (<><div><Bubble.List items={messages} /><Sender /></div></>)
}export default App

发现报错,提示antd没有安装

装好后浏览器预览效果如下:

再尝试一个相对完整的示例:

import {Bubble,Conversations,Prompts,Sender,Suggestion,ThoughtChain,XProvider,
} from '@ant-design/x';
import { Card, Divider, Flex, Radio, Typography } from 'antd';
import React from 'react';import {AlipayCircleOutlined,BulbOutlined,CheckCircleOutlined,GithubOutlined,LoadingOutlined,SmileOutlined,UserOutlined,
} from '@ant-design/icons';const messages = [{content: 'Hello, Ant Design X!',role: 'user',},
];const style = {margin: '300px auto 0',width: '60%',height: '100%',display: 'flex',flexDirection: 'column',justifyContent: 'center',alignItems: 'center',
}
function App() {const [value, setValue] = React.useState('');const [direction, setDirection] = React.useState('ltr');return (<><Flex gap={12} style={{ marginBottom: 16 }} align="center"><Typography.Text>Direction:</Typography.Text><Radio.Group value={direction} onChange={(e) => setDirection(e.target.value)}><Radio.Button value="ltr">LTR</Radio.Button><Radio.Button value="rtl">RTL</Radio.Button></Radio.Group></Flex><Card><XProvider direction={direction}>// ...省略</XProvider></Card></>)
}export default App

代码过多这里不就贴完,需要完整代码请前往:https://ant-design-x.antgroup.com/components/x-request-cn

这段代码核心主要是通过 XProvider 组件包裹会话列表、对话气泡、输入建议和思维链等元素进行展示,效果如下:

请求后端

ant-design-x封装了一个叫XRequest的方法,此方法支持向所有符合 OpenAI 标准的 LLM 发起请求。

// 引入XRequest
import { XRequest } from "@ant-design/x";// 创建一个请求
const exampleRequest = XRequest({baseURL: BASE_URL + PATH,model: MODEL,/* 这里作为示例,直接在前端填写Key,实际生产环境时不要在这里暴露,请通过后端转发 */// dangerouslyApiKey: API_KEY
});// 发起请求
await exampleRequest.create({messages: [{role: 'user',content: 'hello, who are u?',},],stream: true,},{onSuccess: (messages) => {console.log('onSuccess', messages);},onError: (error) => {console.error('onError', error);},onUpdate: (msg) => {console.log('onUpdate', msg);},},
);

通过onUpdate获取后端返回的数据。

总结

综上所述,Ant Design X 提供的组件已经能够覆盖基本的 AI 对话场景。

它不仅通过 XProvider 封装了全局化配置,简化了应用的初始化和状态管理,还提供了 XRequest 和 XStream 等工具,用于标准化与后端的通信。

当然,对于特定的业务需求,开发者可能需要根据实际情况扩展或自定义一些对话卡片和交互元素,以满足更复杂的应用场景。

总体而言,Ant Design X 为开发者提供了一个灵活的框架,既能够快速搭建常见的 AI 对话应用,又具备足够的扩展性来应对定制化需求。

个人观点,仅供参考

原创 我码玄黄

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.hqwc.cn/news/876964.html

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

【Java应用】 Stream 流如何助力大数据处理

如果你会任意一门语言的stream流,没道理不会大数据开发。 俗话说男追女隔座山,女追男隔层纱。 如果说零基础学大数据,感觉前面是一座山,那么只要你会java或者任意一门语言的stream流,那大数据就只隔了一层纱。 本文以java stream流计算为例,讲解一些基础的spark操作。另一…

VaultWarden:用私有密码管理器保卫自己的密码

正值春节之际, 介绍一个非常实用的工具——VaultWarden,它是一个自托管的密码管理器,非常适合需要增强隐私保护的用户。如果你与笔者一样正在寻找一个简洁且安全的方式来管理密码,VaultWarden 无疑是一个不错的选择。 现在,我们将通过 Docker 来配置 VaultWarden,使其成为…

并发编程 - 线程同步(二)

ThreadStatic实现线程本地存储,避免共享资源问题;ThreadLocal解决其缺陷;volatile关键字防止缓存和编译器优化,非完整线程同步机制。经过前面对线程同步初步了解,相信大家对线程同步已经有了整体概念,今天我们就来一起看看线程同步的具体方案。01、ThreadStatic 严格意义…

深度学习基础理论————混合专家模型(MoE)/KV-cache

1、混合专家模型(MoE) 参考HuggingFace中介绍:混合专家模型主要由两部分构成: 1、稀疏的MoE层:这些层代替了传统 Transformer 模型中的前馈网络 (FFN) 层。MoE 层包含若干“专家”(例如 8 个),每个专家本身是一个独立的神经网络。在实际应用中,这些专家通常是前馈网络 (…

gin: 使用独立的路由文件和controller文件

一,目录结构:二,代码: 1,controller/ImageController.go package controllerimport ("github.com/gin-gonic/gin""net/http" )type ImageController struct{}func NewImageController() ImageController {return ImageController{} }//得到详情 func (i…

2024年终总结——我自风中来,又往风中去

目录前言碎语事件简单记录(参考自己的朋友圈)疑为前城去连云港——小青岛,南北交,桃花源记忆点不大的一些城市……上海——夜之城北京——梦之城似是故人来技术或科研——向现实进发生活——认识我,改变我绩点——继续维稳比赛——淡化、反思音乐——重拾展望——勇敢的向…

Java 序列化流

目录概述ObjectOutputStream类构造方法序列化操作ObjectInputStream类构造方法反序列化操作1反序列化操作2 概述 Java 提供了一种对象序列化的机制。用一个字节序列可以表示一个对象,该字节序列包含该对象的数据、对象的类型和对象中存储的属性等信息。字节序列写出到文件之后…

【持续更新】【专题】初等数论【更新逆元】

【持续更新】【专题】初等数论 Designed By:FrankWkd 【100%原创】【禁止搬运】 Updated at 2025.01.26 前言:主要从线性筛开始速通初等数论 尽可能的多证明结论而不是阐述结论。如果你只是想回顾结论,请看其他人的 \(Blog\) .一、基础概念整除:对于两个正整数 \(a,b\), 存…

四.3 Redis 五大数据类型/结构的详细说明/详细使用( hash 哈希表数据类型详解和使用)

四.3 Redis 五大数据类型/结构的详细说明/详细使用( hash 哈希表数据类型详解和使用) @目录四.3 Redis 五大数据类型/结构的详细说明/详细使用( hash 哈希表数据类型详解和使用)2.hash 哈希表常用指令(详细讲解说明)2.1 hset <key><field><value> 给<…

qcom usb PD tcpc overview

该软件层将PMxxxxB硬件连接到LPM模块,因为上述模块使用Type-C端口控制器接口(TCPCI)进行通信。 软件层,使PMIC Type-C PD硬件适用于基于TCPCI的软件架构 基本状态机:进入、离线、待机状态 PMIC Type-C和PD PHY中断的消费者 PMIC硬件专用排序和定时器

男生如何自己简单理发

快过年了,给自己理个发。 从24年10月份开始,目前已经给自己理发两次,都是短发寸头,给我爸和我三叔各理发一次,算是有点经验了,我准备过年前给自己再稍微修理头发一下。自己动手实践,且效果还不错的情况下,真的非常有成就感,如果有人指导情况下,其实自己理发难度不高,…