Skip to content

AiProvider 全局配置

AiProvider 是 AI 组件库的核心配置组件,用于在应用顶层注入全局配置。它通过 Vue 的 provide/inject 机制,为下游所有的 AI 组件(如 AiChatAiBubble 等)提供基础的接口地址、鉴权信息、头像以及打字机特效等配置。

基础用法

建议将 AiProvider 包裹在应用的根组件或 AI 功能模块的最外层。

你好!我是由 AiProvider 配置的助手。

基础用法

全局身份配置

通过 AiProvider,你可以统一设置用户和助手的头像及名称。

谁在帮我配置?

是我,你的全局助手。

全局身份配置

API

Props

属性名说明类型默认值
base-url全局 AI 接口基础地址string-
token鉴权 Token (Bearer)string-
headers全局请求头追加Record<string, string>-
user-avatar用户头像 URLstring-
assistant-avatar助手头像 URLstring-
user-name用户显示名称string-
assistant-name助手显示名称string-
system-prompt全局系统提示词string-
typewriter打字机特效配置object{ enabled: true, charsPerFrame: 2 }

typewriter 属性定义

属性名说明类型默认值
enabled是否开启打字机效果booleantrue
chars_per_frame每帧渲染字符数number2

请求/响应拦截器 Props

属性名说明类型默认值
timeout请求超时时间(ms)number30000
withCredentials是否允许携带凭证booleanfalse
mode请求模式'cors' | 'no-cors' | 'same-origin''cors'
cache缓存模式RequestCache见下方

Methods

方法名说明参数返回值
addRequestInterceptor添加请求拦截器(interceptor: AiRequestInterceptor) => number拦截器 ID
addResponseInterceptor添加响应拦截器(interceptor: AiResponseInterceptor) => number拦截器 ID
removeRequestInterceptor移除请求拦截器(id: number) => void
removeResponseInterceptor移除响应拦截器(id: number) => void
clearInterceptors清空所有拦截器() => void

拦截器使用示例

基础拦截器

💡 拦截器已增强:点击发送消息,即可在页面内和控制台看到拦截点反馈。

拦截器示例 1:基础请求/响应拦截

添加请求/响应拦截器

请求拦截器 - 添加 Token

🔑 发送消息时拦截器会自动注入 Mock Token (查看控制台)

拦截器示例 2:请求拦截 - 自动添加 Token

请求拦截器 - 自动添加 Token

响应拦截器 - 统一错误处理

🚨 统一异常捕获演示

拦截器示例 3:响应拦截 - 统一错误处理

响应拦截器 - 统一错误处理

日志记录拦截器

⏳ 实时记录请求耗时 (查看控制台)

拦截器示例 4:日志记录拦截

日志记录拦截器

类型定义

typescript
import type { AiRequestConfig, AiResponse } from '@yh-ui/components'

// 请求拦截器
interface AiRequestInterceptor {
  onRequest?: (config: AiRequestConfig) => AiRequestConfig | void | Promise<AiRequestConfig | void>
  onRequestError?: (error: Error) => void
}

// 响应拦截器
interface AiResponseInterceptor {
  onResponse?: (response: Response) => Response | void | Promise<Response | void>
  onResponseError?: (error: Error) => void
}

使用建议

  • Vite/Nuxt 项目:通常在 App.vuelayouts/default.vue 中使用一次即可。
  • 作用域隔离:如果应用中有多个不同的 AI 模块(例如一个客服机器人,一个代码助手),可以分别包裹不同的 AiProvider 来实现隔离。

Released under the MIT License.