{"_id":"@bigsmarter/ai-chat-sdk","name":"@bigsmarter/ai-chat-sdk","dist-tags":{"latest":"1.0.11"},"versions":{"1.0.11":{"name":"@bigsmarter/ai-chat-sdk","version":"1.0.11","description":"AI聊天SDK - 完整的原版功能","type":"module","main":"./dist/ai-chat-sdk.umd.js","module":"./dist/ai-chat-sdk.es.js","types":"./dist/index.d.ts","exports":{".":{"import":"./dist/ai-chat-sdk.es.js","require":"./dist/ai-chat-sdk.umd.js","types":"./dist/index.d.ts"},"./style.css":"./dist/style.css"},"author":{"name":"AI Chat Team"},"repository":{"type":"git","url":"https://gitee.com/Like_TheWind/a2-a-ai-chat.git"},"scripts":{"dev":"vite","build":"vite build","build:sdk":"npx vite build --config vite.config.sdk.js","preview":"vite preview","prepublishOnly":"npm run build:sdk","test-publish":"npm pack --dry-run"},"keywords":["ai","chat","chatbot","sdk","vue","typescript"],"license":"MIT","dependencies":{"@microsoft/fetch-event-source":"^2.0.1","axios":"^1.6.7","dompurify":"^3.0.11","element-plus":"^2.6.0","event-source-polyfill":"^1.0.31","highlight.js":"^11.9.0","js-cookie":"^3.0.5","markdown-it":"^14.0.0","markdown-it-katex":"^2.0.3","marked":"^11.0.0","pinia":"^2.1.7","unplugin-auto-import":"^20.2.0","vant":"^4.8.0","vue":"^3.4.15","vue-router":"^4.6.3"},"devDependencies":{"@rushstack/eslint-patch":"^1.3.3","@types/js-cookie":"^3.0.6","@types/markdown-it":"^13.0.7","@types/node":"^20.11.20","@vitejs/plugin-vue":"^5.0.3","@vue/eslint-config-typescript":"^12.0.0","eslint":"^8.49.0","eslint-plugin-vue":"^9.17.0","sass":"^1.71.1","typescript":"^5.0.0","unplugin-vue-components":"^30.0.0","vite":"^5.0.11","vite-plugin-svg-icons":"^2.0.1","vue-tsc":"^1.8.27"},"_id":"@bigsmarter/ai-chat-sdk@1.0.11","gitHead":"191cecaf79ce6f345b7b3fb3e29329b0d74ac817","_nodeVersion":"20.17.0","_npmVersion":"10.5.0","dist":{"integrity":"sha512-5Z0nDsNiWUnQs/FPkIGKTHFSCSkJw0TAAIQt6nRT8ye596NFHClSttNBWtK5LhRhspB0AclYGRJw8veuJU6Ciw==","shasum":"2bba73076b671ec7e1259d2e345f7e9b41c4fe17","tarball":"https://registry.npmjs.org/@bigsmarter/ai-chat-sdk/-/ai-chat-sdk-1.0.11.tgz","fileCount":9,"unpackedSize":10357396,"signatures":[{"keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U","sig":"MEUCIQDJKbXEd/Yju2VUK7+AeXaf5wEHjU+Wv63DM9T2WDVYqAIgCpdTa+A5tKhShHSvOZwvOMsS4Yi+DC4vd33Ft1dzF3I="}]},"_npmUser":{"name":"bigsmarter","email":"1035605584@qq.com"},"directories":{},"maintainers":[{"name":"bigsmarter","email":"1035605584@qq.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages-npm-production","tmp":"tmp/ai-chat-sdk_1.0.11_1763101788320_0.47229502743895724"},"_hasShrinkwrap":false}},"time":{"created":"2025-11-14T06:29:48.250Z","1.0.11":"2025-11-14T06:29:48.567Z","modified":"2025-11-14T06:29:48.818Z"},"maintainers":[{"name":"bigsmarter","email":"1035605584@qq.com"}],"description":"AI聊天SDK - 完整的原版功能","keywords":["ai","chat","chatbot","sdk","vue","typescript"],"repository":{"type":"git","url":"https://gitee.com/Like_TheWind/a2-a-ai-chat.git"},"author":{"name":"AI Chat Team"},"license":"MIT","readme":"# AI Chat SDK\r\n\r\n一个功能完善的AI聊天SDK，支持Vue 3，提供开箱即用的聊天组件和灵活的API。\r\n\r\n## ✨ 核心特性\r\n\r\n### 🎯 真正的开箱即用\r\n- ✅ **零配置启动** - 导入即用，无需实现任何功能\r\n- ✅ **完整UI组件** - 原版样式100%还原\r\n- ✅ **自动初始化** - 自动获取所有必要信息\r\n- ✅ **智能管理** - 自动管理session、智能体、用户信息\r\n\r\n### 🚀 完整功能\r\n- ⚡ **打字机效果** - 模拟真实的逐字打印\r\n- 🧠 **深度思考** - 支持深度思考模式\r\n- 🌐 **联网搜索** - 支持实时网络搜索\r\n- 📝 **会话管理** - 创建、加载、删除会话\r\n- 🔄 **重新生成** - 支持重新生成AI回答\r\n- ⏸️ **停止对话** - 可随时停止生成\r\n- 💾 **历史记录** - 自动保存对话历史\r\n- 📎 **文件上传** - 支持文件上传功能\r\n- 🤖 **智能体切换** - 支持多智能体切换\r\n- 📋 **一键复制** - 支持复制消息内容\r\n\r\n## 📦 安装\r\n\r\n```bash\r\nnpm install ai-chat-sdk\r\n```\r\n\r\n## 🚀 快速开始\r\n\r\n### 方式一：使用ChatBox组件（推荐）\r\n\r\n```vue\r\n<template>\r\n  <div class=\"app\">\r\n    <!-- 外部自定义按钮 -->\r\n    <div class=\"controls\">\r\n      <button @click=\"handleStop\">停止</button>\r\n      <button @click=\"handleRegenerate\">重新生成</button>\r\n      <button @click=\"handleNewChat\">新对话</button>\r\n    </div>\r\n\r\n    <!-- SDK提供的聊天框（原版样式） -->\r\n    <ChatBox :chat-instance=\"chatSDK\" />\r\n  </div>\r\n</template>\r\n\r\n<script setup>\r\nimport { ref, onMounted } from 'vue';\r\nimport { AIChat, ChatBox } from 'ai-chat-sdk';\r\n\r\nconst chatSDK = ref(null);\r\n\r\nonMounted(async () => {\r\n  // 创建SDK实例\r\n  chatSDK.value = new AIChat({\r\n    api: { baseURL: '/api' }\r\n  });\r\n  \r\n  // 自动初始化（获取所有必要信息）\r\n  await chatSDK.value.initialize();\r\n});\r\n\r\n// 所有功能SDK已实现，直接调用即可\r\nasync function handleStop() {\r\n  await chatSDK.value.stopChat();\r\n}\r\n\r\nasync function handleRegenerate() {\r\n  await chatSDK.value.regenerateAnswer();\r\n}\r\n\r\nasync function handleNewChat() {\r\n  await chatSDK.value.createNewSession(); // 会自动刷新智能体列表\r\n}\r\n</script>\r\n```\r\n\r\n## 🎯 核心方法\r\n\r\n### 初始化\r\n\r\n```typescript\r\n// 自动获取：用户信息、clientToken、智能体列表、文件上传限制\r\nconst result = await chatSDK.initialize();\r\n```\r\n\r\n### 发送消息\r\n\r\n```typescript\r\nawait chatSDK.sendMessage({\r\n  userInput: '你好',\r\n  thinkDeep: true,           // 开启深度思考\r\n  webBasedSearch: false,     // 关闭联网搜索\r\n});\r\n```\r\n\r\n### 对话控制\r\n\r\n```typescript\r\n// 停止当前对话\r\nawait chatSDK.stopChat();\r\n\r\n// 重新生成回答（自动使用原始参数）\r\nawait chatSDK.regenerateAnswer();\r\n\r\n// 新建对话（自动刷新智能体列表）\r\nawait chatSDK.createNewSession();\r\n```\r\n\r\n### 会话管理\r\n\r\n```typescript\r\n// 获取会话列表\r\nconst sessions = await chatSDK.getSessionList();\r\n\r\n// 加载历史会话（自动设置sessionId和消息列表）\r\nawait chatSDK.loadHistorySession(sessionId);\r\n\r\n// 删除会话\r\nawait chatSDK.deleteSession(sessionId);\r\n```\r\n\r\n### 智能体管理\r\n\r\n```typescript\r\n// 获取智能体列表\r\nconst agents = chatSDK.getAgentList();\r\n\r\n// 获取当前智能体\r\nconst currentAgent = chatSDK.getCurrentAgent();\r\n\r\n// 切换智能体（自动更新apikey和清空对话）\r\nawait chatSDK.switchAgent(agentId);\r\n```\r\n\r\n### 其他功能\r\n\r\n```typescript\r\n// 复制消息\r\nawait chatSDK.copyMessage(content);\r\n\r\n// 获取用户信息\r\nconst userInfo = chatSDK.getUserInfo();\r\n\r\n// 获取上传限制\r\nconst uploadLimit = chatSDK.getUploadLimit();\r\n\r\n// 上传文件\r\nconst result = await chatSDK.uploadFile(file);\r\n\r\n// 消息反馈\r\nawait chatSDK.feedbackMessage({\r\n  message_id: 'xxx',\r\n  feedback_type: 'like'\r\n});\r\n```\r\n\r\n## 📡 事件监听\r\n\r\n```typescript\r\n// 监听消息更新\r\nchatSDK.on('message', (data) => {\r\n  console.log('消息更新:', data.message);\r\n});\r\n\r\n// 监听完成事件\r\nchatSDK.on('complete', (data) => {\r\n  console.log('对话完成');\r\n});\r\n\r\n// 监听新建会话\r\nchatSDK.on('new-session', (data) => {\r\n  console.log('新建会话:', data);\r\n});\r\n\r\n// 监听会话加载\r\nchatSDK.on('session-loaded', (data) => {\r\n  console.log('会话已加载:', data.sessionId);\r\n});\r\n\r\n// 监听智能体切换\r\nchatSDK.on('agent-switched', (data) => {\r\n  console.log('智能体已切换:', data.agentId);\r\n});\r\n\r\n// 监听复制成功\r\nchatSDK.on('copy-success', (data) => {\r\n  console.log('复制成功');\r\n});\r\n\r\n// 取消监听\r\nchatSDK.off('message', listenerFn);\r\n```\r\n\r\n## ⚙️ 配置选项\r\n\r\n```typescript\r\nconst chatSDK = new AIChat({\r\n  api: {\r\n    baseURL: '/api',              // API基础URL\r\n    a2aURL: '/api',               // A2A API URL\r\n    timeout: 180000,              // 请求超时(ms)\r\n  },\r\n  auth: {\r\n    apiKey: 'xxx',                // API密钥（可选，SDK会自动从Cookie读取）\r\n    authToken: 'xxx',             // 认证Token（可选）\r\n    clientToken: 'xxx',           // 客户端Token（可选）\r\n  },\r\n  defaults: {\r\n    thinkDeep: false,             // 默认深度思考\r\n    webBasedSearch: false,        // 默认联网搜索\r\n    typingEffect: true,           // 打字机效果\r\n    typingSpeed: 20,              // 打字速度(ms/字符)\r\n  }\r\n});\r\n```\r\n\r\n## 💡 完整示例\r\n\r\n查看 `test-project` 目录获取完整的使用示例：\r\n\r\n- **App-custom-buttons.vue** - 自定义按钮版本（推荐）\r\n- **App-with-component.vue** - 完全内置UI版本\r\n\r\n## 🎨 组件说明\r\n\r\n### ChatBox组件\r\n\r\n- **包含**：消息列表 + 输入框\r\n- **样式**：完全还原原版UI\r\n- **特点**：开箱即用，无需自己写样式\r\n\r\n### Props\r\n\r\n| 属性 | 类型 | 默认值 | 说明 |\r\n|-----|------|--------|------|\r\n| `chat-instance` | AIChat | - | SDK实例（必需） |\r\n| `auto-scroll` | boolean | true | 自动滚动到底部 |\r\n| `show-input` | boolean | true | 是否显示输入框 |\r\n| `think-deep` | boolean | false | 是否开启深度思考 |\r\n| `web-search` | boolean | false | 是否开启联网搜索 |\r\n\r\n### Events\r\n\r\n| 事件 | 参数 | 说明 |\r\n|-----|------|------|\r\n| `question-click` | question: string | 点击相关问题时触发 |\r\n| `message-sent` | message: string | 消息发送后触发 |\r\n| `loading-change` | isLoading: boolean | 加载状态变化时触发 |\r\n\r\n## 🔐 认证说明\r\n\r\nSDK支持两种认证方式：\r\n\r\n### 1. 自动从Cookie读取（推荐）\r\n\r\nSDK会自动读取以下Cookie：\r\n- `authToken` - 认证Token\r\n- `apikey` - API密钥\r\n- `client_token` - 客户端Token\r\n\r\n```javascript\r\nconst chatSDK = new AIChat({\r\n  api: { baseURL: '/api' }\r\n  // 不需要配置auth，SDK会自动读取Cookie\r\n});\r\n```\r\n\r\n### 2. 手动配置\r\n\r\n```javascript\r\nconst chatSDK = new AIChat({\r\n  api: { baseURL: '/api' },\r\n  auth: {\r\n    apiKey: 'your-api-key',\r\n    authToken: 'your-auth-token'\r\n  }\r\n});\r\n```\r\n\r\n## 🆚 与原版对比\r\n\r\n| 功能 | 原版 | SDK |\r\n|-----|------|-----|\r\n| 初始化 | 手动调用4个接口 | ✅ 一键initialize() |\r\n| 新建对话 | 手动清空+刷新列表 | ✅ 自动处理 |\r\n| 历史会话 | 手动设置sessionId | ✅ 自动设置 |\r\n| 智能体切换 | 手动更新apikey | ✅ 自动更新 |\r\n| 消息重发 | 手动保存参数 | ✅ 自动保存 |\r\n| UI样式 | 需要自己写 | ✅ 开箱即用 |\r\n\r\n## 📚 文档\r\n\r\n- [SDK使用指南.md](./SDK使用指南.md) - 完整的API文档\r\n- [SDK完整功能清单.md](./SDK完整功能清单.md) - 功能详细说明\r\n- [test-project/README.md](./test-project/README.md) - 测试项目说明\r\n\r\n## 🧪 本地开发\r\n\r\n```bash\r\n# 安装依赖\r\nnpm install\r\n\r\n# 启动测试项目\r\ncd test-project\r\nnpm install\r\nnpm run dev\r\n```\r\n\r\n## 📝 构建发布\r\n\r\n```bash\r\n# 构建SDK\r\nnpm run build:lib\r\n\r\n# 发布到npm\r\nnpm publish\r\n```\r\n\r\n## 💡 核心优势\r\n\r\n### 真正的零实现\r\n用户**完全不需要**：\r\n- ❌ 自己调用API\r\n- ❌ 管理状态\r\n- ❌ 处理SSE\r\n- ❌ 保存参数\r\n- ❌ 实现业务逻辑\r\n- ❌ 写样式\r\n\r\n### 所有功能SDK内部完成\r\n- ✅ 自动初始化\r\n- ✅ 自动刷新智能体列表\r\n- ✅ 自动保存重发参数\r\n- ✅ 自动管理session\r\n- ✅ 自动处理事件\r\n\r\n## 📄 许可证\r\n\r\nMIT\r\n\r\n## 🤝 贡献\r\n\r\n欢迎提交 Issue 和 Pull Request！\r\n","readmeFilename":"README.md","_rev":"1-84675af2d6d39ae20b4ba83227b270b7"}