@bigsmarter/ai-chat-sdk
v1.0.11
Published
AI聊天SDK - 完整的原版功能
Downloads
90
Maintainers
Readme
AI Chat SDK
一个功能完善的AI聊天SDK,支持Vue 3,提供开箱即用的聊天组件和灵活的API。
✨ 核心特性
🎯 真正的开箱即用
- ✅ 零配置启动 - 导入即用,无需实现任何功能
- ✅ 完整UI组件 - 原版样式100%还原
- ✅ 自动初始化 - 自动获取所有必要信息
- ✅ 智能管理 - 自动管理session、智能体、用户信息
🚀 完整功能
- ⚡ 打字机效果 - 模拟真实的逐字打印
- 🧠 深度思考 - 支持深度思考模式
- 🌐 联网搜索 - 支持实时网络搜索
- 📝 会话管理 - 创建、加载、删除会话
- 🔄 重新生成 - 支持重新生成AI回答
- ⏸️ 停止对话 - 可随时停止生成
- 💾 历史记录 - 自动保存对话历史
- 📎 文件上传 - 支持文件上传功能
- 🤖 智能体切换 - 支持多智能体切换
- 📋 一键复制 - 支持复制消息内容
📦 安装
npm install ai-chat-sdk🚀 快速开始
方式一:使用ChatBox组件(推荐)
<template>
<div class="app">
<!-- 外部自定义按钮 -->
<div class="controls">
<button @click="handleStop">停止</button>
<button @click="handleRegenerate">重新生成</button>
<button @click="handleNewChat">新对话</button>
</div>
<!-- SDK提供的聊天框(原版样式) -->
<ChatBox :chat-instance="chatSDK" />
</div>
</template>
<script setup>
import { ref, onMounted } from 'vue';
import { AIChat, ChatBox } from 'ai-chat-sdk';
const chatSDK = ref(null);
onMounted(async () => {
// 创建SDK实例
chatSDK.value = new AIChat({
api: { baseURL: '/api' }
});
// 自动初始化(获取所有必要信息)
await chatSDK.value.initialize();
});
// 所有功能SDK已实现,直接调用即可
async function handleStop() {
await chatSDK.value.stopChat();
}
async function handleRegenerate() {
await chatSDK.value.regenerateAnswer();
}
async function handleNewChat() {
await chatSDK.value.createNewSession(); // 会自动刷新智能体列表
}
</script>🎯 核心方法
初始化
// 自动获取:用户信息、clientToken、智能体列表、文件上传限制
const result = await chatSDK.initialize();发送消息
await chatSDK.sendMessage({
userInput: '你好',
thinkDeep: true, // 开启深度思考
webBasedSearch: false, // 关闭联网搜索
});对话控制
// 停止当前对话
await chatSDK.stopChat();
// 重新生成回答(自动使用原始参数)
await chatSDK.regenerateAnswer();
// 新建对话(自动刷新智能体列表)
await chatSDK.createNewSession();会话管理
// 获取会话列表
const sessions = await chatSDK.getSessionList();
// 加载历史会话(自动设置sessionId和消息列表)
await chatSDK.loadHistorySession(sessionId);
// 删除会话
await chatSDK.deleteSession(sessionId);智能体管理
// 获取智能体列表
const agents = chatSDK.getAgentList();
// 获取当前智能体
const currentAgent = chatSDK.getCurrentAgent();
// 切换智能体(自动更新apikey和清空对话)
await chatSDK.switchAgent(agentId);其他功能
// 复制消息
await chatSDK.copyMessage(content);
// 获取用户信息
const userInfo = chatSDK.getUserInfo();
// 获取上传限制
const uploadLimit = chatSDK.getUploadLimit();
// 上传文件
const result = await chatSDK.uploadFile(file);
// 消息反馈
await chatSDK.feedbackMessage({
message_id: 'xxx',
feedback_type: 'like'
});📡 事件监听
// 监听消息更新
chatSDK.on('message', (data) => {
console.log('消息更新:', data.message);
});
// 监听完成事件
chatSDK.on('complete', (data) => {
console.log('对话完成');
});
// 监听新建会话
chatSDK.on('new-session', (data) => {
console.log('新建会话:', data);
});
// 监听会话加载
chatSDK.on('session-loaded', (data) => {
console.log('会话已加载:', data.sessionId);
});
// 监听智能体切换
chatSDK.on('agent-switched', (data) => {
console.log('智能体已切换:', data.agentId);
});
// 监听复制成功
chatSDK.on('copy-success', (data) => {
console.log('复制成功');
});
// 取消监听
chatSDK.off('message', listenerFn);⚙️ 配置选项
const chatSDK = new AIChat({
api: {
baseURL: '/api', // API基础URL
a2aURL: '/api', // A2A API URL
timeout: 180000, // 请求超时(ms)
},
auth: {
apiKey: 'xxx', // API密钥(可选,SDK会自动从Cookie读取)
authToken: 'xxx', // 认证Token(可选)
clientToken: 'xxx', // 客户端Token(可选)
},
defaults: {
thinkDeep: false, // 默认深度思考
webBasedSearch: false, // 默认联网搜索
typingEffect: true, // 打字机效果
typingSpeed: 20, // 打字速度(ms/字符)
}
});💡 完整示例
查看 test-project 目录获取完整的使用示例:
- App-custom-buttons.vue - 自定义按钮版本(推荐)
- App-with-component.vue - 完全内置UI版本
🎨 组件说明
ChatBox组件
- 包含:消息列表 + 输入框
- 样式:完全还原原版UI
- 特点:开箱即用,无需自己写样式
Props
| 属性 | 类型 | 默认值 | 说明 |
|-----|------|--------|------|
| chat-instance | AIChat | - | SDK实例(必需) |
| auto-scroll | boolean | true | 自动滚动到底部 |
| show-input | boolean | true | 是否显示输入框 |
| think-deep | boolean | false | 是否开启深度思考 |
| web-search | boolean | false | 是否开启联网搜索 |
Events
| 事件 | 参数 | 说明 |
|-----|------|------|
| question-click | question: string | 点击相关问题时触发 |
| message-sent | message: string | 消息发送后触发 |
| loading-change | isLoading: boolean | 加载状态变化时触发 |
🔐 认证说明
SDK支持两种认证方式:
1. 自动从Cookie读取(推荐)
SDK会自动读取以下Cookie:
authToken- 认证Tokenapikey- API密钥client_token- 客户端Token
const chatSDK = new AIChat({
api: { baseURL: '/api' }
// 不需要配置auth,SDK会自动读取Cookie
});2. 手动配置
const chatSDK = new AIChat({
api: { baseURL: '/api' },
auth: {
apiKey: 'your-api-key',
authToken: 'your-auth-token'
}
});🆚 与原版对比
| 功能 | 原版 | SDK | |-----|------|-----| | 初始化 | 手动调用4个接口 | ✅ 一键initialize() | | 新建对话 | 手动清空+刷新列表 | ✅ 自动处理 | | 历史会话 | 手动设置sessionId | ✅ 自动设置 | | 智能体切换 | 手动更新apikey | ✅ 自动更新 | | 消息重发 | 手动保存参数 | ✅ 自动保存 | | UI样式 | 需要自己写 | ✅ 开箱即用 |
📚 文档
- SDK使用指南.md - 完整的API文档
- SDK完整功能清单.md - 功能详细说明
- test-project/README.md - 测试项目说明
🧪 本地开发
# 安装依赖
npm install
# 启动测试项目
cd test-project
npm install
npm run dev📝 构建发布
# 构建SDK
npm run build:lib
# 发布到npm
npm publish💡 核心优势
真正的零实现
用户完全不需要:
- ❌ 自己调用API
- ❌ 管理状态
- ❌ 处理SSE
- ❌ 保存参数
- ❌ 实现业务逻辑
- ❌ 写样式
所有功能SDK内部完成
- ✅ 自动初始化
- ✅ 自动刷新智能体列表
- ✅ 自动保存重发参数
- ✅ 自动管理session
- ✅ 自动处理事件
📄 许可证
MIT
🤝 贡献
欢迎提交 Issue 和 Pull Request!
