场景人设切换
	
		
			
	
		
	
	
		
	
		
			All checks were successful
		
		
	
	
		
			
				
	
				Gitea Actions Demo / Explore-Gitea-Actions (push) Successful in 2m30s
				
			
		
		
	
	
				
					
				
			
		
			All checks were successful
		
		
	
	Gitea Actions Demo / Explore-Gitea-Actions (push) Successful in 2m30s
				
			This commit is contained in:
		
							parent
							
								
									c96c49ff3f
								
							
						
					
					
						commit
						9d4bbc182c
					
				
							
								
								
									
										24
									
								
								server.js
									
									
									
									
									
								
							
							
						
						
									
										24
									
								
								server.js
									
									
									
									
									
								
							| @ -85,6 +85,7 @@ app.delete('/api/messages/clear', async (req, res) => { | |||||||
| // 存储连接的客户端和他们的视频流状态
 | // 存储连接的客户端和他们的视频流状态
 | ||||||
| const connectedClients = new Map(); | const connectedClients = new Map(); | ||||||
| 
 | 
 | ||||||
|  | // 场景轮询系统
 | ||||||
| // 场景轮询系统
 | // 场景轮询系统
 | ||||||
| let currentSceneIndex = 0; | let currentSceneIndex = 0; | ||||||
| const scenes = [ | const scenes = [ | ||||||
| @ -92,19 +93,22 @@ const scenes = [ | |||||||
|     name: '起床', |     name: '起床', | ||||||
|     defaultVideo: '8-4-bd-2.mp4', |     defaultVideo: '8-4-bd-2.mp4', | ||||||
|     interactionVideo: '8-4-sh.mp4', |     interactionVideo: '8-4-sh.mp4', | ||||||
|     tag: 'wakeup' |     tag: 'wakeup', | ||||||
|  |     apiKey: 'bot-20250724150616-xqpz8' // 起床场景的API key
 | ||||||
|   }, |   }, | ||||||
|   { |   { | ||||||
|     name: '开车', |     name: '开车', | ||||||
|     defaultVideo: '8-4-kc-bd.mp4', // 根据您的视频文件调整
 |     defaultVideo: '8-4-kc-bd.mp4', | ||||||
|     interactionVideo: '8-4-kc-sh.mp4', |     interactionVideo: '8-4-kc-sh.mp4', | ||||||
|     tag: 'driving' |     tag: 'driving', | ||||||
|  |     apiKey: 'bot-20250623140339-r8f8b' // 开车场景的API key
 | ||||||
|   }, |   }, | ||||||
|   { |   { | ||||||
|     name: '喝茶', |     name: '喝茶', | ||||||
|     defaultVideo: '8-4-hc-bd.mp4', |     defaultVideo: '8-4-hc-bd.mp4', | ||||||
|     interactionVideo: '8-4-hc-sh.mp4', |     interactionVideo: '8-4-hc-sh.mp4', | ||||||
|     tag: 'tea' |     tag: 'tea', | ||||||
|  |     apiKey: 'bot-20250804180724-4dgtk' // 喝茶场景的API key
 | ||||||
|   } |   } | ||||||
| ]; | ]; | ||||||
| 
 | 
 | ||||||
| @ -167,6 +171,18 @@ app.get('/api/videos', (req, res) => { | |||||||
|   }); |   }); | ||||||
| }); | }); | ||||||
| 
 | 
 | ||||||
|  | // 获取当前场景信息的API接口
 | ||||||
|  | app.get('/api/current-scene', (req, res) => { | ||||||
|  |     const scene = getCurrentScene(); | ||||||
|  |     res.json({ | ||||||
|  |         name: scene.name, | ||||||
|  |         tag: scene.tag, | ||||||
|  |         apiKey: scene.apiKey, | ||||||
|  |         defaultVideo: scene.defaultVideo, | ||||||
|  |         interactionVideo: scene.interactionVideo | ||||||
|  |     }); | ||||||
|  | }); | ||||||
|  | 
 | ||||||
| // 获取视频映射
 | // 获取视频映射
 | ||||||
| app.get('/api/video-mapping', (req, res) => { | app.get('/api/video-mapping', (req, res) => { | ||||||
|   // videoMapping = getCurrentScene()
 |   // videoMapping = getCurrentScene()
 | ||||||
|  | |||||||
| @ -2,7 +2,7 @@ | |||||||
| 
 | 
 | ||||||
| import { requestLLMStream } from './llm_stream.js'; | import { requestLLMStream } from './llm_stream.js'; | ||||||
| import { requestMinimaxi } from './minimaxi_stream.js'; | import { requestMinimaxi } from './minimaxi_stream.js'; | ||||||
| import { getLLMConfig, getMinimaxiConfig, getAudioConfig, validateConfig } from './config.js'; | import { getLLMConfig, getLLMConfigByScene, getMinimaxiConfig, getAudioConfig, validateConfig } from './config.js'; | ||||||
| 
 | 
 | ||||||
| // 防止重复播放的标志
 | // 防止重复播放的标志
 | ||||||
| let isPlaying = false; | let isPlaying = false; | ||||||
| @ -114,11 +114,14 @@ async function chatWithAudioStream(userInput) { | |||||||
|      |      | ||||||
|     console.log('用户输入:', userInput); |     console.log('用户输入:', userInput); | ||||||
|      |      | ||||||
|     // 获取配置
 |     // 获取当前场景对应的配置
 | ||||||
|     const llmConfig = getLLMConfig(); |     const llmConfig = await getLLMConfigByScene(); | ||||||
|     const minimaxiConfig = getMinimaxiConfig(); |     const minimaxiConfig = getMinimaxiConfig(); | ||||||
|     const audioConfig = getAudioConfig(); |     const audioConfig = getAudioConfig(); | ||||||
|      |      | ||||||
|  |     console.log(`当前场景: ${llmConfig.sceneName} (${llmConfig.sceneTag})`); | ||||||
|  |     console.log(`使用API Key: ${llmConfig.model.substring(0, 8)}...`); | ||||||
|  |      | ||||||
|     // 清空音频队列
 |     // 清空音频队列
 | ||||||
|     audioQueue = []; |     audioQueue = []; | ||||||
|      |      | ||||||
|  | |||||||
| @ -70,13 +70,32 @@ export function validateConfig() { | |||||||
| } | } | ||||||
| 
 | 
 | ||||||
| // 获取配置的便捷方法
 | // 获取配置的便捷方法
 | ||||||
| export function getLLMConfig() { | export function getLLMConfig(sceneApiKey = null) { | ||||||
|   return { |   return { | ||||||
|     apiKey: config.llm.apiKey, |     apiKey: config.llm.apiKey, // 如果提供了场景API key,则使用它
 | ||||||
|     model: config.llm.model, |     model: sceneApiKey || config.llm.model, | ||||||
|   }; |   }; | ||||||
| } | } | ||||||
| 
 | 
 | ||||||
|  | 
 | ||||||
|  | // 新增:根据场景获取LLM配置
 | ||||||
|  | export async function getLLMConfigByScene() { | ||||||
|  |   try { | ||||||
|  |     const response = await fetch('/api/current-scene'); | ||||||
|  |     const sceneData = await response.json(); | ||||||
|  |      | ||||||
|  |     return { | ||||||
|  |       apiKey: config.llm.apiKey, | ||||||
|  |       model: sceneData.apiKey, | ||||||
|  |       sceneTag: sceneData.tag, | ||||||
|  |       sceneName: sceneData.name | ||||||
|  |     }; | ||||||
|  |   } catch (error) { | ||||||
|  |     console.warn('获取场景配置失败,使用默认配置:', error); | ||||||
|  |     return getLLMConfig(); // 回退到默认配置
 | ||||||
|  |   } | ||||||
|  | } | ||||||
|  | 
 | ||||||
| export function getMinimaxiConfig() { | export function getMinimaxiConfig() { | ||||||
|   return { |   return { | ||||||
|     apiKey: config.minimaxi.apiKey, |     apiKey: config.minimaxi.apiKey, | ||||||
|  | |||||||
										
											Binary file not shown.
										
									
								
							
							
								
								
									
										
											BIN
										
									
								
								videos/8-4-sh-3.mp4
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										
											BIN
										
									
								
								videos/8-4-sh-3.mp4
									
									
									
									
									
										Normal file
									
								
							
										
											Binary file not shown.
										
									
								
							
		Loading…
	
	
			
			x
			
			
		
	
		Reference in New Issue
	
	Block a user
	 Song367
						Song367