Function Calling 기술 요약
Function Calling 기술 요약
1. 정의
Function Calling은 개발자가 JSON 스키마를 통해 대규모 언어 모델(LLM)에 사용 가능한 외부 도구(예: API)를 설명할 수 있게 하는 메커니즘입니다. 모델이 사용자 질문에 답변하기 위해 도구 호출이 필요하다고 판단하면, 구조화된 tool_calls JSON 데이터를 출력하여 호출할 함수 이름과 매개변수를 지정합니다. 호스트 프로그램이 이 호출을 구문 분석하고 실행한 후 결과를 모델에 반환하면, 모델이 최종 답변을 생성합니다.
2. 핵심 원리와 해결하는 문제
- 본질: "두 번의 대화 + 중간 실행"의 폐쇄 루프입니다. 첫 번째 라운드에서 모델이 결정을 내리고 도구 호출 요청을 출력합니다. 중간에 코드가 도구를 실행합니다. 두 번째 라운드에서 모델은 실행 결과를 바탕으로 최종 답변을 생성합니다.
- 해결하는 문제: 이전에 모델이 도구를 호출할 때 불안정하고 오류가 발생하기 쉬운 자연어 구문 분석(if/else 판단)에 의존해야 했던 문제를 해결하며, 구조화된 출력을 통해 표준화와 정확도를 향상시킵니다.
3. 역할 분담 (작업 위임 비유)
- 개발자(HR): 도구를 정의하고, 도구의 기능과 매개변수 등을 설명하는 JSON 스키마를 작성합니다.
- LLM 모델(매니저): 도구 설명을 이해하고, 호출이 필요한지, 어떤 도구를 호출할지, 매개변수는 무엇인지 결정하며, 구조화된 호출 요청(
tool_calls)을 출력합니다. 모델은 결정과 텍스트 생성만 수행하고, 코드를 직접 실행하지 않습니다. - 실행기/호스트 코드(직원): 모델의
tool_calls요청을 구문 분석하고, 실제로 해당 함수나 API 호출을 실행한 후 결과를 반환합니다.
4. 도구 정의 (JSON 스키마)
스키마는 도구의 "설명서"이며, 주요 정보는 다음과 같습니다:
- name: 도구의 고유 식별자.
- description: 매우 중요하며, 모델은 이 설명에 전적으로 의존하여 도구 호출 여부를 결정합니다. 설명이 명확하고 정확할수록 모델의 결정이 더 정확해집니다.
- parameters: 도구에 필요한 매개변수와 그 유형, 설명, 제약 조건(예: 열거형 값, 필수 여부 등)을 정의합니다.
5. 전체 호출 흐름
이 글은 날씨를 조회하는 코드 예제를 통해 사용자 질문, 도구 정의를 포함한 첫 번째 모델 호출, 모델이 tool_calls 반환, 코드가 함수 실행, 결과를 role: "tool" 메시지로 대화 기록에 추가, 마지막으로 모델이 최종 자연어 답변을 생성하는 전체 과정을 보여줍니다.
6. 고급 기능 - 병렬 도구 호출
사용자 질문에 여러 도구의 협력이 필요한 경우(예: 여러 도시의 날씨를 동시에 조회), 모델은 한 번의 응답에 여러 tool_calls를 포함한 목록을 출력할 수 있습니다. 호스트 코드는 이러한 호출을 병렬로 실행한 후 모든 결과를 모델에 반환하여 종합하도록 함으로써 효율성을 높일 수 있습니다.
评论
暂无已展示的评论。
发表评论(匿名)