호출 기능
함수 호출은 언어 모델이 기능 호출을 지정하는 구조화된 출력을 생성하여 외부 도구를 사용하여 API 및 기타 시스템과 상호 작용할 수 있게 해줍니다.
함수 호출은 대규모 언어 모델(LLM)이 외부 도구 및 API와 상호 작용할 수 있도록 하는 기술입니다. LLM은 단순히 텍스트를 생성하는 대신, 호출할 함수와 해당 인수를 지정하는 JSON과 같은 구조화된 데이터를 출력하도록 훈련됩니다. 이를 통해 LLM은 작업을 위임하고, 정보를 검색하며, 고유한 텍스트 생성 기능을 넘어 작업을 수행할 수 있습니다. 이 프로세스에는 일반적으로 설명 및 입/출력 스키마가 있는 일련의 함수를 정의하는 것이 포함되며, LLM은 이를 사용하여 적절한 호출을 생성할 수 있습니다. 이를 통해 LLM의 유용성이 확장되어 외부 데이터 또는 작업이 필요한 워크플로 및 애플리케이션에 통합될 수 있습니다.
graph LR
Center["호출 기능"]:::main
Pre_logic["logic"]:::pre --> Center
click Pre_logic "/terms/logic"
Rel_api["api"]:::related -.-> Center
click Rel_api "/terms/api"
Rel_chain_of_thought["chain-of-thought"]:::related -.-> Center
click Rel_chain_of_thought "/terms/chain-of-thought"
Rel_function["function"]:::related -.-> Center
click Rel_function "/terms/function"
classDef main fill:#7c3aed,stroke:#8b5cf6,stroke-width:2px,color:white,font-weight:bold,rx:5,ry:5;
classDef pre fill:#0f172a,stroke:#3b82f6,color:#94a3b8,rx:5,ry:5;
classDef child fill:#0f172a,stroke:#10b981,color:#94a3b8,rx:5,ry:5;
classDef related fill:#0f172a,stroke:#8b5cf6,stroke-dasharray: 5 5,color:#94a3b8,rx:5,ry:5;
linkStyle default stroke:#4b5563,stroke-width:2px;
🧠 지식 테스트
🧒 5살도 이해할 수 있게 설명
마치 아주 똑똑한 비서에게 그냥 추측하는 대신, 특정 책(함수)에서 무언가를 찾아 답을 알려달라고 하는 것과 같아요.
🤓 Expert Deep Dive
LLM 맥락에서의 함수 호출은 순수 텍스트 생성을 넘어 에이전트 행동으로의 패러다임 전환을 의미하며, LLM이 외부 컴퓨팅 리소스를 조율하는 역할을 수행할 수 있도록 합니다. 아키텍처적으로는 LLM이 구조화된 예측을 수행하여 함수 시그니처와 인자를 나타내는 사전 정의된 스키마를 출력하는 능력에 의존합니다. 이 스키마는 일반적으로 개발자가 정의하며, LLM에게 활용 가능한 '도구 세트'를 제공합니다.
이 과정은 LLM이 사용자의 자연어 쿼리를 파싱하고, 의도를 파악하며, 이를 사용 가능한 함수에 매핑하는 것을 포함합니다. 그런 다음 스키마를 준수하는 JSON 객체를 생성하여 함수 이름과 인자를 지정하며, 이는 종종 프롬프트에서 개체 추출 및 슬롯 채우기를 통해 얻어집니다. 별도의 실행 계층('도구 실행기' 또는 '에이전트 프레임워크')이 이 JSON을 가로채 유효성을 검사하고 해당 외부 API 또는 코드를 호출합니다. 도구의 반환 값은 다시 LLM의 컨텍스트로 피드백되어 최종 응답을 합성하거나 추가 함수 호출을 연결할 수 있도록 합니다.
이 메커니즘은 LLM의 응답을 실시간 데이터에 기반하게 하고 복잡하고 다단계적인 작업을 가능하게 함으로써 LLM의 유용성을 크게 향상시킵니다. 단점으로는 함수 호출 메커니즘을 대상으로 하는 프롬프트 인젝션 공격의 가능성, 도구 정의 및 오류 처리를 관리하는 복잡성, 그리고 실행 루프의 계산 오버헤드가 있습니다. 특히 수많은 도구나 모호하게 명명된 도구가 있을 때 LLM이 의도를 올바른 함수와 인자에 정확하게 매핑하도록 보장하는 것이 중요한 과제입니다. 이러한 매핑 정확도를 개선하기 위해 소수샷 학습(few-shot learning) 및 미세 조정(fine-tuning)과 같은 기법이 사용됩니다.