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

趣谈前端 2024-01-18 16:31:32编程技术
22

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

Pro-Chat.png

组件Demo演示

Pro-Chat2.gif

Pro-Chat3.png

功能亮点

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

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

Pro-Chat4.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>
  );
};

是不是使用非常简单~

  • 大模型对话能力集成

Pro-Chat5.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"}]}`,
];

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

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

Pro-Chat6.png

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

Pro-Chat7.png

Pro-Chat8.png图片

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

集成ChatGPT的简单案例

  1. 安装依赖

npm install ai --save
npm install openai --save

# or use yarn 、bun、pnpm any else
bun add ai
bun add openai
  1. 业务代码

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 地址:https://github.com/ant-design/pro-chat

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

开源
THE END
tom
不图事事圆满 但图事事甘心。

相关推荐

Whisper-NER:aiOla推出的开源AI音频转录模型,实时遮蔽敏感信息
Whisper-NER是aiOla基于OpenAI的开源语音识别模型Whisper开发的一款高级音频转录模型。它不仅继承了Whisper在多语言、实时处理及高准确度方面的卓越性能,还创新性地加入了敏...
2024-11-21 新闻资讯
112

Ultravox:Fixie AI推出的开源多模态实时语音交互AI模型
在人工智能技术飞速发展的今天,实时语音交互已成为人们日常生活的重要组成部分。Ultravox,一款由FixieAI公司开发的创新性多模态大语言模型,旨在提供一个封闭源模型如 GPT-...
2024-11-15 新闻资讯
118

Outfit Anyone:阿里巴巴集团智能研究院推出的AI虚拟试衣开源项目
Outfit Anyone 是由阿里巴巴集团智能计算研究院推出的一款基于人工智能技术的开源AI虚拟试衣项目,通过先进的计算机视觉和深度学习技术,用户可以上传自己的照片或选择预设的...
2024-11-11 新闻资讯
148

MIMO:阿里巴巴智能研究院开源的多功能可控视频合成模型
MIMO 是阿里巴巴集团智能计算研究院开源的一种用于可控视频合成的通用模型,其核心思想是将2D视频编码为紧凑的空间代码,并考虑视频发生的固有3D特性。通过这种编码方式,MIM...
2024-11-10 新闻资讯
123

Buzz:开源免费的离线AI音频转录和翻译工具
Buzz是一款开源免费的离线AI音频转录和翻译工具,致力于为用户提供高效、安全且便捷的音频处理解决方案。其核心基于OpenAI的Whisper模型,支持多种语言,无需网络连接即可对个...
2024-11-04 新闻资讯
137

ElementUI:饿了么前端团队开源的一套基于 Vue.js 的桌面端组件库
ElementUI 是饿了么前端团队开发的一套基于 Vue.js 的桌面端组件库。其提供了一系列经过精心设计和测试的 UI 组件,涵盖了从基本的输入框、按钮到复杂的表格、导航菜单等各个...
2024-11-01 编程技术
155