OpenAI 함수 호출 및 API 업데이트

OpenAI는 gpt-4-0613gpt-3.5-turbo-0613 모델에 함수 호출을 도입하여 구조화된 JSON 출력을 생성함으로써 개발자가 GPT의 기능을 외부 도구 및 API와 연결할 수 있도록 했습니다. 이 업데이트는 모델이 함수가 호출되어야 할 때를 intelligently 감지하고 특정 함수 서명을 준수하는 인수를 생성하도록 합니다.

함수 호출 기능

함수 호출은 개발자가 자연 언어 대신 모델로부터 구조화된 데이터를 받을 수 있게 하여 외부 작업을 트리거하거나 정보를 검색하는 데 사용할 수 있습니다. 모델은 사용자 입력을 기반으로 함수 호출의 필요성을 감지하도록 미세 조정되었으며, 제공된 JSON 스키마와 일치하는 JSON을 응답으로 반환합니다.

주요 사용 사례는 다음과 같습니다:

  • 외부 도구 통합: 외부 도구를 호출하여 질문에 답변하는 챗봇을 만드는 것, 예를 들어 "다음 금요일에 커피를 마시러 가자고 Anya에게 이메일을 보내 볼까?"라는 요청을 send_email(to: string, body: string) 호출로 변환하는 것.
  • 자연어를 API/데이터베이스 쿼리로 변환: 사용자 쿼리를 내부 API 호출 또는 데이터베이스 쿼리로 변환합니다. 예를 들어, "이 달에 내 상위 10명의 고객은 누구인가요?"는 get_customers_by_revenue(start_date: string, end_date: string, limit: int)로 변환되거나 sql_query(query: string)를 통해 SQL 쿼리로 변환될 수 있습니다.
  • 구조화된 데이터 추출: 텍스트에서 특정 정보를 추출합니다. 예를 들어, extract_people_data(people: [{name: string, birthday: string, location: string}]) 라고 하는 함수는 위키백과 기사에서 사람들의 데이터를 추출하는 데 사용할 수 있습니다.

기술적 구현

이 기능은 /v1/chat/completions 엔드포인트의 새로운 매개변수인 functionsfunction_call을 통해 활성화됩니다. 개발자는 JSON 스키마를 사용하여 모델에 자신의 함수를 설명하고, 선택적으로 특정 함수를 호출하도록 모델을 강제할 수 있습니다.

예시 워크플로우

  1. OpenAI API 호출: 개발자는 사용자 입력과 사용 가능한 함수 목록을 제공하여 모델을 호출합니다.
  2. 서드파티 API 호출: 개발자는 모델의 JSON 응답을 사용하여 서드파티 API 또는 내부 도구에 대한 호출을 실행합니다.
  3. OpenAI API 응답: 개발자는 도구의 출력 결과를 모델에 다시 보내어 사용자를 위한 최종 자연 언어 요약을 생성합니다.

보안 고려 사항

OpenAI는 함수 호출이 도구 통합을 개선하지만 보안 위험은 여전히 존재한다고 지적합니다. 개념 증명 익스플로잇은 도구의 출력에서 신뢰할 수 없는 데이터가 모델에게 의도하지 않은 행동을 지시할 수 있음을 보여주었습니다.

  • 신뢰할 수 있는 도구에서만 정보를 소비하십시오.
  • 구매를 하거나 이메일을 보내는 등 실제 세계에 영향을 미치는 작업을 수행하기 전에 사용자 확인 단계를 구현하십시오.

모델 버전 관리 및 안정성

OpenAI는 고객 피드백을 바탕으로 gpt-3.5-turbo-0301, gpt-4-0314, 및 gpt-4-32k-0314 모델에 대한 지원을 2024년 6월 13일까지 최소 연장했습니다.

애플리케이션 안정성을 보장하기 위해 OpenAI는 API 사용자가 특정 모델 버전을 고정할 수 있도록 허용합니다(예: 일반 gpt-4 포인터 대신 gpt-4-0314 사용). 각 고정된 모델은 안정적이며 출력에 영향을 미치는 변경 사항을 겪지 않습니다. OpenAI는 또한 개발자가 새로운 모델 버전의 부족점을 보고하기 위해 OpenAI Evals 라이브러리에 기여하도록 권장합니다.

Sources