Skip to content

Commit

Permalink
🔧 (env.example): Update environment variable names for GPT models to …
Browse files Browse the repository at this point in the history
…improve clarity and consistency
  • Loading branch information
romantech committed Apr 6, 2024
1 parent 8235c7c commit cb7ba0f
Show file tree
Hide file tree
Showing 6 changed files with 56 additions and 53 deletions.
12 changes: 8 additions & 4 deletions .env.example
Original file line number Diff line number Diff line change
@@ -1,5 +1,8 @@
# Deployment Environment Ports
PORT=3001
NODE_ENV=development # koyeb 환경 변수 설정이랑 맞추기 위해 추가
# Added to match koyeb environment variable settings
NODE_ENV=development
# Specify which origins to allow, separated by commas, e.g. https://google.com,http://localhost:3000
CORS_ORIGIN=

OPENAI_API_KEY=
Expand All @@ -9,6 +12,7 @@ REDIS_PORT=
REDIS_USERNAME=
REDIS_PASSWORD=

MODEL_NAME_GPT_3_5_FT=
MODEL_NAME_GPT_3_5=
MODEL_NAME_GPT_4=
MODEL_GPT_3_5_FT=
MODEL_GPT_3_5=
MODEL_GPT_4=

6 changes: 3 additions & 3 deletions src/config/createServer.ts
Original file line number Diff line number Diff line change
Expand Up @@ -4,12 +4,12 @@ import morgan from 'morgan';
import compression from 'compression';
import cookieParser from 'cookie-parser';
import cors, { CorsOptions } from 'cors';
import { CORS_ORIGIN, isProd } from '@/config/environment';
import { envConfig } from '@/config/environment';

const morganFormat = isProd() ? 'combined' : 'dev';
const morganFormat = envConfig.isProd ? 'combined' : 'dev';
const corsOptions: CorsOptions = {
/** Access-Control-Allow-Origin 응답 헤더 설정 (허용할 오리진 목록) */
origin: CORS_ORIGIN,
origin: envConfig.corsOrigins,
/** Access-Control-Allow-Methods 응답 헤더 설정 (허용할 HTTP 메서드 목록) */
methods: ['GET', 'POST'],
/** Access-Control-Allow-Headers 응답 헤더 설정 (허용할 요청 헤더 목록) */
Expand Down
54 changes: 32 additions & 22 deletions src/config/environment.ts
Original file line number Diff line number Diff line change
@@ -1,3 +1,8 @@
/**
* 웹스톰에서 alias 설정을 위해 tsconfig.json 파일의 baseUrl 속성을 설정하면
* process.env 참조시 해결되지 않은 변수로 나오는 문제 있음
* import { env } from 'node:process' 구문으로 임포트해서 사용해서 임시 해결
* */
import { env } from 'node:process';

export enum EnvVars {
Expand All @@ -12,27 +17,32 @@ export enum EnvVars {
REDIS_PASSWORD = 'REDIS_PASSWORD',
REDIS_USERNAME = 'REDIS_USERNAME',

MODEL_NAME_GPT_3_5_FT = 'MODEL_NAME_GPT_3_5_FT',
MODEL_NAME_GPT_3_5 = 'MODEL_NAME_GPT_3_5',
MODEL_NAME_GPT_4 = 'MODEL_NAME_GPT_4',
MODEL_GPT_3_5_FT = 'MODEL_GPT_3_5_FT',
MODEL_GPT_3_5 = 'MODEL_GPT_3_5',
MODEL_GPT_4 = 'MODEL_GPT_4',
}

/**
* 웹스톰에서 alias 설정을 위해 tsconfig.json 파일의 baseUrl 속성을 설정하면
* process.env 참조시 해결되지 않은 변수로 나오는 문제 있음
* import { env } from 'node:process' 구문으로 임포트해서 사용해서 임시 해결
* */
export const isProd = () => env[EnvVars.NODE_ENV] === 'production';
export const PORT = isProd() ? env[EnvVars.PORT] : 3001;
export const CORS_ORIGIN = env[EnvVars.CORS_ORIGIN]?.split(',') ?? [];

export const OPENAI_API_KEY = env[EnvVars.OPENAI_API_KEY];

export const REDIS_HOST = env[EnvVars.REDIS_HOST];
export const REDIS_PORT = Number(env[EnvVars.REDIS_PORT]);
export const REDIS_PASSWORD = env[EnvVars.REDIS_PASSWORD];
export const REDIS_USERNAME = env[EnvVars.REDIS_USERNAME];

export const MODEL_NAME_GPT_3_5_FT = env[EnvVars.MODEL_NAME_GPT_3_5_FT];
export const MODEL_NAME_GPT_3_5 = env[EnvVars.MODEL_NAME_GPT_3_5];
export const MODEL_NAME_GPT_4 = env[EnvVars.MODEL_NAME_GPT_4];
const loadEnvironment = () => {
const isProd = env[EnvVars.NODE_ENV] === 'production';
const DEFAULT_SERVER_PORT = 3001;

return {
isProd,
port: isProd ? env[EnvVars.PORT] : DEFAULT_SERVER_PORT,
corsOrigins: env[EnvVars.CORS_ORIGIN]?.split(','),
openAIKey: env[EnvVars.OPENAI_API_KEY],
redis: {
host: env[EnvVars.REDIS_HOST],
port: Number(env[EnvVars.REDIS_PORT]),
password: env[EnvVars.REDIS_PASSWORD],
username: env[EnvVars.REDIS_USERNAME],
},
modelNames: {
gpt_3_5_FT: env[EnvVars.MODEL_GPT_3_5_FT],
gpt_3_5: env[EnvVars.MODEL_GPT_3_5],
gpt_4: env[EnvVars.MODEL_GPT_4],
},
} as const;
};

export const envConfig = loadEnvironment();
6 changes: 3 additions & 3 deletions src/server.ts
Original file line number Diff line number Diff line change
@@ -1,5 +1,5 @@
import { setupRoutes } from '@/routes';
import { createServer, logger, PORT } from '@/config';
import { createServer, envConfig, logger } from '@/config';
import { initRedisKeys, redis } from '@/services';
import { errorHandler, notFoundHandler } from '@/middlewares';
import { initSchedulers } from '@/schedulers';
Expand Down Expand Up @@ -31,8 +31,8 @@ const initServer = async () => {
app.use(notFoundHandler);
app.use(errorHandler);

app.listen(PORT, () => {
logger.info(`Server is running on port ${PORT}`);
app.listen(envConfig.port, () => {
logger.info(`Server is running on port ${envConfig.port}`);
});
};

Expand Down
12 changes: 4 additions & 8 deletions src/services/openAI/openAI.ts
Original file line number Diff line number Diff line change
@@ -1,8 +1,4 @@
import {
MODEL_NAME_GPT_3_5,
MODEL_NAME_GPT_3_5_FT,
MODEL_NAME_GPT_4,
} from '@/config';
import { envConfig } from '@/config';
import { ANALYZER_REDIS_SCHEMA } from '@/services/redis';

const { FIELDS } = ANALYZER_REDIS_SCHEMA;
Expand All @@ -16,9 +12,9 @@ export enum AIModelKey {
}

export const AI_MODEL = {
[AIModelKey.GPT_3_5]: MODEL_NAME_GPT_3_5,
[AIModelKey.GPT_3_5_FT]: MODEL_NAME_GPT_3_5_FT,
[AIModelKey.GPT_4]: MODEL_NAME_GPT_4,
[AIModelKey.GPT_3_5]: envConfig.modelNames.gpt_3_5,
[AIModelKey.GPT_3_5_FT]: envConfig.modelNames.gpt_3_5_FT,
[AIModelKey.GPT_4]: envConfig.modelNames.gpt_4,
};

export const ANALYSIS_MODEL_OPTION = {
Expand Down
19 changes: 6 additions & 13 deletions src/services/redis/redis.ts
Original file line number Diff line number Diff line change
@@ -1,22 +1,15 @@
import Redis from 'ioredis';
import {
isProd,
logger,
REDIS_HOST,
REDIS_PASSWORD,
REDIS_PORT,
REDIS_USERNAME,
} from '@/config';
import { envConfig, logger } from '@/config';

export const redis = new Redis({
host: REDIS_HOST,
port: REDIS_PORT,
username: REDIS_USERNAME,
password: REDIS_PASSWORD,
host: envConfig.redis.host,
port: envConfig.redis.port,
username: envConfig.redis.username,
password: envConfig.redis.password,
});

redis.on('connect', () => {
const suffix = isProd() ? 'prod' : 'dev';
const suffix = envConfig.isProd ? 'prod' : 'dev';
redis.client('SETNAME', `project-server-${suffix}`);
logger.info('Successfully connected to Redis');
});
Expand Down

0 comments on commit cb7ba0f

Please sign in to comment.