프롬프트 엔지니어링

함수 호출 vs 구조화된 출력

Gemini API를 사용한 함수 호출  |  Google AI for Developers

함수 호출을 사용하면 모델을 외부 도구 및 API에 연결할 수 있습니다. 모델은 텍스트 응답을 생성하는 대신 특정 함수를 호출해야 하는 시점을 파악하고 실제 작업을 실행하는 데 필요한 매개변수를 제공합니다. 이를 통해 모델은 자연어와 실제 작업 및 데이터 간의 연결고리 역할을 할 수 있습니다. 함수 호출에는 3가지 주요 사용 사례가 있습니다.

구조화된 출력  |  Gemini API  |  Google AI for Developers

제공된 JSON 스키마를 준수하는 대답을 생성하도록 Gemini 모델을 구성할 수 있습니다. 이 기능을 사용하면 예측 가능하고 파싱 가능한 결과를 보장하고, 형식 및 유형 안전성을 보장하며, 거부를 프로그래매틱 방식으로 감지하고, 프롬프트를 간소화할 수 있습니다.

image.png

구조화된 출력과 함수 호출은 모두 JSON 스키마를 사용하지만 용도가 다릅니다.

기능 기본 사용 사례
구조화된 출력 사용자에게 전송할 최종 응답의 서식을 지정합니다. 모델의 답변이 특정 형식이어야 하는 경우
(예: 문서에서 데이터를 추출하여 데이터베이스에 저장) 사용합니다.
함수 호출 대화 중에 조치를 취합니다. 모델이 작업을 수행하도록 요청해야 하는 경우
(예: '현재 날씨 가져와')를 요청해야 최종 답변을 제공할 수 있습니다.

우리 프로젝트는?

AI가 중간에 실제로 무언가를 실행하고 그 결과를 다시 AI가 받아서 처리하기보다는 더 단순하게 비속어 리스트들을 JSON 포맷으로 바꾸는 변환 처리

굳이 함수 호출이라는 개념을 빌려오지 않고, 구조화된 출력으로 응답을 JSON 스키마로 달라고 해도 될 것 같음

간단하게 순서

  1. 응답 스키마 정의 → AI가 이 구조에 맞춰서 JSON을 생성하도록 강제
    1. 예시 코드를 보면 여러개의 단어도 처리 가능해보임 (배열 형식으로 받으면 될 것 같다)
  2. gemini 호출 → models.generateContent 작성
    1. model, contents(여기서 프롬프팅), config(JSON 응답 모드 설정) 설정
  3. JSON 파싱해서 응답

모델 선택