Pro-Chat: 一款面向未来的开源智能聊天组件

简介: Pro-Chat: 一款面向未来的开源智能聊天组件

往期精彩: 基于数据源驱动的跨组件通信最佳实践(低码篇)

hi, 大家好, 我是徐小夕, 最近在 github 上看到一款非常有意思的开源项目, 定位是开箱即用的大模型对话前端解决方案, 我们使用它可以轻松构建聊天组件, 并且可以一键集成主流 AI 大模型, 比如 通义千问, ChatGpt 等. (让前端再也不用从零写聊天组件了~)

image.png

我会在文末贴上这款 开源聊天组件 的文档地址和 github 地址.

组件demo演示

image.png

功能亮点

我根据自己的使用和实践, 总结一下这款开源聊天组件的亮点:

  • 简单易用, 设计语言统一

image.png

它是基于 antd 组件库进行的二次封装, 所以我们可以轻松的在 antd 项目中使用, 保持 UI 视觉的统一.

使用啊安装方式如下:

# @ant-design/pro-editor 基于 antd 和 antd-style,需要在项目中安装
$ npm install antd antd-style -S
$ npm install @ant-design/pro-chat -S

使用:

import { ProChat } from '@ant-design/pro-chat';
import { useTheme } from 'antd-style';
export default () => {
  const theme = useTheme();
  return (
    <div style={{ background: theme.colorBgLayout }}>
      <ProChat
        helloMessage={
          '欢迎使用 ProChat ,我是你的专属机器人,这是我们的 Github:[ProChat](https://github.com/ant-design/pro-chat)'
        }
        request={async (messages) => {
          const mockedData: string = `这是一段模拟的对话数据。本次会话传入了${messages.length}条消息`;
          return new Response(mockedData);
        }}
      />
    </div>
  );
};

是不是使用非常简单~

  • 大模型对话能力集成

image.png

它内置了对话模型常用的:数据编辑、重新发送、删除对话等这些默认的基本操作.

  • 对AI模型友好的数据结构
const dataArray = [  `data: {"id": "chatcmpl-6w****KZb6hx****RzIghUz****Qy", "object": "chat.completion.chunk", "created": 1703582861554, "model": "gpt-3.5-turbo-0301", "choices": [{"delta": {"content": "苹"}, "index": 0, "finish_reason": null}]}`,
  `data: {"id": "chatcmpl-6w****KZb6hx****RzIghUz****Qy", "object": "chat.completion.chunk", "created": 1703582861554, "model": "gpt-3.5-turbo-0301", "choices": [{"delta": {"content": "果"}, "index": 0, "finish_reason": null}]}`,
  `data: {"id": "chatcmpl-6w****KZb6hx****RzIghUz****Qy", "object": "chat.completion.chunk", "created": 1703582861554, "model": "gpt-3.5-turbo-0301", "choices": [{"delta": {"content": "公司"}, "index": 0, "finish_reason": null}]}`,
  `data: {"id": "chatcmpl-6w****KZb6hx****RzIghUz****Qy", "object": "chat.completion.chunk", "created": 1703582861554, "model": "gpt-3.5-turbo-0301", "choices": [{"delta": {"content": "是"}, "index": 0, "finish_reason": null}]}`,
  `data: {"id": "chatcmpl-6w****KZb6hx****RzIghUz****Qy", "object": "chat.completion.chunk", "created": 1703582861554, "model": "gpt-3.5-turbo-0301", "choices": [{"delta": {"content": "一"}, "index": 0, "finish_reason": null}]}`,
  `data: {"id": "chatcmpl-6w****KZb6hx****RzIghUz****Qy", "object": "chat.completion.chunk", "created": 1703582861554, "model": "gpt-3.5-turbo-0301", "choices": [{"delta": {"content": "家"}, "index": 0, "finish_reason": null}]}`,
  `data: {"id": "chatcmpl-6w****KZb6hx****RzIghUz****Qy", "object": "chat.completion.chunk", "created": 1703582861554, "model": "gpt-3.5-turbo-0301", "choices": [{"delta": {"content": "科技"}, "index": 0, "finish_reason": null}]}`,
  `data: {"id": "chatcmpl-6w****KZb6hx****RzIghUz****Qy", "object": "chat.completion.chunk", "created": 1703582861554, "model": "gpt-3.5-turbo-0301", "choices": [{"delta": {"content": "公司"}, "index": 0, "finish_reason": "complete"}]}`,
];

参照 ChatGPTGLM通义千问等市面上主流的大模型入参出参,减少前端开发者对这些入参和出参的处理.

  • 支持丰富的聊天场景, 并且可以根据业务灵活扩展

image.png

  • 组件化 & 完善的ts类型定义

image.png

我们可以通过组件暴露的属性轻松自定义, 并且代码质量和代码规范非常优质.

集成ChatGPT的简单案例

  1. 安装依赖
npm install ai --save
npm install openai --save
# or use yarn 、bun、pnpm any else
bun add ai
bun add openai

2. 业务代码

import OpenAI from 'openai';
import { OpenAIStream, StreamingTextResponse } from 'ai';
export const POST = async (request: Request) => {
  const { messages = [] }: Partial<{ messages: Array<any> }> = await request.json();
  const openai = new OpenAI({
    apiKey: 'OpenAI Key',
    baseURL: 'base url',
  });
  const response = await openai.chat.completions.create({
    model: 'gpt-3.5-turbo',
    messages: [...messages],
    stream: true,
  });
  const stream = OpenAIStream(response);
  return new StreamingTextResponse(stream);
};
  1. 设计界面
"use client";
import { ProChat } from "@ant-design/pro-chat";
import { useTheme } from "antd-style";
export default function Home() {
  const theme = useTheme();
  return (
    <div
      style={{
        backgroundColor: theme.colorBgLayout,
      }}
    >
      <ProChat
        style={{
          height: "100vh",
          width: "100vw",
        }}
        request={async (messages: Array<any>) => {
          const response = await fetch("/api/openai", {
            method: "POST",
            body: JSON.stringify({ messages: messages }),
          });
          return response;
        }}
      />
    </div>
  );
}

是不是很简单, 3步就能帮你搭建一个AI聊天应用, 大家感兴趣的可以尝试使用一下.

github 地址: github.com/ant-design/…

文档地址: pro-chat.antdigital.dev/

目录
相关文章
|
8月前
|
人工智能 前端开发 JavaScript
Ant Design X ✖️ 百宝箱智能体 SDK 极速构建 AI 聊天应用
本文介绍如何使用 Ant Design X 组件库与百宝箱 SDK 快速搭建 AI 对话应用。前端采用 React + Ant Design X,提供消息气泡、智能输入框等丰富组件;后端通过百宝箱 SDK 接入主流大模型,支持流式响应与高效数据管理,实现极简代码开发、快速上线的智能聊天应用。
1165 0
|
2月前
|
人工智能 JSON 前端开发
前端组件库——Semi Design知识点大全(三)
教程来源 http://unbgv.cn Semi D2C是抖音前端自研的行业领先设计稿转代码工具,支持Figma一键生成语义化React代码(JSX+SCSS/Tailwind等),精准识别Semi组件及Props,无需标注、不改设计习惯,深度打通设计系统,3–5秒完成布局与样式还原。
|
JavaScript 数据格式
VUE element-ui下拉菜单el-select获取label值或value的值
VUE element-ui下拉菜单el-select获取label值或value的值
3264 0
VUE element-ui下拉菜单el-select获取label值或value的值
|
关系型数据库 PostgreSQL
解决Navicat连接postgresql时出现‘datlastsysoid does not exist‘报错
解决Navicat连接postgresql时出现‘datlastsysoid does not exist‘报错
4105 0
|
4月前
|
人工智能 缓存 API
2026年OpenClaw省钱教程:通过NVIDIA NIM 免费调用MiniMax M2.1、智谱GLM-4.7、DeepSeek V,零Token费玩转AI Agent(附阿里云百炼API-Key配置)
2026年,OpenClaw(原Clawdbot)凭借强大的自动化能力与丰富的技能生态,成为AI领域的现象级工具。但用户普遍面临一个痛点:OpenClaw依赖长上下文调用大模型,Token消耗巨大,免费模型功能有限,付费模型成本高昂。
6662 15
|
7月前
|
机器学习/深度学习 人工智能 前端开发
终端里的 AI 编程助手:OpenCode 使用指南
OpenCode 是开源的终端 AI 编码助手,支持 Claude、GPT-4 等模型,可在命令行完成代码编写、Bug 修复、项目重构。提供原生终端界面和上下文感知能力,适合全栈开发者和终端用户使用。
55882 11
|
9月前
|
数据可视化 搜索推荐 数据处理
Dify Agent + AntV 实战:从 0 到 1 打造数据可视化解决方案
本文介绍如何结合Dify Agent与AntV,打造高效、灵活的数据可视化解决方案。通过低代码构建数据流程,调用AntV丰富图表工具,实现从数据到多样可视化图表的快速生成,助力开发者兼顾效率与个性化需求。
1678 0
Dify Agent + AntV 实战:从 0 到 1 打造数据可视化解决方案
|
Java 数据库 Docker
基于neo4j数据库和dify大模型框架的rag模型搭建
基于neo4j数据库和dify大模型框架的rag模型搭建
3859 35