SuperAPI AI 工具集

syncfusion-angular-ai-assistview

智能体与模型

查看项目

更新于 10-15 15:30

技能介绍

用途

Syncfusion Angular AI AssistView 是一个 Angular 组件,用于构建对话式 AI 应用界面。它提供开箱即用的聊天式交互界面,帮助开发者将 AI 服务接入前端,并管理提示与响应的完整生命周期。

主要能力

会话管理

管理提示与响应配对,支持历史记录、状态持久化(enablePersistence)和 Markdown 响应渲染。可配置提示建议、用户与助手头像、清除按钮、滚动到底部等 UI 控件,以及高度、宽度、showHeader、cssClass、htmlAttributes 等组件配置。

AI 服务集成

可连接 OpenAI、Gemini、Ollama、Lite-LLM 和 MCP 提供方,支持流式响应。文档包含 Azure OpenAI、Gemini、Lite-LLM、MCP、Ollama 的集成设置与安全最佳实践。

思维链(Chain of Thoughts)

通过可注入的 AssistThinking 模块可视化 AI 推理过程,以可折叠的思考块呈现。支持多阶段推理、动态状态更新(completed、inprogress、failed)、通过 stages 数组添加阶段、使用 editableContext 和 {index} 占位符实现可点击的行内上下文,以及 blockTemplate 和 itemTemplate 自定义渲染。

生成式 UI

通过 registerToolUI({ toolName, template, handler }) 注册自定义工具,在 AI 响应中以 blocks 形式渲染交互式工具、图表和自定义组件。可配置 AI 服务系统提示返回结构化 blocks JSON,并在工具交互后通过 executePrompt 触发后续提示。

语音功能

内置语音转文字,提供 speechToTextSettings 及 11 个可配置属性,支持 4 个事件(onStart、onStop、transcriptChanged、onError)和 10 种以上语言代码。文字转语音通过响应工具栏的 e-assist-audio 项启用,使用浏览器 SpeechSynthesisUtterance API,可通过 textToSpeechSettings 配置语言、音调、语速、音量和语音。

工具栏系统

提供四种工具栏:头部工具栏(toolbarSettings,全局操作与导航)、提示工具栏(promptToolbarSettings,针对用户提示的操作)、响应工具栏(responseToolbarSettings,针对 AI 响应的操作)、底部工具栏(footerToolbarSettings,输入区定制)。支持 ToolbarItemModel 接口、itemClicked 事件与 dataIndex、标签指令(<e-toolbarsettings>、<e-toolbaritem>)和属性绑定两种方式,并可通过 align 属性(Left、Center、Right)控制对齐。

遥测

通过 telemetrySettings.enable 启用每条响应的遥测按钮,可用 metrics 数组筛选指标(status、duration、toolCalls、streamingChunks、model、inputTokens、outputTokens、totalTokens、reasoningTokens、cachedInputTokens),通过 beforeReport 事件自定义报告(修改、添加 customAttributes 或返回 null 抑制),并可通过 addPromptResponse 的可选 TelemetryData 参数传递模型与 token 用量。

提及(Mentions)

在提示编辑器中基于触发字符(如 @ 或 /)弹出提及选择器,支持本地数组或 DataManager 数据源、字段映射、Query 过滤、filterType(Contains、StartsWith、EndsWith)、高亮、弹窗尺寸、displayTemplate/itemTemplate/noRecordsTemplate 模板,以及 mentionSelect 事件。

视图管理

支持多种视图(Assist 和 Custom 类型),可通过 activeView 属性以编程方式切换,支持视图历史与面包屑导航、基于工作流的视图切换和基于用户角色的条件显示。

文件附件

支持文件上传,可限制类型和大小,提供完整附件生命周期事件:beforeAttachmentUpload、attachmentUploadSuccess、attachmentUploadFailure、attachmentRemoved、attachmentRemoving、attachmentClick,并支持 attachmentTemplate 自定义模板。

模板与事件

可自定义提示、响应、建议、横幅、底部和响应动画模板,包括每条响应的 responseAnimationTemplate 用于品牌化加载状态。事件参数类型化,包括 PromptRequestEventArgs(6 个属性)、PromptChangedEventArgs(5 个属性)、StopRespondingEventArgs、AttachmentClickEventArgs 等。

全球化与外观

完整 RTL 支持(enableRtl,适用于阿拉伯语、希伯来语、波斯语、乌尔都语)和 12 种以上语言的本地化(locale 属性)。支持自定义 CSS 类、主题定制和响应式设计。

使用方式

安装 @syncfusion/ej2-angular-interactive-chat 并导入 AIAssistViewModule。在模板中使用 <div ejs-aiassistview> 并绑定 promptSuggestions 和 promptRequest 事件。在 promptRequest 事件中调用 AI 服务,并通过 addPromptResponse() 方法显示结果。可通过 enableStreaming 启用流式输出,通过 stopRespondingClick 处理取消。

快速示例:

import { Component } from '@angular/core';
import { AIAssistViewModule } from '@syncfusion/ej2-angular-interactive-chat';

@Component({
  imports: [AIAssistViewModule],
  standalone: true,
  selector: 'app-root',
  template: `
    <div ejs-aiassistview 
      id='aiAssistView'
      [promptSuggestions]="suggestions"
      (promptRequest)="onPromptRequest($event)">
    </div>
  `,
  styles: [`
    :host ::ng-deep #aiAssistView {
      height: 100vh;
    }
  `]
})
export class AppComponent {
  suggestions = [
    'What is Angular?',
    'How to create components?',
    'Explain dependency injection'
  ];

  onPromptRequest(args: any) {
    // Handle prompt and provide response
    setTimeout(() => {
      const response = 'This is a sample response from your AI service.';
      // Add response using component method
    }, 1000);
  }
}

适用场景

适用于需要在 Angular 应用中嵌入对话式 AI 界面的场景,例如 AI 助手、客服机器人、带推理展示的问答系统、集成外部 AI 服务的聊天应用,以及需要在响应中嵌入交互式工具或图表的生成式 UI 应用。

限制

资料未提供具体的浏览器兼容性细节、性能上限、收费与价格信息,以及各 AI 服务提供方的具体配置参数。部分功能(如语音、遥测、生成式 UI)依赖浏览器 API 或特定 AI 服务,实际可用性需参考官方文档。