OpenAI API의 강력한 기능 중 하나인 함수 호출(Function Calling)을 JavaScript 환경에서 어떻게 사용하는지 알아보겠습니다. 이 기능을 사용하면 AI 모델이 외부 함수를 호출해야 할 때 적절한 함수와 인자를 제안할 수 있습니다.
함수 호출 기능은 AI 모델이 특정 작업을 수행하기 위해 외부 함수를 호출해야 한다고 판단할 때, 호출할 함수의 이름과 필요한 인수를 JSON 형식으로 반환하는 기능입니다.
import OpenAI from "openai";
// OpenAI 클라이언트 초기화
const openai = new OpenAI({
apiKey: "your-api-key", // 실제 API 키로 교체 필요
});
async function runConversation() {
// 1. 사용자 메시지 설정
const messages = [
{ role: "user", content: "오늘 보스턴 날씨 어때?" }
];
// 2. 사용 가능한 함수 정의
const functions = [
{
name: "get_current_weather",
description: "주어진 위치의 현재 날씨를 가져옵니다",
parameters: {
type: "object",
properties: {
location: {
type: "string",
description: "도시와 주, 예: San Francisco, CA",
},
unit: {
type: "string",
enum: ["celsius", "fahrenheit"],
},
},
required: ["location"],
},
},
];
// 3. OpenAI API 호출
const response = await openai.chat.completions.create({
model: "gpt-3.5-turbo",
messages,
functions,
function_call: "auto", // 기본값
});
const responseMessage = response.choices[0].message;
// 4. 함수 호출이 필요한 경우 처리
if (responseMessage.function_call) {
const functionName = responseMessage.function_call.name;
const functionArgs = JSON.parse(responseMessage.function_call.arguments);
// 5. 실제 함수 호출 (예제에서는 가짜 데이터 반환)
let weatherData;
if (functionName === "get_current_weather") {
weatherData = {
location: functionArgs.location,
temperature: "22", // 섭씨
unit: "celsius",
forecast: ["맑음", "바람짐"],
};
}
// 6. 함수 결과를 AI에 전달하여 최종 응답 생성
const secondResponse = await openai.chat.completions.create({
model: "gpt-3.5-turbo",
messages: [
...messages,
responseMessage,
{
role: "function",
name: functionName,
content: JSON.stringify(weatherData),
},
],
});
console.log(secondResponse.choices[0].message.content);
return secondResponse.choices[0].message.content;
} else {
console.log(responseMessage.content);
return responseMessage.content;
}
}
runConversation();
OpenAI의 function calling 기능은 AI 애플리케이션의 가능성을 크게 확장해주고 외부 시스템과의 연동이 필요한 경우 유용하게 사용할 수 있다
참고: OpenAI 공식 문서