Wywoływanie funkcji

Funkcje niestandardowe można definiować i udostępniać do modelu generatywnej AI za pomocą wywołań funkcji. Model nie wywołuje bezpośrednio tych funkcji, ale generuje dane wyjściowe uporządkowanych danych, które określają nazwę funkcji i sugerowane argumenty. Dane wyjściowe umożliwiają wywoływanie zewnętrznych interfejsów API, a wynikowe dane wyjściowe interfejsu API można później włączyć z powrotem w modelu, aby uzyskać bardziej kompleksowe odpowiedzi na zapytania. Wywoływanie funkcji pozwala LLM na interakcję z informacjami w czasie rzeczywistym i różnymi usługami, takimi jak bazy danych, systemy zarządzania relacjami z klientami i repozytoria dokumentów, co zwiększa ich zdolność do udzielania trafnych i kontekstowych odpowiedzi.

Jak działa wywoływanie funkcji

Funkcje są opisane za pomocą deklaracji funkcji. Gdy przekażesz w zapytaniu listę deklaracji funkcji do modelu językowego, model zwróci obiekt w formacie schematu zgodnego z OpenAPI, który zawiera nazwy funkcji i ich argumenty, oraz spróbuje odpowiedzieć na zapytanie użytkownika przy użyciu jednej ze zwróconych funkcji. Model językowy rozumie cel funkcji, analizując jej deklarację funkcji. Model nie wywołuje tej funkcji. Zamiast tego deweloper używa w odpowiedzi obiektu schematu zgodnego z OpenAPI, aby wywołać funkcję zwracaną przez model.

Podczas implementowania wywoływania funkcji tworzysz co najmniej 1 deklarację funkcji, a następnie dodajesz deklaracje do obiektu tools przekazywanego do modelu. Każda deklaracja funkcji zawiera informacje o 1 funkcji, w tym:

  • Nazwa funkcji
  • Parametry funkcji w formacie schematu zgodnego z OpenAPI. Obsługiwany jest wybrany podzbiór. Gdy używasz curl, schemat jest określany za pomocą formatu JSON.
  • Opis funkcji (opcjonalnie). Aby uzyskać najlepsze wyniki, dodaj opis.

Ten dokument zawiera przykłady curl, które wywołują wywołania REST za pomocą klasy GenerativeModel i jej metod.

Obsługiwane modele

Te modele obsługują wywoływanie funkcji:

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

Tryb wywoływania funkcji

Możesz użyć funkcji wywołującej tryb, aby zdefiniować zachowanie wykonywania dla wywołań funkcji. Dostępne są 3 tryby:

  • AUTO: działanie modelu domyślnego. Model postanawia prognozować wywołanie funkcji lub odpowiedź w języku naturalnym.
  • ANY: model zawsze przewiduje wywołanie funkcji. Jeśli nie jest podany allowed_function_names, model wybiera dane ze wszystkich dostępnych deklaracji funkcji. Jeśli argument allowed_function_names jest podany, model wybiera funkcje ze zbioru dozwolonych funkcji.
  • NONE: model nie przewiduje wywołania funkcji. W tym przypadku zachowanie modelu jest takie samo jak w przypadku braku deklaracji funkcji.

Możesz też przekazać zestaw allowed_function_names, który, jeśli zostanie podany, ogranicza funkcje, które model może wywoływać. Używaj właściwości allowed_function_names tylko wtedy, gdy tryb to ANY. Nazwy funkcji powinny być zgodne z nazwami deklaracji funkcji. Gdy ustawisz tryb na ANY i ustawisz allowed_function_names, model przewidzi wywołanie funkcji na podstawie zbioru podanych nazw funkcji.

Oto część przykładowego żądania, które ustawia tryb na ANY i określa listę dozwolonych funkcji:

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

Funkcja wywołująca próbki cURL

Jeśli używasz cURL, informacje o funkcji i parametrze znajdują się w elemencie tools. Każda deklaracja funkcji w elemencie tools zawiera nazwę funkcji, jej parametry określone za pomocą schematu zgodnego z OpenAPI oraz opis funkcji. Poniższe przykłady pokazują, jak korzystać z poleceń curl z wywoływaniem funkcji:

Próbka skrętu jednoetapowego

Jednoetapowe oznacza jednoetapowe wywołanie modelu językowego. W przypadku wywoływania funkcji jednoetapowym przypadkiem użycia może być udostępnienie modelu zapytania w języku naturalnym i listy funkcji. W tym przypadku model korzysta z deklaracji funkcji, która obejmuje jej nazwę, parametry i opis, aby przewidzieć, którą funkcję wywołać i które argumenty mają ją wywołać.

Ten przykładowy curl to przykład przekazania opisu funkcji, która zwraca informacje o miejscu odtwarzania filmu. Żądanie zawiera kilka deklaracji funkcji, np. find_movies i find_theaters.

Funkcja jednoetapowa wywołująca żą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?"
    }
  },
  "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 trybu ANY

Ten przykład curl jest podobny do przykładu jednoetapowego, ale ustawia tryb na ANY:

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

Wywoływanie funkcji jednoetapowej 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 być podobna do tej:

Wywoływanie funkcji jednoetapowej 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 trybem DOWOLNYM i dozwolonymi funkcjami

Ten przykład curl jest podobny do przykładu jednoetapowego, 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 jednoetapowej przy użyciu trybu DOWOLNA 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 go na liście dozwolonych funkcji, więc przewiduje inną funkcję. Odpowiedź może być podobna do tej:

Wywoływanie funkcji jednoetapowej przy użyciu trybu DOWOLNA 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 zwinięcia wieloetapowego

Możesz wdrożyć scenariusz wywoływania funkcji wieloetapowej, wykonując te czynności:

  1. Uzyskaj odpowiedź na wywołanie funkcji przez wywołanie modelu językowego. To jest pierwszy zakręt.
  2. Wywołaj model językowy za pomocą odpowiedzi na wywołanie funkcji z pierwszego zakrętu oraz odpowiedzi uzyskanej w wyniku jej wywołania. To jest drugi zakręt.

Odpowiedź z drugiego etapu podsumowuje wyniki, aby w pierwszej turze odpowiedzieć na Twoje zapytanie, lub zawiera drugie wywołanie funkcji, które pozwala uzyskać więcej informacji o zapytaniu.

Ten temat zawiera 2 przykłady zwinięcia wieloetapowego:

Przykład zwinięcia, który korzysta z odpowiedzi z poprzedniego skrętu

Poniższy przykład curl wywołuje funkcję i argumenty zwrócone przez poprzedni przykład jednoetapowy, aby uzyskać odpowiedź. Metoda i parametry zwracane przez przykładowy kod jednoetapowy znajdują się w tym formacie JSON.

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

Funkcja wieloetapowa wywołująca żą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 obejmuje wynik wywołania metody 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
  }
}
    

Przykład zwinięcia, który wielokrotnie wywołuje model językowy

Poniższy przykład curl wielokrotnie wywołuje model językowy w celu wywołania funkcji. Za każdym razem, gdy model wywołuje tę funkcję, może użyć innej funkcji, aby odpowiedzieć w żądaniu na inne zapytanie użytkownika.

Funkcja wieloetapowa wywołująca żą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ść i niezawodność wywołań funkcji.

Pola klawiszy funkcji

Dokładne zdefiniowanie funkcji ma kluczowe znaczenie przy integrowaniu ich z żądaniami. Każda funkcja opiera się na określonych parametrach, które regulują jej działanie i interakcję z modelem. Oto zestawienie kluczowych parametrów używanych w tablicy functions_declarations.

function_declarations (tablica):

  • Zawiera co najmniej 1 obiekt, z których każdy reprezentuje odrębną funkcję.

W każdym obiekcie function_declarations:

  • name (ciąg znaków): unikalny identyfikator funkcji w wywołaniu interfejsu API.
    • Sprawdzona metoda: używaj jasnych, opisowych nazw bez spacji, kropki (.) i łączników (-). Zamiast tego użyj podkreślenia (_) lub liter wielbłąda.
  • description (ciąg znaków): kompleksowe wyjaśnienie przeznaczenia i możliwości funkcji.
    • Sprawdzona metoda: opis funkcji powinien być szczegółowy, zrozumiały i konkretny, a w razie potrzeby zawierać przykłady. Na przykład zamiast find theaters użyj find theaters based on location and optionally movie title that is currently playing in theaters. Unikaj zbyt szerokich lub niejednoznacznych opisów.
  • 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, a każdy z nich zawiera:
        • type (ciąg znaków): typ danych parametru (np. string, integer, boolean).
          • Sprawdzona metoda: używaj parametrów o wyraźnym typie, aby ograniczyć błędy w modelu. Jeśli na przykład wartości parametrów pochodzą ze skończonego zbioru, użyj pola enum zamiast podawać je w opisie (np. "type": "enum", "values": ["now_playing", "upcoming"]). Jeśli wartość parametru jest zawsze liczbą całkowitą, ustaw typ na integer, a nie na number.
        • description (ciąg znaków): jasne wyjaśnienie przeznaczenia i oczekiwanego formatu parametru.
          • Sprawdzona metoda: 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.
    • required (tablica):
      • Tablica ciągów tekstowych z nazwami parametrów, które są wymagane do działania funkcji.

Prompt użytkownika

Aby uzyskać najlepsze wyniki, do zapytania użytkownika na początku dołącz następujące informacje:

  • Dodatkowy kontekst dla 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. Na 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żytkownika są niejednoznaczne. Na przykład: Ask clarifying questions if not enough information is available to complete the request.

Parametry próbkowania

W przypadku parametru temperatury użyj 0 lub innej niskiej wartości. Sprawi to, że model będzie generować bardziej wiarygodne wyniki i ograniczyć omamy.

Wywoływanie interfejsu API

Jeśli model proponuje wywołanie funkcji, która wysyła zamówienie, aktualizuje bazę danych lub w inny sposób ma istotne konsekwencje, przed wykonaniem połączenia zweryfikuj z użytkownikiem wywołanie tej funkcji.