vibe-ai-c 3.3.1 → 3.3.2
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +41 -44
- package/package.json +2 -2
package/README.md
CHANGED
|
@@ -1,76 +1,73 @@
|
|
|
1
1
|
# VibeAI (v3.3)
|
|
2
2
|
|
|
3
|
-
VibeAI
|
|
3
|
+
VibeAI 是一个极简、高性能、面向浏览器的多供应商 AI SDK 与 UI 管理工具。它旨在通过 **CDN 零配置集成**,为任何网页快速提供 OpenAI 兼容的 AI 能力。
|
|
4
4
|
|
|
5
5
|
## 核心特性
|
|
6
6
|
|
|
7
|
-
-
|
|
8
|
-
-
|
|
9
|
-
-
|
|
10
|
-
-
|
|
11
|
-
|
|
12
|
-
- **批量操作**:支持对搜索结果进行“全选/清空”,不影响隐藏的模型。
|
|
13
|
-
- **自动排序**:模型列表按字母顺序排列。
|
|
14
|
-
- **高稳定性 UI**:采用颗粒度 DOM 更新策略,在刷新列表或搜索时保持输入框焦点与滚动位置。
|
|
15
|
-
- **智能路径逻辑**:自动处理 Base URL,如果请求失败会智能尝试补全 `/v1` 后缀。
|
|
7
|
+
- **CDN 优先**:无需 npm 或复杂的构建工具,直接通过原生 ESM 导入。
|
|
8
|
+
- **零依赖 (Zero-dependency)**:纯 JavaScript 实现,体积精简,不污染全局环境。
|
|
9
|
+
- **安全性 (Web Crypto)**:支持 AES-GCM 硬件级加密存储 API Key。
|
|
10
|
+
- **多实例绑定**:支持一个页面内多个对话框绑定不同供应商/模型。
|
|
11
|
+
- **智能 UI 交互**:内置模型搜索、自动 `/v1` 路径补全、批量资产选择,且渲染过程不丢失输入焦点。
|
|
16
12
|
|
|
17
|
-
##
|
|
13
|
+
## 快速集成 (Quick Start)
|
|
18
14
|
|
|
19
|
-
|
|
20
|
-
```javascript
|
|
21
|
-
import { vibeAI } from './vibe-ai.js';
|
|
15
|
+
由于 VibeAI 采用标准的 ESM 架构,你只需在 HTML 中使用 `<script type="module">` 即可直接从 CDN 引入:
|
|
22
16
|
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
17
|
+
### 1. 引入并初始化
|
|
18
|
+
```html
|
|
19
|
+
<script type="module">
|
|
20
|
+
// 推荐从 unpkg 引入最新生产版本
|
|
21
|
+
import { vibeAI } from 'https://unpkg.com/vibe-ai-c@3.3.2/vibe-ai.min.js';
|
|
22
|
+
|
|
23
|
+
// 初始化并绑定管理按钮
|
|
24
|
+
await vibeAI.init({
|
|
25
|
+
setupBtnId: 'settings-btn'
|
|
26
|
+
});
|
|
27
27
|
|
|
28
|
-
//
|
|
29
|
-
vibeAI.bindModelSelect('
|
|
28
|
+
// 绑定你的模型选择下拉框
|
|
29
|
+
vibeAI.bindModelSelect('my-selector');
|
|
30
|
+
</script>
|
|
31
|
+
|
|
32
|
+
<button id="settings-btn">设置 AI 供应商</button>
|
|
33
|
+
<select id="my-selector"></select>
|
|
30
34
|
```
|
|
31
35
|
|
|
32
|
-
### 2.
|
|
36
|
+
### 2. 调用对话
|
|
33
37
|
```javascript
|
|
34
|
-
// 必须指定 instanceId(对应 bindModelSelect 的 ID)
|
|
35
38
|
const stream = await vibeAI.chat({
|
|
36
|
-
instanceId: '
|
|
39
|
+
instanceId: 'my-selector', // 对应绑定的 select id
|
|
37
40
|
messages: [{ role: 'user', content: '你好!' }],
|
|
38
41
|
stream: true
|
|
39
42
|
});
|
|
40
43
|
|
|
41
44
|
for await (const chunk of stream) {
|
|
42
|
-
|
|
45
|
+
console.log(chunk); // 实时流式输出
|
|
43
46
|
}
|
|
44
47
|
```
|
|
45
48
|
|
|
46
49
|
## API 参考
|
|
47
50
|
|
|
48
51
|
### `vibeAI.init({ setupBtnId })`
|
|
49
|
-
-
|
|
50
|
-
-
|
|
52
|
+
- **setupBtnId**: (可选) 字符串 ID。绑定后,点击该元素将自动弹出供应商配置界面。
|
|
53
|
+
- **功能**: 执行存储迁移 (v2 -> v3) 并挂载全局样式。
|
|
51
54
|
|
|
52
55
|
### `vibeAI.bindModelSelect(id)`
|
|
53
|
-
-
|
|
54
|
-
-
|
|
55
|
-
- 状态(用户的选择)会自动持久化。
|
|
56
|
+
- **id**: HTML `<select>` 元素的 ID。
|
|
57
|
+
- **功能**: 自动填充已勾选的模型资产池。当用户在设置中更改模型或供应商时,该下拉框会自动同步更新,并记忆用户的最后一次选择。
|
|
56
58
|
|
|
57
59
|
### `vibeAI.chat(payload)`
|
|
58
|
-
-
|
|
59
|
-
-
|
|
60
|
-
-
|
|
61
|
-
|
|
62
|
-
### `vibeAI.openSettings()`
|
|
63
|
-
- 编程方式打开供应商管理弹窗。
|
|
60
|
+
- **payload.instanceId**: (必填) 绑定的 Select ID,SDK 据此识别供应商配置。
|
|
61
|
+
- **payload.stream**: 布尔值。为 `true` 时返回 `AsyncGenerator`。
|
|
62
|
+
- **payload.messages**: 标准 OpenAI 消息数组。
|
|
64
63
|
|
|
65
|
-
##
|
|
64
|
+
## 进阶与部署
|
|
66
65
|
|
|
67
|
-
-
|
|
68
|
-
-
|
|
69
|
-
-
|
|
66
|
+
- **生产环境建议**:始终在 CDN URL 中锁定版本号(如 `@3.3.2`)以确保生产环境稳定性。
|
|
67
|
+
- **安全警告**:在非加密模式下,API Key 以明文存在 `localStorage`。建议引导用户点击设置面板顶部的“锁定”图标,通过 Web Crypto API 进行本地加密。
|
|
68
|
+
- **智能路径补全**:若用户输入的 Base URL 无法连接,SDK 会自动尝试追加 `/v1`(如 `https://api.deepseek.com` -> `https://api.deepseek.com/v1`)。
|
|
70
69
|
|
|
71
|
-
##
|
|
70
|
+
## 配置规范 (Storage)
|
|
72
71
|
|
|
73
|
-
|
|
74
|
-
|
|
75
|
-
3. **搜索过滤**:在模型列表搜索框输入时,非匹配项会通过 CSS 隐藏,确保不破坏 DOM 树。
|
|
76
|
-
4. **加密切换**:点击顶部“锁定”状态可切换明文/加密模式。
|
|
72
|
+
- 存储键名:`vibe_ai_v3_config`
|
|
73
|
+
- 加密前缀:`ENC:`(仅在开启加密模式时)
|
package/package.json
CHANGED
|
@@ -1,8 +1,8 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "vibe-ai-c",
|
|
3
|
-
"version": "3.3.
|
|
3
|
+
"version": "3.3.2",
|
|
4
4
|
"description": "一个极简的、面向浏览器的多供应商 AI SDK 与 UI 管理工具。支持 OpenAI 兼容协议。",
|
|
5
|
-
"main": "vibe-ai.js",
|
|
5
|
+
"main": "vibe-ai.min.js",
|
|
6
6
|
"type": "module",
|
|
7
7
|
"scripts": {
|
|
8
8
|
"dev": "npx servor . demo.html 8080",
|