From c2e8f92abe914814f6873dff6f7733008f8061f5 Mon Sep 17 00:00:00 2001 From: WangDL Date: Fri, 22 May 2026 10:10:11 +0800 Subject: [PATCH] =?UTF-8?q?refactor:=20remove=20DeepSeek=20fallback=20?= =?UTF-8?q?=E2=80=94=20Hermes=20only;=20fail=20fast=20on=20error?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../admin-ai-chat/admin-ai-chat.module.ts | 7 ++--- .../admin-ai-chat/admin-ai-chat.service.ts | 30 ++++--------------- 2 files changed, 9 insertions(+), 28 deletions(-) diff --git a/src/modules/admin-ai-chat/admin-ai-chat.module.ts b/src/modules/admin-ai-chat/admin-ai-chat.module.ts index f1c1bfc..e7a3c55 100644 --- a/src/modules/admin-ai-chat/admin-ai-chat.module.ts +++ b/src/modules/admin-ai-chat/admin-ai-chat.module.ts @@ -1,12 +1,11 @@ -import { Module } from '@nestjs/common'; +import { Module } from '@nestjs/common'; import { AdminAiChatController } from './admin-ai-chat.controller'; import { AdminAiChatService } from './admin-ai-chat.service'; -import { DeepSeekProvider } from '../ai/providers/deepseek.provider'; import { AdminAuthGuard } from '../../common/guards/admin-auth.guard'; import { AdminRolesGuard } from '../../common/guards/admin-roles.guard'; @Module({ controllers: [AdminAiChatController], - providers: [AdminAiChatService, DeepSeekProvider, AdminAuthGuard, AdminRolesGuard], + providers: [AdminAiChatService, AdminAuthGuard, AdminRolesGuard], }) -export class AdminAiChatModule {} \ No newline at end of file +export class AdminAiChatModule {} diff --git a/src/modules/admin-ai-chat/admin-ai-chat.service.ts b/src/modules/admin-ai-chat/admin-ai-chat.service.ts index e6aacc9..11762f7 100644 --- a/src/modules/admin-ai-chat/admin-ai-chat.service.ts +++ b/src/modules/admin-ai-chat/admin-ai-chat.service.ts @@ -1,5 +1,4 @@ -import { Injectable, Logger } from '@nestjs/common'; -import { DeepSeekProvider } from '../ai/providers/deepseek.provider'; +import { Injectable, Logger } from '@nestjs/common'; import type { AiChatDto } from './dto/ai-chat.dto'; const HERMES_API_URL = 'http://10.2.0.7:8642/v1/chat/completions'; @@ -10,7 +9,7 @@ const SYSTEM_PROMPT = '你是知习管理后台的 AI 任务助理,帮助管 export class AdminAiChatService { private readonly logger = new Logger(AdminAiChatService.name); - constructor(private readonly deepseek: DeepSeekProvider) {} + constructor() {} async chat(dto: AiChatDto) { const systemMessages = dto.messages.filter(m => m.role === 'system'); @@ -20,13 +19,7 @@ export class AdminAiChatService { ? dto.messages : [{ role: 'system' as const, content: SYSTEM_PROMPT }, ...dto.messages]; - // Try Hermes Agent first, fall back to DeepSeek - try { - return await this.callHermes(messages); - } catch (err: any) { - this.logger.warn('Hermes unavailable, falling back to DeepSeek: ' + err.message); - return await this.callDeepSeek(messages); - } + return await this.callHermes(messages); } private async callHermes(messages: Array<{ role: string; content: string }>) { @@ -47,7 +40,8 @@ export class AdminAiChatService { }); if (!resp.ok) { - throw new Error('Hermes returned ' + resp.status); + const text = await resp.text().catch(() => ''); + throw new Error(`Hermes API error ${resp.status}: ${text}`); } const data = await resp.json(); @@ -59,18 +53,6 @@ export class AdminAiChatService { return { content, usage: { model: 'hermes-agent', inputTokens: usage.prompt_tokens, outputTokens: usage.completion_tokens } }; } - private async callDeepSeek(messages: Array<{ role: string; content: string }>) { - const start = Date.now(); - const result = await this.deepseek.generate({ - model: 'deepseek-chat', - messages: messages as Array<{ role: 'system' | 'user' | 'assistant'; content: string }>, - temperature: 0.7, - maxTokens: 4096, - }); - this.logger.log('DeepSeek chat: ' + (Date.now() - start) + 'ms'); - return { content: result.rawText, usage: result.usage }; - } - getDashboardConfig() { return { url: 'http://10.2.0.7:9119', @@ -78,4 +60,4 @@ export class AdminAiChatService { description: 'Hermes Agent Dashboard — 4核4G 上的 AI Agent', }; } -} \ No newline at end of file +}