본문 바로가기
컴퓨터 활용/노년에 즐기는 코딩

[용서 프로젝트] OpenAI API를 통해 GPT-4 모델과의 대화 시도

by easyfly 2024. 3. 25.
반응형

ChatGPT 연결과 OpenAI API를 통해 GPT-4 모델과의 대화 시도

코드는 OpenAI의 GPT 모델들과 상호 작용하기 위한 JavaScript 코드의 예시입니다. 코드의 각 부분을 자세히 살펴봅니다.

  1. import OpenAI from 'openai';
    • 'openai' 라이브러리를 가져와서 OpenAI 라는 이름으로 사용하겠다는 선언입니다. 이 선언에 앞서 라이브러리는 설치되어 있어야 합니다. 설치 방법은 'pip install openai'로 가능합니다. 
  2. const openai = new OpenAI({ apiKey: process.env['OPENAI_API_KEY'], });
    • 여기서는 OpenAI 클래스의 인스턴스를 생성하고, 이 인스턴스를 openai라는 상수(const)에 할당합니다. const는 재할당이 안됩니다. 
    • 생성자에 전달된 객체 { apiKey: process.env['OPENAI_API_KEY'] }는 환경변수에서 OpenAI의 API 키를 읽어와 객체의 apiKey 속성에 할당합니다. API 키는 매우 중요하기 때문에 외부로 노출돼서는 안 됩니다. 이 경우는 시스템의 환경변수로 등록하여 봉합해서 사용한다는 의미입니다. 'env'는 의미상 'envelope'에서 나온 메서드입니다.
    • 환경변수란 운영 체제 레벨에서 관리되는 동적으로 할당된 값을 의미하며, process.env는 Node.js에서 이러한 환경변수에 접근할 수 있는 객체입니다.
    • OPENAI_API_KEY는 실제 API 키를 저장하는 환경변수의 이름입니다.
  3. async function main() { ... }
    • async 키워드가 붙은 함수 main을 선언합니다. async 키워드는 함수 내부에서 await를 사용할 수 있게 해주며, 이는 비동기 작업을 동기적으로 처리할 수 있게 해 줍니다.
  4. const chatCompletion = await openai.chat.completions.create({ ... });
    • openai 인스턴스의 chat.completions.create 메서드를 호출하여, 챗봇과의 대화 완성(completion)을 생성합니다.
    • 이 메서드는 비동기적으로 작동하므로, 결과가 반환될 때까지 기다리기 위해 await를 사용합니다.
    • 메서드에 전달된 객체는 messages 배열을 포함하고, 이 배열 안에는 사용자 역할과 콘텐츠가 포함된 단일 메시지 객체가 있습니다. 여기서 사용자가 'Say this is a test'라고 말한 것처럼 설정되어 있습니다.
    • model: 'gpt-4'는 사용할 모델을 GPT-4로 지정합니다. 물론 다른 모델을 선택할 수 있습니다. 
  5. main();
    • main 함수를 호출하여 실행합니다. 이 호출로 인해 정의된 비동기 작업이 실행되며, 결과적으로 OpenAI API를 통해 GPT-4 모델과의 대화가 시도됩니다.

정리

이 코드는 환경변수에서 API 키를 읽어 OpenAI 클라이언트 인스턴스를 생성하고, main 함수를 통해 GPT-4 모델을 사용하여 간단한 대화를 시도하는 예제입니다. 이것이 확대되면 더 복잡한 대화가 가능해집니다. 

반응형

댓글