From 1645ff471458a54ea51a1fa153dea5d113e1e625 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Sebastian=20Musia=C5=82?= Date: Wed, 20 Mar 2024 13:42:02 +0100 Subject: [PATCH] feat: multi assistant support - allowing to pass assistant ID --- apps/api/src/main.ts | 2 +- .../src/lib/assistant/assistant.module.ts | 8 ++++++-- libs/openai-assistant/src/lib/chat/chat.gateway.ts | 2 ++ libs/openai-assistant/src/lib/chat/chat.model.ts | 3 +++ libs/openai-assistant/src/lib/chat/chat.service.ts | 5 ++--- 5 files changed, 14 insertions(+), 6 deletions(-) diff --git a/apps/api/src/main.ts b/apps/api/src/main.ts index 8526b4c..08ca3b3 100644 --- a/apps/api/src/main.ts +++ b/apps/api/src/main.ts @@ -9,7 +9,7 @@ async function bootstrap() { const globalPrefix = 'api'; const config = new DocumentBuilder() .setTitle('@boldare/openai-assistant') - .setVersion('0.1.0') + .setVersion('1.0.0') .build(); const document = SwaggerModule.createDocument(app, config); diff --git a/libs/openai-assistant/src/lib/assistant/assistant.module.ts b/libs/openai-assistant/src/lib/assistant/assistant.module.ts index 42ac73b..dee15e5 100644 --- a/libs/openai-assistant/src/lib/assistant/assistant.module.ts +++ b/libs/openai-assistant/src/lib/assistant/assistant.module.ts @@ -1,4 +1,4 @@ -import { DynamicModule, Inject, Module, OnModuleInit } from '@nestjs/common'; +import { DynamicModule, Inject, Module, OnModuleInit, Optional } from '@nestjs/common'; import { HttpModule } from '@nestjs/axios'; import { AssistantService, @@ -38,10 +38,14 @@ export class AssistantModule implements OnModuleInit { constructor( private readonly assistantService: AssistantService, private readonly configService: ConfigService, - @Inject('config') private config: AssistantConfigParams, + @Inject('config') @Optional() private config: AssistantConfigParams, ) {} async onModuleInit(): Promise { + if (!this.config) { + return; + } + this.configService.set(this.config); await this.assistantService.init(); } diff --git a/libs/openai-assistant/src/lib/chat/chat.gateway.ts b/libs/openai-assistant/src/lib/chat/chat.gateway.ts index b814488..85383c7 100644 --- a/libs/openai-assistant/src/lib/chat/chat.gateway.ts +++ b/libs/openai-assistant/src/lib/chat/chat.gateway.ts @@ -26,6 +26,7 @@ export class ChatGateway implements OnGatewayConnection { @ConnectedSocket() socket: Socket, ) { this.logger.log(`Socket "${ChatEvents.SendMessage}" (${socket.id}): + * assistant: ${request.assistantId} * thread: ${request.threadId} * files: ${request?.file_ids} * content: ${request.content}`); @@ -34,6 +35,7 @@ export class ChatGateway implements OnGatewayConnection { this.server?.to(socket.id).emit(ChatEvents.MessageReceived, message); this.logger.log(`Socket "${ChatEvents.MessageReceived}" (${socket.id}): + * assistant: ${request.assistantId} * thread: ${message.threadId} * content: ${message.content}`); } diff --git a/libs/openai-assistant/src/lib/chat/chat.model.ts b/libs/openai-assistant/src/lib/chat/chat.model.ts index d12b62d..ab088dc 100644 --- a/libs/openai-assistant/src/lib/chat/chat.model.ts +++ b/libs/openai-assistant/src/lib/chat/chat.model.ts @@ -33,6 +33,9 @@ export class ChatCallDto { @ApiProperty() content!: string; + @ApiProperty({ required: false }) + assistantId?: string; + @ApiProperty({ required: false }) file_ids?: string[]; diff --git a/libs/openai-assistant/src/lib/chat/chat.service.ts b/libs/openai-assistant/src/lib/chat/chat.service.ts index 711f1be..f9fc4d1 100644 --- a/libs/openai-assistant/src/lib/chat/chat.service.ts +++ b/libs/openai-assistant/src/lib/chat/chat.service.ts @@ -27,9 +27,8 @@ export class ChatService { await this.threads.messages.create(threadId, message); - const run = await this.threads.runs.create(threadId, { - assistant_id: process.env['ASSISTANT_ID'] || '', - }); + const assistant_id = payload?.assistantId || process.env['ASSISTANT_ID'] || ''; + const run = await this.threads.runs.create(threadId, { assistant_id }); await this.runService.resolve(run);