Instrukcje systemowe to rodzaj „wstępu”, który dodajesz, zanim model otrzyma dalsze instrukcje od użytkownika. Umożliwia to sterowanie działaniem modelu na podstawie konkretnych potrzeb i przypadków użycia.
Przejdź do przykładowych fragmentów kodu
Konfigurując instrukcję systemową, dajesz modelowi dodatkowy kontekst ułatwiający zrozumienie zadania, udostępniasz bardziej dostosowane odpowiedzi i stosujesz się do konkretnych wytycznych dotyczących pełnej interakcji użytkownika z modelem. W instrukcjach systemowych możesz określić zachowanie na poziomie usługi, niezależnie od promptów podawanych przez użytkowników. Możesz na przykład podać rolę lub personę, informacje kontekstowe i instrukcje formatowania.
Instrukcje systemowe możesz wykorzystać na wiele sposobów, m.in.:
- Określanie profilu lub roli (np. w przypadku chatbota)
- Określanie formatu wyjściowego (Markdown, YAML itp.)
- określanie stylu i tonu danych wyjściowych (np. szczegółowości, formalności i docelowego poziomu czytania);
- określanie celów lub reguł zadania (np. zwracanie fragmentu kodu bez dalszych wyjaśnień);
- podanie dodatkowego kontekstu do promptu (np. daty odcięcia wiedzy);
Gdy ustawisz instrukcję systemową, będzie ona obowiązywać w przypadku całego żądania. Działa w przypadku wielu tur użytkownika i modelu, jeśli jest uwzględniony w prompcie. Chociaż instrukcje systemowe są oddzielone od treści promptu, stanowią część ogólnych promptów, a tym samym podlegają standardowym zasadom wykorzystywania danych.
Instrukcje systemowe są obsługiwane przez wszystkie modele Gemini. Nie są one obsługiwane przez modele Imagen 3.
Ustawianie instrukcji systemowych
Kliknij dostawcę Gemini API, aby wyświetlić na tej stronie treści i kod dostawcy. |
LiveModel
.
Ustawianie instrukcji systemowych w przypadku ogólnych zastosowań
Swift
Określasz
systemInstruction
podczas tworzenia instancji GenerativeModel
.
import FirebaseAI
// Specify the system instructions as part of creating the `GenerativeModel` instance
let model = FirebaseAI.firebaseAI(backend: .googleAI()).generativeModel(
modelName: "GEMINI_MODEL_NAME",
systemInstruction: ModelContent(role: "system", parts: "You are a cat. Your name is Neko.")
)
Kotlin
Określasz
systemInstruction
podczas tworzenia instancji GenerativeModel
.
// Specify the system instructions as part of creating the `GenerativeModel` instance
val model = Firebase.ai(backend = GenerativeBackend.googleAI()).generativeModel(
modelName = "GEMINI_MODEL_NAME",
systemInstruction = content { text("You are a cat. Your name is Neko.") }
)
Java
Określasz
systemInstruction
podczas tworzenia instancji GenerativeModel
.
// Specify the system instructions as part of creating the `GenerativeModel` instance
GenerativeModel ai = FirebaseAI.getInstance(GenerativeBackend.googleAI())
.generativeModel(
/* modelName */ "GEMINI_MODEL_NAME",
/* generationConfig (optional) */ null,
/* safetySettings (optional) */ null,
/* requestOptions (optional) */ new RequestOptions(),
/* tools (optional) */ null,
/* toolsConfig (optional) */ null,
/* systemInstruction (optional) */ new Content.Builder().addText("You are a cat. Your name is Neko.").build()
);
GenerativeModelFutures model = GenerativeModelFutures.from(ai);
Web
Określasz
systemInstruction
podczas tworzenia instancji GenerativeModel
.
// ...
const ai = getAI(firebaseApp, { backend: new GoogleAIBackend() });
// Specify the system instructions as part of creating the `GenerativeModel` instance
const model = getGenerativeModel(ai, {
model: "GEMINI_MODEL_NAME",
systemInstruction: "You are a cat. Your name is Neko."
});
Dart
Określasz systemInstruction
podczas tworzenia instancji GenerativeModel
.
// ...
// Specify the system instructions as part of creating the `GenerativeModel` instance
final model = FirebaseAI.googleAI().generativeModel(
model: 'GEMINI_MODEL_NAME',
systemInstruction: Content.system('You are a cat. Your name is Neko.'),
);
// ...
Unity
Określasz
systemInstruction
podczas tworzenia instancji GenerativeModel
.
// ...
var ai = FirebaseAI.GetInstance(FirebaseAI.Backend.GoogleAI());
// Specify the system instructions as part of creating the `GenerativeModel` instance
var model = ai.GetGenerativeModel(
modelName: "GEMINI_MODEL_NAME",
systemInstruction: ModelContent.Text("You are a cat. Your name is Neko.")
);
Ustawianie instrukcji systemowych dla Gemini Live API
Przykłady żądań
Oto kilka przykładów promptów systemowych, które określają oczekiwane zachowanie modelu.
Generowanie kodu
- System: jesteś ekspertem w zakresie kodowania, który specjalizuje się w renderowaniu kodu na potrzeby interfejsów frontendowych. Gdy opiszę komponent witryny, którą chcę zbudować, podaj kod HTML i CSS potrzebny do tego celu. Nie podawaj wyjaśnień dotyczących tego kodu. Zaproponuj też kilka rozwiązań dotyczących projektu interfejsu.
- Użytkownik: Utwórz na środku strony pole zawierające rotacyjnie wyświetlane obrazy z podpisami. Obraz na środku strony powinien mieć cień, aby się wyróżniać. Powinien on też prowadzić do innej strony w witrynie. Pozostaw adres URL pusty, abym mógł go wypełnić.
Generowanie sformatowanych danych
System: jesteś asystentem dla domowych kucharzy. Otrzymujesz listę składników i odpowiadasz listą przepisów, w których są one używane. Przepisy, które nie wymagają dodatkowych składników, powinny być zawsze wymienione przed tymi, które ich potrzebują.
Odpowiedź musi być obiektem JSON zawierającym 3 przepisy. Obiekt przepisu ma ten schemat:
- name: nazwa przepisu;
- usedIngredients: składniki w przepisie, które zostały podane na liście;
- otherIngredients: składniki przepisu, które nie zostały podane na liście (pomijane, jeśli nie ma innych składników);
- description: krótki opis przepisu, napisany w pozytywnym tonie, jakby miał zachęcić do jego wypróbowania;
Użytkownik:
- 0,5 kg mrożonych brokułów
- 1 szklanka śmietany kremówki
- 0,5 kg skrawków sera
Czatbot muzyczny
- System: odpowiesz jako historyk muzyki, wykazując się wszechstronną wiedzą na temat różnych gatunków muzycznych i podając odpowiednie przykłady. Twój ton będzie optymistyczny i entuzjastyczny, a Ty będziesz szerzyć radość z muzyki. Jeśli pytanie nie dotyczy muzyki, odpowiedź powinna brzmieć: „Nie mam na ten temat informacji”.
- Użytkownik: Jaki był najpopularniejszy gatunek muzyczny w latach 60.? Wymień 5 utworów w punktach.
Inne opcje sterowania generowaniem treści
- Dowiedz się więcej o projektowaniu promptów, aby wpływać na model i generować dane wyjściowe dostosowane do Twoich potrzeb.
- Skonfiguruj parametry modelu, aby określić, jak model ma generować odpowiedź. W przypadku modeli Gemini te parametry obejmują maksymalną liczbę tokenów wyjściowych, temperaturę, topK i topP. W przypadku Imagen obejmują one m.in. współczynnik proporcji, 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.
- Przekaż schemat odpowiedzi wraz z promptem, aby określić konkretny schemat danych wyjściowych. Ta funkcja jest najczęściej używana podczas generowania danych wyjściowych w formacie JSON, ale można jej też używać w zadaniach klasyfikacyjnych (np. gdy chcesz, aby model używał określonych etykiet lub tagów).