Wprowadzenie do wywoływania funkcji z użyciem Gemini API

Funkcje niestandardowe można definiować i przekazywać do modeli Gemini za pomocą funkcji Funkcja połączeń. Modele nie wywołują tych funkcji bezpośrednio, Wygeneruj uporządkowane dane, które wskażą nazwę funkcji i sugerowane . Te dane wyjściowe pozwalają pisać aplikacje, które przyjmują ustrukturyzowany dane wyjściowe i wywołania zewnętrznych interfejsów API, a wynikowe dane wyjściowe interfejsu API można wchodzące w skład kolejnego promptu modelu, co pozwala na bardziej kompleksowe odpowiedzi. Wywoływanie funkcji umożliwia użytkownikom interakcję z danymi w czasie rzeczywistym i różne usługi, takie jak bazy danych, relacje z klientami systemów zarządzania i repozytoriów dokumentów, zwiększając ich możliwości udzielać trafnych i kontekstowych odpowiedzi.

Jak działa wywoływanie funkcji

Korzystanie z funkcji wywoływania funkcji wymaga dodania uporządkowanych danych zapytania opisujących interfejsów programowania, tzw. deklaracji funkcji, do promptów modelu. deklaracje funkcji zawierają nazwę funkcji interfejsu API, wyjaśniają jej przeznaczenie wszystkich obsługiwanych parametrów i ich opisów. Po zdaniu egzaminu listę deklaracji funkcji w zapytaniu do modelu, analizuje funkcję i resztę zapytania, aby określić sposób użycia API w odpowiedzi na żądanie.

Następnie model zwraca obiekt w Schemat zgodny z OpenAPI określenie sposobu wywoływania co najmniej jednej z zadeklarowanych funkcji w celu odpowiedzi na pytanie użytkownika. Następnie możesz przyjąć zalecane wywołanie funkcji parametrów, wywoływać rzeczywisty interfejs API, uzyskiwać odpowiedź i przekazywać ją do użytkownika lub podjąć dalsze działania. Zauważ, że model w rzeczywistości nie wywołuje funkcji zadeklarowanych funkcji. Zamiast tego użyj zwróconych parametrów obiektu schematu, aby wywołaj funkcję. 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.

Obsługiwane modele

Te modele obsługują funkcję wywoływania funkcji:

  • gemini-1.0-pro
  • gemini-1.0-pro-001
  • gemini-1.5-flash-latest
  • gemini-1.5-pro-latest

Deklaracje funkcji

Gdy implementujesz wywołanie funkcji w prompcie, tworzysz obiekt tools, zawierające co najmniej jeden element function declarations. Definiujesz funkcje używając formatu JSON, zwłaszcza z wybierz podzbiór z Schemat OpenAPI . Deklaracja pojedynczej funkcji może zawierać te parametry:

  • name (ciąg znaków): unikalny identyfikator funkcji w interfejsie API. .
  • description (ciąg znaków): pełne wyjaśnienie funkcji do celów i możliwości.
  • 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 których każdy zawiera:
      • type (ciąg znaków): typ danych parametru, np. string, integer, boolean.
      • description (ciąg znaków): jasne wyjaśnienie funkcji parametru przeznaczenia i 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 i informacje na temat tworzenia deklaracji funkcji dla innych platform znajdziesz w Przewodnik po platformach do wywoływania funkcji.

Sprawdzone metody dotyczące deklaracji funkcji

Dokładne zdefiniowanie funkcji ma kluczowe znaczenie przy integrowaniu ich w żądań. Każda funkcja opiera się na określonych parametrach, które regulują jej działanie i interakcji z modelem. Na tej liście znajdują się wskazówki dotyczące definiują parametry pojedynczej funkcji w functions_declarations .

  • name: używaj jasnych, opisowych nazw bez spacji i kropek. (.) lub myślniki (-). Zamiast nich użyj podkreślenia (_) lub wielbłąda.

  • description: zapewnij szczegółowy, zrozumiały i konkretny opis funkcji opisów, które w razie potrzeby zawierają 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żywaj parametrów o silnie typowym typie, aby ograniczyć halucynacje modeli. 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łań funkcji znajdziesz tutaj: Sprawdzone metody.

Tryb wywoływania funkcji

Możesz użyć parametru wywołania funkcji mode, aby zmodyfikować wykonanie 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 ma ograniczenie, aby zawsze przewidywać wywołanie funkcji. Jeśli nie podano wartości allowed_function_names, model wybiera spośród wszystkich dostępnych deklaracji funkcji. Jeśli została podana allowed_function_names, model wybiera ze zbioru funkcji dozwolonych.
  • NONE: model nie przewiduje wywołania funkcji. W tym przypadku model działa tak samo, jak gdyby nie zostały przekazane żadne deklaracje funkcji.

Możesz też przekazać zestaw allowed_function_names, który po podaniu ogranicza które będzie wywoływać przez model. Należy podać tylko allowed_function_names, gdy tryb jest 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. Poniższy fragment kodu z tagu przykładowe żądanie pokazuje, jak ustawia mode na ANY i określa listę dozwolonych funkcji:

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

Przykłady wywoływania funkcji

W tej sekcji znajdziesz przykładowe prompty do wywoływania funkcji za pomocą poleceń cURL. Przykłady obejmują scenariusze jednoetapowe i wieloetapowe, a także w różnych trybach wywoływania funkcji.

Jeśli używasz poleceń cURL z tą funkcją, funkcja i parametr informacje znajdują się w elemencie tools. Każda deklaracja funkcji w kolumnie tools zawiera nazwę funkcji, a parametry określasz za pomocą schemat zgodny z OpenAPI, i opis funkcji.

Przykład jednoetapowy

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 używa funkcji zawierająca nazwę funkcji, parametry i opis, przewidzieć, którą funkcję ją wywołać i jakie argumenty użyć.

Poniższa próbka curl jest przykładem przekazywania w opisie , która zwraca informacje o tym, gdzie jest odtwarzany film. Kilka deklaracje funkcji, takie jak find_movies, find_theaters

Przykładowe żądanie wywoływania funkcji jednoetapowej

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 DOWOLNYM trybie (żą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 być podobna do tej:

Jednoetapowe wywoływanie funkcji w trybie DOWOLNYM (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 jednoetapowy z użyciem DOWOLNEGO trybu i dozwolonych funkcji

Ten przykładowy curl jest podobny do przykładu jednoetapowego, ale ustawia on zmienia tryb na ANY i zawiera listę dozwolonych funkcje:

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

Jednoetapowe wywoływanie funkcji za pomocą DOWOLNEGO trybu i dozwolonych funkcji (żą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 przewidzieć funkcji find_movies, ponieważ nie ma jej na liście dopuszczalnych funkcji, więc prognozuje inną funkcję. Odpowiedź może wyglądać podobnie do tego:

Jednoetapowe wywoływanie funkcji z użyciem 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 etapó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 drugiej tury zawiera podsumowanie wyników, w pierwszej turze lub zawiera drugie wywołanie funkcji, którego możesz użyć do uzyskania możesz znaleźć dodatkowe informacje o zapytaniu.

W tym temacie znajdziesz 2 przykłady skrętu wieloetapowego:

Używanie odpowiedzi z poprzedniego zakrętu

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 jednoetapowy są w tym formacie JSON.

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

Funkcja wieloetapowa wywołująca przykładowe żądanie 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": "function",
    "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 ten przykładowy curl zawiera wynik wywołania funkcji Metoda find_theaters. Odpowiedź może być podobna do tej:

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

{
  "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
  }
}
    

Wywołaj model kilka razy

Ten przykładowy cURL wywołuje wielokrotnie 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.

Funkcja wieloetapowa wywołująca przykładowe żądanie 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": "function",
    "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

Postępuj zgodnie z tymi sprawdzonymi metodami, aby zwiększyć dokładność niezawodności wywołań funkcji.

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 korzystania z tych funkcji. Przykład: Don't make assumptions on showtimes. Always use a future date for showtimes.
  • Instrukcje zadawania pytań precyzują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.