diff --git a/examples/prompting/Basic_Information_Extraction.ipynb b/examples/prompting/Basic_Information_Extraction.ipynb
new file mode 100644
index 000000000..1faa0f32f
--- /dev/null
+++ b/examples/prompting/Basic_Information_Extraction.ipynb
@@ -0,0 +1,318 @@
+{
+ "cells": [
+ {
+ "cell_type": "markdown",
+ "metadata": {
+ "id": "p3A9q4LNh1bL"
+ },
+ "source": [
+ "##### Copyright 2024 Google LLC."
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 1,
+ "metadata": {
+ "cellView": "form",
+ "id": "KGxPOhGBh2Xy"
+ },
+ "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": "sP8PQnz1QrcF"
+ },
+ "source": [
+ "# Gemini API: Basic information extraction"
+ ]
+ },
+ {
+ "cell_type": "markdown",
+ "metadata": {
+ "id": "bxGr_x3MRA0z"
+ },
+ "source": [
+ "
"
+ ]
+ },
+ {
+ "cell_type": "markdown",
+ "metadata": {
+ "id": "ysy--KfNRrCq"
+ },
+ "source": [
+ "This example notebook shows how Gemini API's Python SDK can be used to extract information from a block of text and return it in defined structure.\n",
+ "\n",
+ "In this notebook, the LLM is given a recipe and is asked to extract all the ingredients to create a shopping list. According to best practices, complex tasks will be executed better if divided into separate steps, such as:\n",
+ "\n",
+ "1. First, the model will extract all the groceries into a list.\n",
+ "\n",
+ "2. Then, you will prompt it to convert this list into a shopping list.\n",
+ "\n",
+ "You can find more tips for writing prompts [here](https://ai.google.dev/gemini-api/docs/prompting-intro).\n"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 2,
+ "metadata": {
+ "id": "Ne-3gnXqR0hI"
+ },
+ "outputs": [],
+ "source": [
+ "!pip install -U -q google-generativeai"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 3,
+ "metadata": {
+ "id": "EconMHePQHGw"
+ },
+ "outputs": [],
+ "source": [
+ "import google.generativeai as genai\n",
+ "\n",
+ "from IPython.display import Markdown"
+ ]
+ },
+ {
+ "cell_type": "markdown",
+ "metadata": {
+ "id": "eomJzCa6lb90"
+ },
+ "source": [
+ "## Configure your API key\n",
+ "\n",
+ "To run the following cell, your API key must be stored it in a Colab Secret named `GOOGLE_API_KEY`. If you don't already have an API key, or you're not sure how to create a Colab Secret, see [Authentication](https://github.com/google-gemini/cookbook/blob/main/quickstarts/Authentication.ipynb) for an example."
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 4,
+ "metadata": {
+ "id": "v-JZzORUpVR2"
+ },
+ "outputs": [],
+ "source": [
+ "from google.colab import userdata\n",
+ "GOOGLE_API_KEY=userdata.get('GOOGLE_API_KEY')\n",
+ "\n",
+ "genai.configure(api_key=GOOGLE_API_KEY)"
+ ]
+ },
+ {
+ "cell_type": "markdown",
+ "metadata": {
+ "id": "L-Wt23A_uzFZ"
+ },
+ "source": [
+ "## Example\n",
+ "\n",
+ "First, start by extracting all the groceries. To dod this, set the system instructions when defining the model"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 5,
+ "metadata": {
+ "id": "x-Mf5-Vsw2Ft"
+ },
+ "outputs": [],
+ "source": [
+ "groceries_system_prompt = f\"\"\"\n",
+ "Your task is to extract to a list all the groceries with its quantities based on the provided recipe.\n",
+ "Make sure that groceries are in the order of appearance.\n",
+ "\"\"\"\n",
+ "grocery_extraction_model = genai.GenerativeModel(model_name='gemini-1.5-flash-latest',\n",
+ " system_instruction=groceries_system_prompt)"
+ ]
+ },
+ {
+ "cell_type": "markdown",
+ "metadata": {
+ "id": "4YJRWBbviSeC"
+ },
+ "source": [
+ "Next, the recipe is defined. You will pass the recipe into `generate_content`, and see that the list of groceries was successfully extracted from the input."
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 6,
+ "metadata": {
+ "id": "yebFPUvcxDdZ"
+ },
+ "outputs": [
+ {
+ "name": "stdout",
+ "output_type": "stream",
+ "text": [
+ "- 3 garlic cloves\n",
+ "- knob of fresh ginger\n",
+ "- 3 spring onions\n",
+ "- 2 tbsp clear honey\n",
+ "- 1 orange\n",
+ "- 1 tbsp light soy sauce\n",
+ "- 2 tbsp vegetable oil\n",
+ "- 4 small chicken breast fillets\n",
+ "- 20 button mushrooms\n",
+ "- 20 cherry tomatoes\n",
+ "- 2 large red peppers\n",
+ "- 20 wooden skewers \n",
+ "\n"
+ ]
+ }
+ ],
+ "source": [
+ "recipe = \"\"\"\n",
+ "Step 1:\n",
+ "Grind 3 garlic cloves, knob of fresh ginger, roughly chopped, 3 spring onions to a paste in a food processor.\n",
+ "Add 2 tbsp of clear honey, juice from one orange, 1 tbsp of light soy sauce and 2 tbsp of vegetable oil, then blend again.\n",
+ "Pour the mixture over the cubed chicken from 4 small breast fillets and leave to marnate for at least 1hr.\n",
+ "Toss in the 20 button mushrooms for the last half an hour so the take on some of the flavour, too.\n",
+ "\n",
+ "Step 2:\n",
+ "Thread the chicken, 20 cherry tomatoes, mushrooms and 2 large red peppers onto 20 wooden skewers,\n",
+ "then cook on a griddle pan for 7-8 mins each side or until the chicken is thoroughly cooked and golden brown.\n",
+ "Turn the kebabs frequently and baste with the marinade from time to time until evenly cooked.\n",
+ "Arrange on a platter, and eat with your fingers.\n",
+ "\"\"\"\n",
+ "\n",
+ "grocery_list = grocery_extraction_model.generate_content(recipe)\n",
+ "print(grocery_list.text)"
+ ]
+ },
+ {
+ "cell_type": "markdown",
+ "metadata": {
+ "id": "w0IH1dd3jSes"
+ },
+ "source": [
+ "The next step is to further format the shopping list based on the ingredients extracted."
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 7,
+ "metadata": {
+ "id": "sU0pld4QQqOe"
+ },
+ "outputs": [],
+ "source": [
+ "shopping_list_system_prompt = \"\"\"\n",
+ "You are given a list of groceries. Complete the following:\n",
+ "- Organize groceries into categories for easier shopping.\n",
+ "- List each item one under another with a checkbox [].\n",
+ "\"\"\"\n",
+ "\n",
+ "shopping_list_model = genai.GenerativeModel(model_name='gemini-1.5-flash-latest',\n",
+ " system_instruction=shopping_list_system_prompt)"
+ ]
+ },
+ {
+ "cell_type": "markdown",
+ "metadata": {
+ "id": "Ea84Nf2rkWX9"
+ },
+ "source": [
+ "Now that you have defined the instructions, you can also decide how you want to format your grocery list. Give the prompt a couple examples, or perform few-shot prompting, so it understands how to format your grocery list."
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 8,
+ "metadata": {
+ "id": "3QSf7m5QxmC-"
+ },
+ "outputs": [
+ {
+ "data": {
+ "text/markdown": [
+ "## PRODUCE\n",
+ "- [ ] 3 garlic cloves\n",
+ "- [ ] knob of fresh ginger\n",
+ "- [ ] 3 spring onions\n",
+ "- [ ] 1 orange\n",
+ "- [ ] 20 button mushrooms\n",
+ "- [ ] 20 cherry tomatoes\n",
+ "- [ ] 2 large red peppers\n",
+ "\n",
+ "## PANTRY\n",
+ "- [ ] 2 tbsp clear honey\n",
+ "- [ ] 1 tbsp light soy sauce\n",
+ "- [ ] 2 tbsp vegetable oil\n",
+ "\n",
+ "## MEAT\n",
+ "- [ ] 4 small chicken breast fillets\n",
+ "\n",
+ "## OTHER\n",
+ "- [ ] 20 wooden skewers \n"
+ ],
+ "text/plain": [
+ ""
+ ]
+ },
+ "execution_count": 8,
+ "metadata": {},
+ "output_type": "execute_result"
+ }
+ ],
+ "source": [
+ "shopping_list_prompt = f\"\"\"\n",
+ "LIST: 3 tomatoes, 1 turkey, 4 tomatoes\n",
+ "OUTPUT:\n",
+ "## VEGETABLES\n",
+ "- [ ] 7 tomatoes\n",
+ "## MEAT\n",
+ "- [ ] 1 turkey\n",
+ "\n",
+ "LIST: {grocery_list.text}\n",
+ "OUTPUT:\n",
+ "\"\"\"\n",
+ "Markdown(shopping_list_model.generate_content(shopping_list_prompt).text)"
+ ]
+ },
+ {
+ "cell_type": "markdown",
+ "metadata": {
+ "id": "PhttRO0TD9mN"
+ },
+ "source": [
+ "## Next steps\n",
+ "\n",
+ "Be sure to explore other examples of prompting in the repository. Try creating your own prompts for information extraction or adapt the ones provided in the notebook."
+ ]
+ }
+ ],
+ "metadata": {
+ "colab": {
+ "name": "Basic_Information_Extraction.ipynb",
+ "toc_visible": true
+ },
+ "kernelspec": {
+ "display_name": "Python 3",
+ "name": "python3"
+ }
+ },
+ "nbformat": 4,
+ "nbformat_minor": 0
+}