관리 메뉴

notcherry

NestJS 환경에서 OpenAI API 키 호출하는 방법 본문

AI

NestJS 환경에서 OpenAI API 키 호출하는 방법

notcherry 2025. 2. 3. 15:31
반응형

 

OpenAI의 API를 NestJS에서 안전하게 호출하는 방법을 알아봅니다. API 키를 환경 변수로 저장하고, 이를 활용하여 OpenAI의 GPT 모델을 호출하는 서비스를 구현하는 방식입니다.

 

 

1. 환경 변수 설정

API 키는 코드에 직접 포함하지 않고 환경 변수 파일 (.env)에 저장하는 것이 보안상 안전합니다.

1.1 .env 파일 생성

OPENAI_API_KEY=your_openai_api_key_here

1.2 환경 변수 로드

NestJS에서는 @nestjs/config 패키지를 사용하여 환경 변수를 로드할 수 있습니다.

설치 명령어:

npm install @nestjs/config

app.module.ts에서 환경 변수 설정을 로드합니다.

import { Module } from '@nestjs/common';
import { ConfigModule } from '@nestjs/config';
import { OpenAiService } from './openai.service';
import { OpenAiController } from './openai.controller';

@Module({
  imports: [ConfigModule.forRoot()],
  controllers: [OpenAiController],
  providers: [OpenAiService],
})
export class AppModule {}

 

2. OpenAI 서비스 구현

OpenAI API를 호출하는 OpenAiService를 생성합니다.

2.1 OpenAiService 파일 생성

src/openai.service.ts 파일을 생성합니다.

import { Injectable } from '@nestjs/common';
import { ConfigService } from '@nestjs/config';
import { Configuration, OpenAIApi } from 'openai';

@Injectable()
export class OpenAiService {
  private openai: OpenAIApi;

  constructor(private configService: ConfigService) {
    const configuration = new Configuration({
      apiKey: this.configService.get<string>('OPENAI_API_KEY'),
    });
    this.openai = new OpenAIApi(configuration);
  }

  async generateText(prompt: string): Promise<string> {
    const response = await this.openai.createCompletion({
      model: 'text-davinci-003',
      prompt, //프롬프트 작성
      max_tokens: 100,
    });
    return response.data.choices[0].text.trim();
  }
}

 

3. 컨트롤러 생성

NestJS의 컨트롤러를 만들어 API 요청을 받을 수 있도록 합니다.

3.1 OpenAiController 파일 생성

src/openai.controller.ts 파일을 생성합니다.

import { Controller, Get, Query } from '@nestjs/common';
import { OpenAiService } from './openai.service';

@Controller('openai')
export class OpenAiController {
  constructor(private readonly openAiService: OpenAiService) {}

  @Get('generate')
  async generate(@Query('prompt') prompt: string): Promise<string> {
    return this.openAiService.generateText(prompt);
  }
}

 

4. 실행 및 테스트

NestJS 서버를 실행하고 API를 테스트할 수 있습니다.

4.1 서버 실행

npm run start

4.2 API 테스트

브라우저나 Postman을 이용하여 다음 엔드포인트를 호출합니다.

GET http://localhost:3000/openai/generate?prompt=Hello

 

 

이 글에서는 NestJS에서 OpenAI API를 안전하게 호출하는 방법을 다뤘습니다. @nestjs/config를 이용하여 환경 변수를 로드하고, OpenAI API를 호출하는 서비스를 구현하는 방식으로 진행했습니다. 이를 활용하면 AI 기반 기능을 쉽게 추가할 수 있습니다.

 

반응형