Gemma와 같은 생성형 인공지능 (AI) 모델을 사용할 때는 모델을 사용하여 프로그래밍 인터페이스를 운영하여 작업을 완료하거나 질문에 답하는 것이 좋습니다. 프로그래밍 인터페이스를 정의한 다음 해당 인터페이스를 사용하는 요청을 실행하여 모델에 안내하는 것을 함수 호출이라고 합니다.
Gemma는 도구별 토큰을 출력하지 않습니다. 프레임워크는 출력의 구조가 메시지로 표시된 함수 출력 사양과 일치하는지 확인하여 도구 호출을 감지해야 합니다.
여러 애플리케이션에 함수 호출을 사용할 수 있습니다.
- 프로그래밍 API에 자연 언어 인터페이스를 만듭니다. 그러면 프로그래머가 아닌 사용자가 코딩 없이 프로그래매틱 인터페이스를 운영할 수 있습니다.
- AI 상담사 워크플로의 일부로 프로그래밍 호출 생성
함수 호출은 Gemma 3에서 지원되지만 함수 호출 기법은 이전 버전의 Gemma에서 사용할 수 있습니다. 이 가이드에서는 함수 호출을 사용하는 Gemma 프롬프트를 구성하는 방법을 안내합니다. 최상의 성능을 위해서는 Gemma3 27B를, 균형 잡힌 성능과 지연 시간을 위해서는 Gemma3 12B를 사용하는 것이 좋습니다.
프로그래밍 함수 호출
출력 형식을 지정하고 사용 가능한 함수를 정의하는 안내를 제공하는 프롬프트를 구성하여 Gemma에서 함수 호출을 사용할 수 있습니다.
사용자 프롬프트가 포함되면 모델은 지정된 출력 형식과 일치하는 문자열인 함수 호출을 출력합니다. 그러면 모델 프레임워크에서 정의된 함수를 호출하도록 파싱할 요청이 전달됩니다.
다음 프롬프트 샘플은 함수 호출 문법 및 모델의 함수 호출 출력과 함께 함수 정의 블록을 보여줍니다. 다음 프롬프트 예시는 제품 카탈로그의 프로그래밍 인터페이스와 함께 사용하기 위한 것입니다.
You have access to functions. If you decide to invoke any of the function(s), you MUST put it in the format of [func_name1(params_name1=params_value1, params_name2=params_value2...), func_name2(params)] You SHOULD NOT include any other text in the response if you call a function [ { "name": "get_product_name_by_PID", "description": "Finds the name of a product by its Product ID", "parameters": { "type": "object", "properties": { "PID": { "type": "string" } }, "required": [ "PID" ] } } ] While browsing the product catalog, I came across a product that piqued my interest. The product ID is 807ZPKBL9V. Can you help me find the name of this product?
이 프롬프트는 다음과 같은 응답을 생성합니다.
[get_product_name_by_PID(PID="807ZPKBL9V")]
이 예에서는 Python 스타일 함수 호출 출력을 사용합니다. 또는 다음 예와 같이 JSON 스타일 출력 형식을 지정할 수 있습니다.
You have access to functions. If you decide to invoke any of the function(s), you MUST put it in the format of {"name": function name, "parameters": dictionary of argument name and its value} You SHOULD NOT include any other text in the response if you call a function [ { "name": "get_product_name_by_PID", "description": "Finds the name of a product by its Product ID", "parameters": { "type": "object", "properties": { "PID": { "type": "string" } }, "required": [ "PID" ] } } ] While browsing the product catalog, I came across a product that piqued my interest. The product ID is 807ZPKBL9V. Can you help me find the name of this product?
이 프롬프트는 다음과 같은 응답을 생성합니다.
{"name": "get_product_name_by_PID", "parameters": {"PID": "807ZPKBL9V"}}
함수 호출 프롬프트의 구성요소
Gemma 모델에서 함수 호출을 사용할 때 모델의 프롬프트는 다음과 같은 특정 순서와 구조를 따라야 합니다.
다음 섹션에서는 이러한 각 프롬프트 구성요소에 대해 자세히 설명합니다.
함수 호출 설정
함수 호출 프롬프트의 setup 섹션은 모델의 전반적인 예상 동작을 설정합니다. 이 섹션에서 print
또는 console.log
함수를 사용하여 출력을 표시해야 한다고 지정하는 등 모델 동작에 관한 일반적인 안내를 추가할 수 있습니다. Markdown 스타일의 단일 백틱 (func_name
)을 사용하여 코드 문법을 나타냅니다.
You have access to functions. If you decide to invoke any of the function(s), you MUST put it in the format of {"name": function name, "parameters": dictionary of argument name and its value} You SHOULD NOT include any other text in the response if you call a function
안내는 최대한 명확하고 간단해야 합니다. 가장 중요한 안내를 우선하고 일반적인 안내는 많이 제공하지 마세요. 특히 매개변수 수가 적은 모델 버전을 사용하는 경우 Gemma 모델은 너무 상세하거나 명확하게 표현되지 않은 안내를 무시할 수 있습니다.
함수 정의
프롬프트의 정의 섹션에는 각 항목의 설명을 포함하여 함수 이름, 매개변수, 출력이 제공됩니다. 표시된 형식으로 함수를 선언할 수 있습니다. 함수 선언 블록 내에 하나 이상의 함수를 정의할 수 있습니다.
[ { "name": "get_product_name_by_PID", "description": "Finds the name of a product by its Product ID", "parameters": { "type": "object", "properties": { "PID": { "type": "string" } }, "required": [ "PID" ] } }, { "name": "get_product_price_by_PID", "description": "Finds the price of a product by its Product ID", "parameters": { "type": "object", "properties": { "PID": { "type": "string" } }, "required": [ "PID" ] } } ]
다음 단계
Gemma 모델을 배포하고 실행하는 방법을 알아보세요.