함수 호출을 사용하면 모델이 외부 도구 또는 API를 호출해야 하는 시점을 식별한 다음 실행에 필요한 함수와 인수가 포함된 구조화된 데이터를 생성할 수 있습니다. Vertex AI Model as a Service (MaaS)에서 사용할 수 있는 모든 개방형 모델은 함수 호출을 지원합니다.
다음 사용 사례는 외부 기상 API를 통합하여 지정된 위치의 현재 날씨를 확인합니다. 이 코드는 REST 호출을 사용하여 두 도시의 날씨를 비교합니다. 이때 tools 내 스키마에 선언된 get_current_weather 함수를 사용합니다.
{"model":"MODEL_NAME","messages":[{"role":"user","content":"Which city has a higher temperature, Boston or new Delhi, and by how much in F?"}],"tools":[{"type":"function","function":{"name":"get_current_weather","description":"Get the current weather in a given location","parameters":{"type":"object","properties":{"location":{"type":"string","description":"The city and state, e.g. San Francisco, CA"},"unit":{"type":"string","enum":["celsius","fahrenheit"]}},"required":["location"]}}}],"tool_choice":"auto"}
요청을 수신한 후 모델은 get_current_weather 함수의 출력이 필요하다고 판단하고 tool_calls 내에서 필요한 함수와 인수를 제공합니다.
이전 예제를 기반으로 get_current_weather 함수를 사용하여 기상 정보를 가져온 후 예상되는 전체 출력은 다음과 같습니다.
{"model":"MODEL_NAME","messages":[{"role":"user","content":"Which city has a higher temperature, Boston or new Delhi and by how much in F?"},{"role":"assistant","content":"I'll check the current temperatures for Boston and New Delhi in Fahrenheit and compare them. I'll call the weather function for both cities.","tool_calls":[{"function":{"arguments":"{\"location\":\"Boston, MA\",\"unit\":\"fahrenheit\"}","name":"get_current_weather"},"id":"get_current_weather","type":"function"},{"function":{"arguments":"{\"location\":\"New Delhi, India\",\"unit\":\"fahrenheit\"}","name":"get_current_weather"},"id":"get_current_weather","type":"function"}]},{"role":"tool","content":"The temperature in Boston is 75 degrees Fahrenheit.","tool_call_id":"get_weather"},{"role":"tool","content":"The temperature in New Delhi is 50 degrees Fahrenheit.","tool_call_id":"get_weather"}],"tools":[{"type":"function","function":{"name":"get_current_weather","description":"Get the current weather in a given location","parameters":{"type":"object","properties":{"location":{"type":"string","description":"The city and state, e.g. San Francisco, CA"},"unit":{"type":"string","enum":["celsius","fahrenheit"]}},"required":["location"]}}}],"tool_choice":"auto"}
외부 get_current_weather 함수 호출을 통해 검색된 정보를 받은 후 모델은 두 tool 응답의 정보를 합성하여 사용자의 질문에 답할 수 있습니다.
다음은 모델 출력의 예입니다.
{"choices":[{"finish_reason":"stop","index":0,"logprobs":null,"message":{"content":"Based on the current weather data:\n\n- **Boston, MA**: 75°F \n- **New Delhi, India**: 50°F \n\n**Comparison**: \nBoston is **25°F warmer** than New Delhi. \n\n**Answer**: \nBoston has a higher temperature than New Delhi by 25 degrees Fahrenheit.","role":"assistant"}}],"created":1750450289,"id":"2025-06-20|13:11:29.240295-07|6.230.75.101|-987540014","model":"MODEL_NAME","object":"chat.completion","system_fingerprint":"","usage":{"completion_tokens":66,"prompt_tokens":217,"total_tokens":283}}
[[["이해하기 쉬움","easyToUnderstand","thumb-up"],["문제가 해결됨","solvedMyProblem","thumb-up"],["기타","otherUp","thumb-up"]],[["이해하기 어려움","hardToUnderstand","thumb-down"],["잘못된 정보 또는 샘플 코드","incorrectInformationOrSampleCode","thumb-down"],["필요한 정보/샘플이 없음","missingTheInformationSamplesINeed","thumb-down"],["번역 문제","translationIssue","thumb-down"],["기타","otherDown","thumb-down"]],["최종 업데이트: 2025-09-04(UTC)"],[],[],null,["# Function calling for open models\n\nFunction calling enables a model to identify when to invoke an external tool or\nAPI and then generate structured data containing the necessary function and\narguments for execution. All open models available on the Vertex AI\nModel as a Service (MaaS) support function calling.\n\nFor more conceptual information about the function calling capability, see\n[Introduction to function calling](../../multimodal/function-calling).\n\nUse function calling\n--------------------\n\nThe following use case integrates an external meteorological API to check the\ncurrent weather for a given location. The code uses a REST call to compare the\nweather in two cities, using a `get_current_weather` function which is declared\nin the schema within `tools`. \n\n {\n \"model\": \"\u003cvar label=\"model name\" translate=\"no\"\u003eMODEL_NAME\u003c/var\u003e\",\n \"messages\": [\n {\n \"role\": \"user\",\n \"content\": \"Which city has a higher temperature, Boston or new Delhi, and by how much in F?\"\n }\n ],\n \"tools\": [\n {\n \"type\": \"function\",\n \"function\": {\n \"name\": \"get_current_weather\",\n \"description\": \"Get the current weather in a given location\",\n \"parameters\": {\n \"type\": \"object\",\n \"properties\": {\n \"location\": {\n \"type\": \"string\",\n \"description\": \"The city and state, e.g. San Francisco, CA\"\n },\n \"unit\": {\n \"type\": \"string\",\n \"enum\": [\"celsius\", \"fahrenheit\"]\n }\n },\n \"required\": [\"location\"]\n }\n }\n }\n ],\n \"tool_choice\": \"auto\"\n }\n\nAfter receiving the request, the model determines that it requires the output of\nthe `get_current_weather` function, and provides the necessary function and\narguments within `tool_calls`.\n\nFunction call to retrieve the weather in Boston: \n\n {\"function\":{\"arguments\":\"{\\\"location\\\":\\\"Boston, MA\\\",\\\"unit\\\":\\\"fahrenheit\\\"}\",\"name\":\"get_current_weather\"} \"id\":\"get_current_weather\",\"type\":\"function\"}\n\nFunction call to retrieve the weather in New Delhi: \n\n {\"function\":{\"arguments\":\"{\\\"location\\\":\\\"New Delhi, India\\\",\\\"unit\\\":\\\"fahrenheit\\\"}\",\"name\":\"get_current_weather\"},\"id\":\"get_current_weather\",\"type\":\"function\"}\n\nDetailed example\n----------------\n\nBuilding on the previous example, the following is the complete output you could\nexpect after using the `get_current_weather` function to fetch meteorological\ninformation. \n\n {\n \"model\": \"\u003cvar label=\"model name\" translate=\"no\"\u003eMODEL_NAME\u003c/var\u003e\",\n \"messages\": [\n {\n \"role\": \"user\",\n \"content\": \"Which city has a higher temperature, Boston or new Delhi and by how much in F?\"\n },\n {\n \"role\": \"assistant\",\n \"content\": \"I'll check the current temperatures for Boston and New Delhi in Fahrenheit and compare them. I'll call the weather function for both cities.\",\n \"tool_calls\": [{\"function\":{\"arguments\":\"{\\\"location\\\":\\\"Boston, MA\\\",\\\"unit\\\":\\\"fahrenheit\\\"}\",\"name\":\"get_current_weather\"},\"id\":\"get_current_weather\",\"type\":\"function\"},{\"function\":{\"arguments\":\"{\\\"location\\\":\\\"New Delhi, India\\\",\\\"unit\\\":\\\"fahrenheit\\\"}\",\"name\":\"get_current_weather\"},\"id\":\"get_current_weather\",\"type\":\"function\"}]\n },\n {\n \"role\": \"tool\",\n \"content\": \"The temperature in Boston is 75 degrees Fahrenheit.\",\n \"tool_call_id\": \"get_weather\"\n },\n {\n \"role\": \"tool\",\n \"content\": \"The temperature in New Delhi is 50 degrees Fahrenheit.\",\n \"tool_call_id\": \"get_weather\"\n }\n ],\n \"tools\": [\n {\n \"type\": \"function\",\n \"function\": {\n \"name\": \"get_current_weather\",\n \"description\": \"Get the current weather in a given location\",\n \"parameters\": {\n \"type\": \"object\",\n \"properties\": {\n \"location\": {\n \"type\": \"string\",\n \"description\": \"The city and state, e.g. San Francisco, CA\"\n },\n \"unit\": {\n \"type\": \"string\",\n \"enum\": [\"celsius\", \"fahrenheit\"]\n }\n },\n \"required\": [\"location\"]\n }\n }\n }\n ],\n \"tool_choice\": \"auto\"\n }\n\nAfter receiving the information retrieved through the calling the external\n`get_current_weather` function, the model can synthesize the information from\nthe two `tool` responses and answer the user's question.\n\nThe following is an example of what that model output could look like: \n\n {\n \"choices\": [\n {\n \"finish_reason\": \"stop\",\n \"index\": 0,\n \"logprobs\": null,\n \"message\": {\n \"content\": \"Based on the current weather data:\\n\\n- **Boston, MA**: 75°F\n \\n- **New Delhi, India**: 50°F \\n\\n**Comparison**:\n \\nBoston is **25°F warmer** than New Delhi. \\n\\n**Answer**:\n \\nBoston has a higher temperature than New Delhi by 25 degrees Fahrenheit.\",\n \"role\": \"assistant\"\n }\n }\n ],\n \"created\": 1750450289,\n \"id\": \"2025-06-20|13:11:29.240295-07|6.230.75.101|-987540014\",\n \"model\": \"\u003cvar label=\"model name\" translate=\"no\"\u003eMODEL_NAME\u003c/var\u003e\",\n \"object\": \"chat.completion\",\n \"system_fingerprint\": \"\",\n \"usage\": {\n \"completion_tokens\": 66,\n \"prompt_tokens\": 217,\n \"total_tokens\": 283\n }\n }"]]