@agentscope-ai/chat 1.1.4

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.
Files changed (476) hide show
  1. package/README.md +88 -0
  2. package/dist/_util/hooks/use-proxy-imperative-handle.d.ts +4 -0
  3. package/dist/_util/hooks/use-proxy-imperative-handle.js +18 -0
  4. package/dist/_util/type.d.ts +1 -0
  5. package/dist/_util/type.js +1 -0
  6. package/dist/_util/warning.d.ts +30 -0
  7. package/dist/_util/warning.js +63 -0
  8. package/dist/accordion/Accordion.d.ts +22 -0
  9. package/dist/accordion/Accordion.js +93 -0
  10. package/dist/accordion/BodyContent.d.ts +8 -0
  11. package/dist/accordion/BodyContent.js +18 -0
  12. package/dist/accordion/DeepThink.d.ts +7 -0
  13. package/dist/accordion/DeepThink.js +35 -0
  14. package/dist/accordion/index.d.ts +2 -0
  15. package/dist/accordion/index.js +1 -0
  16. package/dist/accordion/index.less +170 -0
  17. package/dist/attachments/DropArea.d.ts +8 -0
  18. package/dist/attachments/DropArea.js +87 -0
  19. package/dist/attachments/FileList/AudioIcon.d.ts +2 -0
  20. package/dist/attachments/FileList/AudioIcon.js +19 -0
  21. package/dist/attachments/FileList/FileListCard.d.ts +12 -0
  22. package/dist/attachments/FileList/FileListCard.js +229 -0
  23. package/dist/attachments/FileList/Progress.d.ts +6 -0
  24. package/dist/attachments/FileList/Progress.js +21 -0
  25. package/dist/attachments/FileList/VideoIcon.d.ts +2 -0
  26. package/dist/attachments/FileList/VideoIcon.js +19 -0
  27. package/dist/attachments/FileList/index.d.ts +16 -0
  28. package/dist/attachments/FileList/index.js +132 -0
  29. package/dist/attachments/PlaceholderUploader.d.ts +17 -0
  30. package/dist/attachments/PlaceholderUploader.js +79 -0
  31. package/dist/attachments/SilentUploader.d.ts +9 -0
  32. package/dist/attachments/SilentUploader.js +23 -0
  33. package/dist/attachments/context.d.ts +5 -0
  34. package/dist/attachments/context.js +2 -0
  35. package/dist/attachments/index.d.ts +33 -0
  36. package/dist/attachments/index.js +166 -0
  37. package/dist/attachments/style/fileCard.d.ts +4 -0
  38. package/dist/attachments/style/fileCard.js +124 -0
  39. package/dist/attachments/style/index.d.ts +10 -0
  40. package/dist/attachments/style/index.js +211 -0
  41. package/dist/attachments/util.d.ts +2 -0
  42. package/dist/attachments/util.js +53 -0
  43. package/dist/bubble/Avatar.d.ts +10 -0
  44. package/dist/bubble/Avatar.js +22 -0
  45. package/dist/bubble/Bubble.d.ts +11 -0
  46. package/dist/bubble/Bubble.js +102 -0
  47. package/dist/bubble/BubbleList.d.ts +15 -0
  48. package/dist/bubble/BubbleList.js +44 -0
  49. package/dist/bubble/Cards.d.ts +21 -0
  50. package/dist/bubble/Cards.js +47 -0
  51. package/dist/bubble/ScrollToBottom.d.ts +7 -0
  52. package/dist/bubble/ScrollToBottom.js +45 -0
  53. package/dist/bubble/Spin.d.ts +2 -0
  54. package/dist/bubble/Spin.js +18 -0
  55. package/dist/bubble/hooks/useDisplayData.d.ts +0 -0
  56. package/dist/bubble/hooks/useDisplayData.js +0 -0
  57. package/dist/bubble/hooks/useListData.d.ts +0 -0
  58. package/dist/bubble/hooks/useListData.js +0 -0
  59. package/dist/bubble/index.d.ts +8 -0
  60. package/dist/bubble/index.js +4 -0
  61. package/dist/bubble/interface.d.ts +26 -0
  62. package/dist/bubble/interface.js +1 -0
  63. package/dist/bubble/loading.d.ts +6 -0
  64. package/dist/bubble/loading.js +17 -0
  65. package/dist/bubble/style/avatar.less +40 -0
  66. package/dist/bubble/style/content.d.ts +4 -0
  67. package/dist/bubble/style/content.js +43 -0
  68. package/dist/bubble/style/index.d.ts +9 -0
  69. package/dist/bubble/style/index.js +53 -0
  70. package/dist/bubble/style/list.less +15 -0
  71. package/dist/bubble/style/scrollToBottom.less +174 -0
  72. package/dist/chat-anywhere/Chat/Ref.d.ts +3 -0
  73. package/dist/chat-anywhere/Chat/Ref.js +19 -0
  74. package/dist/chat-anywhere/Chat/index.d.ts +4 -0
  75. package/dist/chat-anywhere/Chat/index.js +65 -0
  76. package/dist/chat-anywhere/Chat/index.less +54 -0
  77. package/dist/chat-anywhere/Header/index.d.ts +3 -0
  78. package/dist/chat-anywhere/Header/index.js +32 -0
  79. package/dist/chat-anywhere/Header/index.less +24 -0
  80. package/dist/chat-anywhere/Input/index.d.ts +3 -0
  81. package/dist/chat-anywhere/Input/index.js +170 -0
  82. package/dist/chat-anywhere/Input/index.less +12 -0
  83. package/dist/chat-anywhere/Layout/index.d.ts +10 -0
  84. package/dist/chat-anywhere/Layout/index.js +73 -0
  85. package/dist/chat-anywhere/Layout/index.less +61 -0
  86. package/dist/chat-anywhere/SessionList/index.d.ts +5 -0
  87. package/dist/chat-anywhere/SessionList/index.js +115 -0
  88. package/dist/chat-anywhere/SessionList/index.less +52 -0
  89. package/dist/chat-anywhere/hooks/ChatAnywhereProvider.d.ts +43 -0
  90. package/dist/chat-anywhere/hooks/ChatAnywhereProvider.js +90 -0
  91. package/dist/chat-anywhere/hooks/types.d.ts +57 -0
  92. package/dist/chat-anywhere/hooks/types.js +1 -0
  93. package/dist/chat-anywhere/hooks/useInput.d.ts +7 -0
  94. package/dist/chat-anywhere/hooks/useInput.js +21 -0
  95. package/dist/chat-anywhere/hooks/useMessages.d.ts +11 -0
  96. package/dist/chat-anywhere/hooks/useMessages.js +56 -0
  97. package/dist/chat-anywhere/hooks/useSessionList.d.ts +24 -0
  98. package/dist/chat-anywhere/hooks/useSessionList.js +120 -0
  99. package/dist/chat-anywhere/index.d.ts +9 -0
  100. package/dist/chat-anywhere/index.js +58 -0
  101. package/dist/conversations/GroupTitle.d.ts +10 -0
  102. package/dist/conversations/GroupTitle.js +15 -0
  103. package/dist/conversations/Item.d.ts +14 -0
  104. package/dist/conversations/Item.js +96 -0
  105. package/dist/conversations/hooks/useGroupable.d.ts +9 -0
  106. package/dist/conversations/hooks/useGroupable.js +72 -0
  107. package/dist/conversations/index.d.ts +62 -0
  108. package/dist/conversations/index.js +124 -0
  109. package/dist/conversations/interface.d.ts +60 -0
  110. package/dist/conversations/interface.js +1 -0
  111. package/dist/conversations/style/index.d.ts +9 -0
  112. package/dist/conversations/style/index.js +80 -0
  113. package/dist/default-cards/Count/index.d.ts +3 -0
  114. package/dist/default-cards/Count/index.js +16 -0
  115. package/dist/default-cards/Count/index.less +19 -0
  116. package/dist/default-cards/DeepThink/index.d.ts +11 -0
  117. package/dist/default-cards/DeepThink/index.js +11 -0
  118. package/dist/default-cards/DeepThink/index.less +0 -0
  119. package/dist/default-cards/Files/index.d.ts +2 -0
  120. package/dist/default-cards/Files/index.js +18 -0
  121. package/dist/default-cards/Footer/index.d.ts +19 -0
  122. package/dist/default-cards/Footer/index.js +50 -0
  123. package/dist/default-cards/Footer/index.less +41 -0
  124. package/dist/default-cards/Images/index.d.ts +3 -0
  125. package/dist/default-cards/Images/index.js +33 -0
  126. package/dist/default-cards/Images/index.less +17 -0
  127. package/dist/default-cards/Interrupted/index.d.ts +11 -0
  128. package/dist/default-cards/Interrupted/index.js +40 -0
  129. package/dist/default-cards/Interrupted/index.less +57 -0
  130. package/dist/default-cards/Text/index.d.ts +2 -0
  131. package/dist/default-cards/Text/index.js +12 -0
  132. package/dist/default-cards/index.d.ts +6 -0
  133. package/dist/default-cards/index.js +6 -0
  134. package/dist/disclaimer/index.d.ts +11 -0
  135. package/dist/disclaimer/index.js +26 -0
  136. package/dist/docs/1896.async.js +457 -0
  137. package/dist/docs/2710.async.js +62 -0
  138. package/dist/docs/2863.async.js +400 -0
  139. package/dist/docs/3057.async.js +46 -0
  140. package/dist/docs/3364.async.js +25 -0
  141. package/dist/docs/404.html +15 -0
  142. package/dist/docs/4820.async.js +1381 -0
  143. package/dist/docs/5623.async.js +60 -0
  144. package/dist/docs/5757.async.js +1 -0
  145. package/dist/docs/5804.async.js +271 -0
  146. package/dist/docs/6198.async.js +18 -0
  147. package/dist/docs/6671.async.js +137 -0
  148. package/dist/docs/7195.async.js +1 -0
  149. package/dist/docs/7485.async.js +29 -0
  150. package/dist/docs/7931.async.js +19 -0
  151. package/dist/docs/7997.async.js +5 -0
  152. package/dist/docs/8156.async.js +110 -0
  153. package/dist/docs/8368.async.js +2 -0
  154. package/dist/docs/8480.async.js +1449 -0
  155. package/dist/docs/8618.async.js +246 -0
  156. package/dist/docs/9016.async.js +32 -0
  157. package/dist/docs/9016.chunk.css +1 -0
  158. package/dist/docs/9335.async.js +11 -0
  159. package/dist/docs/accordion__demos.async.js +9 -0
  160. package/dist/docs/attachments__demos.async.js +1 -0
  161. package/dist/docs/bubble__demos.async.js +50 -0
  162. package/dist/docs/components/accordion/index.html +15 -0
  163. package/dist/docs/components/accordion-cn/index.html +15 -0
  164. package/dist/docs/components/attachments/index.html +15 -0
  165. package/dist/docs/components/attachments-cn/index.html +15 -0
  166. package/dist/docs/components/bubble/index.html +15 -0
  167. package/dist/docs/components/bubble-cn/index.html +15 -0
  168. package/dist/docs/components/bubble-list/index.html +15 -0
  169. package/dist/docs/components/bubble-list-cn/index.html +15 -0
  170. package/dist/docs/components/conversations/index.html +15 -0
  171. package/dist/docs/components/conversations-cn/index.html +15 -0
  172. package/dist/docs/components/disclaimer/index.html +15 -0
  173. package/dist/docs/components/disclaimer-cn/index.html +15 -0
  174. package/dist/docs/components/footer/index.html +15 -0
  175. package/dist/docs/components/footer-cn/index.html +15 -0
  176. package/dist/docs/components/markdown/index.html +15 -0
  177. package/dist/docs/components/markdown-cn/index.html +15 -0
  178. package/dist/docs/components/sender/index.html +15 -0
  179. package/dist/docs/components/sender-cn/index.html +15 -0
  180. package/dist/docs/components/status/index.html +15 -0
  181. package/dist/docs/components/status-cn/index.html +15 -0
  182. package/dist/docs/components/welcome/index.html +15 -0
  183. package/dist/docs/components/welcome-cn/index.html +15 -0
  184. package/dist/docs/components__accordion__index.en-US.md.async.js +6 -0
  185. package/dist/docs/components__accordion__index.en-US.md.chunk.css +1 -0
  186. package/dist/docs/components__accordion__index.zh-CN.md.async.js +6 -0
  187. package/dist/docs/components__accordion__index.zh-CN.md.chunk.css +1 -0
  188. package/dist/docs/components__attachments__index.en-US.md.async.js +1 -0
  189. package/dist/docs/components__attachments__index.en-US.md.chunk.css +1 -0
  190. package/dist/docs/components__attachments__index.zh-CN.md.async.js +1 -0
  191. package/dist/docs/components__attachments__index.zh-CN.md.chunk.css +1 -0
  192. package/dist/docs/components__bubble-list__index.en-US.md.async.js +2 -0
  193. package/dist/docs/components__bubble-list__index.en-US.md.chunk.css +1 -0
  194. package/dist/docs/components__bubble-list__index.zh-CN.md.async.js +2 -0
  195. package/dist/docs/components__bubble-list__index.zh-CN.md.chunk.css +1 -0
  196. package/dist/docs/components__bubble__index.en-US.md.async.js +1 -0
  197. package/dist/docs/components__bubble__index.en-US.md.chunk.css +1 -0
  198. package/dist/docs/components__bubble__index.zh-CN.md.async.js +1 -0
  199. package/dist/docs/components__bubble__index.zh-CN.md.chunk.css +1 -0
  200. package/dist/docs/components__conversations__index.en-US.md.async.js +2 -0
  201. package/dist/docs/components__conversations__index.en-US.md.chunk.css +1 -0
  202. package/dist/docs/components__conversations__index.zh-CN.md.async.js +1 -0
  203. package/dist/docs/components__conversations__index.zh-CN.md.chunk.css +1 -0
  204. package/dist/docs/components__disclaimer__index.en-US.md.async.js +1 -0
  205. package/dist/docs/components__disclaimer__index.en-US.md.chunk.css +1 -0
  206. package/dist/docs/components__disclaimer__index.zh-CN.md.async.js +1 -0
  207. package/dist/docs/components__disclaimer__index.zh-CN.md.chunk.css +1 -0
  208. package/dist/docs/components__footer__index.en-US.md.async.js +1 -0
  209. package/dist/docs/components__footer__index.en-US.md.chunk.css +1 -0
  210. package/dist/docs/components__footer__index.zh-CN.md.async.js +2 -0
  211. package/dist/docs/components__footer__index.zh-CN.md.chunk.css +1 -0
  212. package/dist/docs/components__markdown__index.en-US.md.async.js +1 -0
  213. package/dist/docs/components__markdown__index.en-US.md.chunk.css +1 -0
  214. package/dist/docs/components__markdown__index.zh-CN.md.async.js +1 -0
  215. package/dist/docs/components__markdown__index.zh-CN.md.chunk.css +1 -0
  216. package/dist/docs/components__sender__index.en-US.md.async.js +1 -0
  217. package/dist/docs/components__sender__index.en-US.md.chunk.css +1 -0
  218. package/dist/docs/components__sender__index.zh-CN.md.async.js +1 -0
  219. package/dist/docs/components__sender__index.zh-CN.md.chunk.css +1 -0
  220. package/dist/docs/components__status__index.en-US.md.async.js +1 -0
  221. package/dist/docs/components__status__index.en-US.md.chunk.css +1 -0
  222. package/dist/docs/components__status__index.zh-CN.md.async.js +2 -0
  223. package/dist/docs/components__status__index.zh-CN.md.chunk.css +1 -0
  224. package/dist/docs/components__welcome__index.en-US.md.async.js +2 -0
  225. package/dist/docs/components__welcome__index.en-US.md.chunk.css +1 -0
  226. package/dist/docs/components__welcome__index.zh-CN.md.async.js +2 -0
  227. package/dist/docs/components__welcome__index.zh-CN.md.chunk.css +1 -0
  228. package/dist/docs/conversations__demos.async.js +1 -0
  229. package/dist/docs/demos.async.js +47 -0
  230. package/dist/docs/demos.chunk.css +1 -0
  231. package/dist/docs/disclaimer__demos.async.js +1 -0
  232. package/dist/docs/docs/development/ag-ui/index.html +15 -0
  233. package/dist/docs/docs/development/ag-ui-cn/index.html +15 -0
  234. package/dist/docs/docs/development/backend/index.html +15 -0
  235. package/dist/docs/docs/development/backend-cn/index.html +15 -0
  236. package/dist/docs/docs/development/cards/index.html +15 -0
  237. package/dist/docs/docs/development/cards-cn/index.html +15 -0
  238. package/dist/docs/docs/development/chatanywhere/index.html +15 -0
  239. package/dist/docs/docs/development/chatanywhere-api/index.html +15 -0
  240. package/dist/docs/docs/development/chatanywhere-api-cn/index.html +15 -0
  241. package/dist/docs/docs/development/chatanywhere-cn/index.html +15 -0
  242. package/dist/docs/docs/development/custom/index.html +15 -0
  243. package/dist/docs/docs/development/custom-cn/index.html +15 -0
  244. package/dist/docs/docs/development/overview/index.html +15 -0
  245. package/dist/docs/docs/development/overview-cn/index.html +15 -0
  246. package/dist/docs/docs/development/qwen/index.html +15 -0
  247. package/dist/docs/docs/development/qwen-cn/index.html +15 -0
  248. package/dist/docs/docs/templates/copilot/index.html +15 -0
  249. package/dist/docs/docs/templates/copilot-cn/index.html +15 -0
  250. package/dist/docs/docs/templates/native/index.html +15 -0
  251. package/dist/docs/docs/templates/native-cn/index.html +15 -0
  252. package/dist/docs/docs/templates/voice/index.html +15 -0
  253. package/dist/docs/docs/templates/voice-cn/index.html +15 -0
  254. package/dist/docs/docs__development__ag-ui.en-US.md.async.js +210 -0
  255. package/dist/docs/docs__development__ag-ui.en-US.md.chunk.css +1 -0
  256. package/dist/docs/docs__development__ag-ui.zh-CN.md.async.js +210 -0
  257. package/dist/docs/docs__development__ag-ui.zh-CN.md.chunk.css +1 -0
  258. package/dist/docs/docs__development__backend.en-US.md.async.js +12 -0
  259. package/dist/docs/docs__development__backend.en-US.md.chunk.css +1 -0
  260. package/dist/docs/docs__development__backend.zh-CN.md.async.js +12 -0
  261. package/dist/docs/docs__development__backend.zh-CN.md.chunk.css +1 -0
  262. package/dist/docs/docs__development__cards.en-US.md.async.js +27 -0
  263. package/dist/docs/docs__development__cards.en-US.md.chunk.css +1 -0
  264. package/dist/docs/docs__development__cards.zh-CN.md.async.js +27 -0
  265. package/dist/docs/docs__development__cards.zh-CN.md.chunk.css +1 -0
  266. package/dist/docs/docs__development__chatanywhere-api.en-US.md.async.js +69 -0
  267. package/dist/docs/docs__development__chatanywhere-api.en-US.md.chunk.css +1 -0
  268. package/dist/docs/docs__development__chatanywhere-api.zh-CN.md.async.js +69 -0
  269. package/dist/docs/docs__development__chatanywhere-api.zh-CN.md.chunk.css +1 -0
  270. package/dist/docs/docs__development__chatanywhere.en-US.md.async.js +77 -0
  271. package/dist/docs/docs__development__chatanywhere.en-US.md.chunk.css +1 -0
  272. package/dist/docs/docs__development__chatanywhere.zh-CN.md.async.js +77 -0
  273. package/dist/docs/docs__development__chatanywhere.zh-CN.md.chunk.css +1 -0
  274. package/dist/docs/docs__development__custom.en-US.md.async.js +22 -0
  275. package/dist/docs/docs__development__custom.en-US.md.chunk.css +1 -0
  276. package/dist/docs/docs__development__custom.zh-CN.md.async.js +22 -0
  277. package/dist/docs/docs__development__custom.zh-CN.md.chunk.css +1 -0
  278. package/dist/docs/docs__development__overview.en-US.md.async.js +21 -0
  279. package/dist/docs/docs__development__overview.en-US.md.chunk.css +1 -0
  280. package/dist/docs/docs__development__overview.zh-CN.md.async.js +21 -0
  281. package/dist/docs/docs__development__overview.zh-CN.md.chunk.css +1 -0
  282. package/dist/docs/docs__development__qwen.en-US.md.async.js +25 -0
  283. package/dist/docs/docs__development__qwen.en-US.md.chunk.css +1 -0
  284. package/dist/docs/docs__development__qwen.zh-CN.md.async.js +25 -0
  285. package/dist/docs/docs__development__qwen.zh-CN.md.chunk.css +1 -0
  286. package/dist/docs/docs__templates__copilot.en-US.md.async.js +1 -0
  287. package/dist/docs/docs__templates__copilot.en-US.md.chunk.css +1 -0
  288. package/dist/docs/docs__templates__copilot.zh-CN.md.async.js +1 -0
  289. package/dist/docs/docs__templates__copilot.zh-CN.md.chunk.css +1 -0
  290. package/dist/docs/docs__templates__native.en-US.md.async.js +1 -0
  291. package/dist/docs/docs__templates__native.en-US.md.chunk.css +1 -0
  292. package/dist/docs/docs__templates__native.zh-CN.md.async.js +1 -0
  293. package/dist/docs/docs__templates__native.zh-CN.md.chunk.css +1 -0
  294. package/dist/docs/docs__templates__voice.en-US.md.async.js +20 -0
  295. package/dist/docs/docs__templates__voice.en-US.md.chunk.css +1 -0
  296. package/dist/docs/docs__templates__voice.zh-CN.md.async.js +1 -0
  297. package/dist/docs/docs__templates__voice.zh-CN.md.chunk.css +1 -0
  298. package/dist/docs/dumi__pages__index__index.en-US.async.js +1 -0
  299. package/dist/docs/dumi__pages__index__index.en-US.chunk.css +1 -0
  300. package/dist/docs/dumi__pages__index__index.zh-CN.async.js +1 -0
  301. package/dist/docs/dumi__pages__index__index.zh-CN.chunk.css +1 -0
  302. package/dist/docs/dumi__theme__layouts__DocLayout__index.async.js +1 -0
  303. package/dist/docs/dumi__theme__layouts__DocLayout__index.chunk.css +1 -0
  304. package/dist/docs/dumi__theme__layouts__GlobalLayout__index.async.js +18 -0
  305. package/dist/docs/dumi__theme__layouts__GlobalLayout__index.chunk.css +1 -0
  306. package/dist/docs/dumi__tmp-production__dumi__theme__ContextWrapper.async.js +1 -0
  307. package/dist/docs/index/index.html +15 -0
  308. package/dist/docs/index-cn/index.html +15 -0
  309. package/dist/docs/markdown__demos.async.js +164 -0
  310. package/dist/docs/meta__components__en-US.async.js +9 -0
  311. package/dist/docs/meta__components__zh-CN.async.js +10 -0
  312. package/dist/docs/meta__docs__en-US.async.js +475 -0
  313. package/dist/docs/meta__docs__en-US.chunk.css +1 -0
  314. package/dist/docs/meta__docs__zh-CN.async.js +456 -0
  315. package/dist/docs/meta__docs__zh-CN.chunk.css +1 -0
  316. package/dist/docs/nm__dumi__dist__client__pages__404.async.js +1 -0
  317. package/dist/docs/nm__dumi__dist__client__pages__Demo__index.async.js +1 -0
  318. package/dist/docs/nm__dumi__dist__client__pages__Demo__index.chunk.css +1 -0
  319. package/dist/docs/preload_helper.js +1 -0
  320. package/dist/docs/sender__demos.async.js +1 -0
  321. package/dist/docs/umi.css +1 -0
  322. package/dist/docs/umi.js +107 -0
  323. package/dist/docs/welcome__demos.async.js +1 -0
  324. package/dist/docs/~demos/:id/index.html +15 -0
  325. package/dist/docs/~demos/accordion-demo-inline/index.html +15 -0
  326. package/dist/docs/~demos/accordion-demo-mutisteps/index.html +15 -0
  327. package/dist/docs/~demos/accordion-demo-thinking/index.html +15 -0
  328. package/dist/docs/~demos/attachments-demo-files/index.html +15 -0
  329. package/dist/docs/~demos/bubble-demo-basic/index.html +15 -0
  330. package/dist/docs/~demos/bubble-demo-havestopped/index.html +15 -0
  331. package/dist/docs/~demos/bubble-demo-userwithfile/index.html +15 -0
  332. package/dist/docs/~demos/bubble-demo-userwithimage/index.html +15 -0
  333. package/dist/docs/~demos/bubble-demo-userwithnormal/index.html +15 -0
  334. package/dist/docs/~demos/bubble-demo-withavatar/index.html +15 -0
  335. package/dist/docs/~demos/bubble-demo-withcode/index.html +15 -0
  336. package/dist/docs/~demos/bubble-demo-witherror/index.html +15 -0
  337. package/dist/docs/~demos/bubble-demo-witherrordetail/index.html +15 -0
  338. package/dist/docs/~demos/bubble-demo-withimage/index.html +15 -0
  339. package/dist/docs/~demos/bubble-demo-withusage/index.html +15 -0
  340. package/dist/docs/~demos/bubble-demo-withwaitingmessage/index.html +15 -0
  341. package/dist/docs/~demos/components-bubble-list-demo-basic/index.html +15 -0
  342. package/dist/docs/~demos/components-footer-demo-basic/index.html +15 -0
  343. package/dist/docs/~demos/components-footer-demo-withusage/index.html +15 -0
  344. package/dist/docs/~demos/components-status-demo-basic/index.html +15 -0
  345. package/dist/docs/~demos/conversations-demo-basic/index.html +15 -0
  346. package/dist/docs/~demos/disclaimer-demo-demo/index.html +15 -0
  347. package/dist/docs/~demos/disclaimer-demo-withlink/index.html +15 -0
  348. package/dist/docs/~demos/docs-development-ag-ui-demo-with-copilotkit/index.html +15 -0
  349. package/dist/docs/~demos/docs-development-cards-demo-file/index.html +15 -0
  350. package/dist/docs/~demos/docs-development-cards-demo-footer/index.html +15 -0
  351. package/dist/docs/~demos/docs-development-cards-demo-image/index.html +15 -0
  352. package/dist/docs/~demos/docs-development-cards-demo-text/index.html +15 -0
  353. package/dist/docs/~demos/docs-development-custom-demo-custom/index.html +15 -0
  354. package/dist/docs/~demos/docs-templates-copilot-demo-copilot/index.html +15 -0
  355. package/dist/docs/~demos/docs-templates-native-demo-basic/index.html +15 -0
  356. package/dist/docs/~demos/docs-templates-voice-demo-demo/index.html +15 -0
  357. package/dist/docs/~demos/markdown-demo-citations/index.html +15 -0
  358. package/dist/docs/~demos/markdown-demo-cursor/index.html +15 -0
  359. package/dist/docs/~demos/markdown-demo-mathjax/index.html +15 -0
  360. package/dist/docs/~demos/markdown-demo-md/index.html +15 -0
  361. package/dist/docs/~demos/sender-demo-basic/index.html +15 -0
  362. package/dist/docs/~demos/sender-demo-disabled/index.html +15 -0
  363. package/dist/docs/~demos/sender-demo-loading/index.html +15 -0
  364. package/dist/docs/~demos/sender-demo-moreprefixaction/index.html +15 -0
  365. package/dist/docs/~demos/sender-demo-withfile/index.html +15 -0
  366. package/dist/docs/~demos/welcome-demo-demo0/index.html +15 -0
  367. package/dist/docs/~demos/welcome-demo-demo1/index.html +15 -0
  368. package/dist/docs/~demos/welcome-demo-demo2/index.html +15 -0
  369. package/dist/index.d.ts +26 -0
  370. package/dist/index.js +20 -0
  371. package/dist/index.less +1 -0
  372. package/dist/markdown/Citation.d.ts +16 -0
  373. package/dist/markdown/Citation.js +55 -0
  374. package/dist/markdown/CodeBlock.d.ts +6 -0
  375. package/dist/markdown/CodeBlock.js +88 -0
  376. package/dist/markdown/ImageOrVideo.d.ts +2 -0
  377. package/dist/markdown/ImageOrVideo.js +81 -0
  378. package/dist/markdown/Link.d.ts +3 -0
  379. package/dist/markdown/Link.js +28 -0
  380. package/dist/markdown/Markdown.d.ts +4 -0
  381. package/dist/markdown/Markdown.js +121 -0
  382. package/dist/markdown/cursor/Blur.d.ts +3 -0
  383. package/dist/markdown/cursor/Blur.js +7 -0
  384. package/dist/markdown/cursor/Dot.d.ts +3 -0
  385. package/dist/markdown/cursor/Dot.js +16 -0
  386. package/dist/markdown/cursor/Underline.d.ts +3 -0
  387. package/dist/markdown/cursor/Underline.js +7 -0
  388. package/dist/markdown/cursor/index.less +124 -0
  389. package/dist/markdown/hooks/index.d.ts +1 -0
  390. package/dist/markdown/hooks/index.js +49 -0
  391. package/dist/markdown/hooks/useTypedEffect.d.ts +6 -0
  392. package/dist/markdown/hooks/useTypedEffect.js +56 -0
  393. package/dist/markdown/index.d.ts +16 -0
  394. package/dist/markdown/index.js +37 -0
  395. package/dist/markdown/index.less +204 -0
  396. package/dist/markdown/plugins/footnote.d.ts +2 -0
  397. package/dist/markdown/plugins/footnote.js +89 -0
  398. package/dist/markdown/plugins/katexDir.d.ts +1 -0
  399. package/dist/markdown/plugins/katexDir.js +15 -0
  400. package/dist/markdown/rehype/fadeIn.d.ts +2 -0
  401. package/dist/markdown/rehype/fadeIn.js +43 -0
  402. package/dist/markdown/type.d.ts +46 -0
  403. package/dist/markdown/type.js +1 -0
  404. package/dist/markdown/utils.d.ts +22 -0
  405. package/dist/markdown/utils.js +125 -0
  406. package/dist/provider/CustomCardsProvider.d.ts +15 -0
  407. package/dist/provider/CustomCardsProvider.js +18 -0
  408. package/dist/provider/GlobalProvider.d.ts +5 -0
  409. package/dist/provider/GlobalProvider.js +11 -0
  410. package/dist/provider/index.d.ts +8 -0
  411. package/dist/provider/index.js +20 -0
  412. package/dist/provider/types.d.ts +8 -0
  413. package/dist/provider/types.js +1 -0
  414. package/dist/sender/SenderHeader.d.ts +19 -0
  415. package/dist/sender/SenderHeader.js +79 -0
  416. package/dist/sender/StopLoading.d.ts +5 -0
  417. package/dist/sender/StopLoading.js +20 -0
  418. package/dist/sender/components/ActionButton.d.ts +22 -0
  419. package/dist/sender/components/ActionButton.js +39 -0
  420. package/dist/sender/components/ClearButton.d.ts +4 -0
  421. package/dist/sender/components/ClearButton.js +13 -0
  422. package/dist/sender/components/LoadingButton.d.ts +4 -0
  423. package/dist/sender/components/LoadingButton.js +22 -0
  424. package/dist/sender/components/SendButton.d.ts +4 -0
  425. package/dist/sender/components/SendButton.js +14 -0
  426. package/dist/sender/components/SpeechButton/RecordingIcon.d.ts +5 -0
  427. package/dist/sender/components/SpeechButton/RecordingIcon.js +49 -0
  428. package/dist/sender/components/SpeechButton/index.d.ts +4 -0
  429. package/dist/sender/components/SpeechButton/index.js +30 -0
  430. package/dist/sender/index.d.ts +61 -0
  431. package/dist/sender/index.js +307 -0
  432. package/dist/sender/style/header.d.ts +4 -0
  433. package/dist/sender/style/header.js +46 -0
  434. package/dist/sender/style/index.d.ts +10 -0
  435. package/dist/sender/style/index.js +123 -0
  436. package/dist/sender/useSpeech.d.ts +6 -0
  437. package/dist/sender/useSpeech.js +114 -0
  438. package/dist/stream/index.d.ts +34 -0
  439. package/dist/stream/index.en-US.md.bk +50 -0
  440. package/dist/stream/index.js +197 -0
  441. package/dist/stream/index.zh-CN.md.bk +51 -0
  442. package/dist/theme/components.d.ts +10 -0
  443. package/dist/theme/components.js +1 -0
  444. package/dist/theme/cssinjs-utils.d.ts +14 -0
  445. package/dist/theme/cssinjs-utils.js +1 -0
  446. package/dist/theme/genStyleUtils.d.ts +28 -0
  447. package/dist/theme/genStyleUtils.js +49 -0
  448. package/dist/theme/useToken.d.ts +18 -0
  449. package/dist/theme/useToken.js +110 -0
  450. package/dist/version/index.d.ts +2 -0
  451. package/dist/version/index.js +2 -0
  452. package/dist/voice-chat/Recorder/index.d.ts +26 -0
  453. package/dist/voice-chat/Recorder/index.js +168 -0
  454. package/dist/voice-chat/VoiceChatProvider/context.d.ts +22 -0
  455. package/dist/voice-chat/VoiceChatProvider/context.js +3 -0
  456. package/dist/voice-chat/VoiceChatProvider/hooks/useChatState.d.ts +1 -0
  457. package/dist/voice-chat/VoiceChatProvider/hooks/useChatState.js +5 -0
  458. package/dist/voice-chat/VoiceChatProvider/hooks/useMessages.d.ts +8 -0
  459. package/dist/voice-chat/VoiceChatProvider/hooks/useMessages.js +31 -0
  460. package/dist/voice-chat/VoiceChatProvider/hooks/useRecorder.d.ts +5 -0
  461. package/dist/voice-chat/VoiceChatProvider/hooks/useRecorder.js +48 -0
  462. package/dist/voice-chat/VoiceChatProvider/hooks/useVoiceChat.d.ts +4 -0
  463. package/dist/voice-chat/VoiceChatProvider/hooks/useVoiceChat.js +10 -0
  464. package/dist/voice-chat/VoiceChatProvider/index.d.ts +9 -0
  465. package/dist/voice-chat/VoiceChatProvider/index.js +55 -0
  466. package/dist/voice-chat/VoiceChatService/index.d.ts +34 -0
  467. package/dist/voice-chat/VoiceChatService/index.js +209 -0
  468. package/dist/voice-chat/index.d.ts +2 -0
  469. package/dist/voice-chat/index.js +2 -0
  470. package/dist/voice-chat/types/index.d.ts +12 -0
  471. package/dist/voice-chat/types/index.js +4 -0
  472. package/dist/welcome/icon.d.ts +2 -0
  473. package/dist/welcome/icon.js +38 -0
  474. package/dist/welcome/index.d.ts +9 -0
  475. package/dist/welcome/index.js +57 -0
  476. package/package.json +117 -0
@@ -0,0 +1,57 @@
1
+ @import '../../index.less';
2
+
3
+
4
+ .@{ant-prefix}-interrupted {
5
+ display: inline-flex;
6
+ flex-direction: column;
7
+ font-size: 12px;
8
+ font-weight: 500;
9
+ line-height: 18px;
10
+ letter-spacing: 0px;
11
+ background-color: e('var(--@{ant-prefix}-color-fill-secondary)');
12
+ padding: 10px 12px;
13
+ line-height: 1;
14
+ border-radius: 8px;
15
+ gap: 8px;
16
+ }
17
+ .@{ant-prefix}-interrupted-desc {
18
+ font-weight: normal;
19
+ }
20
+
21
+ .@{ant-prefix}-interrupted-header {
22
+ display: inline-flex;
23
+ align-items: center;
24
+ gap: 4px;
25
+ color: e('var(--@{ant-prefix}-color-text)');
26
+
27
+ &-icon-wrapper {
28
+ width: 16px;
29
+ height: 16px;
30
+ flex: 0 0 16px;
31
+ display: flex;
32
+ align-items: center;
33
+ justify-content: center;
34
+ }
35
+
36
+ &-error {
37
+ color: e('var(--@{ant-prefix}-color-error)');
38
+ }
39
+ &-interrupted {
40
+ display: flex;
41
+ align-items: center;
42
+ justify-content: center;
43
+ width: 12px;
44
+ height: 12px;
45
+ border: 1px solid currentColor;
46
+ border-radius: 50%;
47
+
48
+ &::after {
49
+ display: block;
50
+ content: '';
51
+ width: 4px;
52
+ height: 4px;
53
+ border-radius: 1px;
54
+ background-color: currentColor;
55
+ }
56
+ }
57
+ }
@@ -0,0 +1,2 @@
1
+ import React from 'react';
2
+ export default function (props: any): React.JSX.Element;
@@ -0,0 +1,12 @@
1
+ import React from 'react';
2
+ import { Markdown } from "../..";
3
+ export default function (props) {
4
+ return /*#__PURE__*/React.createElement(Markdown, {
5
+ raw: props.data.raw,
6
+ content: props.data.content,
7
+ cursor: props.data.msgStatus === 'generating',
8
+ typing: props.data.typing,
9
+ citations: props.data.citations,
10
+ citationsMap: props.data.citationsMap
11
+ });
12
+ }
@@ -0,0 +1,6 @@
1
+ export { default as DeepThink } from './DeepThink';
2
+ export { default as Files } from './Files';
3
+ export { default as Images } from './Images';
4
+ export { default as Text } from './Text';
5
+ export { default as Footer, FooterActions, FooterCount } from './Footer';
6
+ export { default as Interrupted } from './Interrupted';
@@ -0,0 +1,6 @@
1
+ export { default as DeepThink } from "./DeepThink";
2
+ export { default as Files } from "./Files";
3
+ export { default as Images } from "./Images";
4
+ export { default as Text } from "./Text";
5
+ export { default as Footer, FooterActions, FooterCount } from "./Footer";
6
+ export { default as Interrupted } from "./Interrupted";
@@ -0,0 +1,11 @@
1
+ import React from 'react';
2
+ interface IProps {
3
+ desc?: React.ReactElement | string;
4
+ style?: React.CSSProperties;
5
+ afterLink?: {
6
+ href: string;
7
+ text: string;
8
+ };
9
+ }
10
+ export default function (props: IProps): React.JSX.Element;
11
+ export {};
@@ -0,0 +1,26 @@
1
+ var _templateObject, _templateObject2;
2
+ function _taggedTemplateLiteral(strings, raw) { if (!raw) { raw = strings.slice(0); } return Object.freeze(Object.defineProperties(strings, { raw: { value: Object.freeze(raw) } })); }
3
+ import React from 'react';
4
+ import { createStyles } from 'antd-style';
5
+ var useStyles = createStyles(function (_ref) {
6
+ var css = _ref.css,
7
+ token = _ref.token;
8
+ return {
9
+ disclaimer: css(_templateObject || (_templateObject = _taggedTemplateLiteral(["\n display: flex;\n align-items: center;\n justify-content: center;\n font-size: 12px;\n line-height: 1.5;\n color: ", ";\n padding: 8px 12px;\n\n "])), token.colorTextTertiary),
10
+ afterLink: css(_templateObject2 || (_templateObject2 = _taggedTemplateLiteral(["\n padding-left: 8px;\n "])))
11
+ };
12
+ });
13
+ export default function (props) {
14
+ var _useStyles = useStyles(),
15
+ styles = _useStyles.styles;
16
+ var _props$desc = props.desc,
17
+ desc = _props$desc === void 0 ? 'AI can also make mistakes, so please check carefully and use it with caution' : _props$desc;
18
+ return /*#__PURE__*/React.createElement("div", {
19
+ className: styles.disclaimer,
20
+ style: props.style
21
+ }, desc, props.afterLink && /*#__PURE__*/React.createElement("a", {
22
+ className: styles.afterLink,
23
+ href: props.afterLink.href,
24
+ target: "_blank"
25
+ }, props.afterLink.text));
26
+ }
@@ -0,0 +1,457 @@
1
+ "use strict";(self.webpackChunk_agentscope_ai_chat=self.webpackChunk_agentscope_ai_chat||[]).push([[1896],{53530:function(h,F,n){n.d(F,{Z:function(){return c}});var s=n(46530);function c(){var e=(0,s.useLocale)();return e}},1896:function(h,F,n){n.d(F,{Z:function(){return w}});var s=n(21739),c=n(53530),e={container:"gjQ9Bxkcf5ASRKzfwwWR",top:"KASn7X6HQ0oycb2VgjNP",toAgentscope:"WG18MPSlcspl47slSk8U",desc:"nTu2DH52hnwviPPu0aHg",t1:"ZBjmsxAv7wFcRWvcAPE5",t2Block:"V6aQWoPg6kYIpZXYuUvh",t2:"hkIpzwPZdc4EeHk483yl",mainContent:"uwvdzfjo6IPc89yyaUV4",img:"wWquPA3QTP8r3qzXLTD6"},B=n(76857),D=n(5465),E=n(41478),l=n(68768),x=n(79800),N=n.n(x),d=n(87457),u=n(27174);function f(){var t=(0,s.useState)(0),i=N()(t,2),a=i[0],g=i[1],p=["amazing","new","wonderful","beautiful","smart"];return(0,s.useEffect)(function(){var o=setTimeout(function(){a===p.length-1?g(0):g(a+1)},2e3);return function(){return clearTimeout(o)}},[a,p]),(0,u.jsxs)("div",{children:[(0,u.jsx)("div",{className:e.t1,children:"Spark Chat is"}),(0,u.jsx)("div",{className:e.t2Block,children:p.map(function(o,A){return(0,u.jsx)(d.E.span,{className:e.t2,initial:{opacity:0,y:"-100"},transition:{type:"spring",stiffness:50},animate:a===A?{y:0,opacity:1}:{y:a>A?-150:150,opacity:0},children:o},o)})})]})}var C={line:"Wolu_C2Chkk39_oIJB6X"},v=n(92310),m=n.n(v);function O(){var t={hidden:{opacity:0,y:20},visible:{opacity:1,y:0,transition:{duration:.6,ease:"easeOut"}}};return(0,u.jsx)(d.E.footer,{className:"mt-12 py-12 text-center text-sm",initial:"hidden",whileInView:"visible",viewport:{once:!0,margin:"-100px 0px"},variants:t,children:(0,u.jsxs)("div",{className:"flex flex-col items-center justify-center",children:[(0,u.jsxs)("div",{className:"flex items-center mb-8 w-[100%]",children:[(0,u.jsx)("div",{className:m()(C.line,"h-px","flex-grow")}),(0,u.jsx)("div",{className:"mx-4",children:(0,u.jsx)("img",{src:"https://img.alicdn.com/imgextra/i1/O1CN01wor5IO1TVIRQ4iKbv_!!6000000002387-2-tps-112-112.png",alt:"Spark Logo",className:"w-6 h-6"})}),(0,u.jsx)("div",{className:m()(C.line,"h-px","flex-grow")})]}),(0,u.jsx)("div",{className:"text-l mb-2 uppercase tracking-wider font-semibold",children:"SPARK DESIGN LLM EXPERIENCE DESIGN SYSTEM"}),(0,u.jsx)("div",{style:{color:"var(--spc-color-text-secondary)"},children:"Copyright \xA9 2025 Alibaba. All rights reserved."})]})})}function b(t){var i=t.className,a=i===void 0?"w-4 h-4":i;return(0,u.jsx)("svg",{className:a,viewBox:"0 0 1024 1024",fill:"currentColor",xmlns:"http://www.w3.org/2000/svg",children:(0,u.jsx)("path",{d:"M853.376 128a42.666667 42.666667 0 0 1 42.666667 42.666667v682.666666a42.666667 42.666667 0 0 1-42.666667 42.666667h-682.666667a42.666667 42.666667 0 0 1-42.666666-42.666667V170.666667a42.666667 42.666667 0 0 1 42.666666-42.666667h682.666667z m-128 170.666667h-426.666667v426.666666h213.333334V405.333333h106.666666V725.333333h106.666667V298.666667z"})})}function w(){var t=(0,c.Z)();return(0,u.jsx)(u.Fragment,{children:(0,u.jsxs)("div",{className:e.container,children:[(0,u.jsxs)("div",{className:e.top,children:[(0,u.jsx)(E.Z,{justify:"center",children:(0,u.jsxs)("div",{className:e.toAgentscope,onClick:function(){return window.open("https://bailian.agentscope.io")},children:[r[t.id].jump2agentscope,(0,u.jsx)(D.SwapRightOutlined,{})]})}),(0,u.jsx)(f,{}),(0,u.jsx)("div",{className:e.desc,children:r[t.id].desc}),(0,u.jsxs)(E.Z,{justify:"center",gap:16,children:[(0,u.jsx)(l.ZP,{size:"large",onClick:function(){return window.open("#/~demos/docs-templates-native-demo-basic")},children:r[t.id].chatexp}),(0,u.jsxs)(l.ZP,{style:{boxShadow:"rgba(131, 88, 246, 0.4) 15px 0px 30px -10px, rgba(255, 142, 168, 0.4) 0px 0px 30px -10px, rgba(225, 163, 37, 0.4) -15px 0px 30px -10px"},size:"large",onClick:function(){return window.open("https://www.npmjs.com/package/@spark-ai/chat")},type:"primary",children:[(0,u.jsx)(b,{})," npm install @spark-ai/chat"]})]})]}),(0,u.jsx)("div",{id:e.mainContent,children:(0,u.jsx)(B.Z,{content:r[t.id].md,components:{img:function(a){return(0,u.jsx)("img",{src:a.src,className:e.img})}}})}),(0,u.jsx)(O,{})]})})}var r={"zh-CN":{jump2agentscope:"\u8DF3\u8F6C\u5230 AgentScope",chatexp:"\u5BF9\u8BDD\u4F53\u9A8C",desc:"\u4E00\u4E2A\u514D\u8D39\u3001\u5F00\u6E90\u7684\u5BF9\u8BDD\u6846\u67B6\uFF0C\u7528\u4E8E\u6784\u5EFA\u4F18\u79C0\u7684 LLM \u5BF9\u8BDD\u4F53\u9A8C",md:`
2
+ # SPARK CHAT \u662F\u4E00\u4E2A\u514D\u8D39\u3001\u5F00\u6E90\u7684\u5BF9\u8BDD\u6846\u67B6\uFF0C\u7528\u4E8E\u6784\u5EFA\u4F18\u79C0\u7684 LLM \u5BF9\u8BDD\u4F53\u9A8C
3
+
4
+
5
+ \u5BF9\u8BDD\u5F0F\u4EA4\u4E92\u4EE5\u5176\u81EA\u7136\u3001\u7B80\u5355\u7684\u5F62\u5F0F\u6210\u4E3A\u5982\u4ECA LLM \u4F53\u9A8C\u7684\u4E3B\u8981\u5F62\u5F0F\uFF0C\u5E76\u9010\u6E10\u56F4\u7ED5\u6A21\u578B\u7684\u591A\u6A21\u6001\u80FD\u529B\u9010\u6E10\u6F14\u53D8\u51FA\u5404\u79CD\u884D\u751F\u7684\u4EA4\u4E92\u8303\u5F0F\u3002\u57FA\u4E8E\u6211\u4EEC\u5728\u5177\u4F53\u4E1A\u52A1\u5B9E\u8DF5\u4E2D\u7684\u63A2\u7D22\u603B\u7ED3\uFF0C\u6211\u4EEC\u63A8\u51FA Spark Chat \u7684\u5BF9\u8BDD\u6846\u67B6\uFF0C\u5B83\u5305\u542B\u4E86\u4F17\u591A\u6211\u4EEC\u7684\u60F3\u6CD5\u4E0E\u771F\u5B9E\u4E1A\u52A1\u5B9E\u8DF5\uFF0C\u5E2E\u52A9\u4E1A\u52A1\u5FEB\u901F\u6784\u5EFA\u5BF9\u8BDD\u5F0F\u4EBA\u5DE5\u667A\u80FD\u5E94\u7528\u3002
6
+
7
+
8
+ ## \u57FA\u672C\u5F62\u6001
9
+
10
+
11
+ SPARK CHAT \u5305\u542B\u6700\u57FA\u672C\u3001\u901A\u7528\u7684\u5BF9\u8BDD\u7EC4\u4EF6\uFF0C\u4F60\u53EF\u4EE5\u4F7F\u7528\u5B83\u5FEB\u901F\u6784\u5EFA\u51FA\u7C7B\u4F3C ChatGPT \u8FD9\u6837\u7684\u539F\u751F LLM \u5BF9\u8BDD\u5E94\u7528\uFF0C\u5305\u542B\u5BF9\u8BDD\u5386\u53F2\u7BA1\u7406\u3001\u5BF9\u8BDD\u6D41\u3001\u8F93\u5165\u6846\u548C\u7B80\u6D01\u7684\u6B22\u8FCE\u9875\u9762\u3002
12
+
13
+
14
+ ![O1CN01PXnfNo1TXaRlPEuYp_!!6000000002392-2-tps-2944-1864.png](https://img.alicdn.com/imgextra/i3/O1CN01PXnfNo1TXaRlPEuYp_!!6000000002392-2-tps-2944-1864.png)
15
+
16
+
17
+ ![O1CN01UsX0vG1dU3YEqZHvG_!!6000000003738-2-tps-2944-1864.png](https://img.alicdn.com/imgextra/i4/O1CN01UsX0vG1dU3YEqZHvG_!!6000000003738-2-tps-2944-1864.png)
18
+
19
+
20
+ ## \u591A\u6A21\u6001\u8F93\u5165\u5F62\u6001
21
+
22
+
23
+ \u56F4\u7ED5\u7740\u8BED\u97F3\u3001\u56FE\u7247\u548C\u89C6\u9891\u7B49\u573A\u666F\uFF0CSPARK CHAT \u4E5F\u63D0\u4F9B\u4E86\u57FA\u4E8E\u573A\u666F\u7684\u201C\u8F93\u5165\u4EA4\u4E92\u201D\uFF0C\u4EE5\u6EE1\u8DB3\u7279\u5B9A\u573A\u666F\u4E0B\u7684\u6700\u4F73\u7528\u6237\u4F53\u9A8C
24
+
25
+
26
+ ### \u57FA\u672C\u8F93\u5165
27
+
28
+
29
+ \u5305\u542B\u4E3B\u6D41 LLM Chat \u57FA\u672C\u80FD\u529B\u7684\u8F93\u5165
30
+
31
+
32
+ ![O1CN01fWJHth1sjpQXBN7PF_!!6000000005803-2-tps-2094-3656.png](https://img.alicdn.com/imgextra/i3/O1CN01fWJHth1sjpQXBN7PF_!!6000000005803-2-tps-2094-3656.png)
33
+
34
+
35
+ ### \u9009\u7528\u4E0D\u540C\u7684\u5BF9\u8BDD\u6A21\u5F0F
36
+
37
+
38
+ \u6211\u4EEC\u4E3A\u8F93\u5165\u6846\u63D0\u4F9B\u4E86\u4E0D\u540C\u7684\u8F93\u5165\u6A21\u5F0F\u5207\u6362\uFF0C\u4F60\u53EF\u4EE5\u901A\u8FC7\u5207\u6362\u4E0D\u540C\u6A21\u5F0F\u4E0B\uFF0C\u5B9E\u73B0\u4E0D\u540C\u7684\u6A21\u578B\u5BF9\u8BDD\u6548\u679C\uFF0C\u4EE5\u4E0B\u662F\u793A\u4F8B\uFF1A
39
+
40
+
41
+ ![O1CN01bIp6ZX1E7jrDTPy7l_!!6000000000305-2-tps-2094-1372.png](https://img.alicdn.com/imgextra/i4/O1CN01bIp6ZX1E7jrDTPy7l_!!6000000000305-2-tps-2094-1372.png)
42
+
43
+
44
+ ### \u8BED\u97F3/\u89C6\u9891\u901A\u8BDD \uFF08ONGOING\uFF09
45
+
46
+
47
+ \u5F53\u4F60\u9700\u8981\u4F7F\u7528\u4E00\u4E9B\u8BF8\u5982 Qwen3 \u8FD9\u6837\u652F\u6301\u591A\u6A21\u6001\u4F53\u9A8C\u7684\u6A21\u578B\u65F6\uFF0C\u4F60\u53EF\u4EE5\u901A\u8FC7 SPARK CHAT \u6765\u6784\u5EFA \u8BED\u97F3/\u89C6\u9891\u901A\u8BDD \u7684\u4F53\u9A8C\uFF1A
48
+
49
+
50
+ ![O1CN01SAJPKp1rcfcXz6JpY_!!6000000005652-2-tps-2042-2236.png](https://img.alicdn.com/imgextra/i2/O1CN01SAJPKp1rcfcXz6JpY_!!6000000005652-2-tps-2042-2236.png)
51
+
52
+
53
+ ## \u591A\u5F62\u5F0F\u5185\u5BB9\u5C55\u793A
54
+
55
+
56
+ Spark Chat \u6240\u6709\u5BF9\u8BDD\u90FD\u57FA\u4E8E\u4E00\u4E2A\u7EDF\u4E00\u6A21\u578B\uFF1A
57
+
58
+ - \u6BCF\u6761\u6D88\u606F = \u4E00\u4E2A \`Bubble\`
59
+ - \u6BCF\u4E2A \`Bubble\`\xA0\u5305\u542B\u591A\u4E2A\xA0\`cards [ ]\`
60
+ - \u6BCF\u5F20\u5361\u7247\u7531 \`{ code, data }\`\xA0\u6784\u6210
61
+
62
+ \u8FD9\u610F\u5473\u7740\uFF1A\u4E00\u5207\u6D88\u606F\u3001\u5185\u5BB9\u3001\u4EA4\u4E92\u884C\u4E3A\uFF0C\u90FD\u662F\u4E00\u5F20\u201C\u5361\u7247\u201D\uFF0C\u662F\u7ED3\u6784\u5316\u7684\uFF0C\u4F60\u53EF\u4EE5\u5C06\u6587\u672C\u3001\u56FE\u8868\u3001\u63A8\u8350\u3001\u6D41\u7A0B\u3001\u8F6E\u64AD\u3001\u7EDF\u8BA1\u6570\u636E\u4EE5\u5361\u7247\u7684\u5F62\u5F0F\u7EC4\u7EC7\uFF0C\u4F60\u4E5F\u53EF\u4EE5\u8BA9\u6BCF\u6B21\u6A21\u578B\u56DE\u7B54\u90FD\u53D8\u6210\u4E00\u7EC4\u201C\u53EF\u88AB\u7406\u89E3\u4E0E\u64CD\u4F5C\u7684\u5757\uFF0C\u8FD9\u79CD\u7ED3\u6784\u5177\u6709\u4E24\u4E2A\u91CD\u8981\u6280\u672F\u4EF7\u503C\uFF1A
63
+
64
+ - **\u7EDF\u4E00\u6E32\u67D3\u5F15\u64CE**\uFF1A\u6240\u6709\u5BF9\u8BDD\u5185\u5BB9\u90FD\u8D70\u7EDF\u4E00\u7684\xA0card\xA0\u6E32\u67D3\u7BA1\u7EBF\uFF0C\u907F\u514D\xA0UI\xA0\u7279\u4F8B\u548C\u5D4C\u5957\u5206\u652F\u903B\u8F91
65
+ - **\u8BED\u4E49\u9694\u79BB**\uFF1A\u6BCF\u79CD\u5361\u7247\u5C01\u88C5\u81EA\u5DF1\u7684\u6837\u5F0F\u3001\u903B\u8F91\u3001\u72B6\u6001\uFF0C\u65E0\u526F\u4F5C\u7528\uFF0C\u5229\u4E8E\u6D4B\u8BD5\u548C\u534F\u540C
66
+
67
+ \u5728\u6570\u636E\u5C42\u9762\uFF0C\u5B83\u5B9E\u73B0\u4E86\u4ECE\u201C\u8BED\u8A00-\u754C\u9762\u201D\u4E4B\u95F4\u7684\u89E3\u8026\uFF1A\u5F00\u53D1\u8005\u53EF\u4EE5\u4EC5\u901A\u8FC7\u7ED3\u6784\u6570\u636E\u6765\u64CD\u63A7 UI \u5448\u73B0\uFF0C\u8BA9\u4EBA\u673A\u4EA4\u4E92\u4ECE\u201C\u6D41\u5F0F\u5BF9\u8BDD\u201D\u8D70\u5411\u201C\u7ED3\u6784\u5BF9\u8BDD\u201D\u3002
68
+
69
+
70
+ Spark Chat \u4E0D\u518D\u8981\u6C42\u6A21\u578B\u5410\u51FA\u81EA\u7136\u8BED\u8A00\uFF0C\u518D\u7531 UI \u201C\u5305\u88F9\u201D\u8FD9\u4E9B\u6587\u5B57\u3002\u6211\u4EEC\u62D2\u7EDD\u201C\u9489\u6B7B\u201D\u7684\u8F93\u5165\u8F93\u51FA\u7EC4\u4EF6\uFF0C\u800C\u662F\u9009\u62E9\u7528\u201C\u4E50\u9AD8\u5F0F\u201D\u8BED\u6CD5\u63CF\u8FF0\u6574\u4E2A\u754C\u9762\u72B6\u6001\uFF0C\u4E8E\u662F\u6211\u4EEC\u8BBE\u8BA1\u4E86\u4E00\u79CD\u5BF9\u5927\u6A21\u578B\u53CB\u597D\u7684 UI \u534F\u8BAE\uFF1A
71
+
72
+
73
+ \`\`\`javascript
74
+ <Bubble
75
+ cards={[
76
+ {
77
+ code: 'Text',
78
+ data: {
79
+ content: 'Hello World',
80
+ },
81
+ },
82
+ ]}
83
+ />
84
+ \`\`\`
85
+
86
+
87
+ \u4F60\u53EF\u4EE5\u521B\u5EFA\u81EA\u5B9A\u4E49\u5361\u7247\u5E76\u6CE8\u518C\uFF1A
88
+
89
+
90
+ \`\`\`javascript
91
+ function MyCard(props) {
92
+ return <div>MyCard</div>;
93
+ }
94
+ \`\`\`
95
+
96
+
97
+ \`\`\`javascript
98
+ <CustomCardsProvider cardConfig={{ MyCard }}>...</CustomCardsProvider>
99
+ \`\`\`
100
+
101
+
102
+ \u7136\u540E\u6784\u9020\u6570\u636E\u5E76\u6E32\u67D3\u5B83\uFF1A
103
+
104
+
105
+ \`\`\`javascript
106
+ <Bubble
107
+ cards={[
108
+ {
109
+ code: 'Text',
110
+ data: {
111
+ content: 'Hello World',
112
+ },
113
+ },
114
+ {
115
+ code: 'MyCard',
116
+ data: [
117
+ ['Active Users', 112893],
118
+ ['Account Balance (CNY)', 112893],
119
+ ],
120
+ },
121
+ ]}
122
+ />
123
+ \`\`\`
124
+
125
+
126
+ \u636E\u6B64\u4F60\u53EF\u5B9E\u73B0\u4EE5\u4E0B\u7684 Case:
127
+
128
+ - \u84B8\u4E00\u53EA\u8783\u87F9\u9700\u8981\u591A\u4E45
129
+
130
+ ![O1CN018eTFD5244rO8SktPy_!!6000000007338-2-tps-2464-1316.png](https://img.alicdn.com/imgextra/i1/O1CN018eTFD5244rO8SktPy_!!6000000007338-2-tps-2464-1316.png)
131
+
132
+ - \u6839\u636E\u7528\u6237\u9700\u6C42\u8C03\u7528 AI \u5B9E\u65F6\u8BB0\u5F55
133
+
134
+ ![O1CN01cV5RNz1D8MmhMTwDD_!!6000000000171-2-tps-2464-1544.png](https://img.alicdn.com/imgextra/i3/O1CN01cV5RNz1D8MmhMTwDD_!!6000000000171-2-tps-2464-1544.png)
135
+
136
+ - \u81EA\u5B9A\u4E49\u7684\u6587\u6863\u89E3\u8BFB
137
+
138
+ ![O1CN01dKeCTN1OcYfQAAkme_!!6000000001726-2-tps-2464-1544.png](https://img.alicdn.com/imgextra/i3/O1CN01dKeCTN1OcYfQAAkme_!!6000000001726-2-tps-2464-1544.png)
139
+
140
+ - \u590D\u6742\u7684\u5361\u7247\u5D4C\u5957
141
+
142
+ ![O1CN01Y4vtnE1Kl1WYUMHdZ_!!6000000001203-2-tps-2944-1864.png](https://img.alicdn.com/imgextra/i3/O1CN01Y4vtnE1Kl1WYUMHdZ_!!6000000001203-2-tps-2944-1864.png)
143
+
144
+
145
+ ## \u591A\u5E94\u7528\u573A\u666F
146
+
147
+
148
+ \u9664\u4E86\u539F\u751F\u7684 Native Chat \u4EA7\u54C1\u5916\uFF0C\u4F60\u8FD8\u53EF\u4EE5\u5C06 SPARK CHAT \u7528\u5728\u4E0D\u540C\u7684\u4E1A\u52A1\u573A\u666F\uFF0C\u9009\u7528\u4E0D\u540C\u7684\u7EC4\u4EF6\u642D\u914D\u5F62\u5F0F\uFF0C\u5B9E\u73B0 Copilot \u3001Embedding \u5F0F\u4EA4\u4E92\u3002
149
+
150
+
151
+ ### Native Chat
152
+
153
+
154
+ \u7EAF\u7CB9\u7684\u72EC\u5360\u5F0F\u81EA\u7136\u8BED\u8A00\u5BF9\u8BDD\u754C\u9762\uFF0C\u9002\u5408\u6C89\u6D78\u5F0F\u7684\u95EE\u7B54\u548C\u64CD\u4F5C:
155
+
156
+
157
+ ![O1CN01OT7q321eaIZ5XgJMk_!!6000000003887-2-tps-3988-1864.png](https://img.alicdn.com/imgextra/i2/O1CN01OT7q321eaIZ5XgJMk_!!6000000003887-2-tps-3988-1864.png)
158
+
159
+
160
+ ### Copilot
161
+
162
+
163
+ \u7ED3\u5408\u5176\u4ED6\u4EA7\u54C1\u754C\u9762\uFF0C\u4F5C\u4E3A\u8F85\u52A9\u4F5C\u7528\uFF0C\u5E38\u89C1\u4E8E\u4EE3\u7801\u8F85\u52A9\u3001\u6D4F\u89C8 Web \u9875\u9762\u5185\u7684\u4FA7\u8FB9\u63D0\u95EE\u3001\u64B0\u5199\u6587\u6863\u65F6\u7684\u52A9\u624B:
164
+
165
+
166
+ ![O1CN01sPmGdG240jp6nG5i3_!!6000000007329-2-tps-2944-1864.png](https://img.alicdn.com/imgextra/i3/O1CN01sPmGdG240jp6nG5i3_!!6000000007329-2-tps-2944-1864.png)
167
+
168
+
169
+ ![O1CN01V2EhNi24Z5WoyEBNe_!!6000000007404-2-tps-2944-1864.png](https://img.alicdn.com/imgextra/i4/O1CN01V2EhNi24Z5WoyEBNe_!!6000000007404-2-tps-2944-1864.png)
170
+
171
+
172
+ ### Embedding
173
+
174
+
175
+ \u4EC5\u4F7F\u7528 SPARK CHAT \u7684\u90E8\u5206\u7EC4\u4EF6\uFF0C\u5982\u8F93\u5165\u6846\uFF08ChatIput\uFF09\uFF0C\u96C6\u6210\u8FDB\u4F60\u7684\u4EA7\u54C1\u5185\uFF0C\u4F5C\u4E3A\u5D4C\u5165\u5F0F AI \u6765\u4F7F\u7528\uFF1A
176
+
177
+
178
+ ![O1CN01falmKj1umh8ZpeKfD_!!6000000006080-2-tps-2944-1864.png](https://img.alicdn.com/imgextra/i3/O1CN01falmKj1umh8ZpeKfD_!!6000000006080-2-tps-2944-1864.png)
179
+
180
+
181
+ ## \u591A\u4E3B\u9898\u652F\u6301
182
+
183
+
184
+ SPARK\xA0CHAT\xA0\u5185\u7F6E\u7684\u4EAE\u6697\u8272\u5404\u4E00\u5957\xA0Color\xA0CSS\xA0Token\uFF1A
185
+
186
+
187
+ ![O1CN0167sO0E1XryXc1rvp5_!!6000000002978-2-tps-2948-1868.png](https://img.alicdn.com/imgextra/i4/O1CN0167sO0E1XryXc1rvp5_!!6000000002978-2-tps-2948-1868.png)
188
+
189
+
190
+ ![O1CN011rlb681i0LwZ4gNhD_!!6000000004350-2-tps-2948-1868.png](https://img.alicdn.com/imgextra/i4/O1CN011rlb681i0LwZ4gNhD_!!6000000004350-2-tps-2948-1868.png)
191
+
192
+
193
+ ## \u589E\u5F3A\u4F53\u9A8C\u7684\u52A8\u6548\u8868\u8FBE
194
+
195
+
196
+ ### \u601D\u8003
197
+
198
+
199
+ \u6211\u4EEC\u63D0\u4F9B\u4E86\u52A8\u6001icon\u548C\u8F83\u4E3A\u514B\u5236\u7684\u6587\u5B57\u6D41\u5149\u6548\u679C\uFF0C\u7528\u4E8E\u52A0\u5F3AAI\u601D\u8003\u8FC7\u7A0B\u4E2D\u7684\u4F53\u611F\uFF1A
200
+
201
+
202
+ ![O1CN01qpiuxK1hIqJcuQ6er_!!6000000004255-1-tps-820-219.gif](https://img.alicdn.com/imgextra/i3/O1CN01qpiuxK1hIqJcuQ6er_!!6000000004255-1-tps-820-219.gif)
203
+
204
+
205
+ ### \u7B49\u5F85
206
+
207
+
208
+ \u6211\u4EEC\u63D0\u4F9B\u751F\u56FE\u7C7B\u7B49\u5F85\u573A\u666F\u7684\u52A8\u6001\u6548\u679C\uFF0C\u8BA9\u7B49\u5F85\u8FC7\u7A0B\u53D8\u5F97\u53EF\u89C1\u4E14\u53EF\u89C2\uFF1A
209
+
210
+
211
+ ![O1CN017n21cg1wZzNh9bghb_!!6000000006323-1-tps-1024-506.gif](https://img.alicdn.com/imgextra/i4/O1CN017n21cg1wZzNh9bghb_!!6000000006323-1-tps-1024-506.gif)
212
+
213
+
214
+ ### \u52A0\u8F7D\u4E0E\u5410\u51FA
215
+
216
+
217
+ \u6211\u4EEC\u5728\u6587\u5B57\u5448\u73B0\u7684\u7EC6\u8282\u5904\uFF0C\u63D0\u4F9B\u4E86\u5177\u6709\u547C\u5438\u611F\u7684\u52A0\u8F7D/\u5410\u51FA\u7684\u52A8\u6548\uFF1A
218
+
219
+
220
+ ![O1CN01rOD7ch1wBFzZHNDj4_!!6000000006269-1-tps-2048-513.gif](https://img.alicdn.com/imgextra/i1/O1CN01rOD7ch1wBFzZHNDj4_!!6000000006269-1-tps-2048-513.gif)
221
+
222
+
223
+ ## \u5173\u4E8E Spark Design \xAE
224
+
225
+
226
+ Spark Chat \u662F Spark Design \u4E2D\u7684\u4E00\u4E2A\u9879\u76EE\uFF0C\u6211\u4EEC\u671F\u671B\u53EF\u4EE5\u4E3A AI \u5E94\u7528\u5F00\u53D1\u8005\u4EEC\u63D0\u4F9B\u4F53\u9A8C\u4F18\u5F02\u3001\u7075\u6D3B\u7B80\u5355\u7684\u7EC4\u4EF6\u6846\u67B6\u3002
227
+
228
+ `},"en-US":{jump2agentscope:"Jump to AgentScope",chatexp:"Chat Experience",desc:"A free, open-source framework for building great LLM chat experiences",md:`
229
+ # SPARK CHAT is a free and open-source chat framework for building excellent LLM-powered chat experiences
230
+
231
+
232
+ Conversational interaction has become the dominant form of LLM user experience due to its natural and simple format. As models gain multimodal capabilities, new interaction paradigms are emerging. Based on our real-world business practice and insights, we created the Spark Chat framework \u2014 a collection of ideas and battle-tested solutions to help teams quickly build AI-powered chat applications.
233
+
234
+
235
+ ## Basic Structure
236
+
237
+
238
+ Spark Chat provides essential and universal chat components, allowing you to quickly build native LLM chat applications like ChatGPT. It includes chat history management, message flow, input box, and a clean welcome screen.
239
+
240
+
241
+ ![O1CN01PXnfNo1TXaRlPEuYp_!!6000000002392-2-tps-2944-1864.png](https://img.alicdn.com/imgextra/i3/O1CN01PXnfNo1TXaRlPEuYp_!!6000000002392-2-tps-2944-1864.png)
242
+
243
+
244
+ ![O1CN01UsX0vG1dU3YEqZHvG_!!6000000003738-2-tps-2944-1864.png](https://img.alicdn.com/imgextra/i4/O1CN01UsX0vG1dU3YEqZHvG_!!6000000003738-2-tps-2944-1864.png)
245
+
246
+
247
+ ## Multimodal Input Modes
248
+
249
+
250
+ Spark Chat also supports scenario-based **input interactions** for use cases involving voice, images, and video, ensuring optimal user experience in each context.
251
+
252
+
253
+ ### Basic Input
254
+
255
+
256
+ Covers the core input capabilities needed for mainstream LLM chat experiences.
257
+
258
+
259
+ ![O1CN01fWJHth1sjpQXBN7PF_!!6000000005803-2-tps-2094-3656.png](https://img.alicdn.com/imgextra/i3/O1CN01fWJHth1sjpQXBN7PF_!!6000000005803-2-tps-2094-3656.png)
260
+
261
+
262
+ ### Switching Input Modes
263
+
264
+
265
+ The input box supports multiple modes, allowing you to toggle between different input types and model behaviors. Here are some examples:
266
+
267
+
268
+ ![O1CN01bIp6ZX1E7jrDTPy7l_!!6000000000305-2-tps-2094-1372.png](https://img.alicdn.com/imgextra/i4/O1CN01bIp6ZX1E7jrDTPy7l_!!6000000000305-2-tps-2094-1372.png)
269
+
270
+
271
+ ### Voice / Video Calling (ONGOING)
272
+
273
+
274
+ When using models like Qwen3 that support multimodal interaction, Spark Chat enables the creation of voice/video call experiences:
275
+
276
+
277
+ ![O1CN01SAJPKp1rcfcXz6JpY_!!6000000005652-2-tps-2042-2236.png](https://img.alicdn.com/imgextra/i2/O1CN01SAJPKp1rcfcXz6JpY_!!6000000005652-2-tps-2042-2236.png)
278
+
279
+
280
+ ## Multi-format Content Display
281
+
282
+
283
+ All Spark Chat messages follow a unified model:
284
+
285
+ - Each message = a \`Bubble\`
286
+ - Each \`Bubble\` contains multiple \`cards[]\`
287
+ - Each card is structured as \`{ code, data }\`
288
+
289
+ This means all messages, content, and interactive behaviors are cards \u2014 **structured blocks**. Text, charts, recommendations, workflows, carousels, and stats can all be modularized into cards. This allows model responses to be organized into actionable, understandable units.
290
+
291
+
292
+ Key technical benefits:
293
+
294
+ - **Unified Rendering Engine**: All chat content runs through a single card rendering pipeline, avoiding special UI cases and branching logic.
295
+ - **Semantic Isolation**: Each card encapsulates its own style, logic, and state \u2014 side-effect-free, testable, and collaboration-friendly.
296
+
297
+ At the data level, it decouples language from UI, enabling developers to control UI rendering through structured data alone. This shifts human-AI interaction from _streamed chat_ to _structured chat_.
298
+
299
+
300
+ Spark Chat no longer requires the model to output natural language for the UI to "wrap" \u2014 we reject rigid input/output components and instead use a Lego-like syntax to define UI state. We've designed a UI protocol that is model-friendly:
301
+
302
+
303
+ \`\`\`javascript
304
+ <Bubble
305
+ cards={[
306
+ {
307
+ code: 'Text',
308
+ data: {
309
+ content: 'Hello World',
310
+ },
311
+ },
312
+ ]}
313
+ />
314
+ \`\`\`
315
+
316
+
317
+ You can define and register custom cards:
318
+
319
+
320
+ \`\`\`javascript
321
+ function MyCard(props) {
322
+ return <div>MyCard</div>;
323
+ }
324
+ \`\`\`
325
+
326
+
327
+ \`\`\`javascript
328
+ <CustomCardsProvider cardConfig={{ MyCard }}>...</CustomCardsProvider>
329
+ \`\`\`
330
+
331
+
332
+ Then structure and render them:
333
+
334
+
335
+ \`\`\`javascript
336
+ <Bubble
337
+ cards={[
338
+ {
339
+ code: 'Text',
340
+ data: {
341
+ content: 'Hello World',
342
+ },
343
+ },
344
+ {
345
+ code: 'MyCard',
346
+ data: [
347
+ ['Active Users', 112893],
348
+ ['Account Balance (CNY)', 112893],
349
+ ],
350
+ },
351
+ ]}
352
+ />
353
+ \`\`\`
354
+
355
+
356
+ ### Use Cases Enabled:
357
+
358
+ - "How long does it take to steam a crab?" \u2192 interactive answer via cards
359
+
360
+ ![O1CN018eTFD5244rO8SktPy_!!6000000007338-2-tps-2464-1316.png](https://img.alicdn.com/imgextra/i1/O1CN018eTFD5244rO8SktPy_!!6000000007338-2-tps-2464-1316.png)
361
+
362
+ - Real-time AI note-taking based on user needs
363
+
364
+ ![O1CN01cV5RNz1D8MmhMTwDD_!!6000000000171-2-tps-2464-1544.png](https://img.alicdn.com/imgextra/i3/O1CN01cV5RNz1D8MmhMTwDD_!!6000000000171-2-tps-2464-1544.png)
365
+
366
+ - Custom document interpretation
367
+
368
+ ![O1CN01dKeCTN1OcYfQAAkme_!!6000000001726-2-tps-2464-1544.png](https://img.alicdn.com/imgextra/i3/O1CN01dKeCTN1OcYfQAAkme_!!6000000001726-2-tps-2464-1544.png)
369
+
370
+ - Complex card nesting for layered information display
371
+
372
+ ![O1CN01Y4vtnE1Kl1WYUMHdZ_!!6000000001203-2-tps-2944-1864.png](https://img.alicdn.com/imgextra/i3/O1CN01Y4vtnE1Kl1WYUMHdZ_!!6000000001203-2-tps-2944-1864.png)
373
+
374
+
375
+ ## Multi-scenario Applications
376
+
377
+
378
+ Beyond native chat apps, Spark Chat can be adapted to different business needs, supporting various integration patterns such as Copilot and embedded chat widgets.
379
+
380
+
381
+ ### Native Chat
382
+
383
+
384
+ A full-screen, immersive natural language chat interface for Q&A and execution:
385
+
386
+
387
+ ![O1CN01OT7q321eaIZ5XgJMk_!!6000000003887-2-tps-3988-1864.png](https://img.alicdn.com/imgextra/i2/O1CN01OT7q321eaIZ5XgJMk_!!6000000003887-2-tps-3988-1864.png)
388
+
389
+
390
+ ### Copilot
391
+
392
+
393
+ Integrates alongside existing product interfaces, commonly used for code assistance, side-panel queries, or in-document writing help:
394
+
395
+
396
+ ![O1CN01sPmGdG240jp6nG5i3_!!6000000007329-2-tps-2944-1864.png](https://img.alicdn.com/imgextra/i3/O1CN01sPmGdG240jp6nG5i3_!!6000000007329-2-tps-2944-1864.png)
397
+
398
+
399
+ ![O1CN01V2EhNi24Z5WoyEBNe_!!6000000007404-2-tps-2944-1864.png](https://img.alicdn.com/imgextra/i4/O1CN01V2EhNi24Z5WoyEBNe_!!6000000007404-2-tps-2944-1864.png)
400
+
401
+
402
+ ### Embedding
403
+
404
+
405
+ Use Spark Chat as a lightweight embedded AI assistant \u2014 for example, just embedding the ChatInput component into your product UI:
406
+
407
+
408
+ ![O1CN01falmKj1umh8ZpeKfD_!!6000000006080-2-tps-2944-1864.png](https://img.alicdn.com/imgextra/i3/O1CN01falmKj1umh8ZpeKfD_!!6000000006080-2-tps-2944-1864.png)
409
+
410
+
411
+ ## Theme Customization
412
+
413
+
414
+ Spark Chat includes built-in light and dark theme CSS tokens:
415
+
416
+
417
+ ![O1CN0167sO0E1XryXc1rvp5_!!6000000002978-2-tps-2948-1868.png](https://img.alicdn.com/imgextra/i4/O1CN0167sO0E1XryXc1rvp5_!!6000000002978-2-tps-2948-1868.png)
418
+
419
+
420
+ ![O1CN011rlb681i0LwZ4gNhD_!!6000000004350-2-tps-2948-1868.png](https://img.alicdn.com/imgextra/i4/O1CN011rlb681i0LwZ4gNhD_!!6000000004350-2-tps-2948-1868.png)
421
+
422
+
423
+ ## Enhanced Experience via Motion Effects
424
+
425
+
426
+ ### Thinking
427
+
428
+
429
+ We provide animated icons and subtle shimmer effects to convey the AI's thinking process:
430
+
431
+
432
+ ![O1CN01qpiuxK1hIqJcuQ6er_!!6000000004255-1-tps-820-219.gif](https://img.alicdn.com/imgextra/i3/O1CN01qpiuxK1hIqJcuQ6er_!!6000000004255-1-tps-820-219.gif)
433
+
434
+
435
+ ### Waiting
436
+
437
+
438
+ In image generation or long responses, we provide animations to make the wait time more visible and engaging:
439
+
440
+
441
+ ![O1CN017n21cg1wZzNh9bghb_!!6000000006323-1-tps-1024-506.gif](https://img.alicdn.com/imgextra/i4/O1CN017n21cg1wZzNh9bghb_!!6000000006323-1-tps-1024-506.gif)
442
+
443
+
444
+ ### Loading / Emitting
445
+
446
+
447
+ Our text rendering includes subtle breathing animations for smooth loading and message delivery:
448
+
449
+
450
+ ![O1CN01rOD7ch1wBFzZHNDj4_!!6000000006269-1-tps-2048-513.gif](https://img.alicdn.com/imgextra/i1/O1CN01rOD7ch1wBFzZHNDj4_!!6000000006269-1-tps-2048-513.gif)
451
+
452
+
453
+ ## About Spark Design \xAE
454
+
455
+
456
+ Spark Chat is part of the Spark Design ecosystem. Our mission is to provide developers with highly usable and flexible UI components for AI applications.
457
+ `}}}}]);