Notice
반응형
Recent Posts
Recent Comments
Link
- Today
- Total
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | ||||||
2 | 3 | 4 | 5 | 6 | 7 | 8 |
9 | 10 | 11 | 12 | 13 | 14 | 15 |
16 | 17 | 18 | 19 | 20 | 21 | 22 |
23 | 24 | 25 | 26 | 27 | 28 |
Archives
Tags
- 경주한옥자쿠지숙소
- 금선사숙소
- 함수 이름
- 경주황리단길자쿠지
- 진학사 어플라이 면접 후기
- 진학사 코딩테스트 후기
- 서울템플스테이데이트
- 금선사데이트
- 경주11월날씨
- 경주황리단길한옥숙소
- 템플스테이1월
- 하나은행 코딩 테스트 후기
- nestjs 프로젝트 생성 명령어
- nestjs #openai #api키 #호출방법 #ai활용 #ai연동 #aikey연결하기 #환경변수파일
- 경주프렙후기
- 구글애드센스신청 #구글애드센스 #구글애드센스시작하는방법 #구글애드센스티스토리 #블로그에구글애드센스 #티스토리 #구글애드센스가입 #구글애드센스등록
- 면접준비 #면접컨설팅 #면접질문 #면접모의질문 #답변구조화 #모의면접 #모의면접컨설팅 #면접컨설팅후기
- 경주맛집추천
- 한옥녹턴
- 경주프렙
- 경주프렙칵테일
- 황리단길자쿠지
- 서울템플스테이추천
- 경주3박4일여행일정
- 경주전통주
- 경주동취
- 경주술
- 황리단길감성숙소
- 금선사템플스테이
- nestjs 마이크로서비스 설치 시 발생하는 의존성 충돌 해결하기
notcherry
NestJS 환경에서 OpenAI API 키 호출하는 방법 본문
반응형
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 기반 기능을 쉽게 추가할 수 있습니다.
반응형