Gemini Function Calling: Redefining AI Agent Interactions

Published On Mon Jun 10 2024
Gemini Function Calling: Redefining AI Agent Interactions

Gemini Function Calling을 사용한 AI 기반 Agent 구현

Functions Calling이란 사용자의 입력에 따라, 미리 정의된 소스 코드 상의 함수(Function)로부터 호출해야 할 함수와 그 함수에 전달하는 인자들을 Gemini가 구조화된 데이터로(JSON으로) 출력해주는 기능.
일종의 검색을 위한 프레임워크라고 생각하면 될 것 같다.일반 RAG 기반 검색과의 차이점은?"어떤 함수를 호출할지를 Gemini가 판단"사용자 질문의 '의도'를 분류하는 작업을 의도별로 각각 프롬프트 엔지니어링을 수행하지 않아도 Gemini가 질문을 이해하고 이 질문에 답하기 위해 사용해야 할 함수들을 알아서 호출한다는 것이다.
또한 외부 API와의 상호작용도 가능하다.이제 Gemini가 아래 함수의 description을 이해하여 질문에서 위치정보가 있으면 알아서 인식하여 해당 지역의 날씨를 반환할 것이다.
(이 테스트에선 서울, 부산일 때만 날씨를 반환할 것이다.)결과
물론 여기선 날씨 관련 Function이 하나밖에 없긴 하지만 그 Function을 잘 불러왔고 Seoul이라는 location도 잘 인식한 것을 확인할 수 있다.

결과

결과
필요한 내용을 찾을 수 없다고 추가 정보를 달라고 LLM의 답변이 나온다.
당연히 적합한 Function은 찾을 수 없었을 것이다.

결과

결과

회사 정보 API는 Alpha Vantage에서 얻을 것이다.정보를 입력하고 GET FREE API KEY를 누르면 API키가 나올 것이다. 복사해서 아래 Notebook 코드에 붙여넣자.

OpenAPI JSON 스키마에 따라 목적에 맞게 함수 선언Tool을 사용하여 하나로 묶어주고 Gemini가 이 Tool에서 사용자 질문의 의도를 파악하여 필요한 함수를 선별하여 호출하게 된다.의도별로 사용할 외부 API 설정Gemini 모델 설정답변 형식 설정결과

결과

결과

결과

결과

결과

이를 활용하면 앞서 포스팅했던 NL2SQL구현이 훨씬 간단해질 수도 있다. 이유는 위의 포스팅에서도 외부 API에 데이터도 스스로 이해하고 LLM이 해당 정보를 가져와서 답변을 한다. 이는 BigQuery API를 통해 Dataset및 Table 리스트와 스키마 정보들을 불러오는 함수들을 선언해 놓으면 LLM이 사용자 질문에 맞는 테이블 정보들을 스스로 찾은 뒤 필요한 작업을 진행하게도 할 수 있다는 뜻이다.[Gemini Function Calling을 사용한 AI기반 Agent 구현 참고]