Funkcja Gemini API domyślnie zwraca odpowiedzi jako tekst nieustrukturyzowany. Niektóre przypadki użycia wymagają jednak tekstu ustrukturyzowanego, np. w formacie JSON. Możesz na przykład używać odpowiedzi do innych zadań, które wymagają ustalonego schematu danych.
Aby wygenerowane przez model dane wyjściowe zawsze były zgodne z określonym schematem, możesz zdefiniować schemat odpowiedzi, który działa jak szablon odpowiedzi modelu. Dzięki temu możesz wyodrębnić dane bezpośrednio z wyjścia modelu, co wymaga mniej przetwarzania w pościepce.
Oto przykłady:
Upewnij się, że odpowiedź modelu zwraca prawidłowy format JSON i jest zgodna ze schematem dostarczonym przez Ciebie.
Na przykład model może generować uporządkowane wpisy dotyczące przepisów, które zawsze zawierają nazwę przepisu, listę składników i sposób przygotowania. Dzięki temu łatwiej będzie Ci analizować i wyświetlać te informacje w interfejsie aplikacji.Ogranicz, jak model może odpowiadać podczas zadań klasyfikacji.
Możesz na przykład zlecić modelowi dodanie do tekstu adnotacji za pomocą określonego zestawu etykiet (np. określonego zbioru typów danych takich jakpositive
inegative
) zamiast etykiet generowanych przez model (które mogą się różnić, np.good
,positive
,negative
lubbad
).
Z tego przewodnika dowiesz się, jak wygenerować dane wyjściowe w formacie JSON, podając parametr responseSchema
w wywołaniu funkcji generateContent
. Koncentruje się na danych wejściowych w postaci tekstu, ale może też generować uporządkowane odpowiedzi na żądania multimodalne, które zawierają obrazy, filmy i dźwięk.
W dolnej części tej strony znajdziesz więcej przykładów, np. jak generować wartości wyliczenia jako dane wyjściowe. Aby zobaczyć dodatkowe przykłady generowania uporządkowanych danych wyjściowych, zapoznaj się z listą przykładowych schematów i reakcji modelu w dokumentacji Google Cloud.
Zanim zaczniesz
Jeśli jeszcze tego nie zrobisz, przeczytaj przewodnik dla początkujących, w którym znajdziesz informacje o konfigurowaniu projektu Firebase, łączeniu aplikacji z Firebase, dodawaniu pakietu SDK, inicjowaniu usługi Vertex AI i tworzeniu wystąpienia GenerativeModel
.
Krok 1. Zdefiniuj schemat odpowiedzi
Zdefiniuj schemat odpowiedzi, aby określić strukturę danych wyjściowych modelu, nazwy pól i oczekiwaną formę danych w każdym polu.
Podczas generowania odpowiedzi model używa nazwy pola i kontekstu z promptu. Aby jasno określić intencję, zalecamy użycie przejrzystej struktury, jednoznacznych nazw pól, a w razie potrzeby – również opisów.
Uwagi dotyczące schematów odpowiedzi
Podczas pisania schematu odpowiedzi pamiętaj o tych kwestiach:
Rozmiar schematu odpowiedzi wlicza się do limitu tokenów wejściowych.
Funkcja schematu odpowiedzi obsługuje te typy MIME odpowiedzi:
application/json
: dane wyjściowe w formacie JSON zgodnie ze schematem odpowiedzi (przydatne w przypadku wymagań dotyczących danych uporządkowanych).text/x.enum
: zwraca wartość typu wyliczeniowego zgodnie ze schematem odpowiedzi (przydatne w przypadku zadań klasyfikacyjnych).
Funkcja schematu odpowiedzi obsługuje te pola schematu:
enum
items
maxItems
nullable
properties
required
Jeśli użyjesz pola, które nie jest obsługiwane, model może nadal obsłużyć Twoje żądanie, ale zignoruje to pole. Pamiętaj, że powyższa lista jest podzbiorem obiektu schematu OpenAPI 3.0 (patrz dokumentacja schematu Vertex AI).
Domyślnie w przypadku pakietów SDK Vertex AI in Firebase wszystkie pola są uważane za wymagane, chyba że w tablicy
optionalProperties
zostaną określone jako opcjonalne. W przypadku tych opcjonalnych pól model może je wypełnić lub pominąć.Pamiętaj, że jest to przeciwieństwo domyślnego zachowania funkcji Vertex AI Gemini API.
Krok 2. Wyślij prompt z schematem odpowiedzi, aby wygenerować plik JSON
Poniższy przykład pokazuje, jak wygenerować uporządkowane dane wyjściowe w formacie JSON.
Aby wygenerować dane wyjściowe w formie ustrukturyzowanej, musisz podczas inicjalizacji modelu określić odpowiednią funkcję responseMimeType
(w tym przykładzie application/json
), a także funkcję responseSchema
, której model ma używać.
Używanie responseSchema
jest obsługiwane we wszystkich modelach Gemini (z wyjątkiem modeli Gemini 1.0).
Dowiedz się, jak wybrać model i opcjonalnie lokalizację odpowiednią do przypadku użycia i aplikacji.
Dodatkowe przykłady
Aby zobaczyć dodatkowe przykłady korzystania z uporządkowanego wyjścia i jego generowania, zapoznaj się z listą przykładowych schematów i reakcji modeli w dokumentacji Google Cloud.
generowanie wartości typu wyliczeniowego jako danych wyjściowych.
Ten przykład pokazuje, jak używać schematu odpowiedzi w przypadku zadania polegającego na klasyfikacji. Model ma rozpoznać gatunek filmu na podstawie jego opisu. Wyjściem jest jedna wartość typu enum w prostym tekście, którą model wybiera z listy wartości zdefiniowanych w dostarczonym schemacie odpowiedzi.
Aby wykonać to zadanie klasyfikacji uporządkowanej, musisz podczas inicjalizacji modelu podać odpowiednią funkcję responseMimeType
(w tym przykładzie text/x.enum
) oraz funkcję responseSchema
, której model ma używać.
Dowiedz się, jak wybrać model i opcjonalnie lokalizację odpowiednią do przypadku użycia i aplikacji.
Inne opcje kontrolowania generowania treści
- Dowiedz się więcej o projektowaniu promptów, aby móc wpływać na model w celu generowania wyników odpowiadających Twoim potrzebom.
- Skonfiguruj parametry modelu, aby kontrolować, jak model wygeneruje odpowiedź. W przypadku modeli Gemini te parametry to maksymalna liczba tokenów wyjściowych, temperatura, topK i topP. W przypadku modeli Imagen obejmują one format obrazu, generowanie osób, znak wodny itp.
- Użyj ustawień bezpieczeństwa, aby dostosować prawdopodobieństwo otrzymania odpowiedzi, które mogą być uznane za szkodliwe, w tym wypowiedzi szerzące nienawiść i treści o charakterze jednoznacznie seksualnym.
- Ustaw instrukcje systemowe, aby kierować działaniem modelu. Ta funkcja jest jak „wstęp”, który dodajesz przed udostępnieniem modelu w celu uzyskania dalszych instrukcji od użytkownika końcowego.
Prześlij opinię na temat korzystania z usługi Vertex AI in Firebase