From 0b2ac82f5c89baee4e2af1f89278dade93fbc5e4 Mon Sep 17 00:00:00 2001 From: lichao <2483469113@qq.com> Date: Mon, 10 Feb 2025 17:50:41 +0800 Subject: [PATCH] =?UTF-8?q?feat:=20=E6=B7=BB=E5=8A=A0deepSeek=E6=94=AF?= =?UTF-8?q?=E6=8C=81?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .env | 1 + src/constants/providerType.ts | 12 ++++++++++++ src/deepseek/deepseek.controller.ts | 20 +++++++++++++++++--- src/deepseek/deepseek.service.ts | 23 ++++++++++++----------- 4 files changed, 42 insertions(+), 14 deletions(-) create mode 100644 src/constants/providerType.ts diff --git a/.env b/.env index 7a6ef35..6016880 100644 --- a/.env +++ b/.env @@ -17,3 +17,4 @@ FEISHU_APP_SECRET=s106GAbbCZk66OcHN69Rng5TaLK6fiH2 # 深寻 SILICONFLOW_API_KEY=sk-ojmkkuyrfigcmdlijbirbjaqmuwhhfsddcqdvpvayspqrupc +DEEPSEEK_API_KEY=sk-e8941dc2bf1d4d099001b161db6f4317 diff --git a/src/constants/providerType.ts b/src/constants/providerType.ts new file mode 100644 index 0000000..6358dfb --- /dev/null +++ b/src/constants/providerType.ts @@ -0,0 +1,12 @@ +export const PROVIDER_TYPE = { + Deep: { + name: 'Deep', + baseUrl: 'https://api.deepseek.com/chat/completions', + model: 'deepseek-chat', + }, + Flow: { + name: 'Flow', + baseUrl: 'https://api.siliconflow.cn/v1/chat/completions', + model: 'deepseek-ai/DeepSeek-V3', + }, +}; diff --git a/src/deepseek/deepseek.controller.ts b/src/deepseek/deepseek.controller.ts index a9dbc1f..ef1b857 100644 --- a/src/deepseek/deepseek.controller.ts +++ b/src/deepseek/deepseek.controller.ts @@ -1,15 +1,29 @@ import { Body, Controller, Post } from '@nestjs/common'; import { DeepseekService } from './deepseek.service'; import { Public } from 'src/auth/decorators/public.decorator'; +import { PROVIDER_TYPE } from 'src/constants/providerType'; @Controller('deepSeek') export class DeepseekController { constructor(private readonly deepseekService: DeepseekService) {} @Public() - @Post('chat') - async chat(@Body() body: { message: string }) { - const response = await this.deepseekService.chatRequest(body.message); + @Post('chat-flow') + async chatFlow(@Body() body: { message: string }) { + const response = await this.deepseekService.chatRequest( + body.message, + PROVIDER_TYPE.Flow.name, + ); + return response; + } + + @Public() + @Post('chat-deep') + async chatDeep(@Body() body: { message: string }) { + const response = await this.deepseekService.chatRequest( + body.message, + PROVIDER_TYPE.Deep.name, + ); return response; } } diff --git a/src/deepseek/deepseek.service.ts b/src/deepseek/deepseek.service.ts index 25b1fc0..0db3530 100644 --- a/src/deepseek/deepseek.service.ts +++ b/src/deepseek/deepseek.service.ts @@ -1,26 +1,27 @@ import { Injectable } from '@nestjs/common'; import axios from 'axios'; +import { PROVIDER_TYPE } from 'src/constants/providerType'; @Injectable() export class DeepseekService { - async chatRequest(message: string) { - const url = 'https://api.siliconflow.cn/v1/chat/completions'; + async chatRequest(message: string, provider = PROVIDER_TYPE.Flow.name) { + const { baseUrl, model } = PROVIDER_TYPE[provider]; + const apiKey = + provider === PROVIDER_TYPE.Flow.name + ? process.env.SILICONFLOW_API_KEY + : process.env.DEEPSEEK_API_KEY; + try { const response = await axios.post( - url, + baseUrl, { - messages: [ - { - content: message, - role: 'user', - }, - ], - model: 'deepseek-ai/DeepSeek-V3', + messages: [{ content: message, role: 'user' }], + model, stream: false, }, { headers: { - Authorization: `Bearer ${process.env.SILICONFLOW_API_KEY}`, + Authorization: `Bearer ${apiKey}`, }, }, );