byt-lingxiao-ai 0.2.6 → 0.2.8

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.
@@ -68,24 +68,7 @@ export default {
68
68
  audioSrc: '/minio/lingxiaoai/byt.mp3',
69
69
  inputMessage: '',
70
70
  visible: false,
71
- messages: [
72
- {
73
- id: 1,
74
- type: 'user',
75
- sender: '',
76
- time: '',
77
- content: '你好,欢迎来到凌霄大模型AI对话。',
78
- },
79
- {
80
- id: 2,
81
- type: 'ai',
82
- sender: 'AI',
83
- time: '',
84
- thinking: '嗯,用户问的是回转窑的工业应用。首先,我需要回忆一下之前对话的内容。用户之前让我解释了水泥的制作流程,特别是提到了回转窑在高温煅烧熟料中的作用。',
85
- charts: [{ title: '', options: {} }],
86
- content: '回转窑(Rotary Kiln)是一种长筒形旋转煅烧设备(类似倾斜安装的大管子),因其独特的旋转运动和高温耐火衬里设计,在多个工业领域都有广泛应用',
87
- }
88
- ],
71
+ messages: [],
89
72
  robotStatus: 'leaving',
90
73
  avaterStatus: 'normal',
91
74
  currentMessage: null,
@@ -134,27 +117,27 @@ export default {
134
117
  this.jumpedTimePoints = new Set()
135
118
  }
136
119
 
137
- const timeJumpPoints = [
138
- { time: 40, url: '/permission/user', name: 'permission_user', title: '用户管理' },
139
- { time: 65, url: '/permission/menu', name: 'permission_menu', title: '菜单管理' },
140
- { time: 75, url: '/permission/role', name: 'permission_role', title: '角色管理' }
141
- ]
142
-
143
- timeJumpPoints.forEach(point => {
144
- if (currentTime >= point.time && currentTime < point.time + 0.5 && !this.jumpedTimePoints.has(point.time)) {
145
- this.jumpedTimePoints.add(point.time)
146
- this.$appOptions.store.dispatch('tags/addTagview', {
147
- path: point.url,
148
- fullPath: point.url,
149
- label: point.title,
150
- name: point.title,
151
- meta: { title: point.title },
152
- query: {},
153
- params: {}
120
+ fetch('/minio/lingxiaoai/timeJumpPoints.json')
121
+ .then(response => response.json())
122
+ .then(data => {
123
+ console.log('时间跳转点:', data)
124
+ data.forEach(point => {
125
+ if (currentTime >= point.time && currentTime < point.time + 0.5 && !this.jumpedTimePoints.has(point.time)) {
126
+ this.jumpedTimePoints.add(point.time)
127
+ this.$appOptions.store.dispatch('tags/addTagview', {
128
+ path: point.url,
129
+ fullPath: point.url,
130
+ label: point.title,
131
+ name: point.title,
132
+ meta: { title: point.title },
133
+ query: {},
134
+ params: {}
135
+ })
136
+ this.$appOptions.router.push({ path: point.url })
137
+ }
154
138
  })
155
- this.$appOptions.router.push({ path: point.url })
156
- }
157
- })
139
+ })
140
+ .catch(error => console.error('获取时间跳转点失败:', error))
158
141
  },
159
142
  onAudioEnded() {
160
143
  this.robotStatus = 'leaving'
@@ -1,6 +1,6 @@
1
1
  <template>
2
2
  <div class="chat-window-header">
3
- <div class="chat-window-header-title">凌霄大模型AI123对话</div>
3
+ <div class="chat-window-header-title">凌霄大模型AI对话</div>
4
4
  <div class="chat-window-header-open" @click="handleOpen">
5
5
  <svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24" fill="none">
6
6
  <path d="M14.5 4.5H19.5V9.5" stroke="#4E5969" stroke-width="1.66667" stroke-linecap="round" stroke-linejoin="round"/>
@@ -41,10 +41,8 @@ export default {
41
41
  name: 'ChatWindowHeader',
42
42
  methods: {
43
43
  handleOpen() {
44
- const path = this.$router.resolve({
45
- name: '/chat'
46
- })
47
- window.open(path.href, '_blank')
44
+ const baseUrl = window.location.protocol + '//' + window.location.hostname + ':3100/';
45
+ window.open(baseUrl, '_blank')
48
46
  }
49
47
  }
50
48
  }
@@ -60,8 +60,11 @@ export default {
60
60
  const startTime = Date.now();
61
61
  const controller = new AbortController();
62
62
  const token = `Bearer ac627d0a-8346-4ae9-b93a-f37ff6210adc`;
63
+
64
+ const baseUrl = window.location.protocol + '//' + window.location.hostname + ':3100';
65
+ const apiUrl = baseUrl + '/lingxiao-byt/api/chat/completions';
63
66
 
64
- const response = await fetch('/bytserver/api-model/chat/stream', {
67
+ const response = await fetch(apiUrl, {
65
68
  method: 'POST',
66
69
  signal: controller.signal,
67
70
  headers: {
@@ -3,7 +3,9 @@ export default {
3
3
  return {
4
4
  ws: null,
5
5
  wsUrl: 'ws://192.168.8.9:9999/ai_model/ws/voice-stream',
6
- isConnected: false
6
+ isConnected: false,
7
+ reconnectCount: 0, // 重连尝试次数
8
+ maxReconnectAttempts: 3 // 最大重连尝试次数
7
9
  }
8
10
  },
9
11
  methods: {
@@ -48,12 +50,16 @@ export default {
48
50
  if (this.isRecording) {
49
51
  this.stopRecording();
50
52
  }
51
- setTimeout(() => {
52
- console.log('尝试重新建立连接');
53
- if (!this.isConnected) {
54
- this.initWebSocket();
55
- }
56
- }, 3000);
53
+ this.reconnectCount++;
54
+ console.log(`已尝试重连 ${this.reconnectCount} 次`);
55
+ if (this.reconnectCount <= this.maxReconnectAttempts) {
56
+ setTimeout(() => {
57
+ console.log('尝试重新建立连接');
58
+ if (!this.isConnected) {
59
+ this.initWebSocket();
60
+ }
61
+ }, 3000);
62
+ }
57
63
  };
58
64
 
59
65
  this.ws.onerror = (error) => {
@@ -3746,7 +3746,7 @@ if (typeof window !== 'undefined') {
3746
3746
  var es_iterator_constructor = __webpack_require__(8111);
3747
3747
  // EXTERNAL MODULE: ./node_modules/core-js/modules/es.iterator.for-each.js
3748
3748
  var es_iterator_for_each = __webpack_require__(7588);
3749
- ;// ./node_modules/thread-loader/dist/cjs.js!./node_modules/babel-loader/lib/index.js??clonedRuleSet-40.use[1]!./node_modules/@vue/vue-loader-v15/lib/loaders/templateLoader.js??ruleSet[1].rules[3]!./node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./components/ChatWindow.vue?vue&type=template&id=d604373c&scoped=true
3749
+ ;// ./node_modules/thread-loader/dist/cjs.js!./node_modules/babel-loader/lib/index.js??clonedRuleSet-40.use[1]!./node_modules/@vue/vue-loader-v15/lib/loaders/templateLoader.js??ruleSet[1].rules[3]!./node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./components/ChatWindow.vue?vue&type=template&id=5792943c&scoped=true
3750
3750
  var render = function render() {
3751
3751
  var _vm = this,
3752
3752
  _c = _vm._self._c;
@@ -4088,15 +4088,15 @@ var ChatWindowDialogvue_type_template_id_5eca994a_scoped_true_render = function
4088
4088
  };
4089
4089
  var ChatWindowDialogvue_type_template_id_5eca994a_scoped_true_staticRenderFns = [];
4090
4090
 
4091
- ;// ./node_modules/thread-loader/dist/cjs.js!./node_modules/babel-loader/lib/index.js??clonedRuleSet-40.use[1]!./node_modules/@vue/vue-loader-v15/lib/loaders/templateLoader.js??ruleSet[1].rules[3]!./node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./components/ChatWindowHeader.vue?vue&type=template&id=6518e4ca&scoped=true
4092
- var ChatWindowHeadervue_type_template_id_6518e4ca_scoped_true_render = function render() {
4091
+ ;// ./node_modules/thread-loader/dist/cjs.js!./node_modules/babel-loader/lib/index.js??clonedRuleSet-40.use[1]!./node_modules/@vue/vue-loader-v15/lib/loaders/templateLoader.js??ruleSet[1].rules[3]!./node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./components/ChatWindowHeader.vue?vue&type=template&id=90ac64ba&scoped=true
4092
+ var ChatWindowHeadervue_type_template_id_90ac64ba_scoped_true_render = function render() {
4093
4093
  var _vm = this,
4094
4094
  _c = _vm._self._c;
4095
4095
  return _c('div', {
4096
4096
  staticClass: "chat-window-header"
4097
4097
  }, [_c('div', {
4098
4098
  staticClass: "chat-window-header-title"
4099
- }, [_vm._v("凌霄大模型AI123对话")]), _c('div', {
4099
+ }, [_vm._v("凌霄大模型AI对话")]), _c('div', {
4100
4100
  staticClass: "chat-window-header-open",
4101
4101
  on: {
4102
4102
  "click": _vm.handleOpen
@@ -4174,26 +4174,24 @@ var ChatWindowHeadervue_type_template_id_6518e4ca_scoped_true_render = function
4174
4174
  }
4175
4175
  })])])]);
4176
4176
  };
4177
- var ChatWindowHeadervue_type_template_id_6518e4ca_scoped_true_staticRenderFns = [];
4177
+ var ChatWindowHeadervue_type_template_id_90ac64ba_scoped_true_staticRenderFns = [];
4178
4178
 
4179
4179
  ;// ./node_modules/thread-loader/dist/cjs.js!./node_modules/babel-loader/lib/index.js??clonedRuleSet-40.use[1]!./node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./components/ChatWindowHeader.vue?vue&type=script&lang=js
4180
4180
  /* harmony default export */ var ChatWindowHeadervue_type_script_lang_js = ({
4181
4181
  name: 'ChatWindowHeader',
4182
4182
  methods: {
4183
4183
  handleOpen() {
4184
- const path = this.$router.resolve({
4185
- name: '/chat'
4186
- });
4187
- window.open(path.href, '_blank');
4184
+ const baseUrl = window.location.protocol + '//' + window.location.hostname + ':3100/';
4185
+ window.open(baseUrl, '_blank');
4188
4186
  }
4189
4187
  }
4190
4188
  });
4191
4189
  ;// ./components/ChatWindowHeader.vue?vue&type=script&lang=js
4192
4190
  /* harmony default export */ var components_ChatWindowHeadervue_type_script_lang_js = (ChatWindowHeadervue_type_script_lang_js);
4193
- ;// ./node_modules/mini-css-extract-plugin/dist/loader.js??clonedRuleSet-12.use[0]!./node_modules/css-loader/dist/cjs.js??clonedRuleSet-12.use[1]!./node_modules/@vue/vue-loader-v15/lib/loaders/stylePostLoader.js!./node_modules/postcss-loader/dist/cjs.js??clonedRuleSet-12.use[2]!./node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./components/ChatWindowHeader.vue?vue&type=style&index=0&id=6518e4ca&prod&scoped=true&lang=css
4191
+ ;// ./node_modules/mini-css-extract-plugin/dist/loader.js??clonedRuleSet-12.use[0]!./node_modules/css-loader/dist/cjs.js??clonedRuleSet-12.use[1]!./node_modules/@vue/vue-loader-v15/lib/loaders/stylePostLoader.js!./node_modules/postcss-loader/dist/cjs.js??clonedRuleSet-12.use[2]!./node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./components/ChatWindowHeader.vue?vue&type=style&index=0&id=90ac64ba&prod&scoped=true&lang=css
4194
4192
  // extracted by mini-css-extract-plugin
4195
4193
 
4196
- ;// ./components/ChatWindowHeader.vue?vue&type=style&index=0&id=6518e4ca&prod&scoped=true&lang=css
4194
+ ;// ./components/ChatWindowHeader.vue?vue&type=style&index=0&id=90ac64ba&prod&scoped=true&lang=css
4197
4195
 
4198
4196
  ;// ./components/ChatWindowHeader.vue
4199
4197
 
@@ -4206,11 +4204,11 @@ var ChatWindowHeadervue_type_template_id_6518e4ca_scoped_true_staticRenderFns =
4206
4204
 
4207
4205
  var ChatWindowHeader_component = normalizeComponent(
4208
4206
  components_ChatWindowHeadervue_type_script_lang_js,
4209
- ChatWindowHeadervue_type_template_id_6518e4ca_scoped_true_render,
4210
- ChatWindowHeadervue_type_template_id_6518e4ca_scoped_true_staticRenderFns,
4207
+ ChatWindowHeadervue_type_template_id_90ac64ba_scoped_true_render,
4208
+ ChatWindowHeadervue_type_template_id_90ac64ba_scoped_true_staticRenderFns,
4211
4209
  false,
4212
4210
  null,
4213
- "6518e4ca",
4211
+ "90ac64ba",
4214
4212
  null
4215
4213
 
4216
4214
  )
@@ -4743,7 +4741,10 @@ var es_typed_array_with = __webpack_require__(9577);
4743
4741
  return {
4744
4742
  ws: null,
4745
4743
  wsUrl: 'ws://192.168.8.9:9999/ai_model/ws/voice-stream',
4746
- isConnected: false
4744
+ isConnected: false,
4745
+ reconnectCount: 0,
4746
+ // 重连尝试次数
4747
+ maxReconnectAttempts: 3 // 最大重连尝试次数
4747
4748
  };
4748
4749
  },
4749
4750
  methods: {
@@ -4782,12 +4783,16 @@ var es_typed_array_with = __webpack_require__(9577);
4782
4783
  if (this.isRecording) {
4783
4784
  this.stopRecording();
4784
4785
  }
4785
- setTimeout(() => {
4786
- console.log('尝试重新建立连接');
4787
- if (!this.isConnected) {
4788
- this.initWebSocket();
4789
- }
4790
- }, 3000);
4786
+ this.reconnectCount++;
4787
+ console.log(`已尝试重连 ${this.reconnectCount} 次`);
4788
+ if (this.reconnectCount <= this.maxReconnectAttempts) {
4789
+ setTimeout(() => {
4790
+ console.log('尝试重新建立连接');
4791
+ if (!this.isConnected) {
4792
+ this.initWebSocket();
4793
+ }
4794
+ }, 3000);
4795
+ }
4791
4796
  };
4792
4797
  this.ws.onerror = error => {
4793
4798
  console.error('WebSocket 错误:', error);
@@ -5143,7 +5148,9 @@ class StreamParser {
5143
5148
  const startTime = Date.now();
5144
5149
  const controller = new AbortController();
5145
5150
  const token = `Bearer ac627d0a-8346-4ae9-b93a-f37ff6210adc`;
5146
- const response = await fetch('/bytserver/api-model/chat/stream', {
5151
+ const baseUrl = window.location.protocol + '//' + window.location.hostname + ':3100';
5152
+ const apiUrl = baseUrl + '/lingxiao-byt/api/chat/completions';
5153
+ const response = await fetch(apiUrl, {
5147
5154
  method: 'POST',
5148
5155
  signal: controller.signal,
5149
5156
  headers: {
@@ -5252,6 +5259,8 @@ class StreamParser {
5252
5259
 
5253
5260
 
5254
5261
 
5262
+
5263
+
5255
5264
  const SAMPLE_RATE = 16000;
5256
5265
  const FRAME_SIZE = 512;
5257
5266
  /* harmony default export */ var ChatWindowvue_type_script_lang_js = ({
@@ -5273,24 +5282,7 @@ const FRAME_SIZE = 512;
5273
5282
  audioSrc: '/minio/lingxiaoai/byt.mp3',
5274
5283
  inputMessage: '',
5275
5284
  visible: false,
5276
- messages: [{
5277
- id: 1,
5278
- type: 'user',
5279
- sender: '',
5280
- time: '',
5281
- content: '你好,欢迎来到凌霄大模型AI对话。'
5282
- }, {
5283
- id: 2,
5284
- type: 'ai',
5285
- sender: 'AI',
5286
- time: '',
5287
- thinking: '嗯,用户问的是回转窑的工业应用。首先,我需要回忆一下之前对话的内容。用户之前让我解释了水泥的制作流程,特别是提到了回转窑在高温煅烧熟料中的作用。',
5288
- charts: [{
5289
- title: '',
5290
- options: {}
5291
- }],
5292
- content: '回转窑(Rotary Kiln)是一种长筒形旋转煅烧设备(类似倾斜安装的大管子),因其独特的旋转运动和高温耐火衬里设计,在多个工业领域都有广泛应用'
5293
- }],
5285
+ messages: [],
5294
5286
  robotStatus: 'leaving',
5295
5287
  avaterStatus: 'normal',
5296
5288
  currentMessage: null,
@@ -5337,41 +5329,28 @@ const FRAME_SIZE = 512;
5337
5329
  if (!this.jumpedTimePoints) {
5338
5330
  this.jumpedTimePoints = new Set();
5339
5331
  }
5340
- const timeJumpPoints = [{
5341
- time: 40,
5342
- url: '/permission/user',
5343
- name: 'permission_user',
5344
- title: '用户管理'
5345
- }, {
5346
- time: 65,
5347
- url: '/permission/menu',
5348
- name: 'permission_menu',
5349
- title: '菜单管理'
5350
- }, {
5351
- time: 75,
5352
- url: '/permission/role',
5353
- name: 'permission_role',
5354
- title: '角色管理'
5355
- }];
5356
- timeJumpPoints.forEach(point => {
5357
- if (currentTime >= point.time && currentTime < point.time + 0.5 && !this.jumpedTimePoints.has(point.time)) {
5358
- this.jumpedTimePoints.add(point.time);
5359
- this.$appOptions.store.dispatch('tags/addTagview', {
5360
- path: point.url,
5361
- fullPath: point.url,
5362
- label: point.title,
5363
- name: point.title,
5364
- meta: {
5365
- title: point.title
5366
- },
5367
- query: {},
5368
- params: {}
5369
- });
5370
- this.$appOptions.router.push({
5371
- path: point.url
5372
- });
5373
- }
5374
- });
5332
+ fetch('/minio/lingxiaoai/timeJumpPoints.json').then(response => response.json()).then(data => {
5333
+ console.log('时间跳转点:', data);
5334
+ data.forEach(point => {
5335
+ if (currentTime >= point.time && currentTime < point.time + 0.5 && !this.jumpedTimePoints.has(point.time)) {
5336
+ this.jumpedTimePoints.add(point.time);
5337
+ this.$appOptions.store.dispatch('tags/addTagview', {
5338
+ path: point.url,
5339
+ fullPath: point.url,
5340
+ label: point.title,
5341
+ name: point.title,
5342
+ meta: {
5343
+ title: point.title
5344
+ },
5345
+ query: {},
5346
+ params: {}
5347
+ });
5348
+ this.$appOptions.router.push({
5349
+ path: point.url
5350
+ });
5351
+ }
5352
+ });
5353
+ }).catch(error => console.error('获取时间跳转点失败:', error));
5375
5354
  },
5376
5355
  onAudioEnded() {
5377
5356
  this.robotStatus = 'leaving';
@@ -5381,10 +5360,10 @@ const FRAME_SIZE = 512;
5381
5360
  });
5382
5361
  ;// ./components/ChatWindow.vue?vue&type=script&lang=js
5383
5362
  /* harmony default export */ var components_ChatWindowvue_type_script_lang_js = (ChatWindowvue_type_script_lang_js);
5384
- ;// ./node_modules/mini-css-extract-plugin/dist/loader.js??clonedRuleSet-12.use[0]!./node_modules/css-loader/dist/cjs.js??clonedRuleSet-12.use[1]!./node_modules/@vue/vue-loader-v15/lib/loaders/stylePostLoader.js!./node_modules/postcss-loader/dist/cjs.js??clonedRuleSet-12.use[2]!./node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./components/ChatWindow.vue?vue&type=style&index=0&id=d604373c&prod&scoped=true&lang=css
5363
+ ;// ./node_modules/mini-css-extract-plugin/dist/loader.js??clonedRuleSet-12.use[0]!./node_modules/css-loader/dist/cjs.js??clonedRuleSet-12.use[1]!./node_modules/@vue/vue-loader-v15/lib/loaders/stylePostLoader.js!./node_modules/postcss-loader/dist/cjs.js??clonedRuleSet-12.use[2]!./node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./components/ChatWindow.vue?vue&type=style&index=0&id=5792943c&prod&scoped=true&lang=css
5385
5364
  // extracted by mini-css-extract-plugin
5386
5365
 
5387
- ;// ./components/ChatWindow.vue?vue&type=style&index=0&id=d604373c&prod&scoped=true&lang=css
5366
+ ;// ./components/ChatWindow.vue?vue&type=style&index=0&id=5792943c&prod&scoped=true&lang=css
5388
5367
 
5389
5368
  ;// ./components/ChatWindow.vue
5390
5369
 
@@ -5401,7 +5380,7 @@ var ChatWindow_component = normalizeComponent(
5401
5380
  staticRenderFns,
5402
5381
  false,
5403
5382
  null,
5404
- "d604373c",
5383
+ "5792943c",
5405
5384
  null
5406
5385
 
5407
5386
  )