首页 文章详情

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

趣谈前端 | 29 2024-01-17 09:27 0 0 0
UniSMS (合一短信)

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

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

组件demo演示

1b1a4523776e32748e791b1d6bbf1606.webp

342a75bf114242b7634dbfd852821978.webp

功能亮点

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

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

它是基于 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>

  );
};

是不是使用非常简单~

  • 大模型对话能力集成
829d7fe9d71b614226b759517b53510c.webp

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

  • 对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通义千问等市面上主流的大模型入参出参,减少前端开发者对这些入参和出参的处理.

  • 支持丰富的聊天场景, 并且可以根据业务灵活扩展
33e11c1b6e85d6cf0162148b5d45d023.webp
  • 组件化 & 完善的ts类型定义
2905f1603c5b6cb13440c5eacdd714f3.webp781076c1c64b782707f47bb6bb0ada6a.webp

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

集成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<{ messagesArray<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],
    streamtrue,
  });

  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/

❤️ 

便 ^ _ ^

    ~

6cdfaa808a814fb14423dc320a39963d.webp

从零搭建全栈可视化大屏制作平台V6.Dooring

从零设计可视化大屏搭建引擎

Dooring可视化搭建平台数据源设计剖析

可视化搭建的一些思考和实践

基于Koa + React + TS从零开发全栈文档编辑器(进阶实战




点个在看你最好看

good-icon 0
favorite-icon 0
收藏
回复数量: 0
    暂无评论~~
    Ctrl+Enter