AI 聊天
Jmix 3.1+
AI Chat 扩展组件提供了 Flow UI 组件,支持在 Jmix 应用程序中构建 AI 聊天界面:一个完整的聊天或者其中的一些聊天组件,以及一个可以在对话内部或外部渲染源代码的代码块。
该扩展组件仅提供用户界面,而非模型。聊天的答案由应用程序实现的 LLMProvider 生成,因此这些组件可与任何后端配合使用,例如 Spring AI、供应商的 SDK 或自己实现的服务。
主要功能:
-
开箱即用的聊天: aiChat 组合了 aiMessageList 和 aiMessageInput,以及一个空状态。仅使用一个 UI 元素和一个对话流的 provider 就可以搭建完整的聊天。
-
流式回答: token 在收到时即时呈现,并带有思考指示器,以及助手正在执行操作的实时动态(可选)。
-
Markdown 格式的消息: 助手消息渲染为 Markdown,包括围栏代码块,这些代码块是 aiCodeBlock 组件。
-
附件: 文件可通过拖放或文件选择器添加,存储在 Jmix 文件存储中,并支持从对话历史中下载。
-
数据绑定和持久化: 聊天可以与自定义消息实体的集合容器绑定并持久化。
-
消息操作: 按消息角色使用通用的 Jmix 操作,并内置复制和重新生成操作。
-
独立组件: 消息列表、消息输入框和代码块可在聊天之外单独使用。
-
自定义的聊天界面: 组件可以端到端地驱动消息列表,追加消息、将答案流式写入,并报告进度和错误。如果开箱即用的聊天不满足要求,可以用这些组件自己组装一个聊天界面。
|
该扩展组件是实验性的。其 API 可能会在未来版本中发生变化,Studio 和 IntelliJ IDEA 会对其类调用标记 experimental API 警告。该警告在正确代码上也可能会出现。 |
与 AI 工具扩展组件的关系
AI 工具 扩展组件解决的是另一个问题。它提供一个成品助手:带对话历史的聊天 UI、助手可调用的工具注册表,以及用于检查和查询应用程序数据的预定义工具。安装并配置模型即可使用。
而本扩展组件提供的是构建块。没有助手,没有注册的工具,也没有持久化。消息是什么、存储在哪里、由什么生成答案,都需要你决定。
当想要一个基于应用程序数据的助手时,选择 AI Tools。当对话是自定义领域的一部分,或者需要一个即用的聊天无法提供的聊天界面时,选择 AI Chat。
安装
请按照 扩展组件 章节的介绍通过 Jmix 市场自动安装。
手动安装步骤:
-
配置 premium 仓库的访问
-
在
build.gradle添加 premium 仓库:repositories { // ... maven { url = 'https://global.repo.jmix.io/repository/premium' credentials { username = rootProject['premiumRepoUser'] password = rootProject['premiumRepoPass'] } } } -
将 premium 仓库的凭证记录在
~/.gradle/gradle.properties文件中:premiumRepoUser=123456123456 premiumRepoPass=abcdefabcdef仓库的凭证可以通过许可秘钥获取:秘钥中短横前的部分为用户名,短横后的部分为密码。例如,如果你的秘钥是
123456123456-abcdefabcdef,则用户名是:123456123456,密码是abcdefabcdef。
-
-
在
build.gradle中添加依赖:implementation 'io.jmix.aichat:jmix-aichat-flowui-starter'
组件依赖服务端推送连接对回答进行流式处理,因此,应用程序必须启用推送。在应用程序主类添加 @Push:
@Push
@SpringBootApplication
public class AiChatEx1Application implements AppShellConfigurator {