123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221 |
- import { Injectable } from '@nestjs/common'
- import { RunPromptDto } 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'
- import { AgentServerHttpService } from './agent-server-http.service'
- @Injectable()
- export class AgentServerService implements IAgentServerService {
- constructor(private readonly httpService: AgentServerHttpService) {}
- async listStaffs(): Promise<ServiceResponse<StaffsType[]>> {
- const { code, data, msg } = await this.httpService.listStaffs()
- if (code !== HttpStatusCode.OK) {
- return {
- code: BusinessCode.BAD_REQUEST,
- msg: msg || '获取客服列表失败',
- data: null
- }
- }
- return {
- code: BusinessCode.SUCCESS,
- msg: '获取客服列表成功',
- data: data
- }
- }
- async listScenes(): Promise<ServiceResponse<Scene[]>> {
- const { code, data, msg } = await this.httpService.listScenes()
- if (code !== HttpStatusCode.OK) {
- return {
- code: BusinessCode.BAD_REQUEST,
- msg: msg || '获取场景列表失败',
- data: null
- }
- }
- return {
- code: BusinessCode.SUCCESS,
- msg: '获取场景列表成功',
- data: data
- }
- }
- async listModels(): Promise<ServiceResponse<Model[]>> {
- const { code, data, msg } = await this.httpService.listModels()
- if (code !== HttpStatusCode.OK) {
- return {
- code: BusinessCode.BAD_REQUEST,
- msg: msg || '获取模型列表失败',
- data: null
- }
- }
- return {
- code: BusinessCode.SUCCESS,
- msg: '获取模型列表成功',
- data: data
- }
- }
- async getBasePrompt(scene: string): Promise<ServiceResponse<string>> {
- const { code, data, msg } = await this.httpService.getBasePrompt(scene)
- if (code !== HttpStatusCode.OK) {
- return {
- code: BusinessCode.BAD_REQUEST,
- msg: msg || '获取基础提示词失败',
- data: null
- }
- }
- return {
- code: BusinessCode.SUCCESS,
- msg: '获取基础提示词成功',
- data: data
- }
- }
- async getDialogueHistory(
- staffId: string,
- userName: string,
- unionId: string,
- recentMinutes: string
- ): Promise<ServiceResponse<UserInfo[]>> {
- const user = await this.httpServiceListUsers(userName, unionId)
- if (user.length === 0) {
- return {
- code: BusinessCode.BAD_REQUEST,
- msg: '用户不存在',
- data: null
- }
- }
- const dialogueHistory = await Promise.all(
- user.map(async (user) => {
- const res = await this.getDialogueHistoryByUserId(
- staffId,
- user,
- recentMinutes
- )
- return res
- })
- )
- return {
- code: BusinessCode.SUCCESS,
- msg: '获取对话历史成功',
- data: dialogueHistory
- }
- }
- async httpServiceListUsers(
- userName: string,
- unionId: string
- ): Promise<UserProfile[]> {
- const res = await this.httpService.listUsers(userName, unionId)
- if (res.code !== HttpStatusCode.OK) {
- return []
- }
- return res.data
- }
- async getDialogueHistoryByUserId(
- staffId: string,
- user: UserProfile,
- recentMinutes: string
- ): Promise<UserInfo> {
- const res = await this.httpService.getDialogueHistory(
- staffId,
- user.third_party_user_id,
- recentMinutes
- )
- const userInfo: UserInfo = {
- ...user,
- history: res.data || []
- }
- return userInfo
- }
- async getUserProfile(userId: string): Promise<ServiceResponse<UserProfile>> {
- const { code, data, msg } = await this.httpService.getUserProfile(userId)
- if (code !== HttpStatusCode.OK) {
- return {
- code: BusinessCode.BAD_REQUEST,
- msg: msg || '获取用户信息失败',
- data: null
- }
- }
- return {
- code: BusinessCode.SUCCESS,
- msg: '获取用户信息成功',
- data: data
- }
- }
- async getStaffProfile(
- staffId: string
- ): Promise<ServiceResponse<StaffProfile>> {
- const { code, data, msg } = await this.httpService.getStaffProfile(staffId)
- if (code !== HttpStatusCode.OK) {
- return {
- code: BusinessCode.BAD_REQUEST,
- msg: msg || '获取客服信息失败',
- data: null
- }
- }
- return {
- code: BusinessCode.SUCCESS,
- msg: '获取客服信息成功',
- data: data
- }
- }
- async runPrompt(query: RunPromptDto): Promise<ServiceResponse<string>> {
- const { code, data, msg } = await this.httpService.runPrompt({
- scene: query.scene,
- prompt: query.prompt,
- staff_profile: query.staffProfile,
- user_profile: query.userProfile,
- dialogue_history: query.dialogueHistory,
- model_name: query.modelName,
- current_timestamp: query.currentTimestamp
- })
- console.log(code, data, msg)
- if (code !== HttpStatusCode.OK) {
- return {
- code: BusinessCode.BAD_REQUEST,
- msg: msg || '运行提示词失败',
- data: null
- }
- }
- return {
- code: BusinessCode.SUCCESS,
- msg: '运行提示词成功',
- data: data
- }
- }
- async listUsers(
- userName: string,
- unionId: string
- ): Promise<ServiceResponse<UserProfile[]>> {
- const { code, data, msg } = await this.httpService.listUsers(
- userName,
- unionId
- )
- if (code !== HttpStatusCode.OK) {
- return {
- code: BusinessCode.BAD_REQUEST,
- msg: msg || '获取用户列表失败',
- data: null
- }
- }
- return {
- code: BusinessCode.SUCCESS,
- msg: '获取用户列表成功',
- data: data
- }
- }
- }
|