OpenAI의 API를 Node.js로 연결하는 방법은 공식 기술 문서에서 자세히 설명되어 있습니다. 이 글에서는 필요한 라이브러리 설치부터 서버 구현까지의 과정을 단계별로 안내드립니다.
H2 라이브러리 설치
H3 OpenAI npm 패키지 설치
Node.js에서 OpenAI API를 사용하기 위해서는 먼저 OpenAI의 npm 패키지를 설치해야 합니다. 이를 위해 아래의 명령어를 사용하세요.
bash
npm install openai dotenv express
- openai: OpenAI API와의 상호작용을 담당하는 라이브러리입니다.
- dotenv: 환경 변수를 안전하게 관리하기 위한 라이브러리입니다.
- express: 웹 서버를 쉽게 구축할 수 있도록 도와주는 프레임워크입니다.
API 키를 발급받는 방법에 대해서는 여러 자료가 있으니 생략하겠습니다.
H2 서버 구현
H3 파일 구조 설정
프로젝트의 파일 구조는 다음과 같이 간단하게 설정합니다.
├─ app.js
├─ chatgpt.js
├─ package-lock.json
└─ package.json
H3 app.js 구현
서버를 실행하는 app.js 파일의 코드는 다음과 같습니다.
“`javascript
const express = require(“express”);
const router = express.Router();
const { callChatGPT } = require(“./chatgpt”);
const app = express();
app.use(express.json());
app.use(express.urlencoded({ extended: true }));
router.post(“/ask”, async (req, res) => {
const { ask } = req.body;
const response = await callChatGPT(ask);
if (response) {
res.status(200).json({ response });
} else {
res.status(500).json({
error: "Failed to get response from ChatGPT API",
});
}
});
app.use(“/”, router);
const port = process.env.PORT || 3000;
app.listen(port, () => {
console.log(Server is running on port ${port});
});
“`
H3 chatgpt.js 구현
OpenAI API와 연결하는 코드는 chatgpt.js 파일에 위치합니다.
“`javascript
const { Configuration, OpenAIApi } = require(“openai”);
require(“dotenv”).config();
async function callChatGPT(ask) {
const configuration = new Configuration({
apiKey: process.env.OPENAI_API_KEY,
});
try {
const openai = new OpenAIApi(configuration);
const response = await openai.createChatCompletion({
model: "gpt-3.5-turbo",
messages: [{ role: "user", content: ask }],
});
return response.data.choices[0].message;
} catch (error) {
console.error("Error calling ChatGPT API:", error);
return null;
}
}
module.exports = { callChatGPT };
“`
이제 서버를 실행하면 /ask 주소로 POST 요청을 보내면 OpenAI API에서 받은 응답을 받을 수 있습니다.
H2 프롬프트 세팅
H3 간단한 프롬프트 추가
OpenAI의 채팅 모델에 지시할 때, 사용자 메시지 앞에 특정 프롬프트를 추가함으로써 일관된 결과를 유도할 수 있습니다. 예를 들어, 다음과 같은 프롬프트를 사용할 수 있습니다.
You are ChatGPT, a large language model trained by OpenAI. Answer as concisely as possible. Knowledge cutoff: {knowledge_cutoff} Current date: {current_date}
이와 같은 프롬프트를 추가하면 응답이 간결하게 유지되고, 필요 없는 토큰 소모를 줄일 수 있습니다. 이를 통해 비용을 절감할 수 있습니다.
H2 향후 계획
추가적으로, 기존 대화를 유지하면서 새로운 질문을 추가할 수 있는 기능을 구현할 계획입니다. 이를 통해 더 자연스러운 대화 흐름을 생성할 수 있을 것으로 기대됩니다.
자주 묻는 질문
질문1: OpenAI API를 사용하기 위한 환경 변수 설정은 어떻게 하나요?
답변: 프로젝트 루트 디렉토리에 .env 파일을 생성하고, OPENAI_API_KEY=your_api_key 형식으로 API 키를 저장하면 됩니다.
질문2: Express 서버를 실행하기 위한 포트는 어떻게 설정하나요?
답변: process.env.PORT를 사용하거나 기본값으로 3000을 설정하여 서버를 실행할 수 있습니다.