Просмотр исходного кода

Use getOrCreateVectorStoreId()

Shun Miyazawa 1 год назад
Родитель
Сommit
77d5b02518

+ 6 - 5
apps/app/src/server/routes/apiv3/openai/thread.ts

@@ -4,12 +4,13 @@ import { body } from 'express-validator';
 
 
 import type Crowi from '~/server/crowi';
 import type Crowi from '~/server/crowi';
 import { openaiClient } from '~/server/service/openai';
 import { openaiClient } from '~/server/service/openai';
+import { getOpenaiService } from '~/server/service/openai/openai';
 import loggerFactory from '~/utils/logger';
 import loggerFactory from '~/utils/logger';
 
 
 import { apiV3FormValidator } from '../../../middlewares/apiv3-form-validator';
 import { apiV3FormValidator } from '../../../middlewares/apiv3-form-validator';
 import type { ApiV3Response } from '../interfaces/apiv3-response';
 import type { ApiV3Response } from '../interfaces/apiv3-response';
 
 
-const logger = loggerFactory('growi:routes:apiv3:openai:chat');
+const logger = loggerFactory('growi:routes:apiv3:openai:thread');
 
 
 type CreateThreadReq = Request<undefined, ApiV3Response, {
 type CreateThreadReq = Request<undefined, ApiV3Response, {
   userMessage: string,
   userMessage: string,
@@ -29,13 +30,13 @@ export const createThreadHandlersFactory: CreateThreadFactory = (crowi) => {
   return [
   return [
     accessTokenParser, loginRequiredStrictly, validator, apiV3FormValidator,
     accessTokenParser, loginRequiredStrictly, validator, apiV3FormValidator,
     async(req: CreateThreadReq, res: ApiV3Response) => {
     async(req: CreateThreadReq, res: ApiV3Response) => {
-
-      const vectorStoreId = process.env.OPENAI_VECTOR_STORE_ID;
-      if (vectorStoreId == null) {
-        return res.apiv3Err('OPENAI_VECTOR_STORE_ID is not setup', 503);
+      const openaiService = getOpenaiService();
+      if (openaiService == null) {
+        return res.apiv3Err('OpenaiService is not available', 503);
       }
       }
 
 
       try {
       try {
+        const vectorStoreId = await openaiService.getOrCreateVectorStoreId();
         const threadId = req.body.threadId;
         const threadId = req.body.threadId;
         const thread = threadId == null
         const thread = threadId == null
           ? await openaiClient.beta.threads.create({
           ? await openaiClient.beta.threads.create({

+ 2 - 1
apps/app/src/server/service/openai/openai.ts

@@ -25,6 +25,7 @@ const logger = loggerFactory('growi:service:openai');
 
 
 
 
 export interface IOpenaiService {
 export interface IOpenaiService {
+  getOrCreateVectorStoreId(): Promise<string>;
   createVectorStoreFile(pages: PageDocument[]): Promise<void>;
   createVectorStoreFile(pages: PageDocument[]): Promise<void>;
   rebuildVectorStoreAll(): Promise<void>;
   rebuildVectorStoreAll(): Promise<void>;
   rebuildVectorStore(page: PageDocument): Promise<void>;
   rebuildVectorStore(page: PageDocument): Promise<void>;
@@ -36,7 +37,7 @@ class OpenaiService implements IOpenaiService {
     return getClient({ openaiServiceType });
     return getClient({ openaiServiceType });
   }
   }
 
 
-  private async getOrCreateVectorStoreId(): Promise<string> {
+  public async getOrCreateVectorStoreId(): Promise<string> {
     const configKey = 'app:openaiVectorStoreId';
     const configKey = 'app:openaiVectorStoreId';
 
 
     const vectorStoreId = configManager.getConfig('crowi', configKey);
     const vectorStoreId = configManager.getConfig('crowi', configKey);