近年来,人工智能技术飞速发展,尤其是自然语言处理领域的突破,让 AI 对话系统成为了热门话题。而如何快速、高效地构建 AI 对话界面,成为了开发者关注的焦点。今天,我们就来介绍一个强大的 JavaScript 框架:NLUX,它让创建 AI 对话界面变得简单而直观。

github地址: https://github.com/nlkitai/nlux

什么是 NLUX?

NLUX 是一个开源的 JavaScript 和 React 库,用于快速构建对话式 AI 界面。它提供了一系列组件和 API,让开发者能够轻松地与 ChatGPT 等 AI 模型集成,打造出功能丰富、交互友好的 AI 对话应用。

NLUX 采用了分层架构设计,主要包括三个层次:

  1. 用户界面层 🎨 - 负责渲染屏幕上的所有内容,如用户和 AI 的消息、输入框等,并提供事件监听器、钩子等。

  2. API 层 📡 - 提供与聊天机器人编程交互的 API,实现发送消息、获取对话历史等操作。

  3. 适配器层 🔌 - 通过处理 API 调用、响应流等,实现与 AI 后端的集成,并允许构建自定义适配器。

NLUX 的核心特性

NLUX 提供了一系列强大的特性,让开发 AI 对话界面变得更加高效和灵活:

  • 快速构建 AI 聊天界面 - 只需几行代码,即可创建高质量的对话式 AI 界面。
  • React 组件和钩子 - 提供 <AiChat /> 组件用于 UI 构建,useChatAdapter 钩子简化集成。
  • LLM 适配器 - 支持 ChatGPT、LangChain、Hugging Face 等主流 AI 模型和框架。
  • 主题和扩展 - 内置 Luna 默认主题和 CSS 样式,方便界面定制。

如何使用 NLUX 构建 AI 对话界面

下面,我们通过一个简单的示例,演示如何使用 NLUX 的 React 组件来构建 AI 对话界面。

import { AiChat, useAsStreamAdapter } from '@nlux/react';
import '@nlux/themes/nova.css';
import { send } from './send';
import { personas } from './personas';

export default () => {
  const adapter = useAsStreamAdapter(send, []);

  return (
    <AiChat 
      adapter={adapter}
      personaOptions={personas}
      displayOptions={{ colorScheme: 'dark' }}
    />
  );
};

在上面的代码中,我们导入了 NLUX 的 <AiChat /> 组件和 useAsStreamAdapter 钩子,然后配置适配器和界面选项,最后渲染出一个暗色主题的 AI 对话界面。是不是非常简单呢?

构建自定义适配器

NLUX 的一大亮点是允许开发者构建自定义适配器,以便与各种 AI 后端进行集成。通过实现 ChatAdapter 接口,我们可以定义自己的适配器逻辑,包括发送消息、接收响应、处理错误等。

下面是一个简单的自定义适配器示例:

import { ChatAdapter, ChatMessage } from '@nlux/core';

class MyCustomAdapter implements ChatAdapter {
  async *sendMessage(messages: ChatMessage[]): AsyncIterable<ChatMessage> {
    const response = await fetch('https://api.example.com/chat', {
      method: 'POST',
      headers: { 'Content-Type': 'application/json' },
      body: JSON.stringify({ messages }),
    });

    if (!response.ok) {
      throw new Error(`HTTP error! status: ${response.status}`);
    }

    const data = response.body;
    if (!data) {
      return;
    }

    const reader = data.getReader();
    const decoder = new TextDecoder();
    let done = false;

    while (!done) {
      const { value, done: readerDone } = await reader.read();
      if (value) {
        const chunk = decoder.decode(value);
        yield { content: chunk, role: 'assistant' };
      }
      done = readerDone;
    }
  }
}

在这个例子中,我们定义了一个 MyCustomAdapter 类,实现了 ChatAdapter 接口的 sendMessage 方法。该方法通过 fetch 向自定义的 API 端点发送 POST 请求,并将响应数据解析为 AsyncIterable<ChatMessage>,以便 NLUX 能够实时显示 AI 的回复。

使用自定义适配器也非常简单,只需将其传递给 <AiChat /> 组件的 adapter 属性即可:

const myAdapter = new MyCustomAdapter();

return <AiChat adapter={myAdapter} />;

通过构建自定义适配器,NLUX 为开发者提供了极大的灵活性,使其能够与各种 AI 后端无缝集成,打造出功能强大、个性化的对话式应用。

小结

NLUX 是一个功能强大、使用简单的 JavaScript 框架,让开发者能够快速构建出优雅、高效的 AI 对话界面。无论你是前端新手还是有经验的开发者,都可以利用 NLUX 提供的组件和 API,与 AI 模型无缝集成,打造出令人惊艳的对话式应用。

通过支持自定义适配器,NLUX 进一步增强了其灵活性和可扩展性,使开发者能够与各种 AI 后端进行集成,满足不同场景下的需求。

AI 正在深刻影响着我们的生活,而 NLUX 这样优秀的开源项目,为 AI 技术的普及和应用带来了更多可能。让我们一起拥抱 AI 时代,用代码创造更多精彩吧!

10-15 03:17