4일간의 달콤한 연휴가 끝나고 24일차에 접어들었다.
node.js에서 강사님의 openai API키를 활용해 chat gpt를 이용하는 법을 배웠고, 이를 응용해 챗봇을 만들었다.
DB에 주고받은 대화 히스토리를 저장하고 이를 기반으로 내가 그동한 던진 질문이 무엇인지도 물어볼 수 있게 하였다.

저번주 복습 겸 내용을 정리해보겠다.

1. 생성형 AI 프로그래밍을 위한 필수 개념

생성형 AI란?

입력된 텍스트에 기반하여 새로운 텍스트, 코드, 이미지 등을 생성하는 인공지능.
대표적인 모델로는 GPT (OpenAI), Claude (Anthropic), LLaMA (Meta), PaLM (Google) 등이 있다.

주요 용어 정리

  • Prompt: 모델에게 주는 지시문이나 질문
  • Completion: 모델의 응답(생성된 출력)
  • Token: 모델이 텍스트를 처리하는 단위 (보통 단어보다 작음)
  • Temperature: 응답의 창의성 조절 (0에 가까울수록 일관된 결과, 1에 가까울수록 다양성 있는 결과)
  • Top-p: 확률 누적값을 기반으로 응답 후보 제한 (샘플링 제어)

2. 프롬프트 엔지니어링 기초

기본 구조 예시

역할 지정: 너는 친절한 설명을 해주는 초등학교 선생님이야.
질문: 번개는 왜 치는 거야?

전략 유형

  • Zero-shot: 예시 없이 바로 질문
  • One-shot: 예시 1개를 포함한 질문
  • Few-shot: 예시 여러 개 포함한 질문
  • Chain-of-Thought: 사고 과정을 단계적으로 유도 (예: "생각을 순차적으로 설명해줘")

작성 팁

역할, 출력 형식, 예시 등을 명확히 제시하면 더 좋은 결과 유도 가능
반복 실험하면서 프롬프트를 조정할 것

3. Node.js + Axios를 이용한 OpenAI API 호출 예제

사전 준비
1. OpenAI에서 API Key 발급
2. .env 파일에 API 키 저장

OPENAI_API_KEY=sk-xxxx
  1. 패키지 설치
npm install axios dotenv

전체 코드 예제 (chat.js)

const axios = require('axios');
require('dotenv').config();

async function askChatGPT(prompt) {
  try {
    const response = await axios.post(
      'https://api.openai.com/v1/chat/completions',
      {
        model: 'gpt-3.5-turbo',
        messages: [
          { role: 'system', content: 'You are a helpful assistant.' },
          { role: 'user', content: prompt },
        ],
        temperature: 0.7,
      },
      {
        headers: {
          'Content-Type': 'application/json',
          'Authorization': `Bearer ${process.env.OPENAI_API_KEY}`,
        },
      }
    );

    console.log('응답 결과:', response.data.choices[0].message.content);
  } catch (error) {
    console.error('오류 발생:', error.response?.data || error.message);
  }
}

// 테스트 실행
askChatGPT('프롬프트 엔지니어링이 뭐야?');

4. 출력 예시

응답 결과: 프롬프트 엔지니어링은 생성형 AI 모델에 원하는 응답을 얻기 위해 질문의 형식을 전략적으로 설계하는 기법입니다. ...

5. 참고사항

  • API Key는 외부에 노출되지 않도록 .env 파일로 관리할 것
  • 모델 사용 요금 및 정책은 OpenAI 공식 문서 참고: https://platform.openai.com/docs
  • axios 사용 시 응답 오류 코드와 예외 처리를 반드시 고려할 것
profile
개발자 지망생. 일단 하고보자

0개의 댓글