Skip to content
OpenAI 함수 호출: 시작하기 위한 예제

OpenAI 함수 호출: 시작하기 위한 예제

인공지능(AI)의 끊임없이 발전하는 환경에서 OpenAI는 게임 체인저로 등장했습니다. OpenAI의 함수 호출에 대한 혁신적인 접근은 개발자가 AI 모델과 상호작용하는 방식을 혁신하고 있습니다. 이 문서에서는 OpenAI 함수 호출의 복잡성에 대해 자세히 알아보고, 응용 프로그램에 대한 잠재력과 활용 방법에 대한 상세 가이드를 제공합니다.

📚

OpenAI 함수 호출 이해하기

헤더에 정의된 OPEN_API_KEY를 사용하여 https://api.openai.com/v1/chat/completions에 제출된 API 호출을 고려해보세요. 이 호출의 목적은 회의 일정을 예약하기 위해 사용할 수 있는 JSON 파일을 생성하는 것입니다. 모델에 전송되는 JSON 문서는 다음과 같이 보일 수 있습니다.

{
  "model": "gpt-3.5-turbo-0613",
  "messages": [
    {
      "role": "user",
      "content": "다음 주 화요일 오후 3시에 존 더 존과 회의 일정을 잡아주세요."
    }
  ],
  "functions": [
    {
      "name": "회의 일정 예약",
      "description": "회의를 예약해주세요.",
      "parameters": {
        "type": "object",
        "properties": {
          "attendee": {
            "type": "string",
            "description": "회의 참석자"
          },
          "date": {
            "type": "string",
            "description": "회의 날짜"
          },
          "time": {
            "type": "string",
            "description": "회의 시간"
          }
        }
      }
    }
  ]
}

모델은 JSON 출력을 생성하며, 이를 사용하여 코드에서 회의 일정 예약 함수를 호출할 수 있습니다.

OpenAI 함수 호출의 실제 응용

주식 시장 분석 예를 고려해보겠습니다. 사용자 문장은 "애플 주식의 현재 가격은 어떻게 되나요?"로 정의됩니다. 정의된 매개변수는 ticker_symbol입니다.

{
  "model": "gpt-3.5-turbo-0613",
  "messages": [
    {
      "role": "user",
      "content": "애플 주식의 현재 가격은 어떻게 되나요?"
    }
  ],
  "functions": [
    {
      "name": "주식 가격 조회",
      "description": "현재 주식 가격 가져오기",
      "parameters": {
        "type": "object",
        "properties": {
          "ticker_symbol": {
            "type": "string",
            "description": "주식의 티커 심볼"
          }
        }
      }
    }
  ]
}

그런 다음 모델은 JSON 출력을 생성하며, 이를 사용하여 코드에서 주식 가격 조회 함수를 호출할 수 있습니다.

OpenAI 함수 호출의 힘

OpenAI의 함수 호출은 옳은 방향으로의 큰 발전입니다. 이는 Large Language Model (LLM)이 자연스러운 대화형 언어뿐만 아니라 다른 시스템이 소비할 수 있는 형식으로 출력을 구조화하는 기능을 제공합니다. 이 기능은 API 형식으로 기계가 소비할 수 있도록 출력을 구조화하며, 비구조적인 자연어 형식이 아닌 방식으로 사람이 소비합니다.

기억해야 할 몇 가지 사항이 있습니다. 프로그래밍적으로는 챗봇 또는 대화형 UI가 LLM에 대한 출력이 JSON 형식이어야 함을 알아야 합니다. 따라서 출력 유형을 감지하기 위해 분류를 수행해야 합니다. 완성 LLM에 대한 입력에는 미리 정의된 템플릿이 존재해야 합니다. JSON 템플릿은 LLM에게 값 채우는 방법을 안내합니다. 채워져야 할 매개변수는 명확하게 정의되어야 합니다.

OpenAI 함수 호출의 실제 응용

OpenAI 함수 호출은 다양한 응용 분야를 가지고 있습니다. 예를 들어, 외부 API를 호출하여 질문에 답하는 챗봇을 만드는 데 사용할 수 있습니다. 또한 자연어를 구조화된 JSON 데이터로 변환하거나 텍스트에서 구조화된 데이터를 추출하는 데 사용할 수 있습니다.

여행 예약 예를 고려해보겠습니다. 사용자 문장은 "내 아내, 어머니 및 두 아들과 딸을 위해 본에서 암스테르담으로 여행을 예약해야 합니다. 저도 함께 갈 것입니다. 항공사는 직항편이어야 합니다."로정의됩니다. 정의된 매개변수는 destination, departure, number_people, travel_mode입니다.

{
  "model": "gpt-3.5-turbo-0613",
  "messages": [
    {
      "role": "user",
      "content": "내 아내, 어머니 및 두 아들과 딸을 위해 본에서 암스테르담으로 여행을 예약해야 합니다. 저도 함께 갈 것입니다. 항공사는 직항편이어야 합니다."
    }
  ],
  "functions": [
    {
      "name": "여행 예약",
      "description": "여행 예약하기",
      "parameters": {
        "type": "object",
        "properties": {
          "destination": {
            "type": "string",
            "description": "여행 목적지"
          },
          "departure": {
            "type": "string",
            "description": "출발지"
          },
          "number_people": {
            "type": "string",
            "description": "여행하는 사람 수"
          },
          "travel_mode": {
            "type": "string",
            "description": "여행 모드"
          }
        }
      }
    }
  ]
}

그런 다음 모델은 JSON 출력을 생성하며, 이를 사용하여 코드에서 여행 예약 함수를 호출할 수 있습니다.

OpenAI 함수 호출: 미래를 향한 한 걸음

OpenAI의 함수 호출 기능은 인공지능 기술의 빠른 진보를 증명하는 것뿐만 아니라, 복잡한 문제를 해결하는 데 적용할 수 있는 실용적인 도구입니다. 이 기능을 보여주는 구체적인 예제에 대해 자세히 살펴보겠습니다. 이 예제는 Santiago(@svpino)의 Twitter 스레드 (opens in a new tab)를 기반으로 합니다.

복잡한 수학 문제인 "십진법으로 22와 16진수 A를 더한 결과는 얼마인가요?"를 생각해봅시다. 이 문제는 다른 형식의 숫자를 더하는 것으로 매우 어려울 수 있습니다. 그러나 OpenAI의 함수 호출 기능을 사용하면 함수와 프롬프트를 결합하여 이 문제를 해결할 수 있습니다.

작동 방식은 다음과 같습니다:

  1. 두 개의 함수를 정의합니다. 하나는 두 개의 십진법 숫자를 더하는 방법을 알고 있고, 다른 하나는 두 개의 16진수 숫자를 더하는 방법을 알고 있습니다. 이러한 함수들은 Chat Completion 호출의 일부로 정의됩니다.

  2. 이러한 두 함수를 구현합니다. 이들은 인수를 구문 분석하고 합계를 계산합니다.

  3. "stop" 이유를 찾을 때까지 OpenAI의 API를 반복해서 호출합니다. API가 "function_call" 이유로 완료되면 특정 함수를 호출하고 결과를 API로 전달합니다.

스크립트의 출력은 다음과 같습니다:

  • 22 + 5 = 27 (십진법)
  • 27 + A = 31 (16진법)
  • 22와 5를 십진법으로 더하고, 그 결과에 16진수 A를 더한 결과는 31입니다.

이 예는 OpenAI의 함수 호출 기능의 힘을 보여줍니다. 개발자는 사용자 정의 함수를 정의하고 사용할 수 있으며, 모델은 여러 단계와 다양한 유형의 계산이 필요한 복잡한 문제를 해결할 수 있습니다.

2023년 6월 13일을 위한 최신 ChatGPT 업데이트

API 함수 호출을 위한 업데이트 외에도, OpenAI는 최근에 (opens in a new tab) GPT-4와 GPT-3.5-turbo의 더 많은 조정 가능한 API 모델, 더 긴 컨텍스트 및 더 낮은 가격을 소개하는 시사적인 업데이트를 발표했습니다. 개발자는 이제 gpt-4-0613 및 gpt-3.5-turbo-0613에 대한 함수를 설명하고, 모델이 특정 함수를 호출하도록 지능적으로 선택하도록 할 수 있습니다.

이 기능을 사용하면 개발자는 외부 도구를 호출하여 질문에 답변하는 챗봇을 만들 수 있으며, 쿼리를 함수 호출로 변환하거나 자연어를 API 호출 또는 데이터베이스 쿼리로 변환하고, 텍스트에서 구조화된 데이터를 추출할 수 있습니다. 이러한 사용 사례는 /v1/chat/completions 엔드포인트의 새로운 API 매개변수 functionsfunction_call로 가능하며, 개발자는 JSON 스키마를 통해 모델에 함수를 설명하고 특정 함수를 호출하도록 요청할 수 있습니다.

OpenAI 함수 호출의 구체적인 사용 사례: 복잡한 수학 문제 해결

OpenAI의 함수 호출 기능은 이론적인 개념뿐만 아니라 복잡한 문제를 해결하는 데 적용할 수 있는 실용적인 도구입니다. 이 기능의 강력함을 보여주는 구체적인 예제로 넘어가보겠습니다. 이 예제는 Santiago(@svpino)의 Twitter 스레드 (opens in a new tab)를 기반으로 합니다.

복잡한 수학 문제인 "십진법으로 22와 16진수 A를 더한 결과는 얼마인가요?"를 생각해봅시다. 이 문제는 다른 형식의 숫자를 더하는 것으로 매우 어려울 수 있습니다. 그러나 OpenAI의 함수 호출 기능을 사용하면 함수와 프롬프트를 결합하여 이 문제를 해결할 수 있습니다.

작동 방식은 다음과 같습니다:

  1. 두 개의 함수를 정의합니다. 하나는 두 개의 십진법 숫자를 더하는 방법을 알고 있고, 다른 하나는 두 개의 16진수 숫자를 더하는 방법을 알고 있습니다. 이러한 함수들은 Chat Completion 호출의 일부로 정의됩니다.

  2. 이러한 두 함수를 구현합니다. 이들은 인수를 구문 분석하고 합계를 계산합니다.

  3. OpenAI의 API를 "stop" 이유가 나올 때까지 반복해서 호출합니다. API가 "function_call" 이유로 완료되면 특정 함수를 호출하고 결과를 API로 전달합니다.

스크립트의 출력은 다음과 같습니다:

  • 22 + 5 = 27 (십진법)
  • 27 + A = 31 (16진법)
  • 십진법으로 22와 5를 더하고, 그 결과에 16진수 A를 더한 결과는 31입니다.

이 예는 OpenAI의 함수 호출 기능의 힘을 보여줍니다. 개발자는 사용자 정의 함수를 정의하고 사용할 수 있으며, 모델은 여러 단계와 다양한 유형의 계산이 필요한 복잡한 문제를 해결할 수 있습니다.

2023년 6월 13일을 위한 최신 ChatGPT 업데이트

API 함수 호출을 위한 업데이트 외에도, OpenAI는 최근에 (opens in a new tab) GPT-4와 GPT-3.5-turbo의 더 많은 조정 가능한 API 모델, 더 긴 컨텍스트 및 더 낮은 가격을 소개하는 시사적인 업데이트를 발표했습니다. 개발자는 이제 gpt-4-0613 및 gpt-3.5-turbo-0613에 대한 함수를 설명하고, 모델이 특정 함수를 호출하도록 지능적으로 선택하도록 할 수 있습니다.

이러한 업데이트는 AI 모델과 상호작용하는 방식을 혁신적으로 변화시키며, 향상된 기능과 경제적인 효과를 제공하는 것을 목표로 합니다.

안전 조치

안전에 대한 약속을 지키기 위해 OpenAI는 잠재적인 악용을 완화하기 위해 노력하고 있습니다. 개발자들에게 신뢰할 수 있는 도구를 사용하고 실제 작업을 수행하기 전에 사용자 확인 단계를 포함시키도록권장하며, 사용자로부터 제공받은 입력을 신중하게 처리해야 합니다.

OpenAI는 사용자의 개인 정보를 보호하기 위해 데이터 보안 및 프라이버시 보호를 최우선으로 생각하고 있습니다. 개인 정보와 관련된 우려 사항이 있는 경우 OpenAI의 개인 정보 보호 정책을 검토하고 문의하여 문제를 해결할 수 있습니다.

OpenAI는 AI 기술의 발전과 함께 더욱 혁신적인 방식으로 모델을 사용할 수 있도록 지속적으로 노력하고 있으며, 사용자와 개발자의 의견과 피드백을 소중히 여깁니다. OpenAI 플랫폼을 통해 AI 기술을 활용하고, AI 모델의 잠재력을 탐색하며, 더 나은 미래를 구축하는 데 기여할 수 있습니다.

자주 묻는 질문

  1. OpenAI의 함수 호출 기능이란 무엇인가요?

    OpenAI의 함수 호출 기능은 개발자가 함수를 설명하고, 모델이 인자를 포함한 JSON 출력을 생성하는 기능입니다. 이 기능은 함수 자체를 호출하지는 않지만, 코드에서 함수를 호출하기 위해 사용될 수 있는 JSON을 생성합니다.

  2. OpenAI의 함수 호출 기능은 어떻게 동작하나요?

    개발자는 Chat Completion 호출의 일부로 함수를 정의합니다. 그런 다음 모델은 코드에서 특정 함수를 호출할 수 있는 JSON 출력을 생성합니다. API는 "stop" 이유를 찾을 때까지 반복해서 호출됩니다. API가 "function_call" 이유로 완료되면 특정 함수를 호출하고 결과를 API로 전달합니다.

  3. OpenAI의 함수 호출 기능은 어떤 응용 분야가 있나요?

    OpenAI의 함수 호출 기능은 다양한 응용 분야가 있습니다. 외부 API를 호출하여 질문에 답변하는 챗봇을 생성하는 데 사용될 수 있으며, 자연어를 구조화된 JSON 데이터로 변환하거나 텍스트에서 구조화된 데이터를 추출하는 등 복잡한 문제를 해결하는 데 사용될 수 있습니다. 이러한 문제는 여러 단계와 다양한 유형의 계산을 필요로 하는 복잡한 문제입니다.

📚