浏览代码

feat: 获取剪切板接口

huangzhichao 2 周之前
父节点
当前提交
603163df7b

+ 17 - 1
src/dto/agent-server.ts

@@ -4,7 +4,8 @@ import {
   ValidateIf,
   IsArray,
   IsNumber,
-  IsObject
+  IsObject,
+  IsOptional
 } from 'class-validator'
 
 export class GetDialogueHistoryDto {
@@ -86,3 +87,18 @@ export class ListUsersDto {
   @IsNotEmpty({ message: 'unionId不能为空' })
   unionId: string
 }
+
+export class FormatForPromptDto {
+  @IsString()
+  @IsNotEmpty()
+  formatType: 'staff_profile' | 'user_profile' | 'dialogue'
+
+  @ValidateIf((o) => o.formatType === 'dialogue')
+  @IsArray()
+  @IsOptional()
+  @ValidateIf(
+    (o) => o.formatType === 'staff_profile' || o.formatType === 'user_profile'
+  )
+  @IsObject()
+  content?: any[] | Record<string, any>
+}

+ 2 - 1
src/interface/agent-server.interface.ts

@@ -11,5 +11,6 @@ export interface IAgentServerService {
   listModels(): Promise<ServiceResponse<Model[]>>
   listScenes(): Promise<ServiceResponse<any[]>>
   getBasePrompt(scene: string): Promise<ServiceResponse<string>>
-  // runPrompt(prompt: any): Promise<ServiceResponse<any>>
+  formatForPrompt(params: any): Promise<ServiceResponse<any>>
+  runPrompt(prompt: any): Promise<ServiceResponse<any>>
 }

+ 9 - 1
src/module/agent-server/agent-server.controller.ts

@@ -7,7 +7,8 @@ import {
   GetUserProfileDto,
   GetStaffProfileDto,
   RunPromptDto,
-  ListUsersDto
+  ListUsersDto,
+  FormatForPromptDto
 } from '@/dto/agent-server'
 
 import { AgentServerService } from './service/agent-server.service'
@@ -76,4 +77,11 @@ export class AgentServerController {
   async listUsers(@Query() query: ListUsersDto) {
     return this.agentServerService.listUsers(query.userName, query.unionId)
   }
+
+  @Post('format-for-prompt')
+  @Header('Content-Type', 'application/json')
+  @ApiOperation({ summary: '格式化提示词' })
+  async formatForPrompt(@Body() body: FormatForPromptDto) {
+    return this.agentServerService.formatForPrompt(body)
+  }
 }

+ 4 - 0
src/module/agent-server/service/agent-server-http.service.ts

@@ -107,4 +107,8 @@ export class AgentServerHttpService {
   async runPrompt(params: any): Promise<ServiceResponse<any>> {
     return this.makeRequestPost<any>('runPrompt', params)
   }
+
+  async formatForPrompt(params: any): Promise<ServiceResponse<any>> {
+    return this.makeRequestPost<any>('formatForPrompt', params)
+  }
 }

+ 23 - 1
src/module/agent-server/service/agent-server.service.ts

@@ -1,6 +1,6 @@
 import { Injectable } from '@nestjs/common'
 
-import { RunPromptDto } from '@/dto/agent-server'
+import { RunPromptDto, FormatForPromptDto } from '@/dto/agent-server'
 import { IAgentServerService } from '@/interface/agent-server.interface'
 import { ServiceResponse } from '@/response/response.interface'
 import { BusinessCode, HttpStatusCode } from '@/response/status-code.enum'
@@ -218,4 +218,26 @@ export class AgentServerService implements IAgentServerService {
       data: data
     }
   }
+
+  async formatForPrompt({
+    content,
+    formatType
+  }: FormatForPromptDto): Promise<ServiceResponse<any>> {
+    const { code, data, msg } = await this.httpService.formatForPrompt({
+      content,
+      format_type: formatType
+    })
+    if (code !== HttpStatusCode.OK) {
+      return {
+        code: BusinessCode.BAD_REQUEST,
+        msg: msg || '格式化提示词失败',
+        data: null
+      }
+    }
+    return {
+      code: BusinessCode.SUCCESS,
+      msg: '格式化提示词成功',
+      data: data
+    }
+  }
 }