Korzystając z funkcji wywoływania funkcji interfejsu Gemini API, możesz przekazywać modelowi definicje funkcji niestandardowych. Model nie wywołuje bezpośrednio tych funkcji, ale generuje dane wyjściowe w postaci ustrukturyzowanej, które zawierają nazwę funkcji i proponowane argumenty. Następnie możesz użyć nazwy funkcji i argumentów, aby wywołać zewnętrzny interfejs API, a potem uwzględnić wynik działania interfejsu API w dalszym zapytaniu do modelu, co pozwoli mu udzielić bardziej wyczerpującej odpowiedzi i wykonywać dodatkowe działania.
Wywoływanie funkcji umożliwia użytkownikom interakcję z informacjami i usługami w czasie rzeczywistym, takimi jak bazy danych, systemy do zarządzania relacjami z klientami czy repozytoria dokumentów. Ta funkcja zwiększa też zdolność modelu do udzielania trafnych odpowiedzi w kontekście. Funkcja wywoływania jest najlepsza do interakcji z systemami zewnętrznymi. Jeśli Twój przypadek użycia wymaga, aby model wykonywał obliczenia, ale nie korzysta z systemów zewnętrznych ani interfejsów API, rozważ użycie wykonywania kodu.
Przykład wywołania funkcji znajdziesz w notatniku „light 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 podają nazwę funkcji interfejsu API, jej przeznaczenie, parametry, które obsługuje, oraz ich opisy. Gdy przekażesz modelowi listę deklaracji funkcji w zapytaniu, model przeanalizuje deklaracje funkcji i resztę 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. Pamiętaj, że model nie wywołuje deklarowanych funkcji. Zamiast tego do wywołania funkcji używasz parametrów zwróconego obiektu schematu. Interfejs Gemini API obsługuje też wywoływanie funkcji równolegle, gdy model zaleca wywołanie wielu funkcji interfejsu API na podstawie jednego żądania.
Deklaracje funkcji
Gdy w promptach implementujesz wywoływanie funkcji, tworzysz obiekt tools
, który zawiera co najmniej 1 element function declarations
. Funkcje definiujesz za pomocą kodu JSON, a dokładnie wybranej podgrupy w formacie schematu OpenAPI. Jedna deklaracja funkcji może zawierać te parametry:
name
(ciąg znaków): niepowtarzalny identyfikator funkcji w wywołaniu interfejsu 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): określa ogólny typ danych, np.object
.properties
(obiekt): zawiera listę poszczególnych parametrów z tymi danymi:type
(ciąg): 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 znaków zawierająca nazwy parametrów, które są wymagane do działania funkcji.
Przykłady kodu deklaracji funkcji z użyciem poleceń cURL znajdziesz w sekcji Przykłady wywoływania 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. Poniższy fragment kodu zawiera wskazówki dotyczące definiowania parametrów pojedynczej funkcji w tablicy functions_declarations
.
name
: używaj przejrzystych, opisowych nazw bez spacji, kropek (.
) ani łączników (-
). Zamiast tego użyj znaku podkreślenia (_
) lub wielkich liter.description
: podaj szczegółowe, jasne i konkretne opisy funkcji, a w razie potrzeby dołącz przykłady. Na przykład zamiastfind theaters
użyjfind theaters based on location and optionally movie title that is currently playing in theaters.
. Unikaj zbyt ogólnych lub niejednoznacznych opisów.properties
>type
: użyj parametrów o ścisłym typie, aby ograniczyć iluzje modelu. Jeśli np.wartości parametrów należą do skończonego zbioru, użyj polaenum
zamiast wymieniać wartości w opisie (np."type": "enum", "values": ["now_playing", "upcoming"]
). Jeśli wartość parametru jest zawsze liczbą całkowitą, ustaw typ nainteger
zamiastnumber
.properties
>description
: podaj konkretne przykłady i ograniczenia. Na przykład zamiastthe location to search
użyjThe city and state, e.g. San Francisco, CA or a zip code e.g. 95616
.
Więcej sprawdzonych metod korzystania z funkcji wywoływania znajdziesz w sekcji Sprawdzone metody.
Tryb wywoływania funkcji
Aby zmodyfikować sposób wykonywania funkcji, możesz użyć parametru mode
wywołania funkcji. Dostępne są 3 tryby:
AUTO
: domyślne zachowanie modelu. Model decyduje, czy przewidzieć wywołanie funkcji, czy odpowiedź w języku naturalnym.ANY
: model jest ograniczony do przewidywania wywołania funkcji. Jeśli parametrallowed_function_names
nie zostanie podany, model wybierze spośród wszystkich dostępnych deklaracji funkcji. Jeśliallowed_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.
Tryb ANY
(„wymuszone wywoływanie funkcji”) jest obsługiwany tylko w przypadku modeli 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. Wartość allowed_function_names
należy uwzględnić tylko wtedy, gdy tryb to ANY
. Nazwy funkcji powinny być zgodne z nazwami deklaracji funkcji. Gdy tryb ma wartość ANY
, a ustawienie allowed_function_names
jest ustawione, model prognozuje wywołanie funkcji z podanego zbioru nazw funkcji.
Ten fragment kodu z przykładowego żądania pokazuje, jak ustawić parametr mode
na wartość 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 z jednym i wieloma turami oraz różne tryby 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
Tryb pojedynczego pytania to wywołanie modelu językowego tylko raz. W przypadku wywoływania funkcji jednym z takich scenariuszy może być przekazanie modelowi zapytania w języku naturalnym i listy 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. W żądaniu uwzględniono kilka deklaracji funkcji, takich jak find_movies
i 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 to curl może wyglądać tak:
Odpowiedź na przykładowe wywołanie funkcji curl w jednym obrocie
[{ "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 pojedynczego ruchu w trybie dowolnym
Ten przykład polecenia curl jest podobny do przykładu z jednym ruchem, ale ustawia tryb na ANY
:
"tool_config": {
"function_calling_config": {
"mode": "ANY"
},
}
Wywoływanie funkcji w pojedynczej turze 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 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 parametr mode 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 pojedynczym obrocie 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 prognozować funkcji find_movies
, ponieważ nie ma jej na liście dozwolonych funkcji, więc prognozuje inną funkcję. Odpowiedź może wyglądać tak:
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 zaimplementować scenariusz wywołania funkcji wieloetapowej:
- Uzyskaj odpowiedź na wywołanie funkcji, wywołując model języka. To pierwszy zakręt.
- Wywołaj model języka, używając odpowiedzi na wywołanie funkcji z pierwszego pytania i odpowiedzi z wywołania tej funkcji. To jest druga kolej.
Odpowiedź z drugiego razu podsumowuje wyniki, aby odpowiedzieć na zapytanie z pierwszego razu, lub zawiera drugi wywołanie funkcji, za pomocą którego możesz uzyskać więcej informacji na temat zapytania.
Ten temat zawiera 2 przykłady skomplikowanych skrętów:
- Przykład curl, który używa odpowiedzi funkcji z poprzedniej kolejki
- Przykład curl, który wielokrotnie wywołuje model językowy
Używanie odpowiedzi z poprzedniej kolejki
Ten przykładowy kod curl wywołuje funkcję i argumenty zwrócone przez poprzedni przykład z jednym przejęciem sterowania, aby uzyskać odpowiedź. 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 } }
Wywoływanie modelu wielokrotnie
W tym przykładzie cURL model generatywnej AI jest wywoływany wielokrotnie, aby wywołać funkcję. Za każdym razem, gdy model wywołuje funkcję, może użyć innej funkcji, aby odpowiedzieć na inną prośbę użytkownika w prośbie.
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"] } }] }] }'
Przykład odpowiedzi funkcji wywołującej curl w wielu turach
[{ "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łań funkcji, stosuj te sprawdzone metody.
Prośba do użytkownika
Aby uzyskać najlepsze wyniki, dodaj do zapytania użytkownika te 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 sposobu i czasu korzystania z funkcji; Przykład:
Don't make assumptions on showtimes. Always use a future date for showtimes.
- instrukcje dotyczące zadawania pytań wyjaśniających, jeśli zapytania użytkowników 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 wartości 0
lub innej niskiej wartości. W ten sposób model generuje bardziej wiarygodne wyniki i ogranicza halucynacje.
Wywołania interfejsu API
Jeśli model proponuje wywołanie funkcji, która wysyła zamówienie, aktualizuje bazę danych lub ma inne znaczące konsekwencje, przed wykonaniem wywołania funkcji sprawdź, czy użytkownik się na to zgadza.