总安装量
159
今日新增
+3
用户评分
- / 5.0 (0)
当前版本
1.0.5.1
AI Dialog 使用说明
一个功能丰富的AI对话框组件库,支持多模型切换、Markdown渲染、图片上传、代码高亮等功能。
快速开始
1. 引入库
// 将整个库代码复制到你的项目中,或通过 script 标签引入
<script src="path/to/ai-dialog.js"></script>
库会自动初始化并在 window 上暴露 aiDialog 对象。
核心功能
打开对话框
aiDialog.openDialog({
// 触发元素(可选)
el: document.querySelector('.trigger-btn'),
// 主题:'light' 或 'dark'
theme: 'light',
// 模型列表
models: [
{
model: 'deepseek',
modelName: 'DeepSeek-R1',
url: 'https://api.deepseek.com/v1/chat/completions',
apiKey: 'YOUR_API_KEY',
stream: true,
temperature: 0.7
},
{
model: 'qwen3',
modelName: 'Qwen3-Coder',
url: 'https://api.qwen.com/v1',
apiKey: 'YOUR_API_KEY',
stream: true,
temperature: 0.7
}
],
// 当前使用的模型
model: {
model: 'deepseek',
modelName: 'DeepSeek-R1',
url: 'https://api.deepseek.com/v1',
apiKey: 'YOUR_API_KEY',
stream: true,
temperature: 0.7
},
// 按钮配置
button: {
name: 'AI解释',
prompt: '请解释以下内容:{{selection}}',
system: '你是一个专业的AI助手',
isChat: false, // 是否为聊天模式
pin: false, // 是否默认钉住
beforeCallback: (message) => {
console.log('发送前:', message);
},
afterCallback: (content) => {
console.log('接收后:', content);
},
replaceCallback: (result, markdown) => {
console.log('替换内容:', result);
}
},
// 聊天按钮配置(可选)
chatButton: {
name: 'AI聊天',
prompt: '{{selection}}',
system: '你是一个友好的AI助手',
isChat: true
},
// 上下文内容(可选)
context: '当前页面上下文信息...',
// 位置配置
position: 'followTarget', // 或自定义位置
left: 100,
top: 100,
width: 420,
height: 468,
// z-index
zIndex: 10000,
// 库配置
config: {
libs: {
marked: 'https://fastly.jsdelivr.net/npm/marked/marked.min.js',
ImageViewer: 'https://scriptcat.org/lib/4625/1.0.0/ImageViewer.js',
Popup: 'https://scriptcat.org/lib/4657/1.0.0/Popup.js',
LLMStream: 'https://scriptcat.org/lib/4568/1.0.4/LLMStream.js',
}
},
// 模型切换回调
setModel: (newModel) => {
console.log('切换模型:', newModel);
},
// 工具函数
tools: {
getCurrentDoc: async () => {
return {
content: '当前文档内容...'
};
}
}
});
API 方法
openDialog(options)
打开对话框
closeDialog()
关闭对话框
sendMessage(userMessage)
发送单次消息(解释/翻译模式)
aiDialog.sendMessage('请解释这段代码...');
submitMessage(userMessage)
提交聊天消息(聊天模式)
aiDialog.submitMessage('你好,AI!');
clearHistory()
清空对话历史
resetChats(action)
重置对话框状态
aiDialog.resetChats('new-dialog'); // 新建对话
aiDialog.resetChats('close-dialog'); // 关闭时重置
getHistory()
获取当前会话历史
const history = aiDialog.getHistory();
console.log(history);
getGlobalHistory()
获取全局历史记录(最多200条)
const globalHistory = aiDialog.getGlobalHistory();
showImage(src)
显示图片查看器
aiDialog.showImage('https://example.com/image.jpg');
pin(isPin)
钉住/取消钉住对话框
aiDialog.pin(true); // 钉住
aiDialog.pin(false); // 取消
show()
显示对话框(不触发初始化)
高级功能
1. 图片上传
用户可以通过以下方式添加图片:
- 右键输入框 → 上传图片
- 粘贴图片到输入框
2. 关联当前文档
右键输入框 → 关联当前文档,将当前文档内容作为上下文发送给AI
3. 代码高亮与复制
AI返回的代码块会自动高亮,鼠标悬停显示复制按钮
4. Markdown渲染
支持完整的Markdown语法,包括:
- 标题、列表、引用
- 代码块
- 图片、链接
- 表格
5. 多模型切换
点击右上角模型选择器,可随时切换AI模型
6. 消息操作
每条消息支持:
- 编辑:修改消息内容
- 复制:普通点击复制消息,Shift+点击复制全部对话
- 重新生成:重新请求AI回答
- 删除:删除消息
- 替换/插入:将内容插入到光标位置
7. 深度思考模式
AI返回的 <details> 标签会被渲染为可折叠的思考过程
样式定制
主题切换
// 明亮主题
aiDialog.openDialog({ theme: 'light' });
// 暗黑主题
aiDialog.openDialog({ theme: 'dark' });
自定义样式
所有样式都使用 .ai-dialog 前缀,可通过CSS覆盖:
/* 修改对话框背景 */
.ai-light.ai-dialog {
background-color: #f9f9f9;
}
/* 修改代码块样式 */
.ai-dialog pre {
background: #282c34;
}
事件回调
beforeCallback
消息发送前触发
button: {
beforeCallback: (message) => {
console.log('即将发送:', message);
// 可以修改 message 内容
}
}
afterCallback
消息接收完成后触发
button: {
afterCallback: (content) => {
console.log('接收完成:', content);
}
}
replaceCallback
点击"替换/插入"按钮时触发
button: {
replaceCallback: (result, markdown) => {
console.log('替换内容:', result);
console.log('原始Markdown:', markdown);
}
}
完整示例
// 配置AI模型
const models = [
{
model: 'deepseek',
modelName: 'DeepSeek-R1',
url: 'https://api.deepseek.com/v1',
apiKey: 'sk-xxx',
stream: true,
temperature: 0.7
}
];
// 打开对话框
aiDialog.openDialog({
el: document.querySelector('.trigger-btn'),
theme: 'light',
models: models,
model: models[0],
button: {
name: 'AI解释',
prompt: '请详细解释以下内容:{{selection}}',
system: '你是一个专业的技术专家',
isChat: false,
afterCallback: (content) => {
console.log('AI回答:', content);
}
},
chatButton: {
name: 'AI聊天',
prompt: '{{selection}}',
system: '你是一个友好的AI助手',
isChat: true
},
position: 'followTarget',
config: {
libs: {
marked: 'https://cdn.jsdelivr.net/npm/marked/marked.min.js'
}
}
});
注意事项
- API密钥安全:不要在前端暴露真实的API密钥,建议通过后端代理
- 依赖库:库会自动加载 marked.js、ImageViewer.js、Popup.js,确保网络可访问
- 浏览器兼容性:需要支持ES6+和现代浏览器API
- 流式输出:建议启用
stream: true以获得更好的用户体验
常见问题
Q: 如何添加自定义工具栏按钮?
A: 可以通过修改 dialog-header-right 区域的HTML结构添加
Q: 如何持久化对话历史?
A: 使用 getHistory() 获取历史后存储到 localStorage 或数据库
Q: 支持哪些AI模型?
A: 支持所有兼容 OpenAI Chat Completions API 的模型
Q: 如何处理网络错误?
A: 库会自动捕获错误并显示在对话框中,你也可以在 afterCallback 中处理
许可
本库为开源项目,遵循 MIT 许可证。