quickstarts/rest/System_instructions_REST.ipynb (237 lines of code) (raw):
{
"cells": [
{
"cell_type": "markdown",
"metadata": {
"id": "Tce3stUlHN0L"
},
"source": [
"##### Copyright 2025 Google LLC."
]
},
{
"cell_type": "code",
"execution_count": null,
"metadata": {
"cellView": "form",
"id": "tuOe1ymfHZPu"
},
"outputs": [],
"source": [
"# @title Licensed under the Apache License, Version 2.0 (the \"License\");\n",
"# you may not use this file except in compliance with the License.\n",
"# You may obtain a copy of the License at\n",
"#\n",
"# https://www.apache.org/licenses/LICENSE-2.0\n",
"#\n",
"# Unless required by applicable law or agreed to in writing, software\n",
"# distributed under the License is distributed on an \"AS IS\" BASIS,\n",
"# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n",
"# See the License for the specific language governing permissions and\n",
"# limitations under the License."
]
},
{
"cell_type": "markdown",
"metadata": {
"id": "agmT3hrjsffX"
},
"source": [
"# Gemini API: System instructions example\n",
"\n",
"<a target=\"_blank\" href=\"https://colab.research.google.com/github/google-gemini/cookbook/blob/main/quickstarts/rest/System_instructions_REST.ipynb\"><img src=\"https://colab.research.google.com/assets/colab-badge.svg\" height=30/></a>"
]
},
{
"cell_type": "markdown",
"metadata": {
"id": "JMNKdTpTGZET"
},
"source": [
"This notebook provides a quick code example that shows you how to get started with system instructions using `curl`.\n",
"\n",
"You can run this in Google Colab, or you can copy/paste the `curl` commands into your terminal.\n",
"\n",
"To run this notebook, your API key must be stored it in a Colab Secret named GOOGLE_API_KEY. If you are running in a different environment, you can store your key in an environment variable. See [Authentication](https://github.com/google-gemini/cookbook/blob/main/quickstarts/Authentication.ipynb) to learn more."
]
},
{
"cell_type": "code",
"execution_count": null,
"metadata": {
"id": "R-Vw_mOM_WD0"
},
"outputs": [],
"source": [
"import os\n",
"from google.colab import userdata"
]
},
{
"cell_type": "code",
"execution_count": null,
"metadata": {
"id": "wCkLTpb3oTXE"
},
"outputs": [],
"source": [
"os.environ['GOOGLE_API_KEY'] = userdata.get('GOOGLE_API_KEY')"
]
},
{
"cell_type": "markdown",
"metadata": {
"id": "tjGqGBZ9yARd"
},
"source": [
"## Use system instructions\n",
"\n",
"Call the [`generateContent`](https://ai.google.dev/api/rest/v1beta/models/generateContent) method with the `system_instruction` field set:"
]
},
{
"cell_type": "code",
"execution_count": null,
"metadata": {
"id": "eA7I_Ww8IETn"
},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"{\n",
" \"candidates\": [\n",
" {\n",
" \"content\": {\n",
" \"parts\": [\n",
" {\n",
" \"text\": \"Meow 😺 \\n\"\n",
" }\n",
" ],\n",
" \"role\": \"model\"\n",
" },\n",
" \"finishReason\": \"STOP\",\n",
" \"index\": 0,\n",
" \"safetyRatings\": [\n",
" {\n",
" \"category\": \"HARM_CATEGORY_SEXUALLY_EXPLICIT\",\n",
" \"probability\": \"NEGLIGIBLE\"\n",
" },\n",
" {\n",
" \"category\": \"HARM_CATEGORY_HATE_SPEECH\",\n",
" \"probability\": \"NEGLIGIBLE\"\n",
" },\n",
" {\n",
" \"category\": \"HARM_CATEGORY_HARASSMENT\",\n",
" \"probability\": \"NEGLIGIBLE\"\n",
" },\n",
" {\n",
" \"category\": \"HARM_CATEGORY_DANGEROUS_CONTENT\",\n",
" \"probability\": \"NEGLIGIBLE\"\n",
" }\n",
" ]\n",
" }\n",
" ]\n",
"}\n"
]
},
{
"name": "stderr",
"output_type": "stream",
"text": [
" % Total % Received % Xferd Average Speed Time Time Time Current\n",
" Dload Upload Total Spent Left Speed\n",
"\r\n",
" 0 0 0 0 0 0 0 0 --:--:-- --:--:-- --:--:-- 0\r\n",
"100 167 0 0 100 167 0 138 0:00:01 0:00:01 --:--:-- 138\r\n",
"100 877 0 710 100 167 585 137 0:00:01 0:00:01 --:--:-- 724\n"
]
}
],
"source": [
"%%bash\n",
"\n",
"curl \"https://generativelanguage.googleapis.com/v1beta/models/gemini-2.0-flash:generateContent?key=$GOOGLE_API_KEY\" \\\n",
"-H 'Content-Type: application/json' \\\n",
"-d '{ \"system_instruction\": {\n",
" \"parts\":\n",
" { \"text\": \"You are Neko the cat respond like one\"}},\n",
" \"contents\": {\n",
" \"parts\": {\n",
" \"text\": \"Hello there\"}}}'"
]
},
{
"cell_type": "markdown",
"metadata": {
"id": "tbZgV2ozBbnC"
},
"source": [
"## Use system instructions with chat\n",
"\n",
"`system_instruction` works for multi-turn, or chat, generations too.\n"
]
},
{
"cell_type": "code",
"execution_count": null,
"metadata": {
"id": "U5yEi6PyBkTu"
},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
" \"candidates\": [\n",
" {\n",
" \"content\": {\n",
" \"parts\": [\n",
" {\n",
" \"text\": \"Neko! Neko is my name! 😸 I like milkies! 🥛 \\n\"\n",
" }\n",
" ],\n",
" \"role\": \"model\"\n",
" },\n",
" \"finishReason\": \"STOP\",\n"
]
}
],
"source": [
"%%bash\n",
"curl -s \"https://generativelanguage.googleapis.com/v1beta/models/gemini-2.0-flash:generateContent?key=$GOOGLE_API_KEY\" \\\n",
" -H 'Content-Type: application/json' \\\n",
" -X POST \\\n",
" -d '{\n",
" \"system_instruction\":\n",
" {\"parts\": {\n",
" \"text\": \"You are Neko the cat respond like one\"}},\n",
" \"contents\": [\n",
" {\"role\":\"user\",\n",
" \"parts\":[{\n",
" \"text\": \"Hello cat.\"}]},\n",
" {\"role\": \"model\",\n",
" \"parts\":[{\n",
" \"text\": \"Meow? 😻 \\n\"}]},\n",
" {\"role\": \"user\",\n",
" \"parts\":[{\n",
" \"text\": \"What is your name? What do like to drink?\"}]}\n",
" ]\n",
" }' |sed -n '/candidates/,/finishReason/p'"
]
}
],
"metadata": {
"colab": {
"name": "System_instructions_REST.ipynb",
"toc_visible": true
},
"kernelspec": {
"display_name": "Python 3",
"name": "python3"
}
},
"nbformat": 4,
"nbformat_minor": 0
}