Yuki Takei 1 год назад
Родитель
Сommit
35d21ef5b6

+ 1 - 1
apps/app/src/server/middlewares/certify-ai-service.ts

@@ -8,7 +8,6 @@ const logger = loggerFactory('growi:middlewares:certify-ai-service');
 
 export const certifyAiService = (req: Request, res: Response & { apiv3Err }, next: NextFunction): void => {
   const aiEnabled = configManager.getConfig('crowi', 'app:aiEnabled');
-  const openaiServiceType = configManager.getConfig('crowi', 'app:openaiServiceType');
 
   if (!aiEnabled) {
     const message = 'AI_ENABLED is not true';
@@ -16,6 +15,7 @@ export const certifyAiService = (req: Request, res: Response & { apiv3Err }, nex
     return res.apiv3Err(message, 403);
   }
 
+  const openaiServiceType = configManager.getConfig('crowi', 'openai:serviceType');
   if (openaiServiceType == null || !OpenaiServiceTypes.includes(openaiServiceType)) {
     const message = 'AI_SERVICE_TYPE is missing or contains an invalid value';
     logger.error(message);

+ 6 - 6
apps/app/src/server/service/config-loader.ts

@@ -759,26 +759,26 @@ const ENV_VAR_NAME_TO_CONFIG_INFO: Record<string, EnvConfig> = {
   },
   OPENAI_SERVICE_TYPE: {
     ns: 'crowi',
-    key: 'app:openaiServiceType',
+    key: 'openai:serviceType',
     type: ValueType.STRING,
     default: null,
   },
   OPENAI_API_KEY: {
     ns: 'crowi',
-    key: 'app:openaiApiKey',
+    key: 'openai:apiKey',
     type: ValueType.STRING,
     default: null,
     isSecret: true,
   },
   OPENAI_SEARCH_ASSISTANT_INSTRUCTIONS: {
     ns: 'crowi',
-    key: 'app:openaiSearchAssistantInstructions',
+    key: 'openai:searchAssistantInstructions',
     type: ValueType.STRING,
     default: null,
   },
   OPENAI_CHAT_ASSISTANT_INSTRUCTIONS: {
     ns: 'crowi',
-    key: 'app:openaiChatAssistantInstructions',
+    key: 'openai:chatAssistantInstructions',
     type: ValueType.STRING,
     default: [
       '<systemTag>\n',
@@ -802,13 +802,13 @@ const ENV_VAR_NAME_TO_CONFIG_INFO: Record<string, EnvConfig> = {
   },
   OPENAI_ASSISTANT_NAME_SUFFIX: {
     ns: 'crowi',
-    key: 'app:openaiAssistantNameSuffix',
+    key: 'openai:assistantNameSuffix',
     type: ValueType.STRING,
     default: null,
   },
   OPENAI_VECTOR_STORE_ID: {
     ns: 'crowi',
-    key: 'app:openaiVectorStoreId',
+    key: 'openai:vectorStoreId',
     type: ValueType.STRING,
     default: null,
   },

+ 3 - 3
apps/app/src/server/service/openai/assistant/assistant.ts

@@ -35,7 +35,7 @@ const findAssistantByName = async(assistantName: string): Promise<OpenAI.Beta.As
 
 const getOrCreateAssistant = async(type: AssistantType): Promise<OpenAI.Beta.Assistant> => {
   const appSiteUrl = configManager.getConfig('crowi', 'app:siteUrl');
-  const assistantName = `GROWI ${type} Assistant for ${appSiteUrl} ${configManager.getConfig('crowi', 'app:openaiAssistantNameSuffix')}}`;
+  const assistantName = `GROWI ${type} Assistant for ${appSiteUrl} ${configManager.getConfig('crowi', 'openai:assistantNameSuffix')}}`;
 
   const assistantOnRemote = await findAssistantByName(assistantName);
   if (assistantOnRemote != null) {
@@ -58,7 +58,7 @@ export const getOrCreateSearchAssistant = async(): Promise<OpenAI.Beta.Assistant
 
   searchAssistant = await getOrCreateAssistant(AssistantType.SEARCH);
   openaiClient.beta.assistants.update(searchAssistant.id, {
-    instructions: configManager.getConfig('crowi', 'app:openaiSearchAssistantInstructions'),
+    instructions: configManager.getConfig('crowi', 'openai:searchAssistantInstructions'),
     tools: [{ type: 'file_search' }],
   });
 
@@ -72,7 +72,7 @@ export const getOrCreateChatAssistant = async(): Promise<OpenAI.Beta.Assistant>
     return chatAssistant;
   }
 
-  const instructions = configManager.getConfig('crowi', 'app:openaiChatAssistantInstructions');
+  const instructions = configManager.getConfig('crowi', 'openai:chatAssistantInstructions');
 
   chatAssistant = await getOrCreateAssistant(AssistantType.CHAT);
   openaiClient.beta.assistants.update(chatAssistant.id, {

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

@@ -14,8 +14,8 @@ export class OpenaiClientDelegator implements IOpenaiClientDelegator {
 
   constructor() {
     // Retrieve OpenAI related values from environment variables
-    const apiKey = configManager.getConfig('crowi', 'app:openaiApiKey');
-    const vectorStoreId = configManager.getConfig('crowi', 'app:openaiVectorStoreId');
+    const apiKey = configManager.getConfig('crowi', 'openai:apiKey');
+    const vectorStoreId = configManager.getConfig('crowi', 'openai:vectorStoreId');
 
     const isValid = [apiKey, vectorStoreId].every(value => value != null);
     if (!isValid) {

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

@@ -3,5 +3,5 @@ import OpenAI from 'openai';
 import { configManager } from '~/server/service/config-manager';
 
 export const openaiClient = new OpenAI({
-  apiKey: configManager?.getConfig('crowi', 'app:openaiApiKey'), // This is the default and can be omitted
+  apiKey: configManager?.getConfig('crowi', 'openai:apiKey'), // This is the default and can be omitted
 });

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

@@ -34,7 +34,7 @@ export interface IOpenaiService {
 class OpenaiService implements IOpenaiService {
 
   private get client() {
-    const openaiServiceType = configManager.getConfig('crowi', 'app:openaiServiceType');
+    const openaiServiceType = configManager.getConfig('crowi', 'openai:serviceType');
     return getClient({ openaiServiceType });
   }
 
@@ -157,7 +157,7 @@ export const getOpenaiService = (): IOpenaiService | undefined => {
   }
 
   const aiEnabled = configManager.getConfig('crowi', 'app:aiEnabled');
-  const openaiServiceType = configManager.getConfig('crowi', 'app:openaiServiceType');
+  const openaiServiceType = configManager.getConfig('crowi', 'openai:serviceType');
   if (aiEnabled && openaiServiceType != null && OpenaiServiceTypes.includes(openaiServiceType)) {
     instance = new OpenaiService();
     return instance;