Wprowadzenie do wywoływania funkcji za pomocą interfejsu Gemini API

Za pomocą funkcji wywoływania funkcji interfejsu Gemini API możesz podać funkcję niestandardową definicji modelu. Model nie wywołuje tych funkcji bezpośrednio, ale generuje uporządkowane dane wyjściowe, które określają nazwę funkcji i sugerowane wartości . Możesz następnie użyć nazwy funkcji i argumentów do wywołania API i możesz uwzględnić wynikowe dane wyjściowe interfejsu API w dalszym zapytaniu, model, dzięki czemu może udzielić bardziej kompleksowej odpowiedzi dodatkowych działań.

Wywoływanie funkcji umożliwia użytkownikom interakcję z informacjami w czasie rzeczywistym oraz takich jak bazy danych, systemy zarządzania relacjami z klientami repozytoriów. Funkcja zwiększa również zdolność modelu do dostarczania odpowiednich i odpowiedzi kontekstowych. Funkcja wywoływania jest najlepsza do interakcji z systemami zewnętrznymi. Jeśli w Twoim przypadku użycia wymagany jest model do wykonywania obliczeń, ale nie jest zewnętrznych systemów lub interfejsów API, warto rozważyć wykonanie kodu.

Przykład działającego wywołania funkcji znajdziesz w dokumentacji "lekki bot"

Jak działa wywoływanie funkcji

Funkcję wywoływania funkcji używasz, dodając do promptu modelu uporządkowane dane zapytania opisujące interfejsy programowania, czyli deklaracje funkcji. deklaracje funkcji zawierają nazwę funkcji interfejsu API, wyjaśniają jej przeznaczenie wszystkich obsługiwanych parametrów i ich opisów. Gdy przekażesz modelowi listę deklaracji funkcji w zapytaniu, model przeanalizuje deklaracje funkcji i pozostałą część zapytania, aby określić, jak użyć zadeklarowanego interfejsu API w odpowiedzi na żądanie.

Następnie model zwraca obiekt w schemacie zgodnym z OpenAPI, który określa, jak wywołać co najmniej jedną z deklarowanych funkcji, aby odpowiedzieć na pytanie użytkownika. Następnie możesz użyć parametrów wywołania zalecanej funkcji, wywołać właściwe API, uzyskać odpowiedź i przekazać ją użytkownikowi lub podjąć dalsze działania. Zauważ, że model w rzeczywistości nie wywołuje funkcji zadeklarowanych funkcji. Zamiast tego do wywołania funkcji używasz parametrów zwróconego obiektu schematu. Gemini API obsługuje również równoległe wywoływanie funkcji, gdzie model zaleca wiele wywołań funkcji interfejsu API w ramach pojedynczego żądania.

Deklaracje funkcji

Gdy w promptach implementujesz wywoływanie funkcji, tworzysz obiekt tools, który zawiera co najmniej 1 element function declarations. Definiujesz funkcje używając formatu JSON, zwłaszcza z wybierz podzbiór z Schemat OpenAPI . Jedna deklaracja funkcji może zawierać te parametry:

  • name (ciąg znaków): unikalny identyfikator funkcji w interfejsie API. .
  • description (ciąg znaków): obszerne wyjaśnienie przeznaczenia i możliwości funkcji.
  • parameters (obiekt): definiuje dane wejściowe wymagane przez funkcję.
    • type (ciąg znaków): określa ogólny typ danych, np. object.
    • properties (obiekt): zawiera listę poszczególnych parametrów z tymi danymi:
      • type (ciąg znaków): typ danych parametru, np. string, integer, boolean.
      • description (ciąg znaków): wyraźne wyjaśnienie celu parametru i jego oczekiwanego formatu.
    • required (tablica): tablica ciągów tekstowych z nazwami parametrów. które są niezbędne do działania tej funkcji.

Przykłady kodu deklaracji funkcji z użyciem poleceń cURL znajdziesz w dokumentacji Przykłady wywołań funkcji. Przykłady deklaracji funkcji tworzonych za pomocą pakietów SDK interfejsu Gemini API znajdziesz w samouczku dotyczącym wywoływania funkcji.

Sprawdzone metody dotyczące deklaracji funkcji

Dokładne zdefiniowanie funkcji jest niezbędne podczas ich integrowania z żądaniami. Każda funkcja opiera się na określonych parametrach, które określają jej działanie i współdziałanie z modelem. Na tej liście znajdują się wskazówki dotyczące definiują parametry pojedynczej funkcji w functions_declarations .

  • name: używaj przejrzystych, opisowych nazw bez spacji, kropek (.) ani łączników (-). Zamiast nich użyj podkreślenia (_) lub wielbłąda.

  • description: podaj szczegółowe, jasne i konkretne opisy funkcji, a w razie potrzeby dołącz przykłady. Na przykład zamiast find theaters, użyj wartości find theaters based on location and optionally movie title that is currently playing in theaters. Unikaj zbyt szerokiego lub niejednoznacznego określenia tekstów reklamy.

  • properties > type: użyj parametrów o ścisłym typie, aby ograniczyć iluzje modelu. Jeśli np. wartości parametrów pochodzą z określonej użyj pola enum zamiast podawania wartości w opisie (np. "type": "enum", "values": ["now_playing", "upcoming"]). Jeśli wartość parametru jest zawsze liczbą całkowitą, ustaw typ na integer, a nie number

  • properties > description: podaj konkretne przykłady i ograniczenia. Na przykład zamiast the location to search użyj The city and state, e.g. San Francisco, CA or a zip code e.g. 95616.

Więcej sprawdzonych metod korzystania z wywołania funkcji znajdziesz w sekcji Sprawdzone metody.

Tryb wywoływania funkcji

Aby zmienić wykonanie, możesz użyć funkcji wywołującej parametr mode dla danej funkcji. Dostępne są 3 tryby:

  • AUTO: domyślne zachowanie modelu. Model postanawia przewidzieć wywołanie funkcji lub odpowiedź w języku naturalnym.
  • ANY: model jest ograniczony do przewidywania wywołania funkcji. Jeśli nie podano wartości allowed_function_names, model wybiera spośród wszystkich dostępnych deklaracji funkcji. Jeśli allowed_function_names jest podana, model wybiera funkcję z zestawu dozwolonych funkcji.
  • NONE: model nie będzie przewidywać wywołania funkcji. W takim przypadku działanie modelu jest takie samo, jak gdyby nie przekazano żadnych deklaracji funkcji.

Użycie trybu ANY („wymuszonego wywoływania funkcji”) jest obsługiwane tylko w modelach Gemini 1.5 Pro i Gemini 1.5 Flash.

Możesz też przekazać zestaw funkcji allowed_function_names, który ogranicza funkcje wywoływane przez model. Należy podać tylko allowed_function_names, gdy tryb to ANY. Nazwy funkcji powinny być takie same nazw deklaracji funkcji. Gdy tryb jest ustawiony na ANY, allowed_function_names, model przewiduje wywołanie funkcji z zestawu nazw funkcji.

Ten fragment kodu z przykładowego żądania pokazuje, jak ustawić parametr mode na ANY i określić listę dozwolonych funkcji:

"tool_config": {
  "function_calling_config": {
    "mode": "ANY",
    "allowed_function_names": ["find_theaters", "get_showtimes"]
  },
}

Przykłady wywoływania funkcji

Ta sekcja zawiera przykładowe prompty wywoływania funkcji za pomocą poleceń cURL. Przykłady obejmują scenariusze jednoetapowe i wieloetapowe, a także w różnych trybach wywoływania funkcji.

Gdy używasz poleceń cURL z tą funkcją, informacje o funkcji i parametrach są zawarte w elemencie tools. Każda deklaracja funkcji w elemencie tools zawiera nazwę funkcji, a parametry określasz za pomocą schematu zgodnego z OpenAPI oraz opisu funkcji.

Przykład jednoetapowego

Jednoetapowe – jednorazowe wywołanie modelu językowego. Dzięki wywołaniu funkcji jednoetapowym przypadkiem użycia może być sytuacja, w której przekażesz modelowi język naturalny i listę funkcji. W tym przypadku model korzysta z deklaracji funkcji, która zawiera nazwę funkcji, parametry i opis, aby przewidzieć, którą funkcję wywołać i z jakimi argumentami.

Poniższy przykład curl to przykład przekazania opisu funkcji, która zwraca informacje o tym, gdzie odtwarzany jest film. Kilka deklaracje funkcji, takie jak find_movies, find_theaters

Przykład żądania wywołania funkcji w jednym etapie

curl https://generativelanguage.googleapis.com/v1beta/models/gemini-pro:generateContent?key=$API_KEY \
  -H 'Content-Type: application/json' \
  -d '{
    "contents": {
      "role": "user",
      "parts": {
        "text": "Which theaters in Mountain View show Barbie movie?"
    }
  },
  "tools": [
    {
      "function_declarations": [
        {
          "name": "find_movies",
          "description": "find movie titles currently playing in theaters based on any description, genre, title words, etc.",
          "parameters": {
            "type": "object",
            "properties": {
              "location": {
                "type": "string",
                "description": "The city and state, e.g. San Francisco, CA or a zip code e.g. 95616"
              },
              "description": {
                "type": "string",
                "description": "Any kind of description including category or genre, title words, attributes, etc."
              }
            },
            "required": [
              "description"
            ]
          }
        },
        {
          "name": "find_theaters",
          "description": "find theaters based on location and optionally movie title which is currently playing in theaters",
          "parameters": {
            "type": "object",
            "properties": {
              "location": {
                "type": "string",
                "description": "The city and state, e.g. San Francisco, CA or a zip code e.g. 95616"
              },
              "movie": {
                "type": "string",
                "description": "Any movie title"
              }
            },
            "required": [
              "location"
            ]
          }
        },
        {
          "name": "get_showtimes",
          "description": "Find the start times for movies playing in a specific theater",
          "parameters": {
            "type": "object",
            "properties": {
              "location": {
                "type": "string",
                "description": "The city and state, e.g. San Francisco, CA or a zip code e.g. 95616"
              },
              "movie": {
                "type": "string",
                "description": "Any movie title"
              },
              "theater": {
                "type": "string",
                "description": "Name of the theater"
              },
              "date": {
                "type": "string",
                "description": "Date for requested showtime"
              }
            },
            "required": [
              "location",
              "movie",
              "theater",
              "date"
            ]
          }
        }
      ]
    }
  ]
}'
    

Odpowiedź na ten przykład curl może być podobna do tej.

Funkcja jednoetapowa wywołująca przykładową odpowiedź curl

[{
  "candidates": [
    {
      "content": {
        "parts": [
          {
            "functionCall": {
              "name": "find_theaters",
              "args": {
                "movie": "Barbie",
                "location": "Mountain View, CA"
              }
            }
          }
        ]
      },
      "finishReason": "STOP",
      "safetyRatings": [
        {
          "category": "HARM_CATEGORY_HARASSMENT",
          "probability": "NEGLIGIBLE"
        },
        {
          "category": "HARM_CATEGORY_HATE_SPEECH",
          "probability": "NEGLIGIBLE"
        },
        {
          "category": "HARM_CATEGORY_SEXUALLY_EXPLICIT",
          "probability": "NEGLIGIBLE"
        },
        {
          "category": "HARM_CATEGORY_DANGEROUS_CONTENT",
          "probability": "NEGLIGIBLE"
        }
      ]
    }
  ],
  "usageMetadata": {
    "promptTokenCount": 9,
    "totalTokenCount": 9
  }
}]
    

Przykład jednoetapowy z użyciem DOWOLNEGO trybu

Ten przykładowy curl jest podobny do przykładu jednoetapowego, ale ustawia on zmień tryb na ANY:

"tool_config": {
  "function_calling_config": {
    "mode": "ANY"
  },
}

Jednoetapowe wywoływanie funkcji w trybie DOWOLNYM (żądanie)

curl https://generativelanguage.googleapis.com/v1beta/models/gemini-pro:generateContent?key=$API_KEY \
  -H 'Content-Type: application/json' \
  -d '{
    "contents": {
      "role": "user",
      "parts": {
        "text": "What movies are showing in North Seattle tonight?"
    }
  },
  "tools": [
    {
      "function_declarations": [
        {
          "name": "find_movies",
          "description": "find movie titles currently playing in theaters based on any description, genre, title words, etc.",
          "parameters": {
            "type": "object",
            "properties": {
              "location": {
                "type": "string",
                "description": "The city and state, e.g. San Francisco, CA or a zip code e.g. 95616"
              },
              "description": {
                "type": "string",
                "description": "Any kind of description including category or genre, title words, attributes, etc."
              }
            },
            "required": [
              "description"
            ]
          }
        },
        {
          "name": "find_theaters",
          "description": "find theaters based on location and optionally movie title which is currently playing in theaters",
          "parameters": {
            "type": "object",
            "properties": {
              "location": {
                "type": "string",
                "description": "The city and state, e.g. San Francisco, CA or a zip code e.g. 95616"
              },
              "movie": {
                "type": "string",
                "description": "Any movie title"
              }
            },
            "required": [
              "location"
            ]
          }
        },
        {
          "name": "get_showtimes",
          "description": "Find the start times for movies playing in a specific theater",
          "parameters": {
            "type": "object",
            "properties": {
              "location": {
                "type": "string",
                "description": "The city and state, e.g. San Francisco, CA or a zip code e.g. 95616"
              },
              "movie": {
                "type": "string",
                "description": "Any movie title"
              },
              "theater": {
                "type": "string",
                "description": "Name of the theater"
              },
              "date": {
                "type": "string",
                "description": "Date for requested showtime"
              }
            },
            "required": [
              "location",
              "movie",
              "theater",
              "date"
            ]
          }
        }
      ]
    }
  ],
  "tool_config": {
    "function_calling_config": {
      "mode": "ANY"
    },
  }
}'
    

Odpowiedź może wyglądać tak:

Wywoływanie funkcji w pojedynczej turze w trybie DOWOLNA (odpowiedź)

{
  "candidates": [
    {
      "content": {
        "parts": [
          {
            "functionCall": {
              "name": "find_movies",
              "args": {
                "description": "",
                "location": "North Seattle, WA"
              }
            }
          }
        ],
        "role": "model"
      },
      "finishReason": "STOP",
      "index": 0,
      "safetyRatings": [
        {
          "category": "HARM_CATEGORY_DANGEROUS_CONTENT",
          "probability": "NEGLIGIBLE"
        },
        {
          "category": "HARM_CATEGORY_HARASSMENT",
          "probability": "NEGLIGIBLE"
        },
        {
          "category": "HARM_CATEGORY_HATE_SPEECH",
          "probability": "NEGLIGIBLE"
        },
        {
          "category": "HARM_CATEGORY_SEXUALLY_EXPLICIT",
          "probability": "NEGLIGIBLE"
        }
      ]
    }
  ],
  "promptFeedback": {
    "safetyRatings": [
      {
        "category": "HARM_CATEGORY_SEXUALLY_EXPLICIT",
        "probability": "NEGLIGIBLE"
      },
      {
        "category": "HARM_CATEGORY_HATE_SPEECH",
        "probability": "NEGLIGIBLE"
      },
      {
        "category": "HARM_CATEGORY_HARASSMENT",
        "probability": "NEGLIGIBLE"
      },
      {
        "category": "HARM_CATEGORY_DANGEROUS_CONTENT",
        "probability": "NEGLIGIBLE"
      }
    ]
  }
}
    

Przykład jednej tury z wykorzystaniem trybu DOWOLNA i dozwolonych funkcji

Ten przykład użycia curl jest podobny do przykładu z jednym przetworzeniem, ale ustawia tryb na ANY i zawiera listę dozwolonych funkcji:

"tool_config": {
  "function_calling_config": {
    "mode": "ANY",
    "allowed_function_names": ["find_theaters", "get_showtimes"]
  },
}

Wywoływanie funkcji w pojedynczej turze w dowolnym trybie i z dozwolonymi funkcjami (żądanie)

curl https://generativelanguage.googleapis.com/v1beta/models/gemini-pro:generateContent?key=$API_KEY \
  -H 'Content-Type: application/json' \
  -d '{
    "contents": {
      "role": "user",
      "parts": {
        "text": "What movies are showing in North Seattle tonight?"
    }
  },
  "tools": [
    {
      "function_declarations": [
        {
          "name": "find_movies",
          "description": "find movie titles currently playing in theaters based on any description, genre, title words, etc.",
          "parameters": {
            "type": "object",
            "properties": {
              "location": {
                "type": "string",
                "description": "The city and state, e.g. San Francisco, CA or a zip code e.g. 95616"
              },
              "description": {
                "type": "string",
                "description": "Any kind of description including category or genre, title words, attributes, etc."
              }
            },
            "required": [
              "description"
            ]
          }
        },
        {
          "name": "find_theaters",
          "description": "find theaters based on location and optionally movie title which is currently playing in theaters",
          "parameters": {
            "type": "object",
            "properties": {
              "location": {
                "type": "string",
                "description": "The city and state, e.g. San Francisco, CA or a zip code e.g. 95616"
              },
              "movie": {
                "type": "string",
                "description": "Any movie title"
              }
            },
            "required": [
              "location"
            ]
          }
        },
        {
          "name": "get_showtimes",
          "description": "Find the start times for movies playing in a specific theater",
          "parameters": {
            "type": "object",
            "properties": {
              "location": {
                "type": "string",
                "description": "The city and state, e.g. San Francisco, CA or a zip code e.g. 95616"
              },
              "movie": {
                "type": "string",
                "description": "Any movie title"
              },
              "theater": {
                "type": "string",
                "description": "Name of the theater"
              },
              "date": {
                "type": "string",
                "description": "Date for requested showtime"
              }
            },
            "required": [
              "location",
              "movie",
              "theater",
              "date"
            ]
          }
        }
      ]
    }
  ],
  "tool_config": {
    "function_calling_config": {
      "mode": "ANY",
      "allowed_function_names": ["find_theaters", "get_showtimes"]
    },
  }
}'
    

Model nie może prognozować funkcji find_movies, ponieważ nie ma jej na liście dozwolonych funkcji, więc prognozuje inną funkcję. Odpowiedź może wyglądać podobnie do tego:

Wywołanie funkcji w pojedynczej turze przy użyciu dowolnego trybu i dozwolonych funkcji (odpowiedź)

{
  "candidates": [
    {
      "content": {
        "parts": [
          {
            "functionCall": {
              "name": "find_theaters",
              "args": {
                "location": "North Seattle, WA",
                "movie": null
              }
            }
          }
        ],
        "role": "model"
      },
      "finishReason": "STOP",
      "index": 0,
      "safetyRatings": [
        {
          "category": "HARM_CATEGORY_SEXUALLY_EXPLICIT",
          "probability": "NEGLIGIBLE"
        },
        {
          "category": "HARM_CATEGORY_HARASSMENT",
          "probability": "NEGLIGIBLE"
        },
        {
          "category": "HARM_CATEGORY_HATE_SPEECH",
          "probability": "NEGLIGIBLE"
        },
        {
          "category": "HARM_CATEGORY_DANGEROUS_CONTENT",
          "probability": "NEGLIGIBLE"
        }
      ]
    }
  ],
  "promptFeedback": {
    "safetyRatings": [
      {
        "category": "HARM_CATEGORY_SEXUALLY_EXPLICIT",
        "probability": "NEGLIGIBLE"
      },
      {
        "category": "HARM_CATEGORY_HATE_SPEECH",
        "probability": "NEGLIGIBLE"
      },
      {
        "category": "HARM_CATEGORY_HARASSMENT",
        "probability": "NEGLIGIBLE"
      },
      {
        "category": "HARM_CATEGORY_DANGEROUS_CONTENT",
        "probability": "NEGLIGIBLE"
      }
    ]
  }
}
    

Przykłady rozmów wieloetapowych

Aby wdrożyć scenariusz wieloetapowego wywoływania funkcji, wykonaj te czynności:

  1. Uzyskaj odpowiedź na wywołanie funkcji przez wywołanie modelu językowego. To jest pierwszy włączyć.
  2. Wywołaj model językowy za pomocą odpowiedzi wywołania funkcji od pierwszego zakrętu i odpowiedzi funkcji, jaką otrzymasz po wywołaniu tej funkcji. To jest do drugiej tury.

Odpowiedź z drugiego etapu podsumowuje wyniki, aby odpowiedzieć na zapytanie z pierwszego etapu, lub zawiera drugi wywołanie funkcji, którego możesz użyć, aby uzyskać więcej informacji na temat zapytania.

Ten temat zawiera 2 przykłady skomplikowanych skrętów:

Używanie odpowiedzi z poprzedniej kolejki

Poniższa próbka curl wywołuje funkcję i argumenty zwrócone przez poprzedniego przykładu dotyczącego uzyskania odpowiedzi. Metoda i parametry zwracane przez przykład z jednym etapem są zawarte w tym pliku JSON.

"functionCall": {
  "name": "find_theaters",
  "args": {
    "movie": "Barbie",
    "location": "Mountain View, CA"
  }
}

Przykładowe żądanie wywołania funkcji wieloetapowej za pomocą curl

curl https://generativelanguage.googleapis.com/v1beta/models/gemini-pro:generateContent?key=$API_KEY \
  -H 'Content-Type: application/json' \
  -d '{
    "contents": [{
      "role": "user",
      "parts": [{
        "text": "Which theaters in Mountain View show Barbie movie?"
    }]
  }, {
    "role": "model",
    "parts": [{
      "functionCall": {
        "name": "find_theaters",
        "args": {
          "location": "Mountain View, CA",
          "movie": "Barbie"
        }
      }
    }]
  }, {
    "role": "user",
    "parts": [{
      "functionResponse": {
        "name": "find_theaters",
        "response": {
          "name": "find_theaters",
          "content": {
            "movie": "Barbie",
            "theaters": [{
              "name": "AMC Mountain View 16",
              "address": "2000 W El Camino Real, Mountain View, CA 94040"
            }, {
              "name": "Regal Edwards 14",
              "address": "245 Castro St, Mountain View, CA 94040"
            }]
          }
        }
      }
    }]
  }],
  "tools": [{
    "functionDeclarations": [{
      "name": "find_movies",
      "description": "find movie titles currently playing in theaters based on any description, genre, title words, etc.",
      "parameters": {
        "type": "OBJECT",
        "properties": {
          "location": {
            "type": "STRING",
            "description": "The city and state, e.g. San Francisco, CA or a zip code e.g. 95616"
          },
          "description": {
            "type": "STRING",
            "description": "Any kind of description including category or genre, title words, attributes, etc."
          }
        },
        "required": ["description"]
      }
    }, {
      "name": "find_theaters",
      "description": "find theaters based on location and optionally movie title which is currently playing in theaters",
      "parameters": {
        "type": "OBJECT",
        "properties": {
          "location": {
            "type": "STRING",
            "description": "The city and state, e.g. San Francisco, CA or a zip code e.g. 95616"
          },
          "movie": {
            "type": "STRING",
            "description": "Any movie title"
          }
        },
        "required": ["location"]
      }
    }, {
      "name": "get_showtimes",
      "description": "Find the start times for movies playing in a specific theater",
      "parameters": {
        "type": "OBJECT",
        "properties": {
          "location": {
            "type": "STRING",
            "description": "The city and state, e.g. San Francisco, CA or a zip code e.g. 95616"
          },
          "movie": {
            "type": "STRING",
            "description": "Any movie title"
          },
          "theater": {
            "type": "STRING",
            "description": "Name of the theater"
          },
          "date": {
            "type": "STRING",
            "description": "Date for requested showtime"
          }
        },
        "required": ["location", "movie", "theater", "date"]
      }
    }]
  }]
}'
    

Odpowiedź na to zapytanie curl zawiera wynik wywołania metody find_theaters. Odpowiedź może wyglądać tak:

Przykład odpowiedzi funkcji wywołującej curl w wielu turach

{
  "candidates": [
    {
      "content": {
        "parts": [
          {
            "text": " OK. Barbie is showing in two theaters in Mountain View, CA: AMC Mountain View 16 and Regal Edwards 14."
          }
        ]
      }
    }
  ],
  "usageMetadata": {
    "promptTokenCount": 9,
    "candidatesTokenCount": 27,
    "totalTokenCount": 36
  }
}
    

Wielokrotne wywoływanie modelu

W poniższym przykładzie cURL wywoływany jest wielokrotny model generatywnej AI funkcji. Za każdym razem, gdy model wywoła tę funkcję, może użyć innego , która może odpowiadać na inne zapytanie użytkownika w żądaniu.

Przykładowe żądanie wywołania funkcji wieloetapowej za pomocą curl

curl https://generativelanguage.googleapis.com/v1beta/models/gemini-pro:generateContent?key=$API_KEY \
  -H 'Content-Type: application/json' \
  -d '{
    "contents": [{
      "role": "user",
      "parts": [{
        "text": "Which theaters in Mountain View show Barbie movie?"
    }]
  }, {
    "role": "model",
    "parts": [{
      "functionCall": {
        "name": "find_theaters",
        "args": {
          "location": "Mountain View, CA",
          "movie": "Barbie"
        }
      }
    }]
  }, {
    "role": "user",
    "parts": [{
      "functionResponse": {
        "name": "find_theaters",
        "response": {
          "name": "find_theaters",
          "content": {
            "movie": "Barbie",
            "theaters": [{
              "name": "AMC Mountain View 16",
              "address": "2000 W El Camino Real, Mountain View, CA 94040"
            }, {
              "name": "Regal Edwards 14",
              "address": "245 Castro St, Mountain View, CA 94040"
            }]
          }
        }
      }
    }]
  },
  {
    "role": "model",
    "parts": [{
      "text": " OK. Barbie is showing in two theaters in Mountain View, CA: AMC Mountain View 16 and Regal Edwards 14."
    }]
  },{
    "role": "user",
    "parts": [{
      "text": "Can we recommend some comedy movies on show in Mountain View?"
    }]
  }],
  "tools": [{
    "functionDeclarations": [{
      "name": "find_movies",
      "description": "find movie titles currently playing in theaters based on any description, genre, title words, etc.",
      "parameters": {
        "type": "OBJECT",
        "properties": {
          "location": {
            "type": "STRING",
            "description": "The city and state, e.g. San Francisco, CA or a zip code e.g. 95616"
          },
          "description": {
            "type": "STRING",
            "description": "Any kind of description including category or genre, title words, attributes, etc."
          }
        },
        "required": ["description"]
      }
    }, {
      "name": "find_theaters",
      "description": "find theaters based on location and optionally movie title which is currently playing in theaters",
      "parameters": {
        "type": "OBJECT",
        "properties": {
          "location": {
            "type": "STRING",
            "description": "The city and state, e.g. San Francisco, CA or a zip code e.g. 95616"
          },
          "movie": {
            "type": "STRING",
            "description": "Any movie title"
          }
        },
        "required": ["location"]
      }
    }, {
      "name": "get_showtimes",
      "description": "Find the start times for movies playing in a specific theater",
      "parameters": {
        "type": "OBJECT",
        "properties": {
          "location": {
            "type": "STRING",
            "description": "The city and state, e.g. San Francisco, CA or a zip code e.g. 95616"
          },
          "movie": {
            "type": "STRING",
            "description": "Any movie title"
          },
          "theater": {
            "type": "STRING",
            "description": "Name of the theater"
          },
          "date": {
            "type": "STRING",
            "description": "Date for requested showtime"
          }
        },
        "required": ["location", "movie", "theater", "date"]
      }
    }]
  }]
}'
    

Funkcja wieloetapowa wywołująca przykładową odpowiedź curl

[{
  "candidates": [
    {
      "content": {
        "parts": [
          {
            "functionCall": {
              "name": "find_movies",
              "args": {
                "description": "comedy",
                "location": "Mountain View, CA"
              }
            }
          }
        ]
      },
      "finishReason": "STOP",
      "safetyRatings": [
        {
          "category": "HARM_CATEGORY_HARASSMENT",
          "probability": "NEGLIGIBLE"
        },
        {
          "category": "HARM_CATEGORY_HATE_SPEECH",
          "probability": "NEGLIGIBLE"
        },
        {
          "category": "HARM_CATEGORY_SEXUALLY_EXPLICIT",
          "probability": "NEGLIGIBLE"
        },
        {
          "category": "HARM_CATEGORY_DANGEROUS_CONTENT",
          "probability": "NEGLIGIBLE"
        }
      ]
    }
  ],
  "usageMetadata": {
    "promptTokenCount": 48,
    "totalTokenCount": 48
  }
}
]
    

Sprawdzone metody

Aby zwiększyć dokładność i bezpieczeństwo wywoływania funkcji, postępuj zgodnie z tymi sprawdzonymi metodami.

Prompt użytkownika

Aby uzyskać najlepsze wyniki, do zapytania użytkownika dodaj następujące informacje:

  • Dodatkowy kontekst modelu. Na przykład: You are a movie API assistant to help users find movies and showtimes based on their preferences.
  • szczegóły lub instrukcje dotyczące sposobu i czasu korzystania z funkcji; Przykład: Don't make assumptions on showtimes. Always use a future date for showtimes.
  • Instrukcje zadawania pytań uściślających, jeśli zapytania użytkowników są niejednoznaczne. Dla: przykład: Ask clarifying questions if not enough information is available to complete the request.

Parametry próbkowania

W przypadku parametru temperatury użyj wartości 0 lub innej niskiej wartości. Dzięki temu instrukcja model pozwala uzyskać bardziej wiarygodne wyniki i zmniejsza liczbę halucynacji.

Wywołanie interfejsu API

Jeśli model zaproponuje wywołanie funkcji, która wysyła zamówienie, aktualizacji bazy danych lub w inny sposób mogą mieć poważne konsekwencje, zweryfikować przed wykonaniem funkcji.