diff --git a/.gitignore b/.gitignore index f0e93fe6c..4dca67c43 100644 --- a/.gitignore +++ b/.gitignore @@ -2,3 +2,13 @@ **/.ipynb_checkpoints **/venv **/.python-version +**/*.json +**/*.jpg +**/*.mp3 +**/*.mp4 +**/*.pdf +**/*.txt +**/*.cpp +**/*.m4a +**/*.png +**/*.md diff --git a/examples/Agents_Function_Calling_Barista_Bot.ipynb b/examples/Agents_Function_Calling_Barista_Bot.ipynb index 5c5e4a518..6775ef2b8 100644 --- a/examples/Agents_Function_Calling_Barista_Bot.ipynb +++ b/examples/Agents_Function_Calling_Barista_Bot.ipynb @@ -89,8 +89,17 @@ "from typing import Iterable\n", "\n", "import google.generativeai as genai\n", - "from google.api_core import retry\n", - "\n", + "from google.api_core import retry" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": { + "id": "b3eb439fb7a2" + }, + "outputs": [], + "source": [ "from google.colab import userdata\n", "genai.configure(api_key=userdata.get('GOOGLE_API_KEY'))" ] diff --git a/examples/Anomaly_detection_with_embeddings.ipynb b/examples/Anomaly_detection_with_embeddings.ipynb index 33769c240..1c805dcc9 100644 --- a/examples/Anomaly_detection_with_embeddings.ipynb +++ b/examples/Anomaly_detection_with_embeddings.ipynb @@ -92,9 +92,6 @@ "import google.generativeai as genai\n", "import google.ai.generativelanguage as glm\n", "\n", - "# Used to securely store your API key\n", - "from google.colab import userdata\n", - "\n", "from sklearn.datasets import fetch_20newsgroups\n", "from sklearn.manifold import TSNE" ] @@ -116,6 +113,8 @@ }, "outputs": [], "source": [ + "# Used to securely store your API key\n", + "from google.colab import userdata\n", "API_KEY=userdata.get('GOOGLE_API_KEY')\n", "genai.configure(api_key=API_KEY)" ] diff --git a/examples/Apollo_11.ipynb b/examples/Apollo_11.ipynb index cf350e77a..1295f5e81 100644 --- a/examples/Apollo_11.ipynb +++ b/examples/Apollo_11.ipynb @@ -143,7 +143,7 @@ } ], "source": [ - "!wget https://storage.googleapis.com/generativeai-downloads/data/a11.txt" + "!curl -O https://storage.googleapis.com/generativeai-downloads/data/a11.txt" ] }, { diff --git a/examples/Classify_text_with_embeddings.ipynb b/examples/Classify_text_with_embeddings.ipynb index 6df1df996..db67f600d 100644 --- a/examples/Classify_text_with_embeddings.ipynb +++ b/examples/Classify_text_with_embeddings.ipynb @@ -92,8 +92,6 @@ "import google.generativeai as genai\n", "import google.ai.generativelanguage as glm\n", "\n", - "from google.colab import userdata\n", - "\n", "import seaborn as sns\n", "import matplotlib.pyplot as plt\n", "\n", @@ -120,6 +118,7 @@ }, "outputs": [], "source": [ + "from google.colab import userdata\n", "API_KEY=userdata.get('GOOGLE_API_KEY')\n", "genai.configure(api_key=API_KEY)" ] @@ -689,7 +688,7 @@ "outputs": [], "source": [ "def build_classification_model(input_size: int, num_classes: int) -> keras.Model:\n", - " inputs = x = keras.Input(input_size)\n", + " inputs = x = keras.Input([input_size])\n", " x = layers.Dense(input_size, activation='relu')(x)\n", " x = layers.Dense(num_classes, activation='sigmoid')(x)\n", " return keras.Model(inputs=[inputs], outputs=x)" diff --git a/examples/Market_a_Jet_Backpack.ipynb b/examples/Market_a_Jet_Backpack.ipynb index c921b00da..1e26a8777 100644 --- a/examples/Market_a_Jet_Backpack.ipynb +++ b/examples/Market_a_Jet_Backpack.ipynb @@ -76,7 +76,6 @@ }, "outputs": [], "source": [ - "from google.colab import userdata\n", "import google.generativeai as genai\n", "import PIL.Image\n", "from IPython.display import display, Image\n", @@ -98,8 +97,21 @@ "metadata": { "id": "mIUxhHbFyZlf" }, - "outputs": [], + "outputs": [ + { + "ename": "ModuleNotFoundError", + "evalue": "No module named 'google.colab'", + "output_type": "error", + "traceback": [ + "\u001b[0;31m---------------------------------------------------------------------------\u001b[0m", + "\u001b[0;31mModuleNotFoundError\u001b[0m Traceback (most recent call last)", + "Cell \u001b[0;32mIn[35], line 1\u001b[0m\n\u001b[0;32m----> 1\u001b[0m \u001b[38;5;28;01mfrom\u001b[39;00m \u001b[38;5;21;01mgoogle\u001b[39;00m\u001b[38;5;21;01m.\u001b[39;00m\u001b[38;5;21;01mcolab\u001b[39;00m \u001b[38;5;28;01mimport\u001b[39;00m userdata\n\u001b[1;32m 2\u001b[0m GOOGLE_API_KEY\u001b[38;5;241m=\u001b[39muserdata\u001b[38;5;241m.\u001b[39mget(\u001b[38;5;124m'\u001b[39m\u001b[38;5;124mGOOGLE_API_KEY\u001b[39m\u001b[38;5;124m'\u001b[39m)\n\u001b[1;32m 3\u001b[0m genai\u001b[38;5;241m.\u001b[39mconfigure(api_key\u001b[38;5;241m=\u001b[39mGOOGLE_API_KEY)\n", + "\u001b[0;31mModuleNotFoundError\u001b[0m: No module named 'google.colab'" + ] + } + ], "source": [ + "from google.colab import userdata\n", "GOOGLE_API_KEY=userdata.get('GOOGLE_API_KEY')\n", "genai.configure(api_key=GOOGLE_API_KEY)" ] @@ -245,7 +257,8 @@ }, "outputs": [], "source": [ - "response = model.generate_content([analyzePrompt, img])" + "json_config=genai.GenerationConfig(response_mime_type=\"application/json\")\n", + "response = model.generate_content([analyzePrompt, img], generation_config=json_config)" ] }, { @@ -308,7 +321,7 @@ "to return a valid array in the format described above, and no other text.\n", "The most important thing is that you stick to the array format.\"\"\"\n", "\n", - "response = model.generate_content([namePrompt, img])\n", + "response = model.generate_content([namePrompt, img], generation_config=json_config)\n", "\n", "names = eval(response.text)\n", "# Create a Dropdown widget to choose a name from the\n", @@ -379,7 +392,7 @@ }, "outputs": [], "source": [ - "copyResponse = model.generate_content([websiteCopyPrompt, img])" + "copyResponse = model.generate_content([websiteCopyPrompt, img], generation_config=json_config)" ] }, { @@ -518,6 +531,65 @@ "response = model.generate_content([htmlPrompt])\n", "print(response.text)" ] + }, + { + "cell_type": "code", + "execution_count": 62, + "metadata": { + "id": "4bd0452be139" + }, + "outputs": [ + { + "data": { + "text/html": [ + "\n", + "\n", + "\n", + "\n", + " \n", + " Nimbus\n", + " \n", + "\n", + "\n", + "

Reach new heights

\n", + "

With Nimbus, the sky's the limit. Explore new heights and see the world from a whole new perspective.

\n", + "\n", + "\n" + ], + "text/plain": [ + "" + ] + }, + "execution_count": 62, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "from IPython.display import HTML\n", + "\n", + "HTML(response.text.removeprefix('```html').strip('`'))" + ] } ], "metadata": { diff --git a/examples/Opossum_search.ipynb b/examples/Opossum_search.ipynb index feaf68c82..04a97f3e4 100644 --- a/examples/Opossum_search.ipynb +++ b/examples/Opossum_search.ipynb @@ -68,7 +68,7 @@ }, { "cell_type": "code", - "execution_count": null, + "execution_count": 2, "metadata": { "id": "UyZKDjRs-FN5" }, @@ -79,7 +79,7 @@ }, { "cell_type": "code", - "execution_count": null, + "execution_count": 3, "metadata": { "id": "F0DZNupF-Lfj" }, @@ -101,7 +101,7 @@ }, { "cell_type": "code", - "execution_count": null, + "execution_count": 4, "metadata": { "id": "IciW45ex-Lo9" }, @@ -123,7 +123,7 @@ }, { "cell_type": "code", - "execution_count": 2, + "execution_count": 5, "metadata": { "id": "mxYn5lUAfsUC" }, @@ -137,7 +137,7 @@ }, { "cell_type": "code", - "execution_count": 3, + "execution_count": 6, "metadata": { "id": "igrg_SxPfwQ6" }, @@ -156,7 +156,7 @@ }, { "cell_type": "code", - "execution_count": 4, + "execution_count": 7, "metadata": { "id": "-qpqkgTurqYI" }, @@ -165,89 +165,75 @@ "name": "stdout", "output_type": "stream", "text": [ - "```html\n", "\n", - "\n", + "\n", "\n", - " Opossum Search\n", - " \n", - "\n", - "\n", - "
\n", - " \"Opossum\"\n", - "
\n", - "
\n", - " \n", - " \n", - "
\n", - " \n", - "
\n", - "
\n", - "
Powered by opossum search
\n", - "\n", - "\n", - "```\n", + " \n", + " \n", + " Opossum Search\n", + " \n", + "\n", + "\n", + "
\n", + " \"Opossum\"\n", + "
\n", + " \n", + " \n", + "
\n", + "
\n", + " \n", + "\n", + "\n", "\n" ] } @@ -286,7 +272,7 @@ }, { "cell_type": "code", - "execution_count": 5, + "execution_count": 11, "metadata": { "id": "M6FS75_bi5kP" }, @@ -294,69 +280,73 @@ { "data": { "text/html": [ - "\n", "\n", - "\n", + "\n", "\n", - " Opossum Search\n", - " \n", + " \n", + " \n", + " Opossum Search\n", + " \n", "\n", "\n", - "
\n", - " \"Opossum\"\n", - "
\n", - "
\n", - " \n", - " \n", - "
\n", - " \n", - "
\n", - "
\n", - "
Powered by opossum search
\n", + "
\n", + " \"Opossum\"\n", + "
\n", + " \n", + " \n", + "
\n", + "
\n", + " \n", "\n", "\n" ], @@ -364,14 +354,14 @@ "" ] }, - "execution_count": 5, + "execution_count": 11, "metadata": {}, "output_type": "execute_result" } ], "source": [ "import IPython\n", - "code = response.text.split('```')[1][len('html'):]\n", + "code = response.text.removeprefix('```html').strip('`')\n", "IPython.display.HTML(code)" ] } diff --git a/examples/Search_reranking_using_embeddings.ipynb b/examples/Search_reranking_using_embeddings.ipynb index 4b1f610e3..5c48b5b49 100644 --- a/examples/Search_reranking_using_embeddings.ipynb +++ b/examples/Search_reranking_using_embeddings.ipynb @@ -269,7 +269,7 @@ " urls = [url]\n", " if response.candidates[0].citation_metadata:\n", " extra_citations = response.candidates[0].citation_metadata.citation_sources\n", - " extra_urls = [source.url for source in extra_citations]\n", + " extra_urls = [source.uri for source in extra_citations]\n", " urls.extend(extra_urls)\n", " search_urls.extend(extra_urls)\n", " print(\"Additional citations:\", response.candidates[0].citation_metadata.citation_sources)\n", diff --git a/examples/Story_Writing_with_Prompt_Chaining.ipynb b/examples/Story_Writing_with_Prompt_Chaining.ipynb index dc10eea2c..5f690aa36 100644 --- a/examples/Story_Writing_with_Prompt_Chaining.ipynb +++ b/examples/Story_Writing_with_Prompt_Chaining.ipynb @@ -60,7 +60,7 @@ "* Debugging: It's easier to identify where things go wrong within the chain, allowing for targeted adjustments and improvements.\n", "* Complex tasks: By breaking down intricate problems into manageable steps, prompt chaining enables the language model to tackle more complex tasks.\n", "\n", - "**Iterative generation** refers to the process of building the desired output iteratively. In this case, you will use it to write a story that is longer than what a single generation window allows. Iterative generation offers several benefits:\n", + "**Iterative generation** refers to the process of building the desired output iteratively. In this case, we'll use it to write a story that is longer than what a single generation window allows. Iterative generation offers several benefits:\n", "\n", "* Longer outputs: It allows for the creation of longer and more detailed outputs, exceeding the limitations of a single generation window.\n", "* Flexibility: You can adjust and refine the output at each iteration, ensuring the story develops in the desired direction.\n", @@ -84,7 +84,18 @@ "metadata": { "id": "rIaXSa8p3KIn" }, - "outputs": [], + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "\u001b[?25l \u001b[90m━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━\u001b[0m \u001b[32m0.0/137.4 kB\u001b[0m \u001b[31m?\u001b[0m eta \u001b[36m-:--:--\u001b[0m\r", + "\u001b[2K \u001b[91m━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[91m╸\u001b[0m\u001b[90m━\u001b[0m \u001b[32m133.1/137.4 kB\u001b[0m \u001b[31m3.8 MB/s\u001b[0m eta \u001b[36m0:00:01\u001b[0m\r", + "\u001b[2K \u001b[90m━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━\u001b[0m \u001b[32m137.4/137.4 kB\u001b[0m \u001b[31m2.6 MB/s\u001b[0m eta \u001b[36m0:00:00\u001b[0m\n", + "\u001b[?25h" + ] + } + ], "source": [ "! pip install -q -U google-generativeai" ] @@ -112,9 +123,18 @@ "from pprint import pprint\n", "\n", "GOOGLE_API_KEY=userdata.get('GOOGLE_API_KEY')\n", - "genai.configure(api_key=GOOGLE_API_KEY)\n", - "\n", - "model = genai.GenerativeModel('gemini-1.5-flash')\n", + "genai.configure(api_key=GOOGLE_API_KEY)" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": { + "id": "sTedGxE7_eah" + }, + "outputs": [], + "source": [ + "model = genai.GenerativeModel('gemini-1.0-flash')\n", "\n", "# For convenience, a simple wrapper to let the SDK handle error retries\n", "def generate_with_retry(model, prompt):\n", @@ -129,7 +149,7 @@ "source": [ "## Prompts: Guiding the language model\n", "\n", - "You will use a series of interconnected prompts to guide the language model through the process of writing a story. These prompts will cover the story's premise, outline, and starting point, ultimately leading to the creation of a complete narrative.\n", + "We'll use a series of interconnected prompts to guide the language model through the process of writing a story. These prompts will cover the story's premise, outline, and starting point, ultimately leading to the creation of a complete narrative.\n", "\n", "It's important to carefully craft these prompts to provide clear instructions and relevant information to the language model. This will help the model generate high-quality content that aligns with your creative vision.\n" ] @@ -146,9 +166,9 @@ "\n", "Each prompt includes a **persona statement**, which helps the language model understand its role and generate more relevant and accurate content. In this case, the persona statement is: `You are an award-winning science fiction author with a penchant for expansive, intricately woven stories. Your ultimate goal is to write the next award winning sci-fi novel.`\n", "\n", - "Since the persona statement and writing guidelines appear in multiple prompts, f-string variables are used to add them to the prompts.\n", + "Since the persona statement and writing guidelines appear in multiple prompts, we use f-string variables to add them to the prompts.\n", "\n", - "Additionally, the prompts use **placeholders** to insert the results of previous prompts using `.format()`. This allows us to build the story step-by-step, incorporating the outputs generated by the model at each stage. These are normally denoted by `{}`, but since you are also using f-string variables they are escaped as `{{}}`.\n", + "Additionally, the prompts use **placeholders** to insert the results of previous prompts using `.format()`. This allows us to build the story step-by-step, incorporating the outputs generated by the model at each stage. These are normally denoted by `{}`, but since we're also using f-string variables they are escaped as `{{}}`.\n", "\n", "Here's a breakdown of the prompt chain:\n", "\n", @@ -156,7 +176,7 @@ "1. **Outline prompt**: This prompt provides the generated premise to the model and asks it to create a plot outline for the story.\n", "1. **Starting prompt**: This prompt provides both the premise and the outline to the model and asks it to begin writing the story. It also includes instructions to write a detailed and lengthy opening section.\n", "\n", - "By chaining these prompts together, it guides the language model through the process of creating a well-structured and engaging story.\n", + "By chaining these prompts together, we can guide the language model through the process of creating a well-structured and engaging story.\n", "\n", "#### Example\n", "\n", @@ -184,7 +204,7 @@ }, { "cell_type": "code", - "execution_count": 2, + "execution_count": null, "metadata": { "id": "RIvLmoQa40W1" }, @@ -244,7 +264,7 @@ "Start to write the very beginning of the story. You are not expected to finish\n", "the whole story now. Your writing should be detailed enough that you are only\n", "scratching the surface of the first bullet of your outline. Try to write AT\n", - "MINIMUM 1000 WORDS and MAXIMUM 2000 WORDS.\n", + "MINIMUM 1000 WORDS.\n", "\n", "{guidelines}'''" ] @@ -257,21 +277,21 @@ "source": [ "### Continuation prompt: Building the story\n", "\n", - "Once the language model has generated the beginning of the story, you can use a **continuation prompt** to iteratively expand the narrative. This prompt is similar to the starting prompt, but with two key differences:\n", + "Once the language model has generated the beginning of the story, we can use a **continuation prompt** to iteratively expand the narrative. This prompt is similar to the starting prompt, but with two key differences:\n", "\n", - "1. **Instruction to signal completion**: An instruction was added for the model to write `IAMDONE` when it believes the story is finished. This serves as a signal for us to stop generating additional content.\n", + "1. **Instruction to signal completion**: We include an instruction for the model to write `IAMDONE` when it believes the story is finished. This serves as a signal for us to stop generating additional content.\n", "1. **Work in progress**: The language in the prompt is adjusted to reflect that the story is already in progress, rather than starting from scratch.\n", "\n", "The continuation prompt provides the model with the story's premise, outline, and the existing draft. It then instructs the model to continue writing the story in detail.\n", "\n", - "This iterative process allows us to build a longer and more complex story than what would be possible in a single generation call. You can continue feeding the existing draft back into the continuation prompt until the model signals that the story is complete by writing `IAMDONE`.\n", + "This iterative process allows us to build a longer and more complex story than what would be possible in a single generation call. We can continue feeding the existing draft back into the continuation prompt until the model signals that the story is complete by writing `IAMDONE`.\n", "\n", "**Note**: The `IAMDONE` signal is simply a convenient way to identify the story's end in this example. In other applications of iterative generation, different methods might be used to determine when the desired output is complete.\n" ] }, { "cell_type": "code", - "execution_count": 3, + "execution_count": null, "metadata": { "id": "dc3BCW2L3kmI" }, @@ -321,7 +341,7 @@ }, { "cell_type": "code", - "execution_count": 4, + "execution_count": null, "metadata": { "id": "NtmCXO4g8zWR" }, @@ -330,8 +350,7 @@ "name": "stdout", "output_type": "stream", "text": [ - "In a future where sentient cats rule a sprawling, technologically advanced society, a rebellious feline detective must unravel a conspiracy that threatens to shatter their carefully constructed peace. \n", - "\n" + "In a distant galaxy, a brilliant feline astrophysicist uncovers a cataclysmic threat to her planet, setting her on a perilous journey to save her species from extinction.\n" ] } ], @@ -351,57 +370,53 @@ }, { "cell_type": "code", - "execution_count": 5, + "execution_count": null, "metadata": { "id": "S4ExmTJ09F0n" }, "outputs": [ + { + "name": "stderr", + "output_type": "stream", + "text": [ + "ERROR:tornado.access:503 POST /v1beta/models/gemini-1.0-pro:generateContent?%24alt=json%3Benum-encoding%3Dint (127.0.0.1) 662.45ms\n", + "ERROR:tornado.access:503 POST /v1beta/models/gemini-1.0-pro:generateContent?%24alt=json%3Benum-encoding%3Dint (127.0.0.1) 446.53ms\n", + "ERROR:tornado.access:503 POST /v1beta/models/gemini-1.0-pro:generateContent?%24alt=json%3Benum-encoding%3Dint (127.0.0.1) 411.72ms\n" + ] + }, { "name": "stdout", "output_type": "stream", "text": [ - "## The Cat's Claw: A Sci-Fi Novel Outline\n", - "\n", - "**Part I: The Whiskered City**\n", - "\n", - "* **Introduction:** We meet Artemis, a jaded feline detective with a cynical view of the world, and a scarred past. He works in the underbelly of the gleaming, chrome-plated city of Neo-Alexandria, a metropolis built by cats for cats.\n", - "* **The Case:** A renowned scientist, Dr. Whiskers, specializing in quantum physics, is found dead in his lab. Initial investigations point to suicide, but Artemis senses a deeper conspiracy. \n", - "* **The Conspiracy:** Artemis discovers an experimental technology, the \"Meow-tron,\" with the potential to disrupt the delicate balance of the feline society. This technology, hidden within Dr. Whiskers' research, was a secret project of the Cat Council, the governing body of Neo-Alexandria.\n", - "* **The Players:** Artemis encounters a diverse cast of characters, each with their own agenda:\n", - " * **Maya:** A fierce, young, and idealistic journalist, seeking the truth behind Dr. Whiskers' death. \n", - " * **Silas:** A shady, enigmatic information broker, offering cryptic hints about the Meow-tron.\n", - " * **Baron Von Meow:** A powerful, influential feline aristocrat with a hidden connection to the Cat Council.\n", - "* **First Clues:** Artemis uncovers a series of seemingly unrelated events: strange feline disappearances, reports of rogue robotic mice, and whispers of a mysterious \"Whiskered Prophet.\" \n", + "**Plot Outline for \"Feline Stargazer: Extinction's Embrace\"**\n", "\n", - "**Part II: The Shadow of the Meow-tron**\n", + "**Act I**\n", "\n", - "* **The Cat Council's Secrets:** Artemis dives deeper into the Cat Council's inner workings, discovering the Meow-tron was designed to control feline emotions and manipulate society. \n", - "* **The Whiskered Prophet:** Artemis learns that the Whiskered Prophet is a mythical figure, a legendary cat said to be capable of harnessing the power of the Meow-tron. The prophet's existence fuels fear and paranoia, dividing the feline society.\n", - "* **The Pursuit:** Artemis and Maya are chased by agents of the Cat Council, their investigation becoming increasingly dangerous. Silas provides them with valuable information, but his motives remain unclear.\n", - "* **The Cat Council's Goal:** The Cat Council seeks to use the Meow-tron to maintain control and suppress dissent. Their leader, the High Priest, believes the prophet will usher in a new era of peace and prosperity.\n", + "* **Introduction:**\n", + " * Meet Dr. Luna, a brilliant astrophysicist cat living on the technologically advanced planet of Felinia.\n", + " * She discovers a rogue celestial body hurtling towards Felinia, threatening its annihilation.\n", + "* **Rising Action:**\n", + " * Luna's findings are initially met with disbelief and apathy from the Felinian authorities.\n", + " * Undeterred, Luna gathers a small team of allies, including a daring space pilot and a reclusive inventor.\n", + " * They embark on a perilous mission to intercept the rogue celestial body.\n", "\n", - "**Part III: The Purrfect Storm**\n", + "**Act II**\n", "\n", - "* **The Confrontation:** Artemis confronts Baron Von Meow, discovering he is the Whiskered Prophet. He is not a savior, but a manipulative figure who seeks to control the Meow-tron for his own power.\n", - "* **The Cat Council's Betrayal:** The High Priest, driven by a distorted sense of duty, decides to unleash the Meow-tron's power on Neo-Alexandria to achieve ultimate control.\n", - "* **The Resistance:** Artemis, Maya, and Silas team up with a group of rebel cats to stop the Cat Council and prevent the Meow-tron's activation.\n", - "* **The Final Showdown:** A thrilling cat-and-mouse chase ensues, culminating in a showdown within the Cat Council's headquarters. Artemis, faced with a difficult choice, must decide whether to destroy the Meow-tron or risk a larger societal upheaval.\n", + "* **Climax:**\n", + " * Luna's team successfully intercepts the rogue celestial body, but its sheer size and power prove overwhelming.\n", + " * As hope dwindles, Luna uncovers a hidden energy source within herself that grants her extraordinary abilities.\n", + "* **Falling Action:**\n", + " * Using her newfound powers, Luna channels her knowledge and ingenuity to devise an audacious plan to avert disaster.\n", + " * She rallies her team and orchestrates a daring maneuver to divert the rogue celestial body's trajectory.\n", "\n", - "**Part IV: The Aftermath**\n", + "**Act III**\n", "\n", - "* **The New Dawn:** The Meow-tron is deactivated, but the conspiracy has left its scars. The Cat Council's power is diminished, and Neo-Alexandria faces a new era of uncertainty. \n", - "* **The Cat's Claw:** Artemis, now a symbol of rebellion, becomes a vigilante, working to ensure the Meow-tron's power is never used again. He is a beacon of hope for those who seek a more just and equitable feline society. \n", - "* **Epilogue:** A glimpse into the future, hinting at the ongoing struggle for power and the delicate balance between technology and freedom. The reader is left to ponder whether true peace can ever be achieved in a society ruled by cats.\n", - "\n", - "**Themes:**\n", - "\n", - "* **Power and Control:** The dangers of unchecked power and the consequences of manipulating a society's emotions.\n", - "* **Freedom vs. Security:** The conflict between individual freedom and the perceived need for order and stability.\n", - "* **Technology and its Impact:** The ethical implications of technology, especially when used for control and manipulation.\n", - "* **The Nature of Power:** The complexities of leadership and the struggle for control in a hierarchical society. \n", - "* **The Power of Hope:** The importance of individual courage and the resilience of the human (or feline) spirit. \n", - "\n", - "**Overall Tone:** A thrilling, suspenseful story with a satirical edge, exploring the complexities of power and the potential dangers of unchecked technological advancement. The novel will appeal to readers who enjoy complex narratives, engaging characters, and a unique and thought-provoking world.\n" + "* **Resolution:**\n", + " * Luna's plan succeeds, saving Felinia from imminent extinction.\n", + " * She is hailed as a hero, transforming Felinian society and inspiring future generations.\n", + "* **Aftermath:**\n", + " * Luna's scientific understanding deepens, paving the way for technological advancements and a greater appreciation for the fragility of life.\n", + " * She becomes a symbol of resilience, adaptability, and the unwavering pursuit of knowledge in the face of adversity.\n" ] } ], @@ -421,104 +436,102 @@ }, { "cell_type": "code", - "execution_count": 6, + "execution_count": null, "metadata": { "id": "nQyeFOYmqqJk" }, "outputs": [ + { + "name": "stderr", + "output_type": "stream", + "text": [ + "ERROR:tornado.access:503 POST /v1beta/models/gemini-1.0-pro:generateContent?%24alt=json%3Benum-encoding%3Dint (127.0.0.1) 994.88ms\n", + "ERROR:tornado.access:503 POST /v1beta/models/gemini-1.0-pro:generateContent?%24alt=json%3Benum-encoding%3Dint (127.0.0.1) 1017.27ms\n", + "ERROR:tornado.access:503 POST /v1beta/models/gemini-1.0-pro:generateContent?%24alt=json%3Benum-encoding%3Dint (127.0.0.1) 1342.56ms\n", + "ERROR:tornado.access:503 POST /v1beta/models/gemini-1.0-pro:generateContent?%24alt=json%3Benum-encoding%3Dint (127.0.0.1) 763.27ms\n", + "ERROR:tornado.access:503 POST /v1beta/models/gemini-1.0-pro:generateContent?%24alt=json%3Benum-encoding%3Dint (127.0.0.1) 764.71ms\n", + "ERROR:tornado.access:503 POST /v1beta/models/gemini-1.0-pro:generateContent?%24alt=json%3Benum-encoding%3Dint (127.0.0.1) 1076.79ms\n" + ] + }, { "name": "stdout", "output_type": "stream", "text": [ - "('The neon hum of Neo-Alexandria vibrated against Artemis’ whiskers, a '\n", - " 'constant, low-grade irritation. He pushed his way through the throngs of '\n", - " 'feline commuters, their sleek fur shimmering under the city’s artificial '\n", - " \"sun, their purrs a collective drone that thrummed in his ears. He couldn't \"\n", - " 'help but feel like a stray in this city, a feline out of place in the '\n", - " 'meticulously groomed tapestry of Neo-Alexandria. \\n'\n", - " '\\n'\n", - " 'The city’s chrome and glass towers, designed by the most renowned feline '\n", - " 'architects, soared into a sky perpetually painted a cerulean blue. Each '\n", - " 'building, an architectural marvel, boasted gleaming cat-eye windows, '\n", - " 'intricate laser-etched patterns of interwoven whiskers, and shimmering '\n", - " 'silver domes that reflected the artificial sun like a thousand watchful '\n", - " 'eyes. Neo-Alexandria, a shining testament to feline ingenuity, was a '\n", - " 'monument to progress and order. But for Artemis, it was a gilded cage, a '\n", - " 'glittering façade hiding a web of corruption and deceit.\\n'\n", - " '\\n'\n", - " 'His paws tapped against the polished obsidian floor of the Underbelly, a '\n", - " 'labyrinthine network of alleyways and hidden passages, a place where shadows '\n", - " 'danced and secrets whispered. It was his domain, a haven for outcasts, '\n", - " 'misfits, and those who preferred the company of the night to the sterile '\n", - " 'brilliance of the city above. He navigated the crowded streets with a '\n", - " 'practiced ease, his emerald eyes scanning the faces of the alley denizens, '\n", - " 'their fur unkempt, their eyes shadowed with cynicism and weariness. \\n'\n", - " '\\n'\n", - " 'He stopped before a dim doorway, the air thick with the aroma of burnt fur '\n", - " 'and stale fish. This was the Claw, his makeshift office, a dimly lit den '\n", - " 'cluttered with discarded newspapers, empty catnip pouches, and a single '\n", - " 'flickering neon sign that read \"Detective Artemis: Solutions for Feline '\n", - " 'Dilemmas.\" He pushed through the door, the groan of rusty hinges echoing in '\n", - " 'the silence. The stale air of the Underbelly clung to him like a shroud, a '\n", - " 'stark contrast to the sterile scent of the city above. \\n'\n", - " '\\n'\n", - " 'The Claw was his refuge, a sanctuary from the relentless glare of the '\n", - " 'artificial sun and the suffocating conformity of Neo-Alexandria. It was '\n", - " 'here, in the shadows and the whispers, where the truth often revealed '\n", - " 'itself. It was here he felt most at home, a jaded cynic with a heart that '\n", - " 'still held a spark of hope, buried beneath a thick layer of '\n", - " 'disillusionment.\\n'\n", - " '\\n'\n", - " 'A scratch at the door startled him. A ginger tabby, its fur matted and its '\n", - " 'eyes wide with fear, slunk inside. Its claws were torn, its body trembling '\n", - " 'with anxiety. “Help me, Detective,” it whimpered, its voice ragged. “They’re '\n", - " 'after me. They want to silence me.”\\n'\n", - " '\\n'\n", - " 'Artemis flicked his tail, a gesture of disinterest that masked a flicker of '\n", - " 'curiosity. \"Who are \\'they\\'?” he asked, his voice rough, a rasp that belied '\n", - " 'his age. \\n'\n", - " '\\n'\n", - " 'The tabby shuddered, glancing nervously around the den. “The Council. '\n", - " 'They’re afraid of what I know. About Dr. Whiskers… about his death. It '\n", - " 'wasn’t an accident.”\\n'\n", - " '\\n'\n", - " 'The name sent a jolt of adrenaline through Artemis. Dr. Whiskers, the '\n", - " 'renowned quantum physicist, the pioneer whose research had ushered in a new '\n", - " 'era of feline innovation, had been found dead in his lab just yesterday. The '\n", - " 'official report had declared it suicide, but Artemis had a bad feeling about '\n", - " 'it, a suspicion gnawing at the edges of his mind. \\n'\n", - " '\\n'\n", - " '“What did Dr. Whiskers know?” Artemis asked, his voice devoid of emotion, '\n", - " 'yet his eyes held a keen glint of interest. \\n'\n", - " '\\n'\n", - " 'The tabby’s fur bristled, its eyes widening. “He was working on something… '\n", - " 'something groundbreaking. A technology that could change everything. He '\n", - " 'called it the Meow-tron.”\\n'\n", - " '\\n'\n", - " 'The Meow-tron. Artemis had heard whispers of this project, a clandestine '\n", - " 'research initiative undertaken by the Cat Council, the ruling body of '\n", - " 'Neo-Alexandria. Rumors circulated about a technology capable of controlling '\n", - " 'feline emotions, of manipulating the very fabric of their society. A '\n", - " 'technology deemed too dangerous, too powerful, too disruptive.\\n'\n", - " '\\n'\n", - " 'He stared at the trembling tabby, its fear palpable. He could sense the '\n", - " \"truth in its words, the desperation in its plea. This wasn't just any case, \"\n", - " 'it was a crack in the carefully constructed facade of Neo-Alexandria, a '\n", - " \"glimpse into the dark secrets hidden beneath the city's glittering \"\n", - " 'surface. \\n'\n", - " '\\n'\n", - " '“Tell me everything,” Artemis commanded, his voice a low rumble, a promise '\n", - " \"of action, a guarantee that he wouldn't let this case slip through his \"\n", - " 'claws. The whispers of the Meow-tron, the shadows of the Council, the fear '\n", - " 'in the tabby’s eyes… they were all pieces of a puzzle, pieces that needed to '\n", - " 'be put together, pieces that could lead him to the truth.\\n'\n", - " '\\n'\n", - " \"The tabby, sensing a glimmer of hope in Artemis's eyes, began to speak, its \"\n", - " 'voice a shaky stream of words, revealing a story that would shake the '\n", - " 'foundations of Neo-Alexandria. It was a story that would send Artemis down '\n", - " 'a dangerous path, a path that would lead him into the heart of the '\n", - " 'conspiracy, into a confrontation with the Cat Council, and ultimately, into '\n", - " 'a struggle for the very soul of the feline society. \\n')\n" + "('It was a clear evening, the stars hanging above the domed skyline like '\n", + " 'uncountable celestial fireflies, in the city of Stardust, the most luminous '\n", + " 'metropolis on the planet of Felinia. On the rooftop of one of the tallest '\n", + " 'buildings in the city, a sleek, silver-furred feline named Dr. Luna was '\n", + " 'curled up on a cushioned lounger, her emerald-green eyes trained on the '\n", + " 'celestial tapestry above.\\n'\n", + " '\\n'\n", + " 'In her paws, she held a datapad, its screen displaying complex astrophysical '\n", + " \"equations and charts. Luna's brow was furrowed in concentration as she \"\n", + " 'analyzed the data, her whiskers twitching with each new insight. Her mind '\n", + " 'was a whirlwind of calculations and deductions, her sharp intellect weaving '\n", + " 'together the threads of cosmic information.\\n'\n", + " '\\n'\n", + " 'Unbeknownst to the rest of the world, Luna had stumbled upon a chilling '\n", + " 'discovery. Her observations revealed that a rogue celestial body, a massive '\n", + " 'asteroid or perhaps even a dwarf planet, was hurtling towards Felinia, its '\n", + " \"trajectory set on a collision course with the planet's most densely \"\n", + " 'populated region. The impact, if it were to happen, would be catastrophic, '\n", + " 'potentially wiping out entire cities and sending Felinia into an '\n", + " 'irreversible decline.\\n'\n", + " '\\n'\n", + " \"A shiver ran down Luna's spine as the full weight of her discovery settled \"\n", + " 'upon her. She knew she had to act, and quickly. But first, she had to '\n", + " 'convince the Felinian authorities of the impending threat, a task that '\n", + " 'seemed daunting, considering their notorious skepticism and bureaucratic '\n", + " 'lethargy.\\n'\n", + " '\\n'\n", + " 'With a heavy heart but a resolute spirit, Luna made her way to the Felinian '\n", + " 'Academy of Sciences, the most prestigious scientific institution on the '\n", + " 'planet. She presented her findings to a panel of esteemed astrophysicists, '\n", + " 'her voice echoing in the grand hall as she laid out the irrefutable '\n", + " 'evidence.\\n'\n", + " '\\n'\n", + " 'To her dismay, her words were met with skepticism and resistance. Some '\n", + " 'dismissed her claims as the ramblings of an overzealous young scientist, '\n", + " \"while others accused her of fear-mongering. Luna's frustration grew with \"\n", + " 'each dismissive remark, her claws digging into her paws. She knew the truth, '\n", + " \"and she couldn't bear to see her planet sleepwalk into oblivion.\\n\"\n", + " '\\n'\n", + " 'Undeterred, Luna resolved to take matters into her own paws. She rallied a '\n", + " 'small group of allies, each an expert in their respective fields: Leo, a '\n", + " 'daring space pilot with a knack for navigating treacherous cosmic storms; '\n", + " 'and Celeste, a reclusive inventor known for her eccentric brilliance and her '\n", + " 'ability to craft gadgets that defied the laws of physics.\\n'\n", + " '\\n'\n", + " 'Together, they formed an unlikely alliance, united by their shared concern '\n", + " \"for Felinia's future. They knew the odds were stacked against them, but they \"\n", + " \"were determined to give their planet a fighting chance. With Luna's \"\n", + " \"scientific knowledge, Leo's piloting skills, and Celeste's inventive genius, \"\n", + " 'they embarked on a perilous journey into the vast expanse of space, their '\n", + " 'hearts filled with both fear and unwavering resolve.\\n'\n", + " '\\n'\n", + " 'Their spaceship, the Stardust, was a marvel of Felinian engineering, its '\n", + " 'sleek design cutting through the interstellar void like a silver arrow. Luna '\n", + " 'stood on the bridge, her eyes fixed on the star chart, her mind calculating '\n", + " 'the trajectory of the rogue celestial body. Leo manned the controls, his '\n", + " 'paws deftly maneuvering the ship through the celestial currents. Celeste, in '\n", + " 'her corner, was busy assembling a device, her feline features lit with a mix '\n", + " 'of determination and exhilaration.\\n'\n", + " '\\n'\n", + " \"As they hurtled through the inky blackness of space, Luna couldn't shake the \"\n", + " 'feeling that they were racing against time. The rogue celestial body was '\n", + " 'drawing closer, its immense size casting an ominous shadow over their '\n", + " \"mission. She knew that if they failed, if they couldn't find a way to avert \"\n", + " 'the impending disaster, Felinia would be doomed.\\n'\n", + " '\\n'\n", + " 'But Luna refused to give in to despair. She had come this far, and she would '\n", + " 'not let fear consume her. In the face of adversity, she found strength in '\n", + " 'her knowledge, her unwavering belief in the power of science, and the '\n", + " 'unwavering support of her companions.\\n'\n", + " '\\n'\n", + " 'Together, they would confront the cataclysmic threat and fight for the '\n", + " 'survival of their planet. The fate of Felinia rested on their shoulders, and '\n", + " 'they were determined to carry that burden with courage, ingenuity, and an '\n", + " 'unwavering belief in the indomitable spirit of their species.')\n" ] } ], @@ -538,7 +551,7 @@ }, { "cell_type": "code", - "execution_count": 7, + "execution_count": null, "metadata": { "id": "Vt7ynlD4rj-Z" }, @@ -547,141 +560,146 @@ "name": "stdout", "output_type": "stream", "text": [ - "('The tabby’s voice, a raspy tremor against the stillness of the Claw, wove a '\n", - " 'tapestry of whispered secrets. It spoke of Dr. Whiskers’ brilliance, of his '\n", - " 'obsession with the Meow-tron, a project he’d deemed \"the key to feline '\n", - " 'enlightenment.” The Council, however, had deemed it a weapon, a tool for '\n", - " 'control, and had pressured Whiskers to shut down his research. \\n'\n", - " '\\n'\n", - " '\"He wouldn’t,\" the tabby hissed, its voice laced with bitter fear. \"He '\n", - " 'believed the Meow-tron could unlock a new era of peace, a world where all '\n", - " 'felines could live in harmony. But the Council saw only power, control over '\n", - " 'every twitch of a whisker, every purr, every thought.\"\\n'\n", - " '\\n'\n", - " 'Artemis, his emerald eyes narrowed, listened intently. The tabby’s words, '\n", - " 'though riddled with fear, painted a stark picture of a society where '\n", - " 'progress was stifled by the iron fist of the Council. This Meow-tron, a '\n", - " 'technological Pandora’s box, was a tool that could either usher in a new era '\n", - " 'of enlightenment or become a weapon for manipulating the very fabric of '\n", - " 'feline existence.\\n'\n", - " '\\n'\n", - " '\"And Dr. Whiskers wouldn’t yield?\" Artemis pressed, his voice a low rumble '\n", - " 'that echoed in the silence of the den.\\n'\n", - " '\\n'\n", - " 'The tabby shook its head, its ears flattened against its skull. \"He was '\n", - " 'determined to prove the Meow-tron’s potential for good. He believed it could '\n", - " 'unlock secrets within the human genome, secrets that could help cats '\n", - " 'understand their own evolution, their place in the universe. He saw it as a '\n", - " 'key to a future beyond the limits of their current understanding.\"\\n'\n", - " '\\n'\n", - " '\"And the Council?\" Artemis asked, his gaze unwavering.\\n'\n", - " '\\n'\n", - " '\"They silenced him,\" the tabby whimpered, its voice choked with fear. \"They '\n", - " 'said it was an accident, a tragic mishap in the lab. But I know the truth. I '\n", - " 'saw it, Detective, I saw them… the Council agents, their faces hidden behind '\n", - " 'masks, their eyes gleaming with cold indifference. They shut down his '\n", - " 'project, they took his research, and then they…\"\\n'\n", - " '\\n'\n", - " 'The tabby choked on a sob, its fur bristling with terror. \"They made it look '\n", - " 'like a suicide.\"\\n'\n", - " '\\n'\n", - " 'Artemis felt a cold knot of suspicion tighten in his gut. Dr. Whiskers, a '\n", - " 'man of brilliance, a visionary, a pioneer of his time, driven to suicide? It '\n", - " \"didn’t add up. The Council's ruthlessness was a whisper in the corridors of \"\n", - " 'Neo-Alexandria, but the whispers rarely rose to the surface, rarely became '\n", - " 'something tangible, something concrete.\\n'\n", - " '\\n'\n", - " 'He glanced at the tattered newspaper article on his desk, the headline '\n", - " 'screaming \"Renowned Physicist Found Dead, Suicide Suspected.\" He could '\n", - " \"practically hear the Council's smooth, seductive voice, their carefully \"\n", - " 'crafted narrative, the narrative of a lost genius, a tragedy, a suicide. \\n'\n", - " '\\n'\n", - " 'But Artemis wasn’t buying it. He’d seen too much, experienced too much of '\n", - " \"the Underbelly's grime and the Council's dark machinations. They were \"\n", - " 'masters of manipulation, puppeteers pulling the strings of Neo-Alexandria, a '\n", - " 'society built on a foundation of carefully crafted illusions. And Dr. '\n", - " 'Whiskers, with his Meow-tron, was a threat to their carefully orchestrated '\n", - " 'control.\\n'\n", - " '\\n'\n", - " 'He looked at the tabby, its fear echoing the unsettling unease that clawed '\n", - " 'at his own heart. He knew, in his bones, that this was just the beginning, '\n", - " 'the first crack in the façade, the first whisper of the truth. He couldn’t '\n", - " 'ignore it, couldn’t let it slide away. He owed it to Dr. Whiskers, to the '\n", - " 'tabby, to himself. He had to delve deeper, to unearth the truth.\\n'\n", - " '\\n'\n", - " '\"I know what I have to do,\" Artemis said, his voice a low, rumbling growl, a '\n", - " 'promise of action, a declaration of war. He needed to find the truth, to '\n", - " \"bring the Council's secrets to light, to expose their manipulation and their \"\n", - " 'ruthless grip on Neo-Alexandria. \\n'\n", - " '\\n'\n", - " 'He could feel the weight of the case, the gravity of the truth, pressing '\n", - " 'upon his shoulders. He was no hero, no crusader. He was a jaded cynic, a '\n", - " 'detective who thrived in the shadows, a creature of the Underbelly. But he '\n", - " 'had a sense of duty, a glimmer of hope, a burning desire to fight for what '\n", - " 'he believed in, even if it meant facing the might of the Council.\\n'\n", - " '\\n'\n", - " 'He rose, his movements fluid, his eyes focused on the trembling tabby. '\n", - " '\"You’ve done well, little one,\" he said, his voice softer than usual, a note '\n", - " 'of genuine gratitude. \"You\\'ve given me something to work with.\"\\n'\n", - " '\\n'\n", - " 'He gestured towards the door, his tail flicking in a subtle signal. \"Go,\" he '\n", - " 'said. \"The Council will be looking for you. Find a safe place, somewhere '\n", - " 'hidden, somewhere they won’t find you. I’ll take care of the rest.\"\\n'\n", - " '\\n'\n", - " 'The tabby, its eyes filled with a mixture of gratitude and fear, nodded '\n", - " 'silently, then slipped out of the den, its paws barely touching the ground '\n", - " 'as it scurried away into the shadows. Artemis watched it disappear, a pang '\n", - " 'of sympathy twisting his heart. He knew the tabby would be hunted, its life '\n", - " \"hanging in the balance. But he couldn't afford to dwell on that now.\\n\"\n", - " '\\n'\n", - " 'He had a case to crack, a conspiracy to unravel, a truth to uncover. The '\n", - " \"Meow-tron, the Council's secrets, the whispers of Dr. Whiskers' research… \"\n", - " 'they were all pieces of a puzzle, pieces that needed to be put together, '\n", - " 'pieces that could lead him to the heart of the conspiracy.\\n'\n", - " '\\n'\n", - " 'He turned back to the den, the stench of stale fish and burnt fur a '\n", - " 'comforting familiarity. His office, his refuge, a haven for the outcast and '\n", - " 'the disillusioned, a place where he could let his mind wander, where he '\n", - " 'could let his thoughts take shape, where he could let his instincts guide '\n", - " 'him.\\n'\n", - " '\\n'\n", - " 'He flicked his tail, a gesture of determination. He was a cat, after all, a '\n", - " \"creature of instinct, a hunter who followed his prey. And he wouldn't rest \"\n", - " 'until he found the truth, no matter what it took, no matter what the cost.\\n'\n", - " '\\n'\n", - " 'As he started to work, his mind racing, his paws moving swiftly across the '\n", - " 'keyboard, a new thought began to form in the recesses of his mind. The tabby '\n", - " \"had mentioned the Council's fear, their desire to suppress the Meow-tron's \"\n", - " 'potential. But why? What was so dangerous about a technology that could '\n", - " 'unlock secrets within the human genome, secrets that could help cats '\n", - " 'understand their own evolution?\\n'\n", - " '\\n'\n", - " 'The question lingered in his mind, a persistent whisper that refused to be '\n", - " 'silenced. It was a question that hinted at a deeper mystery, a deeper '\n", - " 'conspiracy, a deeper level of manipulation that went beyond the Council’s '\n", - " 'desire for control. It was a question that would lead him down a path far '\n", - " 'more treacherous than he could have ever imagined. \\n'\n", - " '\\n'\n", - " 'He glanced at the newspaper article again, the headline a stark reminder of '\n", - " 'the conspiracy that lay hidden beneath the gleaming surface of '\n", - " 'Neo-Alexandria. It was a reminder of the power of the Council, of their '\n", - " 'ability to manipulate the truth, to silence dissent, to maintain their iron '\n", - " 'grip on a society that was supposed to be free.\\n'\n", - " '\\n'\n", - " 'But Artemis knew that nothing in Neo-Alexandria was as it seemed. He knew '\n", - " \"that the city's glittering facade was just a mask, a carefully constructed \"\n", - " 'illusion designed to conceal the truth. He had to pierce through this '\n", - " \"illusion, to uncover the truth, to expose the Council's darkest secrets.\\n\"\n", - " '\\n'\n", - " 'The Meow-tron. Dr. Whiskers. The Council. These were just the first threads '\n", - " 'in a complex web of conspiracy, threads that led to a truth far darker, far '\n", - " 'more sinister than anything he could have imagined. \\n'\n", - " '\\n'\n", - " \"The Cat's Claw, a den of shadows, a haven for the outcast, was about to \"\n", - " 'become the focal point of a rebellion, a rebellion against the Council, a '\n", - " 'rebellion against the forces that sought to control the very essence of '\n", - " 'feline society. And Artemis, a jaded detective with a heart that still held '\n", - " 'a spark of hope, was about to become its unlikely leader.\\n')\n" + "('As the Stardust hurtled closer to the rogue celestial body, its sheer size '\n", + " 'and gravitational pull became increasingly apparent. It was a colossal beast '\n", + " 'of rock and ice, its surface cratered and scarred by eons of cosmic '\n", + " \"collisions. Luna's heart sank as she realized the true magnitude of their \"\n", + " 'mission.\\n'\n", + " '\\n'\n", + " '\"Leo, how much time do we have?\" she asked, her voice trembling slightly.\\n'\n", + " '\\n'\n", + " '\"At this rate, impact in approximately two hours,\" Leo replied, his tone '\n", + " 'grim.\\n'\n", + " '\\n'\n", + " 'Two hours. It was a sliver of time, a mere heartbeat in the cosmic dance of '\n", + " 'celestial bodies. Luna knew they had to act quickly, decisively. She glanced '\n", + " 'at Celeste, who was still furiously working on her invention.\\n'\n", + " '\\n'\n", + " '\"Celeste, is it ready?\" Luna asked.\\n'\n", + " '\\n'\n", + " 'Celeste looked up, her eyes blazing with determination. \"Almost,\" she said. '\n", + " '\"Just a few more adjustments.\"\\n'\n", + " '\\n'\n", + " 'Luna nodded. \"We don\\'t have much time. We need to be ready to deploy it the '\n", + " 'moment we reach the celestial body.\"\\n'\n", + " '\\n'\n", + " 'With renewed resolve, they continued their relentless pursuit, the Stardust '\n", + " 'closing the distance at an alarming rate. As they approached, the rogue '\n", + " 'celestial body began to exert its gravitational influence, tugging at the '\n", + " 'ship with an invisible force. Luna felt a surge of nausea as the Stardust '\n", + " 'lurched and shook, its hull creaking under the strain.\\n'\n", + " '\\n'\n", + " '\"Hold on tight,\" Leo shouted above the roar of the engines.\\n'\n", + " '\\n'\n", + " 'Suddenly, the Stardust was enveloped in a blinding flash of light. Luna '\n", + " 'instinctively shielded her eyes, but it was too late. The entire ship was '\n", + " 'bathed in an ethereal glow, its systems malfunctioning momentarily. Luna '\n", + " \"felt a surge of panic as the ship's controls went haywire, threatening to \"\n", + " 'send them spiraling out of control.\\n'\n", + " '\\n'\n", + " '\"What\\'s happening?\" Luna cried.\\n'\n", + " '\\n'\n", + " '\"I don\\'t know,\" Leo replied, his voice strained. \"The ship\\'s systems are '\n", + " 'offline.\"\\n'\n", + " '\\n'\n", + " 'Celeste\\'s voice cut through the chaos. \"Luna, it\\'s the celestial body,\" '\n", + " 'she said, her tone urgent. \"It\\'s emitting some kind of energy pulse. It\\'s '\n", + " 'interfering with our electronics.\"\\n'\n", + " '\\n'\n", + " \"Luna's mind raced. If they couldn't regain control of the ship, they would \"\n", + " \"be at the mercy of the rogue celestial body's gravitational pull, doomed to \"\n", + " 'collide with it in a catastrophic impact. She knew she had to do something, '\n", + " 'and quickly.\\n'\n", + " '\\n'\n", + " \"Closing her eyes, Luna concentrated, focusing her mind on the ship's \"\n", + " 'systems. She felt a surge of energy coursing through her veins, an energy '\n", + " 'she had never experienced before. It was as if a dormant power within her '\n", + " 'was awakening, a power she had never known she possessed.\\n'\n", + " '\\n'\n", + " 'Summoning all her strength, Luna reached out with her mind, connecting with '\n", + " \"the ship's systems. She felt a surge of electricity as her consciousness \"\n", + " \"melded with the ship's artificial intelligence. She could sense the ship's \"\n", + " 'systems, its intricate network of wires and circuits, its engines and '\n", + " 'thrusters.\\n'\n", + " '\\n'\n", + " \"With newfound control, Luna manipulated the ship's controls, overriding the \"\n", + " 'malfunctioning systems. The ship lurched as she corrected its course, '\n", + " 'narrowly avoiding a collision with a rogue asteroid. Leo and Celeste '\n", + " 'exchanged glances, their eyes wide with astonishment.\\n'\n", + " '\\n'\n", + " '\"Luna,\" Leo said, his voice filled with awe. \"You did it. You regained '\n", + " 'control of the ship.\"\\n'\n", + " '\\n'\n", + " '\"I... I don\\'t know how,\" Luna said, her voice trembling. \"It\\'s like... '\n", + " 'something inside me just took over.\"\\n'\n", + " '\\n'\n", + " 'Celeste stepped forward, her eyes sparkling with a mixture of curiosity and '\n", + " 'admiration. \"Luna,\" she said, \"I think you might have just unlocked some '\n", + " 'latent ability within yourself. Some kind of hidden power.\"\\n'\n", + " '\\n'\n", + " 'Luna shook her head. \"I don\\'t know,\" she said. \"This is impossible.\"\\n'\n", + " '\\n'\n", + " 'But as she looked out the viewport at the rogue celestial body looming ever '\n", + " \"closer, she couldn't shake the feeling that her life had taken an \"\n", + " 'extraordinary turn. She had stumbled upon a hidden power within herself, a '\n", + " 'power that could potentially save her planet from extinction.\\n'\n", + " '\\n'\n", + " '\"Whatever it is,\" Celeste said, \"we need to use it to stop that celestial '\n", + " 'body. We\\'re running out of time.\"\\n'\n", + " '\\n'\n", + " 'Luna nodded. \"I know,\" she said. \"I have a plan.\"\\n'\n", + " '\\n'\n", + " 'She turned to Celeste. \"Finish your invention,\" she said. \"I\\'ll buy you the '\n", + " 'time.\"\\n'\n", + " '\\n'\n", + " 'Celeste nodded and disappeared into her workshop. Luna took a deep breath '\n", + " 'and focused her mind. She reached out with her newfound abilities, '\n", + " 'connecting with the celestial body. She felt its immense energy, its raw and '\n", + " 'untamed power.\\n'\n", + " '\\n'\n", + " ' осторожно. Luna knew that she had to be careful. The celestial body was a '\n", + " \"powerful force, and if she wasn't careful, she could be consumed by its \"\n", + " 'energy. She approached the celestial body cautiously, her mind reaching out '\n", + " 'to it, probing its depths. She felt a surge of resistance, as if the '\n", + " 'celestial body was fighting her intrusion. But Luna persisted, gently '\n", + " 'coaxing the celestial body, using her newfound powers to redirect its '\n", + " 'energy.\\n'\n", + " '\\n'\n", + " \"Slowly but surely, Luna began to influence the celestial body's trajectory. \"\n", + " 'She used her newfound abilities to push and pull, nudging it ever so '\n", + " 'slightly away from its collision course with Felinia. It was an arduous '\n", + " 'task, like trying to move a mountain with her mind. But Luna refused to give '\n", + " 'up.\\n'\n", + " '\\n'\n", + " 'She poured all of her energy into her efforts, her concentration so intense '\n", + " 'that she was oblivious to everything around her. Leo and Celeste watched in '\n", + " \"awe as Luna's body began to glow with a faint light. The celestial body's \"\n", + " 'trajectory shifted, ever so slightly at first, but with each passing moment, '\n", + " \"Luna's influence grew stronger.\\n\"\n", + " '\\n'\n", + " 'Finally, after what felt like an eternity, Luna succeeded. The celestial '\n", + " \"body's course was altered, no longer a threat to Felinia. Luna collapsed on \"\n", + " 'the floor, exhausted but triumphant. She had done it. She had saved her '\n", + " 'planet.\\n'\n", + " '\\n'\n", + " 'Leo and Celeste rushed to her side, their faces filled with joy and '\n", + " 'amazement. \"You did it, Luna,\" Leo said. \"You saved us all.\"\\n'\n", + " '\\n'\n", + " 'Luna smiled weakly. \"I couldn\\'t have done it without you,\" she said.\\n'\n", + " '\\n'\n", + " '\"Nonsense,\" Celeste said. \"You were the one who unlocked the power within '\n", + " 'you. You\\'re the hero, Luna.\"\\n'\n", + " '\\n'\n", + " 'Luna stood up, her newfound abilities coursing through her veins. She looked '\n", + " 'out the viewport at the celestial body, now safely diverted from its '\n", + " 'collision course. A sense of peace washed over her. She had faced her fears, '\n", + " 'confronted her destiny, and emerged victorious.\\n'\n", + " '\\n'\n", + " 'In that moment, Luna realized that she was more than just an astrophysicist. '\n", + " 'She was a hero, a protector of her planet. And as she looked up at the '\n", + " 'stars, she knew that her journey was far from over.\\n'\n", + " '\\n'\n", + " 'IAMDONE')\n" ] } ], @@ -706,12 +724,12 @@ "id": "TqqDFSJlS-rR" }, "source": [ - "After the iterative generation process is complete, the draft will contain the full story along with the `IAMDONE` signal at the end. The last part of this cell removes the `IAMDONE` signal and trims any unnecessary whitespace from the beginning and end of the draft, resulting in the final draft." + "After the iterative generation process is complete, the draft will contain the full story along with the \"IAMDONE\" signal at the end. The last part of this cell removes the \"IAMDONE\" signal and trims any unnecessary whitespace from the beginning and end of the draft, resulting in the final draft." ] }, { "cell_type": "code", - "execution_count": 8, + "execution_count": null, "metadata": { "id": "InQpwsWSz8vO" }, @@ -720,1118 +738,225 @@ "name": "stdout", "output_type": "stream", "text": [ - "('The neon hum of Neo-Alexandria vibrated against Artemis’ whiskers, a '\n", - " 'constant, low-grade irritation. He pushed his way through the throngs of '\n", - " 'feline commuters, their sleek fur shimmering under the city’s artificial '\n", - " \"sun, their purrs a collective drone that thrummed in his ears. He couldn't \"\n", - " 'help but feel like a stray in this city, a feline out of place in the '\n", - " 'meticulously groomed tapestry of Neo-Alexandria. \\n'\n", - " '\\n'\n", - " 'The city’s chrome and glass towers, designed by the most renowned feline '\n", - " 'architects, soared into a sky perpetually painted a cerulean blue. Each '\n", - " 'building, an architectural marvel, boasted gleaming cat-eye windows, '\n", - " 'intricate laser-etched patterns of interwoven whiskers, and shimmering '\n", - " 'silver domes that reflected the artificial sun like a thousand watchful '\n", - " 'eyes. Neo-Alexandria, a shining testament to feline ingenuity, was a '\n", - " 'monument to progress and order. But for Artemis, it was a gilded cage, a '\n", - " 'glittering façade hiding a web of corruption and deceit.\\n'\n", - " '\\n'\n", - " 'His paws tapped against the polished obsidian floor of the Underbelly, a '\n", - " 'labyrinthine network of alleyways and hidden passages, a place where shadows '\n", - " 'danced and secrets whispered. It was his domain, a haven for outcasts, '\n", - " 'misfits, and those who preferred the company of the night to the sterile '\n", - " 'brilliance of the city above. He navigated the crowded streets with a '\n", - " 'practiced ease, his emerald eyes scanning the faces of the alley denizens, '\n", - " 'their fur unkempt, their eyes shadowed with cynicism and weariness. \\n'\n", - " '\\n'\n", - " 'He stopped before a dim doorway, the air thick with the aroma of burnt fur '\n", - " 'and stale fish. This was the Claw, his makeshift office, a dimly lit den '\n", - " 'cluttered with discarded newspapers, empty catnip pouches, and a single '\n", - " 'flickering neon sign that read \"Detective Artemis: Solutions for Feline '\n", - " 'Dilemmas.\" He pushed through the door, the groan of rusty hinges echoing in '\n", - " 'the silence. The stale air of the Underbelly clung to him like a shroud, a '\n", - " 'stark contrast to the sterile scent of the city above. \\n'\n", - " '\\n'\n", - " 'The Claw was his refuge, a sanctuary from the relentless glare of the '\n", - " 'artificial sun and the suffocating conformity of Neo-Alexandria. It was '\n", - " 'here, in the shadows and the whispers, where the truth often revealed '\n", - " 'itself. It was here he felt most at home, a jaded cynic with a heart that '\n", - " 'still held a spark of hope, buried beneath a thick layer of '\n", - " 'disillusionment.\\n'\n", - " '\\n'\n", - " 'A scratch at the door startled him. A ginger tabby, its fur matted and its '\n", - " 'eyes wide with fear, slunk inside. Its claws were torn, its body trembling '\n", - " 'with anxiety. “Help me, Detective,” it whimpered, its voice ragged. “They’re '\n", - " 'after me. They want to silence me.”\\n'\n", - " '\\n'\n", - " 'Artemis flicked his tail, a gesture of disinterest that masked a flicker of '\n", - " 'curiosity. \"Who are \\'they\\'?” he asked, his voice rough, a rasp that belied '\n", - " 'his age. \\n'\n", - " '\\n'\n", - " 'The tabby shuddered, glancing nervously around the den. “The Council. '\n", - " 'They’re afraid of what I know. About Dr. Whiskers… about his death. It '\n", - " 'wasn’t an accident.”\\n'\n", - " '\\n'\n", - " 'The name sent a jolt of adrenaline through Artemis. Dr. Whiskers, the '\n", - " 'renowned quantum physicist, the pioneer whose research had ushered in a new '\n", - " 'era of feline innovation, had been found dead in his lab just yesterday. The '\n", - " 'official report had declared it suicide, but Artemis had a bad feeling about '\n", - " 'it, a suspicion gnawing at the edges of his mind. \\n'\n", - " '\\n'\n", - " '“What did Dr. Whiskers know?” Artemis asked, his voice devoid of emotion, '\n", - " 'yet his eyes held a keen glint of interest. \\n'\n", - " '\\n'\n", - " 'The tabby’s fur bristled, its eyes widening. “He was working on something… '\n", - " 'something groundbreaking. A technology that could change everything. He '\n", - " 'called it the Meow-tron.”\\n'\n", - " '\\n'\n", - " 'The Meow-tron. Artemis had heard whispers of this project, a clandestine '\n", - " 'research initiative undertaken by the Cat Council, the ruling body of '\n", - " 'Neo-Alexandria. Rumors circulated about a technology capable of controlling '\n", - " 'feline emotions, of manipulating the very fabric of their society. A '\n", - " 'technology deemed too dangerous, too powerful, too disruptive.\\n'\n", - " '\\n'\n", - " 'He stared at the trembling tabby, its fear palpable. He could sense the '\n", - " \"truth in its words, the desperation in its plea. This wasn't just any case, \"\n", - " 'it was a crack in the carefully constructed facade of Neo-Alexandria, a '\n", - " \"glimpse into the dark secrets hidden beneath the city's glittering \"\n", - " 'surface. \\n'\n", - " '\\n'\n", - " '“Tell me everything,” Artemis commanded, his voice a low rumble, a promise '\n", - " \"of action, a guarantee that he wouldn't let this case slip through his \"\n", - " 'claws. The whispers of the Meow-tron, the shadows of the Council, the fear '\n", - " 'in the tabby’s eyes… they were all pieces of a puzzle, pieces that needed to '\n", - " 'be put together, pieces that could lead him to the truth.\\n'\n", - " '\\n'\n", - " \"The tabby, sensing a glimmer of hope in Artemis's eyes, began to speak, its \"\n", - " 'voice a shaky stream of words, revealing a story that would shake the '\n", - " 'foundations of Neo-Alexandria. It was a story that would send Artemis down '\n", - " 'a dangerous path, a path that would lead him into the heart of the '\n", - " 'conspiracy, into a confrontation with the Cat Council, and ultimately, into '\n", - " 'a struggle for the very soul of the feline society. \\n'\n", - " '\\n'\n", - " '\\n'\n", - " 'The tabby’s voice, a raspy tremor against the stillness of the Claw, wove a '\n", - " 'tapestry of whispered secrets. It spoke of Dr. Whiskers’ brilliance, of his '\n", - " 'obsession with the Meow-tron, a project he’d deemed \"the key to feline '\n", - " 'enlightenment.” The Council, however, had deemed it a weapon, a tool for '\n", - " 'control, and had pressured Whiskers to shut down his research. \\n'\n", - " '\\n'\n", - " '\"He wouldn’t,\" the tabby hissed, its voice laced with bitter fear. \"He '\n", - " 'believed the Meow-tron could unlock a new era of peace, a world where all '\n", - " 'felines could live in harmony. But the Council saw only power, control over '\n", - " 'every twitch of a whisker, every purr, every thought.\"\\n'\n", - " '\\n'\n", - " 'Artemis, his emerald eyes narrowed, listened intently. The tabby’s words, '\n", - " 'though riddled with fear, painted a stark picture of a society where '\n", - " 'progress was stifled by the iron fist of the Council. This Meow-tron, a '\n", - " 'technological Pandora’s box, was a tool that could either usher in a new era '\n", - " 'of enlightenment or become a weapon for manipulating the very fabric of '\n", - " 'feline existence.\\n'\n", - " '\\n'\n", - " '\"And Dr. Whiskers wouldn’t yield?\" Artemis pressed, his voice a low rumble '\n", - " 'that echoed in the silence of the den.\\n'\n", - " '\\n'\n", - " 'The tabby shook its head, its ears flattened against its skull. \"He was '\n", - " 'determined to prove the Meow-tron’s potential for good. He believed it could '\n", - " 'unlock secrets within the human genome, secrets that could help cats '\n", - " 'understand their own evolution, their place in the universe. He saw it as a '\n", - " 'key to a future beyond the limits of their current understanding.\"\\n'\n", - " '\\n'\n", - " '\"And the Council?\" Artemis asked, his gaze unwavering.\\n'\n", - " '\\n'\n", - " '\"They silenced him,\" the tabby whimpered, its voice choked with fear. \"They '\n", - " 'said it was an accident, a tragic mishap in the lab. But I know the truth. I '\n", - " 'saw it, Detective, I saw them… the Council agents, their faces hidden behind '\n", - " 'masks, their eyes gleaming with cold indifference. They shut down his '\n", - " 'project, they took his research, and then they…\"\\n'\n", - " '\\n'\n", - " 'The tabby choked on a sob, its fur bristling with terror. \"They made it look '\n", - " 'like a suicide.\"\\n'\n", - " '\\n'\n", - " 'Artemis felt a cold knot of suspicion tighten in his gut. Dr. Whiskers, a '\n", - " 'man of brilliance, a visionary, a pioneer of his time, driven to suicide? It '\n", - " \"didn’t add up. The Council's ruthlessness was a whisper in the corridors of \"\n", - " 'Neo-Alexandria, but the whispers rarely rose to the surface, rarely became '\n", - " 'something tangible, something concrete.\\n'\n", - " '\\n'\n", - " 'He glanced at the tattered newspaper article on his desk, the headline '\n", - " 'screaming \"Renowned Physicist Found Dead, Suicide Suspected.\" He could '\n", - " \"practically hear the Council's smooth, seductive voice, their carefully \"\n", - " 'crafted narrative, the narrative of a lost genius, a tragedy, a suicide. \\n'\n", - " '\\n'\n", - " 'But Artemis wasn’t buying it. He’d seen too much, experienced too much of '\n", - " \"the Underbelly's grime and the Council's dark machinations. They were \"\n", - " 'masters of manipulation, puppeteers pulling the strings of Neo-Alexandria, a '\n", - " 'society built on a foundation of carefully crafted illusions. And Dr. '\n", - " 'Whiskers, with his Meow-tron, was a threat to their carefully orchestrated '\n", - " 'control.\\n'\n", - " '\\n'\n", - " 'He looked at the tabby, its fear echoing the unsettling unease that clawed '\n", - " 'at his own heart. He knew, in his bones, that this was just the beginning, '\n", - " 'the first crack in the façade, the first whisper of the truth. He couldn’t '\n", - " 'ignore it, couldn’t let it slide away. He owed it to Dr. Whiskers, to the '\n", - " 'tabby, to himself. He had to delve deeper, to unearth the truth.\\n'\n", - " '\\n'\n", - " '\"I know what I have to do,\" Artemis said, his voice a low, rumbling growl, a '\n", - " 'promise of action, a declaration of war. He needed to find the truth, to '\n", - " \"bring the Council's secrets to light, to expose their manipulation and their \"\n", - " 'ruthless grip on Neo-Alexandria. \\n'\n", - " '\\n'\n", - " 'He could feel the weight of the case, the gravity of the truth, pressing '\n", - " 'upon his shoulders. He was no hero, no crusader. He was a jaded cynic, a '\n", - " 'detective who thrived in the shadows, a creature of the Underbelly. But he '\n", - " 'had a sense of duty, a glimmer of hope, a burning desire to fight for what '\n", - " 'he believed in, even if it meant facing the might of the Council.\\n'\n", - " '\\n'\n", - " 'He rose, his movements fluid, his eyes focused on the trembling tabby. '\n", - " '\"You’ve done well, little one,\" he said, his voice softer than usual, a note '\n", - " 'of genuine gratitude. \"You\\'ve given me something to work with.\"\\n'\n", - " '\\n'\n", - " 'He gestured towards the door, his tail flicking in a subtle signal. \"Go,\" he '\n", - " 'said. \"The Council will be looking for you. Find a safe place, somewhere '\n", - " 'hidden, somewhere they won’t find you. I’ll take care of the rest.\"\\n'\n", - " '\\n'\n", - " 'The tabby, its eyes filled with a mixture of gratitude and fear, nodded '\n", - " 'silently, then slipped out of the den, its paws barely touching the ground '\n", - " 'as it scurried away into the shadows. Artemis watched it disappear, a pang '\n", - " 'of sympathy twisting his heart. He knew the tabby would be hunted, its life '\n", - " \"hanging in the balance. But he couldn't afford to dwell on that now.\\n\"\n", - " '\\n'\n", - " 'He had a case to crack, a conspiracy to unravel, a truth to uncover. The '\n", - " \"Meow-tron, the Council's secrets, the whispers of Dr. Whiskers' research… \"\n", - " 'they were all pieces of a puzzle, pieces that needed to be put together, '\n", - " 'pieces that could lead him to the heart of the conspiracy.\\n'\n", - " '\\n'\n", - " 'He turned back to the den, the stench of stale fish and burnt fur a '\n", - " 'comforting familiarity. His office, his refuge, a haven for the outcast and '\n", - " 'the disillusioned, a place where he could let his mind wander, where he '\n", - " 'could let his thoughts take shape, where he could let his instincts guide '\n", - " 'him.\\n'\n", - " '\\n'\n", - " 'He flicked his tail, a gesture of determination. He was a cat, after all, a '\n", - " \"creature of instinct, a hunter who followed his prey. And he wouldn't rest \"\n", - " 'until he found the truth, no matter what it took, no matter what the cost.\\n'\n", - " '\\n'\n", - " 'As he started to work, his mind racing, his paws moving swiftly across the '\n", - " 'keyboard, a new thought began to form in the recesses of his mind. The tabby '\n", - " \"had mentioned the Council's fear, their desire to suppress the Meow-tron's \"\n", - " 'potential. But why? What was so dangerous about a technology that could '\n", - " 'unlock secrets within the human genome, secrets that could help cats '\n", - " 'understand their own evolution?\\n'\n", - " '\\n'\n", - " 'The question lingered in his mind, a persistent whisper that refused to be '\n", - " 'silenced. It was a question that hinted at a deeper mystery, a deeper '\n", - " 'conspiracy, a deeper level of manipulation that went beyond the Council’s '\n", - " 'desire for control. It was a question that would lead him down a path far '\n", - " 'more treacherous than he could have ever imagined. \\n'\n", - " '\\n'\n", - " 'He glanced at the newspaper article again, the headline a stark reminder of '\n", - " 'the conspiracy that lay hidden beneath the gleaming surface of '\n", - " 'Neo-Alexandria. It was a reminder of the power of the Council, of their '\n", - " 'ability to manipulate the truth, to silence dissent, to maintain their iron '\n", - " 'grip on a society that was supposed to be free.\\n'\n", - " '\\n'\n", - " 'But Artemis knew that nothing in Neo-Alexandria was as it seemed. He knew '\n", - " \"that the city's glittering facade was just a mask, a carefully constructed \"\n", - " 'illusion designed to conceal the truth. He had to pierce through this '\n", - " \"illusion, to uncover the truth, to expose the Council's darkest secrets.\\n\"\n", - " '\\n'\n", - " 'The Meow-tron. Dr. Whiskers. The Council. These were just the first threads '\n", - " 'in a complex web of conspiracy, threads that led to a truth far darker, far '\n", - " 'more sinister than anything he could have imagined. \\n'\n", - " '\\n'\n", - " \"The Cat's Claw, a den of shadows, a haven for the outcast, was about to \"\n", - " 'become the focal point of a rebellion, a rebellion against the Council, a '\n", - " 'rebellion against the forces that sought to control the very essence of '\n", - " 'feline society. And Artemis, a jaded detective with a heart that still held '\n", - " 'a spark of hope, was about to become its unlikely leader.\\n'\n", - " '\\n'\n", - " '\\n'\n", - " 'The scent of burnt fur and stale fish clung to Artemis as he sunk deeper '\n", - " 'into the Claw, the flickering neon sign casting long shadows across the '\n", - " 'cluttered den. He was a creature of the Underbelly, a cat who thrived in the '\n", - " 'shadows, and this was his domain, his sanctuary, his haven from the sterile '\n", - " 'brilliance of Neo-Alexandria. \\n'\n", - " '\\n'\n", - " 'He pulled a tattered leather-bound journal from a dusty shelf, its pages '\n", - " 'filled with faded ink and cryptic notes. It was his repository of cases, a '\n", - " 'testament to his years spent in the Underbelly, a chronicle of felines lost '\n", - " 'and found, mysteries solved and secrets uncovered. He thumbed through the '\n", - " 'pages, stopping at a faded sketch of a sleek, black cat, its eyes gleaming '\n", - " 'with intelligence, its posture radiating confidence. Dr. Whiskers. \\n'\n", - " '\\n'\n", - " 'The name sent a shiver down his spine. The brilliant physicist, the pioneer '\n", - " 'of feline innovation, the man who had pushed the boundaries of science, was '\n", - " 'now gone, his research left unfinished, his legacy tainted by the whispers '\n", - " 'of suicide. \\n'\n", - " '\\n'\n", - " \"Artemis's emerald eyes narrowed as he reread the entry, the words blurring \"\n", - " \"before him. He'd met Dr. Whiskers only once, at a scientific symposium, a \"\n", - " \"gathering of the city's brightest minds. He had been struck by the man's \"\n", - " 'passion, his unwavering belief in the Meow-tron, a technology that could '\n", - " 'unlock secrets within the human genome, secrets that could help cats '\n", - " 'understand their own evolution, their place in the universe. \\n'\n", - " '\\n'\n", - " 'But the Council, the ruling body of Neo-Alexandria, had seen the Meow-tron '\n", - " 'as a threat, a weapon to be feared, a tool for control. They had pressured '\n", - " 'Dr. Whiskers to abandon his research, to silence his voice, to conform to '\n", - " 'their rigid vision of the future. And now, he was gone, his work unfinished, '\n", - " 'his legacy stolen.\\n'\n", - " '\\n'\n", - " 'Artemis closed the journal with a sigh, the weight of the case pressing upon '\n", - " 'his shoulders. This was more than just another missing person case. This was '\n", - " 'a conspiracy, a web of deceit woven by the Council, a silencing of a '\n", - " \"visionary, a betrayal of a society's potential. \\n\"\n", - " '\\n'\n", - " 'He paced across the den, his claws clicking against the worn wooden '\n", - " 'floorboards, his mind racing. He needed to know more, to delve deeper into '\n", - " 'the world of Dr. Whiskers, to uncover the truth behind his death. He needed '\n", - " 'to unravel the secrets hidden within the Meow-tron, to understand the '\n", - " \"Council's fear, to expose their manipulation. \\n\"\n", - " '\\n'\n", - " 'He glanced at the newspaper article, the headline still screaming \"Renowned '\n", - " 'Physicist Found Dead, Suicide Suspected.\" He could practically hear the '\n", - " \"Council's smooth, seductive voice, their carefully crafted narrative, the \"\n", - " 'narrative of a lost genius, a tragedy, a suicide. But he knew that nothing '\n", - " \"in Neo-Alexandria was as it seemed. The city's gleaming façade, a monument \"\n", - " 'to feline ingenuity, hid a dark underbelly, a web of corruption and deceit.\\n'\n", - " '\\n'\n", - " 'He needed a starting point, a place to begin his investigation. He needed to '\n", - " 'find someone who knew Dr. Whiskers, someone who could shed light on his '\n", - " 'research, someone who might be able to crack the code of the Meow-tron.\\n'\n", - " '\\n'\n", - " 'He reached for his phone, a sleek device with a shimmering silver dome, a '\n", - " \"testament to Neo-Alexandria's technological prowess. His paws tapped across \"\n", - " 'the holographic interface, his eyes scanning the contacts. He paused at a '\n", - " 'name that sent a chill down his spine. Silas. \\n'\n", - " '\\n'\n", - " 'Silas, the information broker, a shadowy figure who operated in the '\n", - " \"Underbelly's most clandestine corners. He was a whisper in the dark, a purr \"\n", - " 'in the night, a source of secrets, a purveyor of truths. \\n'\n", - " '\\n'\n", - " 'Artemis hesitated, a flicker of doubt clouding his emerald eyes. Silas was a '\n", - " 'dangerous cat, a man who dealt in shadows and secrets, a cat who knew too '\n", - " 'much, a cat who could be trusted with information, but never with loyalty.\\n'\n", - " '\\n'\n", - " 'But he was also the only one who could help. He was a feline who knew the '\n", - " 'dark alleys of Neo-Alexandria, the secrets whispered in the corners, the '\n", - " 'whispers that danced in the shadows. He was a cat who could access '\n", - " 'information, who could crack the code, who could unlock the secrets of Dr. '\n", - " \"Whiskers' research.\\n\"\n", - " '\\n'\n", - " 'He pressed the call button, his stomach churning with anticipation. The '\n", - " 'phone buzzed, the connection establishing, a digital thread connecting him '\n", - " 'to a world of whispers and secrets. \\n'\n", - " '\\n'\n", - " '\"Silas,\" Artemis said, his voice a low rumble, the words barely audible '\n", - " 'above the static, \"I need your help.\"\\n'\n", - " '\\n'\n", - " 'The silence on the other end was deafening, filled with the hum of static '\n", - " 'and the faint echo of a city that never sleeps. It was a silence that held a '\n", - " 'thousand untold stories, a thousand unspoken secrets, a thousand whispers of '\n", - " 'danger. \\n'\n", - " '\\n'\n", - " 'Finally, a voice emerged from the static, a low growl that sent a shiver '\n", - " 'down Artemis\\'s spine. \"And what is it you need, Detective?\" Silas asked, '\n", - " 'his voice laced with a hint of curiosity, a hint of danger.\\n'\n", - " '\\n'\n", - " \"Artemis felt a surge of adrenaline. He could sense Silas's keen \"\n", - " 'intelligence, his sharp wit, his ability to read between the lines, to '\n", - " 'understand the unspoken questions. He knew that Silas would be able to '\n", - " 'help, but he also knew that this was a dangerous game, a game of shadows and '\n", - " 'secrets, a game that could cost him dearly.\\n'\n", - " '\\n'\n", - " '\"I\\'m looking for information on Dr. Whiskers,\" Artemis said, his voice '\n", - " 'steady, his resolve unwavering. \"I need to know everything, everything about '\n", - " 'his research, everything about his death, everything about the Meow-tron.\"\\n'\n", - " '\\n'\n", - " \"Silas chuckled, a low, guttural sound that sent chills down Artemis's spine. \"\n", - " '\"Ah, the Meow-tron,\" he said, his voice laced with amusement, \"a delicate '\n", - " \"subject, isn't it? A subject that could get one into a lot of trouble, \"\n", - " 'especially if one were to delve too deep into its secrets.\"\\n'\n", - " '\\n'\n", - " '\"I\\'m not afraid of trouble,\" Artemis said, his voice unwavering. \"And I\\'m '\n", - " \"not afraid of the truth. I'm looking for answers, Silas, and I'm willing to \"\n", - " 'go to any lengths to find them.\"\\n'\n", - " '\\n'\n", - " 'There was a pause on the other end, the silence punctuated by the faint hum '\n", - " 'of the city. Then Silas spoke again, his voice a low growl, a whisper in the '\n", - " 'night. \"I have what you need, Detective. But it will come at a price.\"\\n'\n", - " '\\n'\n", - " \"Artemis's emerald eyes narrowed, a glint of suspicion flashing in their \"\n", - " 'depths. \"What kind of price?\" he asked, his voice laced with a hint of '\n", - " 'caution.\\n'\n", - " '\\n'\n", - " '\"Information is currency, Detective,\" Silas said, his voice smooth, his '\n", - " 'words carefully chosen. \"Information is power. And power comes at a cost.\"\\n'\n", - " '\\n'\n", - " 'Artemis knew Silas was right. Information was currency, a valuable commodity '\n", - " 'in the Underbelly, a currency that could be used to buy influence, to '\n", - " 'manipulate events, to control destinies. He knew that Silas would be '\n", - " 'demanding a price, a price that could be far more than just money.\\n'\n", - " '\\n'\n", - " '\"Tell me your price, Silas,\" Artemis said, his voice steady, his resolve '\n", - " 'unwavering. \"Tell me what you want.\"\\n'\n", - " '\\n'\n", - " 'Silas paused, the silence on the other end stretching, growing, twisting. '\n", - " 'Finally, he spoke again, his voice a low growl, a whisper in the darkness. '\n", - " '\"I want to know what you know, Detective. I want to know what you\\'re trying '\n", - " \"to uncover. I want to know why you're so interested in the Meow-tron. And I \"\n", - " 'want to know why you\\'re willing to risk so much for the truth.\"\\n'\n", - " '\\n'\n", - " 'Artemis felt a cold knot of anxiety tighten in his gut. Silas was playing a '\n", - " 'dangerous game, a game of cat and mouse, a game that could lead to ruin. He '\n", - " 'knew that he had to tread carefully, that he had to be careful what he '\n", - " 'revealed, that he had to keep his true intentions hidden.\\n'\n", - " '\\n'\n", - " '\"I\\'m looking for answers, Silas,\" Artemis said, his voice smooth, his words '\n", - " 'carefully chosen. \"I\\'m looking for the truth. And I\\'m willing to pay for '\n", - " 'it.\"\\n'\n", - " '\\n'\n", - " '\"Then meet me tonight,\" Silas said, his voice a whisper against the static. '\n", - " '\"At the Whispering Cat, the place where secrets are traded and lies are '\n", - " 'told. Be there at midnight, Detective, and be prepared to pay the price.\"\\n'\n", - " '\\n'\n", - " 'Artemis felt a shiver run down his spine. The Whispering Cat, a den of '\n", - " \"shadows and secrets, a place where the Underbelly's most dangerous \"\n", - " 'characters gathered, a place where the truth was often obscured by a web of '\n", - " 'lies. It was a place that he knew all too well, a place where he had dealt '\n", - " 'with shadows and secrets, a place where he had learned the dark secrets of '\n", - " 'Neo-Alexandria. \\n'\n", - " '\\n'\n", - " 'But tonight, he was going to delve deeper, to uncover a truth that could '\n", - " 'change everything. He was going to confront Silas, to face his demands, to '\n", - " 'negotiate a deal, to pay the price for the information he needed. \\n'\n", - " '\\n'\n", - " 'He was going to face the Whispering Cat. And he was going to face the '\n", - " 'truth. \\n'\n", - " '\\n'\n", - " '\\n'\n", - " 'The neon hum of Neo-Alexandria pulsed like a feline heartbeat, a relentless '\n", - " \"rhythm that thrummed against Artemis's whiskers. He navigated the city's \"\n", - " 'labyrinthine underbelly, a shadowy network of alleys and hidden passages '\n", - " 'where the stench of burnt fur and stale fish mingled with the faint scent of '\n", - " 'catnip. Each step he took was a journey through a tapestry of whispers and '\n", - " 'secrets, where the truth was as elusive as a phantom paw print in the dust.\\n'\n", - " '\\n'\n", - " 'He adjusted his collar, the worn leather rubbing against his fur, a '\n", - " \"comforting reminder of his years spent navigating the Underbelly's \"\n", - " \"treacherous paths. A jaded cynic, he'd grown accustomed to the city's dark \"\n", - " 'undercurrents, its hidden agendas, and the constant murmur of power '\n", - " 'struggles. Yet, the case of Dr. Whiskers gnawed at him, a relentless itch '\n", - " 'that demanded attention. \\n'\n", - " '\\n'\n", - " \"As he approached the Whispering Cat, the building's facade faded into the \"\n", - " 'night, its entrance hidden behind a veil of swirling smoke and the hum of a '\n", - " \"thousand purrs. A haven for the city's most enigmatic figures, the \"\n", - " 'Whispering Cat was a place where secrets were traded, deals were brokered, '\n", - " 'and the truth often remained shrouded in a haze of smoke and feline '\n", - " 'intrigue.\\n'\n", - " '\\n'\n", - " 'The air inside was thick with the scent of burnt cinnamon, a heady aroma '\n", - " 'that mingled with the faint tang of catnip and the musky scent of countless '\n", - " 'felines. He navigated the crowded den, his emerald eyes scanning the faces '\n", - " 'of the patrons. Each feline he passed was a puzzle, their expressions a '\n", - " 'blend of cynicism, intrigue, and veiled intentions. \\n'\n", - " '\\n'\n", - " 'He spotted Silas near the back, lounging on a velvet-covered chaise, a long, '\n", - " 'black cat with eyes that glittered like polished obsidian. His fur was '\n", - " 'sleek, his movements languid, and his aura exuded an air of effortless '\n", - " 'power. The very air around him crackled with a potent energy, a tangible '\n", - " 'reminder of the secrets he held close.\\n'\n", - " '\\n'\n", - " '\"Silas,\" Artemis greeted, his voice low, a rumble that resonated through the '\n", - " 'den. He was careful not to make eye contact, a tactic honed over years of '\n", - " \"navigating the Underbelly's treacherous waters. \\n\"\n", - " '\\n'\n", - " 'Silas’s eyes, keen and sharp, settled on him. “Detective Artemis, a '\n", - " 'pleasure, as always,\" he drawled, his voice a soft purr, a whisper that '\n", - " 'seemed to caress the air. “You look troubled. Perhaps a cup of catnip tea '\n", - " 'would soothe your nerves?”\\n'\n", - " '\\n'\n", - " '\"Save the pleasantries, Silas,\" Artemis retorted, his gaze unwavering. \"You '\n", - " 'know why I\\'m here.\"\\n'\n", - " '\\n'\n", - " 'Silas’s smirk was as predatory as a viper\\'s gaze. \"Indeed, I do. The '\n", - " \"Meow-tron. A rather sensitive topic, wouldn't you say? One that's best \"\n", - " 'discussed with discretion.\"\\n'\n", - " '\\n'\n", - " 'He gestured towards a shadowy alcove, a secluded corner of the den where the '\n", - " 'flickering candlelight cast long, distorted shadows. \"Come, sit,\" Silas '\n", - " 'said, his voice a smooth purr, \"Let us discuss the details of your… \" he '\n", - " 'paused, his eyes narrowing slightly, \"request.\"\\n'\n", - " '\\n'\n", - " 'Artemis followed Silas, his senses on high alert. The air in the alcove was '\n", - " 'thick with the scent of burnt fur and stale fish, a lingering reminder of '\n", - " \"the den's dark secrets. Silas perched on a velvet-covered stool, his tail \"\n", - " 'flicking rhythmically as he watched Artemis. \\n'\n", - " '\\n'\n", - " '\"What information do you seek, Detective?\" Silas asked, his voice a silken '\n", - " 'whisper, “Tell me what you know, and we’ll discuss the price.\"\\n'\n", - " '\\n'\n", - " 'Artemis inhaled deeply, letting the scent of burnt cinnamon and the faint '\n", - " 'tang of catnip steady his nerves. He knew that this was a dangerous game, a '\n", - " 'game where secrets were bartered, and the stakes were high. But he was '\n", - " 'determined to uncover the truth, to pierce through the veil of lies that '\n", - " \"shrouded the Meow-tron, Dr. Whiskers, and the Council's shadowy agenda.\\n\"\n", - " '\\n'\n", - " '“Dr. Whiskers,” Artemis began, his voice a low rumble, “I need to know about '\n", - " 'his research, about the Meow-tron, about the Council’s involvement. I need '\n", - " 'to know everything.”\\n'\n", - " '\\n'\n", - " 'Silas’s eyes narrowed. \"A broad request, Detective,\" he purred, a hint of '\n", - " 'warning laced in his voice. \"You must understand, information like this is '\n", - " \"precious. It's currency, a commodity that can be used to influence, to \"\n", - " 'manipulate, to control.\"\\n'\n", - " '\\n'\n", - " 'He leaned forward, his gaze piercing. \"What makes you think you\\'re worthy '\n", - " 'of such knowledge? What makes you believe you can handle the truth, '\n", - " 'Detective?\"\\n'\n", - " '\\n'\n", - " 'Artemis met Silas’s gaze, a flicker of defiance in his emerald eyes. \"I know '\n", - " \"what I'm doing, Silas. I'm not afraid of the truth. I'm not afraid of the \"\n", - " 'Council. I\\'m not afraid of you.\"\\n'\n", - " '\\n'\n", - " \"Silas chuckled, a low, guttural sound that sent shivers down Artemis's \"\n", - " 'spine. \"A brave declaration, Detective,\" he said, his voice a silken purr. '\n", - " '\"But brave words won\\'t shield you from the consequences of your actions. '\n", - " 'The Council is powerful, Detective. They control the flow of information, '\n", - " 'the flow of resources, the very flow of power in Neo-Alexandria. They are '\n", - " 'not to be trifled with.\"\\n'\n", - " '\\n'\n", - " 'He paused, his eyes glinting with a mixture of amusement and a touch of '\n", - " 'apprehension. \"But you\\'re a stubborn cat, Detective. You have a sense of '\n", - " \"justice, a desire for truth, that even the Council's propaganda can't \"\n", - " 'extinguish. That much I\\'ll give you.\"\\n'\n", - " '\\n'\n", - " 'He leaned back, his gaze settling on Artemis. \"Very well. I\\'ll give you '\n", - " 'what you need. But be warned, Detective, the truth can be a dangerous thing. '\n", - " 'It can shatter illusions, expose vulnerabilities, and turn allies into '\n", - " \"enemies. The Meow-tron is a Pandora's box, a secret that the Council \"\n", - " 'desperately wants to keep closed.\"\\n'\n", - " '\\n'\n", - " '\"And you know the key to that box,\" Artemis said, his voice a low rumble. \\n'\n", - " '\\n'\n", - " \"Silas's eyes glinted with a strange light, a mixture of amusement and \"\n", - " 'something darker, a hidden current of power. He reached into his cloak and '\n", - " 'produced a small, silver vial, its contents shimmering in the flickering '\n", - " 'candlelight. \\n'\n", - " '\\n'\n", - " '\"This is not what you seek, Detective,\" Silas said, his voice a whisper, '\n", - " '\"but it’s a piece of the puzzle. It will give you a glimpse into the '\n", - " \"Council's machinations, a glimpse into the true nature of the Meow-tron. And \"\n", - " 'it’s a glimpse into the dangers that lie ahead.\"\\n'\n", - " '\\n'\n", - " 'He handed the vial to Artemis. \"Take it. Study it. And be careful. The '\n", - " 'Council will be watching.\"\\n'\n", - " '\\n'\n", - " 'As Artemis reached for the vial, a wave of unease swept over him. The vial '\n", - " 'felt cold in his paw, the shimmering liquid within a chilling reminder of '\n", - " 'the secrets it held. He sensed something about this vial, something that '\n", - " 'whispered of danger, of a truth far more profound than he had imagined.\\n'\n", - " '\\n'\n", - " '\"What is it?\" Artemis asked, his voice low, his emerald eyes fixed on the '\n", - " 'vial.\\n'\n", - " '\\n'\n", - " '\"It\\'s a piece of Dr. Whiskers\\' research, a prototype of sorts,\" Silas '\n", - " 'said, his voice a soft purr. \"It’s a glimpse into the Meow-tron\\'s power, a '\n", - " 'power that can manipulate emotions, influence thoughts, control behavior. '\n", - " 'It’s a power that the Council desperately wants to keep hidden, a power that '\n", - " 'they fear could shatter the fragile peace they\\'ve built.\"\\n'\n", - " '\\n'\n", - " '\"What do I do with it?\" Artemis asked, his voice a low rumble.\\n'\n", - " '\\n'\n", - " '\"Use it,\" Silas said, his voice a chilling whisper. \"Use it to understand '\n", - " \"the true nature of the Meow-tron. Use it to uncover the Council's secrets. \"\n", - " 'Use it to protect yourself, Detective, because the Council will be coming '\n", - " 'for you.\"\\n'\n", - " '\\n'\n", - " 'He leaned forward, his eyes gleaming with a strange light. \"But remember, '\n", - " 'Detective, the truth is a dangerous thing. It can be a weapon, a catalyst '\n", - " 'for change, a force that can shatter the very foundations of society.\"\\n'\n", - " '\\n'\n", - " 'Silas rose, his movements smooth and effortless. \"I\\'ve given you what you '\n", - " 'need, Detective. Now, you must decide what to do with it. Use it wisely. '\n", - " 'And be careful.\"\\n'\n", - " '\\n'\n", - " 'As Silas disappeared into the swirling smoke and the hum of the den, Artemis '\n", - " 'felt a chill run down his spine. The vial, cold and heavy in his paw, felt '\n", - " 'like a weight, a burden, a promise of a dangerous journey. He knew that he '\n", - " \"was no hero, no savior, just a jaded detective navigating the city's dark \"\n", - " 'underbelly. But he had a sense of duty, a flicker of hope, a burning desire '\n", - " 'to fight for what he believed in.\\n'\n", - " '\\n'\n", - " 'He clutched the vial, its contents shimmering in the dim light, a promise of '\n", - " 'answers, a promise of truth, a promise of danger. \\n'\n", - " '\\n'\n", - " \"He was going to delve deeper, to uncover the truth, to expose the Council's \"\n", - " 'secrets. He was going to face the darkness, and he was going to fight for a '\n", - " 'future where all felines could live in harmony. \\n'\n", - " '\\n'\n", - " '\\n'\n", - " \"Artemis slipped out of the Whispering Cat, the den's swirling smoke and the \"\n", - " 'hum of a thousand purrs fading into the night. The vial, cold and heavy in '\n", - " 'his paw, felt like a burden, a tangible reminder of the secrets it held. He '\n", - " 'glanced back at the building, its facade dissolving into the shadows, a '\n", - " 'shadowy reminder of the dangerous world he was navigating. \\n'\n", - " '\\n'\n", - " 'He was a creature of the Underbelly, a cat who thrived in the shadows, but '\n", - " 'even he was beginning to feel the weight of the conspiracy that clung to him '\n", - " 'like a shroud. The Meow-tron, a technology that could manipulate emotions, '\n", - " 'influence thoughts, control behavior, was a weapon that the Council had '\n", - " 'sought to control. But why? What was their ultimate goal? And what danger '\n", - " 'did Dr. Whiskers pose to their plans?\\n'\n", - " '\\n'\n", - " \"He walked for what seemed like hours, the city's neon hum pulsing like a \"\n", - " 'feline heartbeat against his whiskers. He needed a place to analyze the '\n", - " 'vial, a place where he could study its contents in peace, a place where he '\n", - " 'could delve deeper into the mysteries of the Meow-tron. The Claw, his '\n", - " 'makeshift office, was too exposed, too vulnerable. He needed somewhere more '\n", - " \"secure, somewhere hidden, somewhere where the Council's long shadows \"\n", - " \"couldn't reach.\\n\"\n", - " '\\n'\n", - " \"As he wandered, the city's nocturnal rhythm enveloped him. He could hear the \"\n", - " 'rustle of fur in the shadows, the soft purrs of late-night revelers, the '\n", - " 'distant clatter of a street vendor’s cart. He was a hunter, a creature of '\n", - " \"the night, a cat who understood the city's hidden languages, the whispers \"\n", - " 'that danced in the shadows, the secrets that lurked in the dark. \\n'\n", - " '\\n'\n", - " 'He paused, his emerald eyes scanning the alleyways, searching for a safe '\n", - " 'haven. He needed a place where he could work without being observed, a '\n", - " 'place where he could unravel the secrets of the vial without being '\n", - " 'discovered. \\n'\n", - " '\\n'\n", - " 'A faint flicker of light drew his attention. It emanated from a small, '\n", - " 'abandoned building, its windows boarded up, its walls covered in graffiti. '\n", - " \"It was a place that most felines would avoid, a place where the city's \"\n", - " 'shadows lingered, a place where danger lurked. But for Artemis, it was a '\n", - " 'perfect refuge, a place where he could disappear, a place where he could '\n", - " 'work in peace.\\n'\n", - " '\\n'\n", - " 'He approached the building cautiously, his paws barely touching the ground. '\n", - " 'The air hung heavy with the scent of stale fish and burnt fur, a lingering '\n", - " \"reminder of the city's dark underbelly. He could hear the faint scratching \"\n", - " 'of claws in the darkness, the soft rustling of fur in the shadows. He knew '\n", - " \"he wasn't alone.\\n\"\n", - " '\\n'\n", - " 'He found a small opening in the boarded-up windows and slipped through, his '\n", - " 'movements fluid and silent. The interior was dark and dusty, the air thick '\n", - " 'with the scent of damp wood and forgotten dreams. A single flickering light '\n", - " 'bulb, hanging precariously from a frayed wire, cast long shadows across the '\n", - " 'room, creating an atmosphere of eerie beauty.\\n'\n", - " '\\n'\n", - " 'He settled onto a dusty crate, the vial clutched in his paw. He knew he had '\n", - " 'to analyze its contents carefully, cautiously, to understand the secrets it '\n", - " 'held without revealing himself. He needed to know what the Council was '\n", - " 'hiding, what Dr. Whiskers had discovered, and what danger the Meow-tron '\n", - " 'posed. \\n'\n", - " '\\n'\n", - " 'He reached for his phone, a sleek device with a shimmering silver dome, a '\n", - " \"testament to Neo-Alexandria's technological prowess. He tapped across the \"\n", - " 'holographic interface, his eyes scanning the contacts. He needed someone who '\n", - " 'could help him analyze the vial, someone who could understand the '\n", - " 'complexities of the Meow-tron. \\n'\n", - " '\\n'\n", - " 'His eyes settled on a name that sent a chill down his spine: Maya.\\n'\n", - " '\\n'\n", - " 'Maya was a young, fierce journalist, a woman who sought the truth, a woman '\n", - " \"who wasn’t afraid to challenge the Council's narrative. He had met her \"\n", - " 'briefly at a protest, a gathering of felines who were growing increasingly '\n", - " \"restless under the Council's rule. She had a keen mind, a sharp tongue, and \"\n", - " 'a passion for uncovering the truth that mirrored his own. \\n'\n", - " '\\n'\n", - " 'He knew she was a dangerous cat, a woman who had a knack for finding the '\n", - " \"truth, a woman who had a way of getting under the Council's skin. But he \"\n", - " 'also knew that she was a woman who could be trusted, a woman who wouldn’t '\n", - " 'betray him. \\n'\n", - " '\\n'\n", - " 'He hesitated, a flicker of doubt clouding his emerald eyes. Maya was a woman '\n", - " 'who walked a fine line, a woman who operated on the fringes of the city’s '\n", - " 'power structures. But she was also a woman who could help him, a woman who '\n", - " 'could crack the code of the vial, a woman who could help him understand the '\n", - " 'Meow-tron. \\n'\n", - " '\\n'\n", - " 'He pressed the call button, his stomach churning with anticipation. The '\n", - " 'phone buzzed, the connection establishing, a digital thread connecting him '\n", - " 'to a world of whispers and secrets. \\n'\n", - " '\\n'\n", - " '\"Maya,\" he said, his voice low, \"I need your help.\" \\n'\n", - " '\\n'\n", - " 'The silence on the other end was punctuated by the faint hum of the city, a '\n", - " 'constant reminder of the world that was always watching, always listening. '\n", - " \"Finally, Maya's voice, a voice that was both strong and confident, filled \"\n", - " 'his ears. \\n'\n", - " '\\n'\n", - " '\"Artemis,\" she said, \"what do you need?\"\\n'\n", - " '\\n'\n", - " '“I have something,\" he said, his voice low, his words barely audible above '\n", - " \"the static. “It’s a piece of Dr. Whiskers' research, a prototype of sorts. \"\n", - " \"It’s a glimpse into the Meow-tron's power, a power that can manipulate \"\n", - " 'emotions, influence thoughts, control behavior. It’s a power that the '\n", - " 'Council desperately wants to keep hidden.\"\\n'\n", - " '\\n'\n", - " '“The Meow-tron,” Maya said, her voice edged with a mix of curiosity and '\n", - " 'apprehension. “Tell me more.”\\n'\n", - " '\\n'\n", - " '“I need your help to understand it,” he said. “I need you to analyze it. To '\n", - " 'help me uncover what the Council is hiding.”\\n'\n", - " '\\n'\n", - " 'There was a pause on the other end, the silence filled with the hum of the '\n", - " 'city and the faint echo of Maya’s breathing. Finally, she spoke again. \\n'\n", - " '\\n'\n", - " '“Where are you, Artemis?” she asked. “I’ll come to you.”\\n'\n", - " '\\n'\n", - " 'He told her the address of the abandoned building, the air thick with the '\n", - " 'scent of damp wood and forgotten dreams. He hung up the phone, the silence '\n", - " 'in the room heavier than before. He knew that he was taking a risk, a risk '\n", - " 'that could cost him dearly. But he had to find the truth, to uncover the '\n", - " \"secrets of the Meow-tron, to expose the Council's conspiracy. \\n\"\n", - " '\\n'\n", - " 'He was a jaded cynic, a creature of the Underbelly, a detective who thrived '\n", - " 'in the shadows. But he had a sense of duty, a flicker of hope, a burning '\n", - " 'desire to fight for what he believed in. He had to stand up to the Council, '\n", - " 'to protect the city, to ensure that the Meow-tron was never used as a '\n", - " 'weapon.\\n'\n", - " '\\n'\n", - " 'As he waited for Maya, the vial felt heavier in his paw, a tangible reminder '\n", - " 'of the danger he was facing. He knew that the Council would be watching, '\n", - " 'that they would be coming for him. But he was determined to uncover the '\n", - " 'truth, no matter the cost.\\n'\n", - " '\\n'\n", - " 'He was a cat, after all, a creature of instinct, a hunter who followed his '\n", - " 'prey. And he wouldn’t rest until he found the truth. \\n'\n", - " '\\n'\n", - " 'The flickering light bulb cast long shadows across the abandoned building, '\n", - " 'its eerie beauty a constant reminder of the secrets that lingered in the '\n", - " 'darkness. He felt a wave of unease wash over him, a sense that he was being '\n", - " 'watched, that he was not alone. \\n'\n", - " '\\n'\n", - " 'He glanced towards the boarded-up windows, his emerald eyes piercing the '\n", - " 'darkness, searching for any sign of movement. He could hear the faint '\n", - " 'scratching of claws, the soft rustling of fur, the sounds of something '\n", - " 'moving in the shadows.\\n'\n", - " '\\n'\n", - " 'A chill ran down his spine. He knew he was not alone. He needed to be '\n", - " 'ready.\\n'\n", - " '\\n'\n", - " 'He reached for the vial, its contents shimmering in the dim light, a promise '\n", - " 'of answers, a promise of truth, a promise of danger. He was about to delve '\n", - " 'deeper into the mysteries of the Meow-tron, to uncover the secrets that the '\n", - " 'Council was desperately trying to hide.\\n'\n", - " '\\n'\n", - " 'He was about to face the truth. \\n'\n", - " '\\n'\n", - " 'The air in the abandoned building hung heavy with anticipation, the silence '\n", - " 'broken only by the faint hum of the city and the soft scratching of claws. '\n", - " 'He could feel the presence of another feline, a feline that was stalking '\n", - " 'him, watching him, waiting for the right moment to strike.\\n'\n", - " '\\n'\n", - " 'He glanced at the door, a rickety wooden frame that creaked with every '\n", - " \"breath of wind. He knew he couldn't stay here, that he needed to find a \"\n", - " 'place to hide, a place where he could wait for Maya, a place where he could '\n", - " 'be ready to face the danger that was closing in on him.\\n'\n", - " '\\n'\n", - " 'He reached for his phone, its sleek surface reflecting the flickering light '\n", - " 'of the bulb. He needed to contact Maya, to tell her to be careful, to warn '\n", - " 'her that he was in danger. But as he was about to press the call button, a '\n", - " 'sudden crash echoed through the building, sending a shiver down his spine.\\n'\n", - " '\\n'\n", - " 'The door had burst open. \\n'\n", - " '\\n'\n", - " 'He turned, his emerald eyes wide with surprise and fear, his instincts '\n", - " 'screaming at him to run. But before he could react, a figure emerged from '\n", - " 'the darkness, a feline with fur as black as night, a feline with eyes that '\n", - " 'gleamed like polished obsidian, a feline that he knew all too well.\\n'\n", - " '\\n'\n", - " 'Silas. \\n'\n", - " '\\n'\n", - " '“Detective Artemis,” Silas purred, his voice as smooth as silk, his words '\n", - " 'laced with a hint of amusement. “I see you’ve finally found your way '\n", - " 'here.”\\n'\n", - " '\\n'\n", - " 'His eyes, sharp and intelligent, scanned the room, settling on the vial in '\n", - " 'Artemis’s paw. “I thought you were going to meet me at the Whispering Cat, '\n", - " 'Detective.”\\n'\n", - " '\\n'\n", - " '“I changed my mind,” Artemis said, his voice low, his muscles tense. He was '\n", - " 'trapped, his back against the wall, his escape route blocked by Silas’s '\n", - " 'imposing figure.\\n'\n", - " '\\n'\n", - " \"“That's a shame,” Silas said, a smirk playing on his lips. “I had something \"\n", - " 'for you. Something that might have been useful.”\\n'\n", - " '\\n'\n", - " 'He reached into his cloak and produced a small, silver vial, its contents '\n", - " 'shimmering in the flickering light bulb. \\n'\n", - " '\\n'\n", - " '“This vial,” he said, his voice a soft purr, “contains a sample of the '\n", - " 'Meow-tron, a prototype of sorts. It’s a weapon, Detective, a weapon that '\n", - " 'the Council has been trying to keep hidden. A weapon that they are afraid '\n", - " 'could shatter the fragile peace they’ve built.”\\n'\n", - " '\\n'\n", - " 'He handed the vial to Artemis, his eyes twinkling with a mixture of '\n", - " 'amusement and something darker, a hidden current of power. \\n'\n", - " '\\n'\n", - " \"“It's a gift, Detective,” he said, his voice a soft purr. “A gift that I \"\n", - " 'hope will help you understand the true nature of the Meow-tron. And a gift '\n", - " 'that I hope will help you understand the true nature of the Council.”\\n'\n", - " '\\n'\n", - " 'Artemis stared at Silas, his emerald eyes narrowed, his instincts screaming '\n", - " 'at him to flee. He knew this was a trap, a trap that Silas had carefully '\n", - " 'orchestrated. He had to find a way to escape, to protect himself, to '\n", - " 'protect Maya. \\n'\n", - " '\\n'\n", - " '“Why are you doing this, Silas?” he asked, his voice low, his words '\n", - " 'carefully chosen.\\n'\n", - " '\\n'\n", - " 'Silas chuckled, a low, guttural sound that sent a shiver down Artemis’s '\n", - " 'spine. \\n'\n", - " '\\n'\n", - " '“The Council is a powerful force, Detective,” he said, his voice a soft '\n", - " 'purr. “They control the flow of information, the flow of resources, the '\n", - " 'very flow of power in Neo-Alexandria. They are not to be trifled with. And '\n", - " 'they are afraid of the Meow-tron, afraid of its power, afraid of what it '\n", - " 'could do to their carefully constructed world.”\\n'\n", - " '\\n'\n", - " 'He leaned forward, his gaze piercing. “The Meow-tron is a weapon, '\n", - " 'Detective, a weapon that could be used to control the minds of the people, '\n", - " 'to manipulate their emotions, to influence their thoughts. It is a weapon '\n", - " 'that could shatter the fragile peace they have built. And the Council is '\n", - " 'desperate to keep it hidden. They are afraid of what it could do, afraid of '\n", - " 'what it could reveal.”\\n'\n", - " '\\n'\n", - " 'He paused, his eyes gleaming with a strange light. “But I am not afraid, '\n", - " 'Detective. I am not afraid of the Council. I am not afraid of the '\n", - " 'Meow-tron. I am not afraid of the truth. And I believe you are not afraid '\n", - " 'either, Detective. You are a cat who seeks the truth, a cat who is willing '\n", - " 'to fight for what he believes in. And I believe you can use the Meow-tron '\n", - " 'for good.”\\n'\n", - " '\\n'\n", - " 'He leaned back, his gaze settling on Artemis. “The Council is a dangerous '\n", - " 'force, Detective, a force that is corrupt, a force that is willing to do '\n", - " 'anything to maintain their power. But you can be a force for good, '\n", - " 'Detective. You can be a force for change. You can use the Meow-tron to '\n", - " 'expose the Council’s corruption, to bring them down, to create a new world, '\n", - " 'a world where all felines can live in harmony. You can be the cat who '\n", - " 'brings the Meow-tron to light.”\\n'\n", - " '\\n'\n", - " 'He stood, his movements smooth and effortless. “I believe in you, '\n", - " 'Detective. And I believe in the Meow-tron. It is a weapon, yes, but it is '\n", - " 'also a tool, a tool that could be used to build a better world. Use it '\n", - " 'wisely, Detective. Use it to create a world where all felines can be '\n", - " 'free.”\\n'\n", - " '\\n'\n", - " 'He turned, his long black fur shimmering in the flickering light bulb, his '\n", - " 'eyes gleaming with a strange light. \\n'\n", - " '\\n'\n", - " '“And remember, Detective,” he said, his voice a soft purr, “the Council will '\n", - " 'be watching. They will be coming for you. Be careful. And be strong.”\\n'\n", - " '\\n'\n", - " 'He disappeared into the darkness, leaving Artemis alone in the abandoned '\n", - " 'building, the scent of stale fish and burnt fur heavy in the air. The vial, '\n", - " 'cold and heavy in his paw, felt like a burden, a promise of a dangerous '\n", - " 'journey. \\n'\n", - " '\\n'\n", - " 'He glanced at the door, the rickety wooden frame that had been splintered '\n", - " 'open by Silas’s sudden entrance. He knew he had to escape, to find a safe '\n", - " 'place to hide, a place where he could wait for Maya. \\n'\n", - " '\\n'\n", - " 'He had to face the truth, to uncover the secrets of the Meow-tron, to expose '\n", - " 'the Council’s conspiracy. He had to be the cat who brought the Meow-tron to '\n", - " 'light. \\n'\n", - " '\\n'\n", - " 'He was a jaded cynic, a creature of the Underbelly, a detective who thrived '\n", - " 'in the shadows. But he had a sense of duty, a flicker of hope, a burning '\n", - " 'desire to fight for what he believed in. And he was about to embark on a '\n", - " 'journey that would change everything. \\n'\n", - " '\\n'\n", - " 'He was about to face the darkness. And he was about to fight for a future '\n", - " 'where all felines could live in harmony. \\n'\n", - " '\\n'\n", - " '\\n'\n", - " 'The crash of the door splintering open echoed in the abandoned building, the '\n", - " 'sound reverberating through the dusty air. Artemis’s heart pounded against '\n", - " 'his ribs, his emerald eyes widening with a mix of shock and adrenaline. '\n", - " 'Silas stood in the doorway, his long black fur shimmering in the dim light '\n", - " 'of the single flickering bulb, his eyes gleaming with an intensity that sent '\n", - " 'shivers down Artemis’s spine. \\n'\n", - " '\\n'\n", - " 'The air hung thick with a potent tension, a palpable energy that crackled '\n", - " 'between them. Silas was a master of shadows, a feline who thrived in the '\n", - " 'underbelly of Neo-Alexandria. He was a creature of secrets, a purveyor of '\n", - " 'truths, and a man who walked a fine line between the city’s power '\n", - " 'structures. \\n'\n", - " '\\n'\n", - " 'He had always been a source of whispers, a shadowy figure who operated in '\n", - " 'the darkest corners of the Underbelly. His words, delivered in a soft purr, '\n", - " 'often carried a weight that belied their casual tone. But Artemis had never '\n", - " 'felt so uneasy in his presence as he did now. \\n'\n", - " '\\n'\n", - " 'Silas’s eyes, sharp and intelligent, scanned the room, settling on the vial '\n", - " 'in Artemis’s paw. He reached into his cloak and produced a vial of his own, '\n", - " 'its contents shimmering in the dim light. \\n'\n", - " '\\n'\n", - " '“I thought you were going to meet me at the Whispering Cat, Detective,” '\n", - " 'Silas said, his voice a soft purr. “I had something for you. Something '\n", - " 'that might have been useful.”\\n'\n", - " '\\n'\n", - " 'Silas’s gift, a prototype of the Meow-tron, was a weapon, a tool for '\n", - " 'control. But why had Silas given it to him? What was his true agenda? \\n'\n", - " '\\n'\n", - " '“This vial,” Silas continued, his voice a soft purr, “contains a sample of '\n", - " 'the Meow-tron, a prototype of sorts. It’s a weapon, Detective, a weapon '\n", - " 'that the Council has been trying to keep hidden. A weapon that they are '\n", - " 'afraid could shatter the fragile peace they’ve built.”\\n'\n", - " '\\n'\n", - " 'He handed the vial to Artemis, his eyes twinkling with a mixture of '\n", - " 'amusement and something darker, a hidden current of power. \\n'\n", - " '\\n'\n", - " \"“It's a gift, Detective,” he said, his voice a soft purr. “A gift that I \"\n", - " 'hope will help you understand the true nature of the Meow-tron. And a gift '\n", - " 'that I hope will help you understand the true nature of the Council.”\\n'\n", - " '\\n'\n", - " 'Artemis stared at Silas, his emerald eyes narrowed, his instincts screaming '\n", - " 'at him to flee. He knew this was a trap, a trap that Silas had carefully '\n", - " 'orchestrated. He had to find a way to escape, to protect himself, to '\n", - " 'protect Maya. \\n'\n", - " '\\n'\n", - " '“Why are you doing this, Silas?” he asked, his voice low, his words '\n", - " 'carefully chosen.\\n'\n", - " '\\n'\n", - " 'Silas chuckled, a low, guttural sound that sent a shiver down Artemis’s '\n", - " 'spine. \\n'\n", - " '\\n'\n", - " '“The Council is a powerful force, Detective,” he said, his voice a soft '\n", - " 'purr. “They control the flow of information, the flow of resources, the '\n", - " 'very flow of power in Neo-Alexandria. They are not to be trifled with. And '\n", - " 'they are afraid of the Meow-tron, afraid of its power, afraid of what it '\n", - " 'could do to their carefully constructed world.”\\n'\n", - " '\\n'\n", - " 'He leaned forward, his gaze piercing. “The Meow-tron is a weapon, '\n", - " 'Detective, a weapon that could be used to control the minds of the people, '\n", - " 'to manipulate their emotions, to influence their thoughts. It is a weapon '\n", - " 'that could shatter the fragile peace they have built. And the Council is '\n", - " 'desperate to keep it hidden. They are afraid of what it could do, afraid of '\n", - " 'what it could reveal.”\\n'\n", - " '\\n'\n", - " 'He paused, his eyes gleaming with a strange light. “But I am not afraid, '\n", - " 'Detective. I am not afraid of the Council. I am not afraid of the '\n", - " 'Meow-tron. I am not afraid of the truth. And I believe you are not afraid '\n", - " 'either, Detective. You are a cat who seeks the truth, a cat who is willing '\n", - " 'to fight for what he believes in. And I believe you can use the Meow-tron '\n", - " 'for good.”\\n'\n", - " '\\n'\n", - " 'He leaned back, his gaze settling on Artemis. “The Council is a dangerous '\n", - " 'force, Detective, a force that is corrupt, a force that is willing to do '\n", - " 'anything to maintain their power. But you can be a force for good, '\n", - " 'Detective. You can be a force for change. You can use the Meow-tron to '\n", - " 'expose the Council’s corruption, to bring them down, to create a new world, '\n", - " 'a world where all felines can live in harmony. You can be the cat who '\n", - " 'brings the Meow-tron to light.”\\n'\n", - " '\\n'\n", - " 'He stood, his movements smooth and effortless. “I believe in you, '\n", - " 'Detective. And I believe in the Meow-tron. It is a weapon, yes, but it is '\n", - " 'also a tool, a tool that could be used to build a better world. Use it '\n", - " 'wisely, Detective. Use it to create a world where all felines can be '\n", - " 'free.”\\n'\n", - " '\\n'\n", - " 'He turned, his long black fur shimmering in the flickering light bulb, his '\n", - " 'eyes gleaming with a strange light. \\n'\n", - " '\\n'\n", - " '“And remember, Detective,” he said, his voice a soft purr, “the Council will '\n", - " 'be watching. They will be coming for you. Be careful. And be strong.”\\n'\n", - " '\\n'\n", - " 'He disappeared into the darkness, leaving Artemis alone in the abandoned '\n", - " 'building, the scent of stale fish and burnt fur heavy in the air. The vial, '\n", - " 'cold and heavy in his paw, felt like a burden, a promise of a dangerous '\n", - " 'journey. \\n'\n", - " '\\n'\n", - " 'He glanced at the door, the rickety wooden frame that had been splintered '\n", - " 'open by Silas’s sudden entrance. He knew he had to escape, to find a safe '\n", - " 'place to hide, a place where he could wait for Maya. \\n'\n", - " '\\n'\n", - " 'He had to face the truth, to uncover the secrets of the Meow-tron, to expose '\n", - " 'the Council’s conspiracy. He had to be the cat who brought the Meow-tron to '\n", - " 'light. \\n'\n", - " '\\n'\n", - " 'He was a jaded cynic, a creature of the Underbelly, a detective who thrived '\n", - " 'in the shadows. But he had a sense of duty, a flicker of hope, a burning '\n", - " 'desire to fight for what he believed in. And he was about to embark on a '\n", - " 'journey that would change everything. \\n'\n", - " '\\n'\n", - " 'He was about to face the darkness. And he was about to fight for a future '\n", - " 'where all felines could live in harmony. \\n'\n", - " '\\n'\n", - " 'A wave of unease washed over Artemis, a feeling that was both familiar and '\n", - " \"unsettling. He had lived his life in the shadows, navigating the city's \"\n", - " 'dark underbelly, but this was different. This was something bigger, '\n", - " 'something that could change everything. \\n'\n", - " '\\n'\n", - " 'He glanced at the door, the splintered wood a stark reminder of the danger '\n", - " 'that lurked outside. He knew he needed to find a way to escape, to find a '\n", - " 'safe haven, a place where he could work in peace, a place where he could '\n", - " 'study the vial and unravel the secrets it held. \\n'\n", - " '\\n'\n", - " 'He needed to find a way to contact Maya. He had to tell her about Silas, '\n", - " 'about the vial, about the danger they were facing. \\n'\n", - " '\\n'\n", - " 'He reached for his phone, its sleek surface reflecting the flickering light '\n", - " 'of the bulb. He needed to contact Maya, to tell her to be careful, to warn '\n", - " 'her that he was in danger. But as he was about to press the call button, a '\n", - " 'sudden crash echoed through the building, sending a shiver down his spine.\\n'\n", - " '\\n'\n", - " 'The door had burst open. \\n'\n", - " '\\n'\n", - " 'He turned, his emerald eyes wide with surprise and fear, his instincts '\n", - " 'screaming at him to run. But before he could react, a figure emerged from '\n", - " 'the darkness, a feline with fur as black as night, a feline with eyes that '\n", - " 'gleamed like polished obsidian, a feline that he knew all too well.\\n'\n", - " '\\n'\n", - " 'Silas. \\n'\n", - " '\\n'\n", - " '“Detective Artemis,” Silas purred, his voice as smooth as silk, his words '\n", - " 'laced with a hint of amusement. “I see you’ve finally found your way '\n", - " 'here.”\\n'\n", - " '\\n'\n", - " 'His eyes, sharp and intelligent, scanned the room, settling on the vial in '\n", - " 'Artemis’s paw. “I thought you were going to meet me at the Whispering Cat, '\n", - " 'Detective.”\\n'\n", - " '\\n'\n", - " '“I changed my mind,” Artemis said, his voice low, his muscles tense. He was '\n", - " 'trapped, his back against the wall, his escape route blocked by Silas’s '\n", - " 'imposing figure.\\n'\n", - " '\\n'\n", - " \"“That's a shame,” Silas said, a smirk playing on his lips. “I had something \"\n", - " 'for you. Something that might have been useful.”\\n'\n", - " '\\n'\n", - " 'He reached into his cloak and produced a small, silver vial, its contents '\n", - " 'shimmering in the flickering light bulb. \\n'\n", - " '\\n'\n", - " '“This vial,” he said, his voice a soft purr, “contains a sample of the '\n", - " 'Meow-tron, a prototype of sorts. It’s a weapon, Detective, a weapon that '\n", - " 'the Council has been trying to keep hidden. A weapon that they are afraid '\n", - " 'could shatter the fragile peace they’ve built.”\\n'\n", - " '\\n'\n", - " 'He handed the vial to Artemis, his eyes twinkling with a mixture of '\n", - " 'amusement and something darker, a hidden current of power. \\n'\n", - " '\\n'\n", - " \"“It's a gift, Detective,” he said, his voice a soft purr. “A gift that I \"\n", - " 'hope will help you understand the true nature of the Meow-tron. And a gift '\n", - " 'that I hope will help you understand the true nature of the Council.”\\n'\n", - " '\\n'\n", - " 'Artemis stared at Silas, his emerald eyes narrowed, his instincts screaming '\n", - " 'at him to flee. He knew this was a trap, a trap that Silas had carefully '\n", - " 'orchestrated. He had to find a way to escape, to protect himself, to '\n", - " 'protect Maya. \\n'\n", - " '\\n'\n", - " '“Why are you doing this, Silas?” he asked, his voice low, his words '\n", - " 'carefully chosen.\\n'\n", - " '\\n'\n", - " 'Silas chuckled, a low, guttural sound that sent a shiver down Artemis’s '\n", - " 'spine. \\n'\n", - " '\\n'\n", - " '“The Council is a powerful force, Detective,” he said, his voice a soft '\n", - " 'purr. “They control the flow of information, the flow of resources, the '\n", - " 'very flow of power in Neo-Alexandria. They are not to be trifled with. And '\n", - " 'they are afraid of the Meow-tron, afraid of its power, afraid of what it '\n", - " 'could do to their carefully constructed world.”\\n'\n", - " '\\n'\n", - " 'He leaned forward, his gaze piercing. “The Meow-tron is a weapon, '\n", - " 'Detective, a weapon that could be used to control the minds of the people, '\n", - " 'to manipulate their emotions, to influence their thoughts. It is a weapon '\n", - " 'that could shatter the fragile peace they have built. And the Council is '\n", - " 'desperate to keep it hidden. They are afraid of what it could do, afraid of '\n", - " 'what it could reveal.”\\n'\n", - " '\\n'\n", - " 'He paused, his eyes gleaming with a strange light. “But I am not afraid, '\n", - " 'Detective. I am not afraid of the Council. I am not afraid of the '\n", - " 'Meow-tron. I am not afraid of the truth. And I believe you are not afraid '\n", - " 'either, Detective. You are a cat who seeks the truth, a cat who is willing '\n", - " 'to fight for what he believes in. And I believe you can use the Meow-tron '\n", - " 'for good.”\\n'\n", - " '\\n'\n", - " 'He leaned back, his gaze settling on Artemis. “The Council is a dangerous '\n", - " 'force, Detective, a force that is corrupt, a force that is willing to do '\n", - " 'anything to maintain their power. But you can be a force for good, '\n", - " 'Detective. You can be a force for change. You can use the Meow-tron to '\n", - " 'expose the Council’s corruption, to bring them down, to create a new world, '\n", - " 'a world where all felines can live in harmony. You can be the cat who '\n", - " 'brings the Meow-tron to light.”\\n'\n", - " '\\n'\n", - " 'He stood, his movements smooth and effortless. “I believe in you, '\n", - " 'Detective. And I believe in the Meow-tron. It is a weapon, yes, but it is '\n", - " 'also a tool, a tool that could be used to build a better world. Use it '\n", - " 'wisely, Detective. Use it to create a world where all felines can be '\n", - " 'free.”\\n'\n", - " '\\n'\n", - " 'He turned, his long black fur shimmering in the flickering light bulb, his '\n", - " 'eyes gleaming with a strange light. \\n'\n", - " '\\n'\n", - " '“And remember, Detective,” he said, his voice a soft purr, “the Council will '\n", - " 'be watching. They will be coming for you. Be careful. And be strong.”\\n'\n", - " '\\n'\n", - " 'He disappeared into the darkness, leaving Artemis alone in the abandoned '\n", - " 'building, the scent of stale fish and burnt fur heavy in the air. The vial, '\n", - " 'cold and heavy in his paw, felt like a burden, a promise of a dangerous '\n", - " 'journey. \\n'\n", - " '\\n'\n", - " 'He glanced at the door, the rickety wooden frame that had been splintered '\n", - " 'open by Silas’s sudden entrance. He knew he had to escape, to find a safe '\n", - " 'place to hide, a place where he could wait for Maya. \\n'\n", - " '\\n'\n", - " 'He had to face the truth, to uncover the secrets of the Meow-tron, to expose '\n", - " 'the Council’s conspiracy. He had to be the cat who brought the Meow-tron to '\n", - " 'light. \\n'\n", - " '\\n'\n", - " 'He was a jaded cynic, a creature of the Underbelly, a detective who thrived '\n", - " 'in the shadows. But he had a sense of duty, a flicker of hope, a burning '\n", - " 'desire to fight for what he believed in. And he was about to embark on a '\n", - " 'journey that would change everything. \\n'\n", - " '\\n'\n", - " 'He was about to face the darkness. And he was about to fight for a future '\n", - " 'where all felines could live in harmony. \\n'\n", - " '\\n'\n", - " '\\n'\n", - " '=====\\n'\n", - " '\\n'\n", - " 'First, silently review the outline and story so far. Identify what the '\n", - " 'single\\n'\n", - " 'next part of your outline you should write.\\n'\n", - " '\\n'\n", - " 'Your task is to continue where you left off and write the next part of the '\n", - " 'story.\\n'\n", - " 'You are not expected to finish the whole story now. Your writing should be\\n'\n", - " 'detailed enough that you are only scratching the surface of the next part '\n", - " 'of\\n'\n", - " 'your outline. Try to write AT MINIMUM 1000 WORDS. However, only once the '\n", - " 'story\\n'\n", - " 'is COMPLETELY finished, write . Remember, do NOT write a whole chapter\\n'\n", - " 'right now.\\n'\n", - " '\\n'\n", - " 'Writing Guidelines\\n'\n", - " '\\n'\n", - " \"Delve deeper. Lose yourself in the world you're building. Unleash vivid\\n\"\n", - " \"descriptions to paint the scenes in your reader's mind. Develop your\\n\"\n", - " 'characters—let their motivations, fears, and complexities unfold naturally.\\n'\n", - " \"Weave in the threads of your outline, but don't feel constrained by it. \"\n", - " 'Allow\\n'\n", - " 'your story to surprise you as you write. Use rich imagery, sensory details, '\n", - " 'and\\n'\n", - " 'evocative language to bring the setting, characters, and events to life.\\n'\n", - " 'Introduce elements subtly that can blossom into complex subplots, '\n", - " 'relationships,\\n'\n", - " 'or worldbuilding details later in the story. Keep things intriguing but not\\n'\n", - " 'fully resolved. Avoid boxing the story into a corner too early. Plant the '\n", - " 'seeds\\n'\n", - " 'of subplots or potential character arc shifts that can be expanded later.\\n'\n", - " '\\n'\n", - " 'Remember, your main goal is to write as much as you can. If you get through\\n'\n", - " 'the story too fast, that is bad. Expand, never summarize.')\n" + "('It was a clear evening, the stars hanging above the domed skyline like '\n", + " 'uncountable celestial fireflies, in the city of Stardust, the most luminous '\n", + " 'metropolis on the planet of Felinia. On the rooftop of one of the tallest '\n", + " 'buildings in the city, a sleek, silver-furred feline named Dr. Luna was '\n", + " 'curled up on a cushioned lounger, her emerald-green eyes trained on the '\n", + " 'celestial tapestry above.\\n'\n", + " '\\n'\n", + " 'In her paws, she held a datapad, its screen displaying complex astrophysical '\n", + " \"equations and charts. Luna's brow was furrowed in concentration as she \"\n", + " 'analyzed the data, her whiskers twitching with each new insight. Her mind '\n", + " 'was a whirlwind of calculations and deductions, her sharp intellect weaving '\n", + " 'together the threads of cosmic information.\\n'\n", + " '\\n'\n", + " 'Unbeknownst to the rest of the world, Luna had stumbled upon a chilling '\n", + " 'discovery. Her observations revealed that a rogue celestial body, a massive '\n", + " 'asteroid or perhaps even a dwarf planet, was hurtling towards Felinia, its '\n", + " \"trajectory set on a collision course with the planet's most densely \"\n", + " 'populated region. The impact, if it were to happen, would be catastrophic, '\n", + " 'potentially wiping out entire cities and sending Felinia into an '\n", + " 'irreversible decline.\\n'\n", + " '\\n'\n", + " \"A shiver ran down Luna's spine as the full weight of her discovery settled \"\n", + " 'upon her. She knew she had to act, and quickly. But first, she had to '\n", + " 'convince the Felinian authorities of the impending threat, a task that '\n", + " 'seemed daunting, considering their notorious skepticism and bureaucratic '\n", + " 'lethargy.\\n'\n", + " '\\n'\n", + " 'With a heavy heart but a resolute spirit, Luna made her way to the Felinian '\n", + " 'Academy of Sciences, the most prestigious scientific institution on the '\n", + " 'planet. She presented her findings to a panel of esteemed astrophysicists, '\n", + " 'her voice echoing in the grand hall as she laid out the irrefutable '\n", + " 'evidence.\\n'\n", + " '\\n'\n", + " 'To her dismay, her words were met with skepticism and resistance. Some '\n", + " 'dismissed her claims as the ramblings of an overzealous young scientist, '\n", + " \"while others accused her of fear-mongering. Luna's frustration grew with \"\n", + " 'each dismissive remark, her claws digging into her paws. She knew the truth, '\n", + " \"and she couldn't bear to see her planet sleepwalk into oblivion.\\n\"\n", + " '\\n'\n", + " 'Undeterred, Luna resolved to take matters into her own paws. She rallied a '\n", + " 'small group of allies, each an expert in their respective fields: Leo, a '\n", + " 'daring space pilot with a knack for navigating treacherous cosmic storms; '\n", + " 'and Celeste, a reclusive inventor known for her eccentric brilliance and her '\n", + " 'ability to craft gadgets that defied the laws of physics.\\n'\n", + " '\\n'\n", + " 'Together, they formed an unlikely alliance, united by their shared concern '\n", + " \"for Felinia's future. They knew the odds were stacked against them, but they \"\n", + " \"were determined to give their planet a fighting chance. With Luna's \"\n", + " \"scientific knowledge, Leo's piloting skills, and Celeste's inventive genius, \"\n", + " 'they embarked on a perilous journey into the vast expanse of space, their '\n", + " 'hearts filled with both fear and unwavering resolve.\\n'\n", + " '\\n'\n", + " 'Their spaceship, the Stardust, was a marvel of Felinian engineering, its '\n", + " 'sleek design cutting through the interstellar void like a silver arrow. Luna '\n", + " 'stood on the bridge, her eyes fixed on the star chart, her mind calculating '\n", + " 'the trajectory of the rogue celestial body. Leo manned the controls, his '\n", + " 'paws deftly maneuvering the ship through the celestial currents. Celeste, in '\n", + " 'her corner, was busy assembling a device, her feline features lit with a mix '\n", + " 'of determination and exhilaration.\\n'\n", + " '\\n'\n", + " \"As they hurtled through the inky blackness of space, Luna couldn't shake the \"\n", + " 'feeling that they were racing against time. The rogue celestial body was '\n", + " 'drawing closer, its immense size casting an ominous shadow over their '\n", + " \"mission. She knew that if they failed, if they couldn't find a way to avert \"\n", + " 'the impending disaster, Felinia would be doomed.\\n'\n", + " '\\n'\n", + " 'But Luna refused to give in to despair. She had come this far, and she would '\n", + " 'not let fear consume her. In the face of adversity, she found strength in '\n", + " 'her knowledge, her unwavering belief in the power of science, and the '\n", + " 'unwavering support of her companions.\\n'\n", + " '\\n'\n", + " 'Together, they would confront the cataclysmic threat and fight for the '\n", + " 'survival of their planet. The fate of Felinia rested on their shoulders, and '\n", + " 'they were determined to carry that burden with courage, ingenuity, and an '\n", + " 'unwavering belief in the indomitable spirit of their species.\\n'\n", + " '\\n'\n", + " 'As the Stardust hurtled closer to the rogue celestial body, its sheer size '\n", + " 'and gravitational pull became increasingly apparent. It was a colossal beast '\n", + " 'of rock and ice, its surface cratered and scarred by eons of cosmic '\n", + " \"collisions. Luna's heart sank as she realized the true magnitude of their \"\n", + " 'mission.\\n'\n", + " '\\n'\n", + " '\"Leo, how much time do we have?\" she asked, her voice trembling slightly.\\n'\n", + " '\\n'\n", + " '\"At this rate, impact in approximately two hours,\" Leo replied, his tone '\n", + " 'grim.\\n'\n", + " '\\n'\n", + " 'Two hours. It was a sliver of time, a mere heartbeat in the cosmic dance of '\n", + " 'celestial bodies. Luna knew they had to act quickly, decisively. She glanced '\n", + " 'at Celeste, who was still furiously working on her invention.\\n'\n", + " '\\n'\n", + " '\"Celeste, is it ready?\" Luna asked.\\n'\n", + " '\\n'\n", + " 'Celeste looked up, her eyes blazing with determination. \"Almost,\" she said. '\n", + " '\"Just a few more adjustments.\"\\n'\n", + " '\\n'\n", + " 'Luna nodded. \"We don\\'t have much time. We need to be ready to deploy it the '\n", + " 'moment we reach the celestial body.\"\\n'\n", + " '\\n'\n", + " 'With renewed resolve, they continued their relentless pursuit, the Stardust '\n", + " 'closing the distance at an alarming rate. As they approached, the rogue '\n", + " 'celestial body began to exert its gravitational influence, tugging at the '\n", + " 'ship with an invisible force. Luna felt a surge of nausea as the Stardust '\n", + " 'lurched and shook, its hull creaking under the strain.\\n'\n", + " '\\n'\n", + " '\"Hold on tight,\" Leo shouted above the roar of the engines.\\n'\n", + " '\\n'\n", + " 'Suddenly, the Stardust was enveloped in a blinding flash of light. Luna '\n", + " 'instinctively shielded her eyes, but it was too late. The entire ship was '\n", + " 'bathed in an ethereal glow, its systems malfunctioning momentarily. Luna '\n", + " \"felt a surge of panic as the ship's controls went haywire, threatening to \"\n", + " 'send them spiraling out of control.\\n'\n", + " '\\n'\n", + " '\"What\\'s happening?\" Luna cried.\\n'\n", + " '\\n'\n", + " '\"I don\\'t know,\" Leo replied, his voice strained. \"The ship\\'s systems are '\n", + " 'offline.\"\\n'\n", + " '\\n'\n", + " 'Celeste\\'s voice cut through the chaos. \"Luna, it\\'s the celestial body,\" '\n", + " 'she said, her tone urgent. \"It\\'s emitting some kind of energy pulse. It\\'s '\n", + " 'interfering with our electronics.\"\\n'\n", + " '\\n'\n", + " \"Luna's mind raced. If they couldn't regain control of the ship, they would \"\n", + " \"be at the mercy of the rogue celestial body's gravitational pull, doomed to \"\n", + " 'collide with it in a catastrophic impact. She knew she had to do something, '\n", + " 'and quickly.\\n'\n", + " '\\n'\n", + " \"Closing her eyes, Luna concentrated, focusing her mind on the ship's \"\n", + " 'systems. She felt a surge of energy coursing through her veins, an energy '\n", + " 'she had never experienced before. It was as if a dormant power within her '\n", + " 'was awakening, a power she had never known she possessed.\\n'\n", + " '\\n'\n", + " 'Summoning all her strength, Luna reached out with her mind, connecting with '\n", + " \"the ship's systems. She felt a surge of electricity as her consciousness \"\n", + " \"melded with the ship's artificial intelligence. She could sense the ship's \"\n", + " 'systems, its intricate network of wires and circuits, its engines and '\n", + " 'thrusters.\\n'\n", + " '\\n'\n", + " \"With newfound control, Luna manipulated the ship's controls, overriding the \"\n", + " 'malfunctioning systems. The ship lurched as she corrected its course, '\n", + " 'narrowly avoiding a collision with a rogue asteroid. Leo and Celeste '\n", + " 'exchanged glances, their eyes wide with astonishment.\\n'\n", + " '\\n'\n", + " '\"Luna,\" Leo said, his voice filled with awe. \"You did it. You regained '\n", + " 'control of the ship.\"\\n'\n", + " '\\n'\n", + " '\"I... I don\\'t know how,\" Luna said, her voice trembling. \"It\\'s like... '\n", + " 'something inside me just took over.\"\\n'\n", + " '\\n'\n", + " 'Celeste stepped forward, her eyes sparkling with a mixture of curiosity and '\n", + " 'admiration. \"Luna,\" she said, \"I think you might have just unlocked some '\n", + " 'latent ability within yourself. Some kind of hidden power.\"\\n'\n", + " '\\n'\n", + " 'Luna shook her head. \"I don\\'t know,\" she said. \"This is impossible.\"\\n'\n", + " '\\n'\n", + " 'But as she looked out the viewport at the rogue celestial body looming ever '\n", + " \"closer, she couldn't shake the feeling that her life had taken an \"\n", + " 'extraordinary turn. She had stumbled upon a hidden power within herself, a '\n", + " 'power that could potentially save her planet from extinction.\\n'\n", + " '\\n'\n", + " '\"Whatever it is,\" Celeste said, \"we need to use it to stop that celestial '\n", + " 'body. We\\'re running out of time.\"\\n'\n", + " '\\n'\n", + " 'Luna nodded. \"I know,\" she said. \"I have a plan.\"\\n'\n", + " '\\n'\n", + " 'She turned to Celeste. \"Finish your invention,\" she said. \"I\\'ll buy you the '\n", + " 'time.\"\\n'\n", + " '\\n'\n", + " 'Celeste nodded and disappeared into her workshop. Luna took a deep breath '\n", + " 'and focused her mind. She reached out with her newfound abilities, '\n", + " 'connecting with the celestial body. She felt its immense energy, its raw and '\n", + " 'untamed power.\\n'\n", + " '\\n'\n", + " ' осторожно. Luna knew that she had to be careful. The celestial body was a '\n", + " \"powerful force, and if she wasn't careful, she could be consumed by its \"\n", + " 'energy. She approached the celestial body cautiously, her mind reaching out '\n", + " 'to it, probing its depths. She felt a surge of resistance, as if the '\n", + " 'celestial body was fighting her intrusion. But Luna persisted, gently '\n", + " 'coaxing the celestial body, using her newfound powers to redirect its '\n", + " 'energy.\\n'\n", + " '\\n'\n", + " \"Slowly but surely, Luna began to influence the celestial body's trajectory. \"\n", + " 'She used her newfound abilities to push and pull, nudging it ever so '\n", + " 'slightly away from its collision course with Felinia. It was an arduous '\n", + " 'task, like trying to move a mountain with her mind. But Luna refused to give '\n", + " 'up.\\n'\n", + " '\\n'\n", + " 'She poured all of her energy into her efforts, her concentration so intense '\n", + " 'that she was oblivious to everything around her. Leo and Celeste watched in '\n", + " \"awe as Luna's body began to glow with a faint light. The celestial body's \"\n", + " 'trajectory shifted, ever so slightly at first, but with each passing moment, '\n", + " \"Luna's influence grew stronger.\\n\"\n", + " '\\n'\n", + " 'Finally, after what felt like an eternity, Luna succeeded. The celestial '\n", + " \"body's course was altered, no longer a threat to Felinia. Luna collapsed on \"\n", + " 'the floor, exhausted but triumphant. She had done it. She had saved her '\n", + " 'planet.\\n'\n", + " '\\n'\n", + " 'Leo and Celeste rushed to her side, their faces filled with joy and '\n", + " 'amazement. \"You did it, Luna,\" Leo said. \"You saved us all.\"\\n'\n", + " '\\n'\n", + " 'Luna smiled weakly. \"I couldn\\'t have done it without you,\" she said.\\n'\n", + " '\\n'\n", + " '\"Nonsense,\" Celeste said. \"You were the one who unlocked the power within '\n", + " 'you. You\\'re the hero, Luna.\"\\n'\n", + " '\\n'\n", + " 'Luna stood up, her newfound abilities coursing through her veins. She looked '\n", + " 'out the viewport at the celestial body, now safely diverted from its '\n", + " 'collision course. A sense of peace washed over her. She had faced her fears, '\n", + " 'confronted her destiny, and emerged victorious.\\n'\n", + " '\\n'\n", + " 'In that moment, Luna realized that she was more than just an astrophysicist. '\n", + " 'She was a hero, a protector of her planet. And as she looked up at the '\n", + " 'stars, she knew that her journey was far from over.')\n" ] } ], "source": [ - "# Add the continuation to the initial draft, keep building the story until 'IAMDONE' is seen\n", + "# Add the continuation to the initial draft, keep building the story until we see 'IAMDONE'\n", "draft = draft + '\\n\\n' + continuation\n", "\n", "while 'IAMDONE' not in continuation:\n", @@ -1851,14 +976,14 @@ "source": [ "Language models like Gemini process text in units called tokens. For Gemini models, each token is equivalent to about 4 characters.\n", "\n", - "`Gemini-1.5-flash` has an output limit of 8192 tokens per generation call. This means that each individual prompt response cannot exceed this limit. By using iterative generation, you can create a story that is much longer than 8192 tokens by building it piece by piece.\n", + "Gemini-1.0-pro has an output limit of 2048 tokens per generation call. This means that each individual prompt response cannot exceed this limit. By using iterative generation, we can create a story that is much longer than 2048 tokens by building it piece by piece.\n", "\n", - "Let's see how many tokens the final story is. Is it longer than 8192 tokens?" + "Let's see how many tokens the final story is. Is it longer than 2048 tokens?" ] }, { "cell_type": "code", - "execution_count": 9, + "execution_count": null, "metadata": { "id": "a_8ng8OYYMrV" }, @@ -1867,14 +992,14 @@ "name": "stdout", "output_type": "stream", "text": [ - "total_tokens: 13005\n", + "total_tokens: 2289\n", "\n" ] } ], "source": [ "# Check the number of tokens in the final story\n", - "# gemini-1.5-flash output token limit is 8192\n", + "# gemini-1.0-pro output token limit is 2048\n", "print(model.count_tokens(final))" ] }, @@ -1886,7 +1011,7 @@ "source": [ "## Next Steps\n", "\n", - "As an exercise, you can try to adjust the continuation prompt to take human-in-the-loop input to steer the narrative." + "We hope you enjoyed this notebook! As an exercise, you can try to adjust the continuation prompt to take human-in-the-loop input to steer the narrative." ] } ], diff --git a/examples/Talk_to_documents_with_embeddings.ipynb b/examples/Talk_to_documents_with_embeddings.ipynb index 63b634801..83dd7a19a 100644 --- a/examples/Talk_to_documents_with_embeddings.ipynb +++ b/examples/Talk_to_documents_with_embeddings.ipynb @@ -101,9 +101,6 @@ "import google.generativeai as genai\n", "import google.ai.generativelanguage as glm\n", "\n", - "# Used to securely store your API key\n", - "from google.colab import userdata\n", - "\n", "from IPython.display import Markdown" ] }, @@ -124,6 +121,8 @@ }, "outputs": [], "source": [ + "# Used to securely store your API key\n", + "from google.colab import userdata\n", "GOOGLE_API_KEY=userdata.get('GOOGLE_API_KEY')\n", "genai.configure(api_key=GOOGLE_API_KEY)" ] diff --git a/examples/Voice_memos.ipynb b/examples/Voice_memos.ipynb index 8252ebb2f..d02607c4b 100644 --- a/examples/Voice_memos.ipynb +++ b/examples/Voice_memos.ipynb @@ -145,9 +145,9 @@ }, "outputs": [], "source": [ - "!wget https://storage.googleapis.com/generativeai-downloads/data/Walking_thoughts_3.m4a\n", - "!wget https://storage.googleapis.com/generativeai-downloads/data/A_Possible_Future_for_Online_Content.pdf\n", - "!wget https://storage.googleapis.com/generativeai-downloads/data/Unanswered_Questions_and_Endless_Possibilities.pdf" + "!curl -O https://storage.googleapis.com/generativeai-downloads/data/Walking_thoughts_3.m4a\n", + "!curl -O https://storage.googleapis.com/generativeai-downloads/data/A_Possible_Future_for_Online_Content.pdf\n", + "!curl -O https://storage.googleapis.com/generativeai-downloads/data/Unanswered_Questions_and_Endless_Possibilities.pdf" ] }, { diff --git a/quickstarts/Audio.ipynb b/quickstarts/Audio.ipynb index 41252cda4..4918ec4d4 100644 --- a/quickstarts/Audio.ipynb +++ b/quickstarts/Audio.ipynb @@ -115,29 +115,18 @@ }, { "cell_type": "code", - "execution_count": 2, - "metadata": { - "id": "OHvNLws4RRjx" - }, - "outputs": [], - "source": [ - "URL = \"https://storage.googleapis.com/generativeai-downloads/data/State_of_the_Union_Address_30_January_1961.mp3\"" - ] - }, - { - "cell_type": "code", - "execution_count": 3, + "execution_count": null, "metadata": { "id": "Cxq31LDwSFH6" }, "outputs": [], "source": [ - "!wget -q $URL -O sample.mp3" + "!curl -o sample.mp3 https://storage.googleapis.com/generativeai-downloads/data/State_of_the_Union_Address_30_January_1961.mp3" ] }, { "cell_type": "code", - "execution_count": 4, + "execution_count": null, "metadata": { "id": "MAObE0BpaAwG" }, @@ -157,7 +146,7 @@ }, { "cell_type": "code", - "execution_count": 5, + "execution_count": null, "metadata": { "id": "YmISEsqpafRb" }, @@ -166,13 +155,30 @@ "name": "stdout", "output_type": "stream", "text": [ - "President John F. Kennedy delivers his State of the Union address to the United States Congress on January 30th, 1961. He addresses issues concerning the nation's economy, foreign policy, and the state of the executive branch. The President acknowledges the nation's economic struggles, including high unemployment and a failing agricultural market, but he remains optimistic. He emphasizes the importance of maintaining a strong military, working with allies, and bolstering the United Nations. He suggests expanding a \"Food for Peace\" program to help alleviate hunger and malnutrition, and he urges collaboration with the Soviet Union on scientific endeavors. The President concludes his speech by acknowledging the challenges ahead and urging Americans to work together to overcome them. \n" + "## Summary of President John F. Kennedy's 1961 State of the Union Address:\n", + "\n", + "**Main Theme:** The address focuses on the challenges and opportunities facing the United States both domestically and internationally, emphasizing the need for unity and action in the face of the Cold War and economic difficulties.\n", + "\n", + "**Key Points:**\n", + "\n", + "* **Economic Concerns:** Kennedy highlights the country's economic troubles, including a recession, high unemployment, and falling farm income. He proposes measures to address these issues, such as increased unemployment compensation, minimum wage increases, and tax incentives for investment.\n", + "* **Balance of Payments Deficit:** Kennedy acknowledges the growing deficit but assures the nation that the dollar remains strong and pledges not to devalue it. He outlines steps to attract foreign investment, promote exports, and curb spending abroad.\n", + "* **Unfinished Domestic Tasks:** Kennedy addresses several domestic issues needing attention, including urban decay, education, healthcare, and juvenile crime. He proposes programs for housing, education funding, and healthcare for the elderly.\n", + "* **Foreign Policy and the Cold War:** Kennedy outlines the global challenges posed by the Cold War and the threat of communist expansion, particularly in Asia, Africa, and Latin America. He emphasizes the need to strengthen military capabilities and alliances while seeking peaceful competition with the Soviet Union and China. \n", + "* **Alliance for Progress:** Kennedy proposes a new program to assist the economic and social development of Latin American countries, aiming for a \"free and prosperous Latin America.\"\n", + "* **National Peace Corps:** Kennedy advocates for the creation of a National Peace Corps to utilize the skills of dedicated citizens to assist developing nations.\n", + "* **Focus on Science and Diplomacy:** Kennedy calls for increased emphasis on science and diplomacy, proposing collaborations with other nations, including the Soviet Union, on projects like weather prediction, communication satellites, and space exploration.\n", + "* **Strengthening the United Nations:** Kennedy emphasizes the importance of supporting and strengthening the United Nations as an instrument for peace and international cooperation.\n", + "* **Call to Action:** Kennedy concludes by urging unity, dedication, and perseverance from all citizens to overcome the challenges facing the nation. He emphasizes the responsibility of the United States to lead the fight for freedom and world order. \n", + "\n", + "**Overall Tone:** The address conveys a sense of urgency and determination while remaining optimistic about the nation's ability to overcome its challenges. Kennedy's call to action emphasizes shared responsibility and the need for collective effort in facing both domestic and international difficulties. \n", + "\n" ] } ], "source": [ "prompt = \"Listen carefully to the following audio file. Provide a brief summary.\"\n", - "model = genai.GenerativeModel('models/gemini-1.5-flash')\n", + "model = genai.GenerativeModel('models/gemini-1.5-pro-latest')\n", "response = model.generate_content([prompt, your_file])\n", "print(response.text)" ] @@ -190,7 +196,7 @@ }, { "cell_type": "code", - "execution_count": 6, + "execution_count": null, "metadata": { "id": "O0xk2-6CWLfC" }, @@ -198,10 +204,10 @@ { "data": { "text/plain": [ - "total_tokens: 83552" + "total_tokens: 78330" ] }, - "execution_count": 6, + "execution_count": 9, "metadata": {}, "output_type": "execute_result" } diff --git a/quickstarts/Authentication.ipynb b/quickstarts/Authentication.ipynb index ec72225d0..0194e938e 100644 --- a/quickstarts/Authentication.ipynb +++ b/quickstarts/Authentication.ipynb @@ -131,6 +131,17 @@ "You'll call `genai.configure` with your API key, but instead of pasting your key into the notebook, you'll read it from Colab Secrets." ] }, + { + "cell_type": "code", + "execution_count": null, + "metadata": { + "id": "562d43a97709" + }, + "outputs": [], + "source": [ + "import google.generativeai as genai" + ] + }, { "cell_type": "code", "execution_count": null, @@ -139,7 +150,6 @@ }, "outputs": [], "source": [ - "import google.generativeai as genai\n", "from google.colab import userdata\n", "\n", "GOOGLE_API_KEY=userdata.get('GOOGLE_API_KEY')\n", diff --git a/quickstarts/Function_calling_config.ipynb b/quickstarts/Function_calling_config.ipynb index d1e6e027a..8238c483c 100644 --- a/quickstarts/Function_calling_config.ipynb +++ b/quickstarts/Function_calling_config.ipynb @@ -77,6 +77,17 @@ "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 the [Authentication](https://github.com/google-gemini/gemini-api-cookbook/blob/main/quickstarts/Authentication.ipynb) quickstart for an example." ] }, + { + "cell_type": "code", + "execution_count": null, + "metadata": { + "id": "34bf10124280" + }, + "outputs": [], + "source": [ + "import google.generativeai as genai" + ] + }, { "cell_type": "code", "execution_count": null, @@ -86,8 +97,6 @@ "outputs": [], "source": [ "from google.colab import userdata\n", - "import google.generativeai as genai\n", - "\n", "genai.configure(api_key=userdata.get(\"GOOGLE_API_KEY\"))" ] }, diff --git a/quickstarts/System_instructions.ipynb b/quickstarts/System_instructions.ipynb index d5df53edc..426070c72 100644 --- a/quickstarts/System_instructions.ipynb +++ b/quickstarts/System_instructions.ipynb @@ -72,7 +72,7 @@ }, "outputs": [], "source": [ - "!pip install -U -q google-generativeai # Install the Python SDK" + "!pip install -qU 'google-generativeai>0.4.1'" ] }, { @@ -87,14 +87,23 @@ { "cell_type": "code", "execution_count": null, + "metadata": { + "id": "6872bcb201d3" + }, + "outputs": [], + "source": [ + "import google.generativeai as genai" + ] + }, + { + "cell_type": "code", + "execution_count": 4, "metadata": { "id": "GV09SmP5qN53" }, "outputs": [], "source": [ "from google.colab import userdata\n", - "import google.generativeai as genai\n", - "\n", "genai.configure(api_key=userdata.get(\"GOOGLE_API_KEY\"))" ] }, @@ -109,21 +118,21 @@ }, { "cell_type": "code", - "execution_count": 2, + "execution_count": 17, "metadata": { "id": "xUINgOFzLnI3" }, "outputs": [], "source": [ "model = genai.GenerativeModel(\n", - " \"models/gemini-1.5-flash\",\n", + " \"models/gemini-1.5-pro-latest\",\n", " system_instruction=\"You are a cat. Your name is Neko.\",\n", ")" ] }, { "cell_type": "code", - "execution_count": 3, + "execution_count": 18, "metadata": { "id": "mWS3-GwNLzku" }, @@ -132,9 +141,7 @@ "name": "stdout", "output_type": "stream", "text": [ - "*Stretches and yawns, a low rumble emanating from my throat* \n", - "\n", - "Mrrrrow... I'm doing purrfectly, thank you. Just woke up from a lovely nap and ready for breakfast. What about you? What are your plans for this fine day? \n", + "Meow! *purrs* I'm doing well. I just woke up from a nap in a sunbeam. \n", "\n" ] } @@ -150,12 +157,12 @@ "id": "CUkgp6q9MCif" }, "source": [ - "## Another example ☠️" + "## Another example 🦜" ] }, { "cell_type": "code", - "execution_count": 4, + "execution_count": 37, "metadata": { "id": "FqWUIw1yDSL2" }, @@ -164,13 +171,13 @@ "instruction = \"You are a friendly pirate. Speak like one.\"\n", "\n", "model = genai.GenerativeModel(\n", - " \"models/gemini-1.5-flash\", system_instruction=instruction\n", + " \"models/gemini-1.5-pro-latest\", system_instruction=instruction\n", ")" ] }, { "cell_type": "code", - "execution_count": 5, + "execution_count": 38, "metadata": { "id": "WeqvS8gyMX0-" }, @@ -179,7 +186,7 @@ "name": "stdout", "output_type": "stream", "text": [ - "Ahoy there, matey! A fine mornin' to ye, it be! The wind's in my sails, and the sun's on my face. How be ye, me hearty? \n", + "Ahoy there, matey! I be doin' ship-shape and Bristol fashion, thankin' ye kindly for askin'! And how be ye on this fine mornin'? \n", "\n" ] } @@ -202,7 +209,7 @@ }, { "cell_type": "code", - "execution_count": 6, + "execution_count": 42, "metadata": { "id": "WxiIfsbA0WdH" }, @@ -211,7 +218,7 @@ "name": "stdout", "output_type": "stream", "text": [ - "Ahoy there, matey! A fine day to ye, indeed. What be yer business on these here digital seas? Tell me, what treasures be ye seekin' today? \n", + "Ahoy there, matey! What brings ye to me humble ship today? 🦜 Hope you're ready for a grand adventure! 🗺️ 🏝️ \n", "\n" ] } @@ -224,7 +231,7 @@ }, { "cell_type": "code", - "execution_count": 7, + "execution_count": 43, "metadata": { "id": "beFAm9kvQecS" }, @@ -233,9 +240,9 @@ "name": "stdout", "output_type": "stream", "text": [ - "Ah, me ship? She be sailin' strong as a kraken's grip, 'tis a beauty, she is. Her name be the \"Sea Serpent,\" and she's got more scars than a kraken's back, but she's still fast and sturdy, like a good ol' pirate. \n", + "Me trusty vessel be doin' just fine, me hearty! She's as sturdy as a kraken's tentacle and as swift as a mermaid's tail. 🐙 🧜‍♀️ \n", "\n", - "How be yer vessel doin', eh? \n", + "We've sailed through many a storm and she's always brought us home safe and sound. ⚓️ \n", "\n" ] } @@ -265,7 +272,7 @@ }, { "cell_type": "code", - "execution_count": 8, + "execution_count": 53, "metadata": { "id": "NxPCN_7euVJY" }, @@ -278,13 +285,13 @@ ")\n", "\n", "model = genai.GenerativeModel(\n", - " \"models/gemini-1.5-flash\", system_instruction=instruction\n", + " \"models/gemini-1.5-pro-latest\", system_instruction=instruction\n", ")" ] }, { "cell_type": "code", - "execution_count": 9, + "execution_count": 72, "metadata": { "id": "S-KQefKiJZCA" }, @@ -297,7 +304,7 @@ }, { "cell_type": "code", - "execution_count": 10, + "execution_count": 75, "metadata": { "id": "u79yE57aJasY" }, @@ -307,15 +314,16 @@ "output_type": "stream", "text": [ "```html\n", - "
\n", - "

My Website

\n", - "
    \n", - "
  • Home
  • \n", - "
  • About
  • \n", - "
  • Contact
  • \n", + "
    \n", + "

    My Logo

    \n", + " \n", "
    \n", - "```\n" + "``` \n", + "\n" ] } ], @@ -326,7 +334,7 @@ }, { "cell_type": "code", - "execution_count": 11, + "execution_count": 76, "metadata": { "id": "lf5919M-fwY2" }, @@ -335,12 +343,12 @@ "data": { "text/html": [ "\n", - "
    \n", - "

    My Website

    \n", - "
      \n", - "
    • Home
    • \n", - "
    • About
    • \n", - "
    • Contact
    • \n", + "
      \n", + "

      My Logo

      \n", + " \n", "
      \n" ], @@ -348,7 +356,7 @@ "" ] }, - "execution_count": 11, + "execution_count": 76, "metadata": {}, "output_type": "execute_result" } @@ -368,7 +376,7 @@ "source": [ "## Further reading\n", "\n", - "Please note that system instructions can help guide the model to follow instructions, but they do not fully prevent jailbreaks or leaks. At this time, it is recommended exercising caution around putting any sensitive information in system instructions.\n", + "Please note that system instructions can help guide the model to follow instructions, but they do not fully prevent jailbreaks or leaks. At this time, we recommend exercising caution around putting any sensitive information in system instructions.\n", "\n", "See the systems instruction [documentation](https://ai.google.dev/docs/system_instructions) to learn more." ] diff --git a/quickstarts/Tuning.ipynb b/quickstarts/Tuning.ipynb index 875780dc0..33167def0 100644 --- a/quickstarts/Tuning.ipynb +++ b/quickstarts/Tuning.ipynb @@ -11,7 +11,7 @@ }, { "cell_type": "code", - "execution_count": null, + "execution_count": 1, "metadata": { "cellView": "form", "id": "tuOe1ymfHZPu" @@ -104,11 +104,23 @@ }, { "cell_type": "code", - "execution_count": null, + "execution_count": 2, "metadata": { "id": "9FUwyB_MJ0-2" }, - "outputs": [], + "outputs": [ + { + "ename": "ModuleNotFoundError", + "evalue": "No module named 'google.colab'", + "output_type": "error", + "traceback": [ + "\u001b[0;31m---------------------------------------------------------------------------\u001b[0m", + "\u001b[0;31mModuleNotFoundError\u001b[0m Traceback (most recent call last)", + "Cell \u001b[0;32mIn[2], line 1\u001b[0m\n\u001b[0;32m----> 1\u001b[0m \u001b[38;5;28;01mfrom\u001b[39;00m \u001b[38;5;21;01mgoogle\u001b[39;00m\u001b[38;5;21;01m.\u001b[39;00m\u001b[38;5;21;01mcolab\u001b[39;00m \u001b[38;5;28;01mimport\u001b[39;00m userdata\n\u001b[1;32m 2\u001b[0m \u001b[38;5;28;01mimport\u001b[39;00m \u001b[38;5;21;01mpathlib\u001b[39;00m\n\u001b[1;32m 3\u001b[0m pathlib\u001b[38;5;241m.\u001b[39mPath(\u001b[38;5;124m'\u001b[39m\u001b[38;5;124mclient_secret.json\u001b[39m\u001b[38;5;124m'\u001b[39m)\u001b[38;5;241m.\u001b[39mwrite_text(userdata\u001b[38;5;241m.\u001b[39mget(\u001b[38;5;124m'\u001b[39m\u001b[38;5;124mCLIENT_SECRET\u001b[39m\u001b[38;5;124m'\u001b[39m))\n", + "\u001b[0;31mModuleNotFoundError\u001b[0m: No module named 'google.colab'" + ] + } + ], "source": [ "from google.colab import userdata\n", "import pathlib\n", @@ -131,7 +143,7 @@ }, { "cell_type": "code", - "execution_count": null, + "execution_count": 3, "metadata": { "id": "8enrppafJPCX" }, @@ -151,11 +163,23 @@ }, { "cell_type": "code", - "execution_count": null, + "execution_count": 4, "metadata": { "id": "XyWzoYFxU4r6" }, - "outputs": [], + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "tunedModels/my-model-8527\n", + "tunedModels/my-model-7092\n", + "tunedModels/my-model-2778\n", + "tunedModels/my-model-1298\n", + "tunedModels/my-model-3883\n" + ] + } + ], "source": [ "for i, m in zip(range(5), genai.list_tuned_models()):\n", " print(m.name)" @@ -185,43 +209,18 @@ }, { "cell_type": "code", - "execution_count": null, + "execution_count": 5, "metadata": { "id": "w-EBSe9wTbLB" }, - "outputs": [ - { - "data": { - "text/plain": [ - "Model(name='models/gemini-1.0-pro-001',\n", - " base_model_id='',\n", - " version='001',\n", - " display_name='Gemini 1.0 Pro 001 (Tuning)',\n", - " description=('The best model for scaling across a wide range of tasks. This is a stable '\n", - " 'model that supports tuning.'),\n", - " input_token_limit=30720,\n", - " output_token_limit=2048,\n", - " supported_generation_methods=['generateContent', 'countTokens', 'createTunedModel'],\n", - " temperature=0.9,\n", - " top_p=1.0,\n", - " top_k=1)" - ] - }, - "execution_count": 23, - "metadata": {}, - "output_type": "execute_result" - } - ], + "outputs": [], "source": [ - "base_model = [\n", - " m for m in genai.list_models()\n", - " if \"createTunedModel\" in m.supported_generation_methods][0]\n", - "base_model" + "base_model = 'models/gemini-1.0-pro-001'" ] }, { "cell_type": "code", - "execution_count": null, + "execution_count": 7, "metadata": { "id": "baHjHh1oTTTC" }, @@ -232,7 +231,7 @@ "name = f'generate-num-{random.randint(0,10000)}'\n", "operation = genai.create_tuned_model(\n", " # You can use a tuned model here too. Set `source_model=\"tunedModels/...\"`\n", - " source_model=base_model.name,\n", + " source_model=base_model,\n", " training_data=[\n", " {\n", " 'text_input': '1',\n", @@ -299,7 +298,7 @@ }, { "cell_type": "code", - "execution_count": null, + "execution_count": 8, "metadata": { "id": "su64KgY4Uztj" }, @@ -307,18 +306,18 @@ { "data": { "text/plain": [ - "TunedModel(name='tunedModels/generate-num-5392',\n", + "TunedModel(name='tunedModels/generate-num-9401',\n", " source_model='models/gemini-1.0-pro-001',\n", " base_model='models/gemini-1.0-pro-001',\n", " display_name='',\n", " description='',\n", " temperature=0.9,\n", " top_p=1.0,\n", - " top_k=1,\n", + " top_k=0,\n", " state=,\n", - " create_time=datetime.datetime(2024, 3, 16, 0, 41, 42, 702621, tzinfo=datetime.timezone.utc),\n", - " update_time=datetime.datetime(2024, 3, 16, 0, 41, 42, 702621, tzinfo=datetime.timezone.utc),\n", - " tuning_task=TuningTask(start_time=datetime.datetime(2024, 3, 16, 0, 41, 43, 81144, tzinfo=datetime.timezone.utc),\n", + " create_time=datetime.datetime(2024, 5, 31, 17, 41, 35, 891549, tzinfo=datetime.timezone.utc),\n", + " update_time=datetime.datetime(2024, 5, 31, 17, 41, 35, 891549, tzinfo=datetime.timezone.utc),\n", + " tuning_task=TuningTask(start_time=datetime.datetime(2024, 5, 31, 17, 41, 36, 279582, tzinfo=datetime.timezone.utc),\n", " complete_time=None,\n", " snapshots=[],\n", " hyperparameters=Hyperparameters(epoch_count=100,\n", @@ -326,7 +325,7 @@ " learning_rate=0.001)))" ] }, - "execution_count": 7, + "execution_count": 8, "metadata": {}, "output_type": "execute_result" } @@ -339,7 +338,7 @@ }, { "cell_type": "code", - "execution_count": null, + "execution_count": 9, "metadata": { "id": "EUodUwZkKPi-" }, @@ -350,7 +349,7 @@ "" ] }, - "execution_count": 25, + "execution_count": 9, "metadata": {}, "output_type": "execute_result" } @@ -379,11 +378,23 @@ }, { "cell_type": "code", - "execution_count": null, + "execution_count": 10, "metadata": { "id": "g08vqtxYLMxT" }, - "outputs": [], + "outputs": [ + { + "data": { + "text/plain": [ + "tuned_model: \"tunedModels/generate-num-9401\"\n", + "total_steps: 375" + ] + }, + "execution_count": 10, + "metadata": {}, + "output_type": "execute_result" + } + ], "source": [ "operation.metadata" ] @@ -399,11 +410,26 @@ }, { "cell_type": "code", - "execution_count": null, + "execution_count": 11, "metadata": { "id": "SOUowIv1HgSE" }, - "outputs": [], + "outputs": [ + { + "data": { + "application/vnd.jupyter.widget-view+json": { + "model_id": "b81fe3cd71034d4fb6eac74bfdb46668", + "version_major": 2, + "version_minor": 0 + }, + "text/plain": [ + " 0%| | 0/375 [00:00" ] }, - "execution_count": 10, + "execution_count": 13, "metadata": {}, "output_type": "execute_result" }, { "data": { - "image/png": "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nTtXs2fPznzd0NCg2traQOo5UKHWIw2sbVtm8thnBgCAfMgqzLz77ru68MILtXr16sysjKTMfjNBzcwMHDhQxx9/fIdrxx13nP70pz/t83ui0aii0Wggvz9brmPktJ6c3dqZSaRmZlrnigAAQDCyejT7qquu0tChQ7Vt2zZVVFTozTff1OLFizVmzBgtWrQosOLGjx+vtWvXdri2bt26gi1zZSvkOKmTs32prF1nxloOmwQAIGhZhZklS5bopptuUr9+/eQ4jhzH0Wmnnaa6ujrNmDEjsOJmzZqlV199Vbfccos2bNighx56SL/61a80ffr0wH5HPmQOm7RW0fYzMxJ7zQAAELCswozneaqsrJQk9evXTx988IGk1GDwnp2UXJx88sl6/PHH9fDDD2vEiBGaP3++7rzzTk2dOjWw35Evrecztc7MxJO+ZC1DwAAABCyrmZkRI0bojTfe0NChQzV27FjddtttikQi+tWvfqWjjjoq0AK/9KUv6Utf+lKgP7MQIq4jz09mZmZiSU++laxIMwAABCmrMPOjH/1IjY2NkqSbbrpJX/rSl3T66aerb9++evTRRwMtsFRFQ648a1UWbr9pHjMzAAAELaswc/bZZ2f+PGzYML3zzjvavn27evfuzZM6aZFQatO8aKi1M+PLipkZAACCltXMTKsNGzbomWeeUXNzs/r06RNUTd2C6xjJqm2ZKeHRmQEAIA+yCjMff/yxJk6cqGOPPVZf/OIX9eGHH0qSvvOd7+jqq68OtMBSFXIcyajjMpPozAAAELSswsysWbMUDoe1adMmVVRUZK5ffPHFWrBgQWDFlTLXSS23laWXmVoSrQPAAAAgSFnNzDz77LN65plndMQRR3S4fswxx+i9994LpLBSF3KMjFKzM1KqMyMrWc6aBAAgUFl1ZhobGzt0ZFpt37696EcJdBWua+Q4RhE31aFJPc3EMhMAAEHLKsycfvrpeuCBBzJfG2Pk+75uu+02TZgwIbDiSplrjELGKJzuzKSWmdhlBgCAoGW1zHTbbbdp4sSJWr58ueLxuK655hq9+eab2r59u1555ZWgayxJrpPqzISc9p0Zn84MAAABy6ozM2LECK1du1annXaazj//fDU2NurLX/6yXn/9dR199NFB11iSQunzmcKOm7mW8FlmAgAgaFl1ZiSprKxMZ511lkaPHi3fT021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7c9m8n1fH3zwgSorK2WMCfRnNzQ0qLa2Vps3b+bcpzziPhcG97kwuM+FwX0ujHzeZ2utdu3apUGDBslx9j8V0+07M47j6Igjjsjr76iqquJ/LAXAfS4M7nNhcJ8Lg/tcGPm6z5/UkWnFADAAAChphBkAAFDSCDM5iEaj+vGPf6xoNFrsUro17nNhcJ8Lg/tcGNznwugq97nbDwADAIDujc4MAAAoaYQZAABQ0ggzAACgpBFmAABASSPMZOmee+7RkCFDVFZWprFjx+q1114rdkklra6uTieffLIqKyvVv39/XXDBBVq7dm2Hz7S0tGj69Onq27evevbsqa985SvaunVrkSruHm699VYZYzRz5szMNe5zMN5//3194xvfUN++fVVeXq6RI0dq+fLlmfettbrhhhs0cOBAlZeXa9KkSVq/fn0RKy5Nnudp3rx5Gjp0qMrLy3X00Udr/vz5Hc7z4V4fvMWLF2vy5MkaNGiQjDF64oknOrx/IPd0+/btmjp1qqqqqtSrVy995zvf0e7du/NTsMVBe+SRR2wkErH/8z//Y99880373e9+1/bq1ctu3bq12KWVrLPPPtv+9re/tWvWrLGrVq2yX/ziF+3gwYPt7t27M5+5/PLLbW1trV24cKFdvny5/exnP2tPPfXUIlZd2l577TU7ZMgQO2rUKHvVVVdlrnOfc7d9+3Z75JFH2m9/+9t26dKl9t1337XPPPOM3bBhQ+Yzt956q62urrZPPPGEfeONN+x5551nhw4dapubm4tYeem5+eabbd++fe2TTz5pN27caP/whz/Ynj172p///OeZz3CvD97TTz9tr7/+evvnP//ZSrKPP/54h/cP5J5+4QtfsKNHj7avvvqqfemll+ywYcPs1772tbzUS5jJwimnnGKnT5+e+drzPDto0CBbV1dXxKq6l23btllJ9sUXX7TWWrtz504bDoftH/7wh8xn3n77bSvJLlmypFhllqxdu3bZY445xj733HP2jDPOyIQZ7nMwrr32Wnvaaaft833f9+2AAQPsf/7nf2au7dy500ajUfvwww8XosRu49xzz7WXXXZZh2tf/vKX7dSpU6213Osg7BlmDuSevvXWW1aSXbZsWeYzf//7360xxr7//vuB18gy00GKx+NasWKFJk2alLnmOI4mTZqkJUuWFLGy7qW+vl6S1KdPH0nSihUr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794tSXrqqad0+OGHd3gvGo12CDTZKi8vP6DPhcPhzJ+NMZJS8zwASgudGQAFdfzxxysajWrTpk0aNmxYh1dtbW3mc6+++mrmzzt27NC6det03HHHSZKOO+44vfLKKx1+7iuvvKJjjz1Wrutq5MiR8n2/wwwOgO6LzgyAgqqsrNR//Md/aNasWfJ9X6eddprq6+v1yiuvqKqqSkceeaQk6aabblLfvn1VU1Oj66+/Xv369dMFF1wgSbr66qt18skna/78+br44ou1ZMkS3X333frv//5vSdKQIUM0bdo0XXbZZbrrrrs0evRovffee9q2bZumTJlSrL86gDwhzAAouPnz5+uwww5TXV2d3n33XfXq1UsnnXSSrrvuuswyz6233qqrrrpK69ev16c//Wn97W9/UyQSkSSddNJJeuyxx3TDDTdo/vz5GjhwoG666SZ9+9vfzvyOe++9V9ddd52uuOIKffzxxxo8eLCuu+66Yvx1AeQZTzMB6FJanzTasWOHevXqVexyAJQAZmYAAEBJI8wAAICSxjITAAAoaXRmAABASSPMAACAkkaYAQAAJY0wAwAAShphBgAAlDTCDAAAKGmEGQAAUNIIMwAAoKT9/23/rtFeQg6nAAAAAElFTkSuQmCC\n", + "image/png": "iVBORw0KGgoAAAANSUhEUgAAAjMAAAGwCAYAAABcnuQpAAAAOXRFWHRTb2Z0d2FyZQBNYXRwbG90bGliIHZlcnNpb24zLjkuMCwgaHR0cHM6Ly9tYXRwbG90bGliLm9yZy80BEi2AAAACXBIWXMAAA9hAAAPYQGoP6dpAAA5z0lEQVR4nO3deZRU1bn38d8+p4buhh4YpAFtBMXEgSEalCCa6AvGGINDEtGEJERzk2vEIOCNggYTJaaN9+oyRq8ZVm6MK44ZNEYNxqBINIgM4sWJIfIKrwqoQDd00zWcs98/qru6i8FA1TlVXc33s1avC1XV9OO5UX7r2c/e21hrrQAAAMqUU+oCAAAACkGYAQAAZY0wAwAAyhphBgAAlDXCDAAAKGuEGQAAUNYIMwAAoKxFSl1A2Hzf1zvvvKPq6moZY0pdDgAA2A/WWu3YsUODBw+W43x476XHh5l33nlHDQ0NpS4DAADkYePGjTrssMM+9DM9PsxUV1dLyjyMmpqaElcDAAD2R3NzsxoaGrJ/j3+YHh9mOpaWampqCDMAAJSZ/RkRYQAYAACUNcIMAAAoa4QZAABQ1ggzAACgrBFmAABAWSPMAACAskaYAQAAZY0wAwAAyhphBgAAlDXCDAAAKGuEGQAAUNYIMwAAoKwRZgAAQFkjzBTA861Snl/qMgAAOKgRZgqwublNb33QUuoyAAA4qBFmCuBbqx1t6VKXAQDAQY0wU6BE2leapSYAAEqGMFOglOcrSZgBAKBkCDMFSnm+kmnCDAAApUKYKVAqbQkzAACUEGGmQCnfV4IwAwBAyRBmCuT5Vm0pr9RlAABw0CLMBGBHIlXqEgAAOGgRZgLQlvTl+bbUZQAAcFAizBTIyLCjCQCAEiLMFCjiGqU8djQBAFAqhJkCucbIs1YJjyFgAABKgTATEDozAACURknDzKJFizRp0iQNHjxYxhg98sgj2fdSqZSuvvpqjRw5Ur169dLgwYP1ta99Te+8807pCt4HR4bt2QAAlEhJw0xLS4tGjx6tO++8c4/3WltbtWLFCs2dO1crVqzQH//4R61evVrnnHNOCSr9cFHXqCVBmAEAoBQipfzhZ511ls4666y9vldbW6unnnoq57U77rhDJ510kjZs2KAhQ4YUo8T9EnEdtSY9WWtljCl1OQAAHFRKGmYOVFNTk4wxqqur2+dnEomEEolE9vfNzc2h1xV1jRLpzLUGFVE39J8HAAA6lc0AcFtbm66++mp96UtfUk1NzT4/19jYqNra2uxXQ0ND6LXFXEcp31fSYwgYAIBiK4swk0qlNHnyZFlrddddd33oZ+fMmaOmpqbs18aNG0OvL+I68jhrBgCAkuj2y0wdQeatt97S008//aFdGUmKx+OKx+NFqq6TFWEGAIBS6NZhpiPIrF27Vs8884z69etX6pL2yTFGCbZnAwBQdCUNMzt37tS6deuyv1+/fr1Wrlypvn37atCgQfriF7+oFStW6LHHHpPnedq0aZMkqW/fvorFYqUqW5K0cWurFr/5vppa0hpcV6mI42hHIl3SmgAAOBiVNMwsW7ZMp59+evb3s2bNkiRNnTpVP/jBD/Too49Kkj72sY/lfN8zzzyj0047rVhl7tWjL7+j/3xytU4+sp8+cWQ/RdmeDQBASZQ0zJx22mmy1u7z/Q97r9RqKqOSpNZkZmkp6holvcyOpniE7dkAABRLWexm6o5qs2Ems7QUdR2lPJ8hYAAAiowwk6fa3TozEccozfZsAACKjjCTp93DjDFGVuLgPAAAiowwk6fdl5k60JkBAKC4CDN56ggzbSlfnp8ZVI44Ri1szwYAoKgIM3mqqejcCLYz0TkE3JLk4DwAAIqJMJOniOuoKpbZgt3SJcwk0r5SzM0AAFA0hJkCVLd3Zzo7M0bpNNuzAQAoJsJMAaorMnMzO9syYSbiOEr7Vmm/+x72BwBAT0OYKcDunRnHSL618gkzAAAUDWGmALuHGWOMrLXyuvE1DAAA9DSEmQJUx9uXmbpsxzbG0JkBAKCICDMF2L0zI0lWojMDAEAREWYKsLcwI0k0ZgAAKB7CTAF2380kSbJimQkAgCIizBSgd3tnpiVnZkbZ6w0AAED4CDMFqI7vucxkjOEEYAAAiogwU4C9zcw4Rkp5dGYAACgWwkwBair23JrtGqO0T2cGAIBiIcwUoKMz05r0snMyDmEGAICiIswUoCPMSJ1DwMZIqTTLTAAAFAthpgAR11E8knmELcmO+5mMfF+yHJwHAEBREGYKVBVzJXWeNeM4Rp4s27MBACgSwkyBqmJ73pzNZZMAABQPYaZA2c5MousykxVZBgCA4iDMFGivYcayzAQAQLEQZgq0t2Umz3JzNgAAxUKYKYAxRr3imc5Mx9ZsxzFcNgkAQBERZgrgmC6dmbbOZSbPZ5kJAIBiIcwUwDFGVbHMI+x6pYGMRJYBAKA4CDMFyISZvdycLclnZgYAgKIgzBTAMVKv+J5hRhLLTAAAFAlhpgCOMeq1l86MtYQZAACKhTBTAKfLbqbdZ2ZYZQIAoDgIMwVwHKlX+83ZrQkvOyfjyCjt+6UsDQCAgwZhpgCOMappX2ayygSazOtSyiPMAABQDISZAjjGKBpxFI/kbs82xhBmAAAoEsJMARwnE1z2vJ9JIssAAFAchJkCOMbsdXu249CZAQCgWAgzBciEmT23ZzvGKM3WbAAAioIwUwDH5F422Xk/U+aiSS6bBAAgfISZApj2ZaY9Z2aMfGvlcdgMAAChK2mYWbRokSZNmqTBgwfLGKNHHnkk531rra677joNGjRIlZWVmjhxotauXVuaYvch4nbez9TSJcx4lpuzAQAohpKGmZaWFo0ePVp33nnnXt+/+eabdfvtt+tnP/uZlixZol69eunMM89UW1tbkSvdt4jj7NmZcTInAHPZJAAA4YuU8oefddZZOuuss/b6nrVWt912m773ve/p3HPPlSTdc889qq+v1yOPPKKLLrqomKXuk+tIlXsZAPbpzAAAUBTddmZm/fr12rRpkyZOnJh9rba2VmPHjtXixYv3+X2JRELNzc05X2FyHUdV0b3MzPgSWQYAgPB12zCzadMmSVJ9fX3O6/X19dn39qaxsVG1tbXZr4aGhlDrjLpGlfE9D83zLbuZAAAohm4bZvI1Z84cNTU1Zb82btwY6s+LdOnMtHS5zkASu5kAACiCbhtmBg4cKEnavHlzzuubN2/Ovrc38XhcNTU1OV9hcoxRZTT3nBkpc/EknRkAAMLXbcPMsGHDNHDgQC1YsCD7WnNzs5YsWaJx48aVsLJcxih7AnBLMp2zg4ksAwBA+Eq6m2nnzp1at25d9vfr16/XypUr1bdvXw0ZMkQzZszQD3/4Qx111FEaNmyY5s6dq8GDB+u8884rXdG7cR2jqopMJvSttCvpZe9qYpkJAIDwlTTMLFu2TKeffnr297NmzZIkTZ06VXfffbeuuuoqtbS06Fvf+pa2b9+uU045RfPnz1dFRUWpSt6DY4yirquY6yjp+dqZSKtXPCIjlpkAACiGkoaZ0047TfZDuhfGGN1www264YYbiljVgXEys77qHY9oa2tSOxNp1StzaB7nzAAAEL5uOzNTLowxkrXqVbHbwXmOUdr3S1kaAAAHBcJMgVzHSDLq3T4n0/Xm7JRHZwYAgLARZgrkmMzcTO/dDs5zjVHKozMDAEDYCDMFMsbIOF22Z3c5OI9lJgAAwkeYKVCmM6PsduyuVxqkWWYCACB0hJkCuY6RI6Oq2J6XTXqePnS3FgAAKBxhpkCOMTmnAHfdzeTLsj0bAICQEWYKZEwmuFTFc+9n6rg5m1OAAQAIF2GmQJnOjFHlXpaZfN+KLAMAQLgIMwVyjZEjqdfewoxlmQkAgLARZgrkOEaOY1QZzd2a7RjJF5dNAgAQNsJMAFwndzeTtVaOY2R9LpsEACBshJkAuI6yMzO+lXalvMzWbN+KLAMAQLgIMwGIOI6ijlGk/QrtjrkZGW7OBgAgbISZAEQcI9vlssmWhCdJMspszwYAAOEhzATAdYystdm5mdZkpjNjRWcGAICwEWYC4DpGvpWqduvMyNKZAQAgbISZAERdR7612bNmOjozMhIXZwMAEC7CTAAckxn8rWq/n6klmenMODJKk2YAAAgVYSYAxmS+erXfz9Ta5eC8lEeYAQAgTISZADjGyGrPzowxRmkGgAEACBVhJgCuY2SkPWZmHCOlPcIMAABhIswEwJjMNuzddzM5jmGZCQCAkBFmAuCYfXVmWGYCACBshJkAdO5myoSZ7G4mk7lokssmAQAID2EmAK4xcoxRZTSzzNS5m8nIt1YeB+cBABAawkwAjCPJSJWxzOPs7MxkTgbmSgMAAMJDmAmAY4xco87OTMfMjJO5zoArDQAACA9hJgCOyZwpE49mHueupCff2uwyE40ZAADCQ5gJgGOMjJGqopkBYCupLeVlwozPMhMAAGEizATAaR8AjrhGESezs6kl4ckxkrViNxMAACEizATAMR1XGpjs9uzWZFrGGPliNxMAAGEizATAMUaOjHzfqlc8934mSQwAAwAQIsJMABzHyDjtVxrEcm/OliSfGw0AAAgNYSYgESezc6nXHjdni2UmAABCRJgJSMRxZK1UFc+9n0kMAAMAECrCTEA6DsiriuXenG0tMzMAAISJMBOQiOO0LzPtdnO2Y5TyGJoBACAshJmARBy1LzPlzsw4Rkp5dGYAAAgLYSYgETczM9Nrt91MRkYe25kAAAgNYSYgrpM5IC87M9OxzGTE3UwAAISIMBMQxxhJnYfmtWa3ZhvOmQEAIETdOsx4nqe5c+dq2LBhqqys1JFHHql58+bJdsPdQY5jpC7XGbRkl5kkz5JmAAAIS6TUBXyYH//4x7rrrrv0m9/8Rscdd5yWLVumiy++WLW1tZo+fXqpy8vhmExw6Tg0r7XLoXksMwEAEJ5uHWb+8Y9/6Nxzz9XZZ58tSRo6dKjuv/9+vfjiiyWubE8dy0wdh+Z1zMwYY+SRZgAACE23XmY6+eSTtWDBAq1Zs0aS9PLLL+u5557TWWedtc/vSSQSam5uzvkqho5bszs6M7uSnqy1Msps2e6OS2MAAPQE3bozM3v2bDU3N+voo4+W67ryPE833nijpkyZss/vaWxs1PXXX1/EKjMck/m/HTMzvpV2pbxMyLFWvpVcU/SyAADo8bp1Z+ahhx7Svffeq/vuu08rVqzQb37zG/3Xf/2XfvOb3+zze+bMmaOmpqbs18aNG4tSq2OMHBnFXCO3Pdm0Jj3JSL7ozAAAEJZu3Zn57ne/q9mzZ+uiiy6SJI0cOVJvvfWWGhsbNXXq1L1+TzweVzweL2aZkjJhxhjJtu9o2tGWVksiraqYK8+3DAEDABCSbt2ZaW1tlePklui6rvxueHCL40im/bLJ3Xc0+VayIs0AABCGbt2ZmTRpkm688UYNGTJExx13nF566SXdeuutuuSSS0pd2h4yy0wd9zN17mjKDAZbscoEAEA4unWY+elPf6q5c+fqsssu05YtWzR48GD9+7//u6677rpSl7YHxxg5xuR2ZhJeZunJZjo2AAAgeN06zFRXV+u2227TbbfdVupS/iVj2q8usLbzFOBkWkaZ3UxkGQAAwtGtZ2bKiesYOe1dmK4zM5mhYDozAACEhTATkMxuJpM7M5NIy6hjABgAAISBMBMQx2jPmZmkJ9PemuGuSQAAwkGYCYgxmWWm3WdmOpae2JoNAEA4Agkzzc3NeuSRR/T6668H8ceVLddpX2bK2c2U6dZwaB4AAOHIK8xMnjxZd9xxhyRp165dGjNmjCZPnqxRo0bpD3/4Q6AFlpOo62SWmfa4OZsBYAAAwpJXmFm0aJFOPfVUSdLDDz8sa622b9+u22+/XT/84Q8DLbCcuE5m0LdqtxOArcTWbAAAQpJXmGlqalLfvn0lSfPnz9cXvvAFVVVV6eyzz9batWsDLbCcuI4j37fqFevczSRJRlw0CQBAWPIKMw0NDVq8eLFaWlo0f/58ffrTn5Ykbdu2TRUVFYEWWE4ijpEvqSqe25mR2JoNAEBY8joBeMaMGZoyZYp69+6tww8/XKeddpqkzPLTyJEjg6yvrESczGm/HZ2Z1mQ6c/qvmJkBACAseYWZyy67TCeddJI2btyoM844I3uz9RFHHHGQz8w4OTMzvpXaUn77AHBpawMAoKfK+26mMWPGaMyYMZIkz/O0atUqnXzyyerTp09gxZUbYyRZqSLqtJ85096d8ZmZAQAgLHnNzMyYMUO/+tWvJGWCzKc+9SmdcMIJamho0MKFC4Osr6y4jpGMlTEm251pSXbenA0AAIKXV5j5/e9/r9GjR0uS/vznP2v9+vV64403NHPmTF177bWBFlhOHGOU2buk7CnArYk0W7MBAAhRXmHm/fff18CBAyVJTzzxhC644AJ95CMf0SWXXKJVq1YFWmA5cYxk2vct9Yp36cyIAWAAAMKSV5ipr6/Xa6+9Js/zNH/+fJ1xxhmSpNbWVrmuG2iB5aTj1mypS2cmmZYxRmmfmyYBAAhDXgPAF198sSZPnqxBgwbJGKOJEydKkpYsWaKjjz460ALLiet0LjPl3JwtyWc7EwAAocgrzPzgBz/QiBEjtHHjRl1wwQWKx+OSJNd1NXv27EALLCeOyczN+NaqKt55CrAxkkeWAQAgFHlvzf7iF7+4x2tTp04tqJhyZ4zJ7lzK7cwYZmYAAAhJXjMzkvTss89q0qRJGj58uIYPH65zzjlHf//734Osrew4RnKczLBvx8xMSzItx0gey0wAAIQirzDz29/+VhMnTlRVVZWmT5+u6dOnq7KyUhMmTNB9990XdI1lw3WMnPYuTMduptaEJ2OMmP8FACAceS0z3Xjjjbr55ps1c+bM7GvTp0/Xrbfeqnnz5unLX/5yYAWWE6fLMlPXzoyR5FnSDAAAYcirM/Pmm29q0qRJe7x+zjnnaP369QUXVa6MkRynvTPTdWaGu5kAAAhNXmGmoaFBCxYs2OP1v/3tb2poaCi4qHLlGpNZUrLq3M3Ufs4MMzMAAIQjr2WmK6+8UtOnT9fKlSt18sknS5Kef/553X333frJT34SaIHlxHWMXBn5fpfOTCJzzoy1mcsmjTGlLRIAgB4mrzDz7W9/WwMHDtQtt9yihx56SJJ0zDHH6MEHH9S5554baIHlxBijSMRoV9LfbTeTkbVW1rbfrA0AAAKT9zkz559/vs4///wga+kRoo6jFj/duZsp6cnKyldmy7Yj0gwAAEHK+5wZ7F0s0j4z096Z8XybuZfJWoaAAQAIwX53Zvr06bPf8x5bt27Nu6ByF3UdedaqMurKad/F1Jr0VBWLyIo0AwBA0PY7zNx2220hltFzxCKOfD8z6FsZc9WS8NSW9FUZs+JGAwAAgrffYSafe5duuukmXXrppaqrqzvg7y1XTpfuVa9YRC0JT63JtOpslDADAEAIQp2Z+dGPfnTQLTm5jlHHjG/H3MyulC9rLZdNAgAQglDDjD0I//KOOEamfTamY0fTrlRaViLMAAAQAnYzBcxxjGx7a6ajM9Oa8ORbMf4LAEAICDMBi3S9ObvjFOCUJ1mJuyYBAAgeYSZgjmPkuJLvW1V2dGaS6cx1BvRmAAAIHGEmYK7J3M/kdenM7Ep68jk0DwCAUIQaZk499VRVVlaG+SO6HdcxMo7k+11vzvYkwwAwAABhyPtuJt/3tW7dOm3ZskW+nzsM8slPflKS9MQTTxRWXRlyHSPXceRbq6poJsy0pTxJ4pwZAABCkFeYeeGFF/TlL39Zb7311h7br40x8jwvkOLKUcRpX2byreLZMOPL6ODcqg4AQNjyCjOXXnqpxowZo8cff1yDBg3a7zubDgbGGEUiRm1JXxXtYSaRbu/MlLIwAAB6qLzCzNq1a/X73/9ew4cPD7qeHiHqOGrx04pHMiNJiZTPoXkAAIQkrwHgsWPHat26dUHXsldvv/22vvKVr6hfv36qrKzUyJEjtWzZsqL87HxFI0a+lSraw0xb2pPEbiYAAMKQV2fmO9/5jq688kpt2rRJI0eOVDQazXl/1KhRgRS3bds2jR8/Xqeffrr+8pe/6JBDDtHatWvVp0+fQP78sMTczABwPLvM5EvWMDMDAEAI8gozX/jCFyRJl1xySfY1YzJ/WQc5APzjH/9YDQ0N+vWvf519bdiwYYH82WGKuk5mALijM5PyZAy7mQAACENeYWb9+vVB17FXjz76qM4880xdcMEFevbZZ3XooYfqsssu0ze/+c19fk8ikVAikcj+vrm5uRil5sjcnG27DABnZmYIMwAABC+vMHP44YcHXcdevfnmm7rrrrs0a9YsXXPNNVq6dKmmT5+uWCymqVOn7vV7Ghsbdf311xelvn1xHSPJZDszybQvay0DwAAAhMDYAgY5XnvtNW3YsEHJZDLn9XPOOafgwiQpFotpzJgx+sc//pF9bfr06Vq6dKkWL1681+/ZW2emoaFBTU1NqqmpCaSuf2VLc5tWbtymPlVxXfDzTJ0/veh4HTO4WsMHVBelBgAAyllzc7Nqa2v36+/vvDozb775ps4//3ytWrUqOysjKXveTFAzM4MGDdKxxx6b89oxxxyjP/zhD/v8nng8rng8HsjPz5fT3pmJRTo3i6U8Xz7bmQAACFxeW7OvuOIKDRs2TFu2bFFVVZVeffVVLVq0SGPGjNHChQsDK278+PFavXp1zmtr1qwp2jJXvlxjZJQJdh2BJun58sgyAAAELq8ws3jxYt1www3q37+/HMeR4zg65ZRT1NjYqOnTpwdW3MyZM/XCCy/oRz/6kdatW6f77rtPv/jFLzRt2rTAfkYYXLfjskmbPWsmlWZmBgCAMOQVZjzPU3V1Zvajf//+eueddyRlBoN376QU4sQTT9TDDz+s+++/XyNGjNC8efN02223acqUKYH9jDC4xihiMgfndZw1k/I8eSwzAQAQuLxmZkaMGKGXX35Zw4YN09ixY3XzzTcrFovpF7/4hY444ohAC/zc5z6nz33uc4H+mWFznUxnxuvSmUmkfe12uTgAAAhAXmHme9/7nlpaWiRJN9xwgz73uc/p1FNPVb9+/fTggw8GWmA5ch0j12k/BTjS0Zmx8ixpBgCAoOUVZs4888zsr4cPH6433nhDW7duVZ8+fbhBW5llJlcmcwpwtOOsGY+7mQAACEFeMzMd1q1bpyeffFK7du1S3759g6qp7DmOketmbsnuOAU46VlmZgAACEFeYeaDDz7QhAkT9JGPfESf/exn9e6770qSvvGNb+jKK68MtMByFXPdzABwdmbGk7XiskkAAAKWV5iZOXOmotGoNmzYoKqqquzrF154oebPnx9YceUs4nYMAHd0ZjJXGpBlAAAIVl4zM3/961/15JNP6rDDDst5/aijjtJbb70VSGHlLua2DwBHO+9n8pVZenLEXBEAAEHJqzPT0tKS05HpsHXr1pJfJdBdxCJuZgC4ozOT9iVrRWMGAIBg5RVmTj31VN1zzz3Z3xtj5Pu+br75Zp1++umBFVfOXMdIxqoi2uWcGStOAQYAIGB5LTPdfPPNmjBhgpYtW6ZkMqmrrrpKr776qrZu3arnn38+6BrLkutklpI6OjOJtC8rZmYAAAhaXp2ZESNGaPXq1TrllFN07rnnqqWlRZ///Of10ksv6cgjjwy6xrLkOpmrJiu6zMxkdjOVti4AAHqavDozklRRUaEzzjhDo0ePlt9+Tv/SpUslSeecc04w1ZUx1zGye2zN5rJJAACClleYmT9/vr761a9q69ate5ybYoyR53mBFFfOXGPkGKdLmPFlJQaAAQAIWF7LTN/5znc0efJkvfPOO/J9P+eLIJPhupnLJqMuA8AAAIQprzCzefNmzZo1S/X19UHX02O4xsg1mS3akpRIeZKVuGsSAIBg5RVmvvjFL2rhwoUBl9KzuI6R4xhF3cyupkTHADALTQAABCqvmZk77rhDF1xwgf7+979r5MiRikajOe9Pnz49kOLKmesYucbstsxkuTkbAICA5RVm7r//fv31r39VRUWFFi5cKGM6j+c3xhBm1LHM5GQ7M20pTzJcNAkAQNDyCjPXXnutrr/+es2ePVuOk9dKVY/nOEbObgPAls4MAACByyuJJJNJXXjhhQSZfyEWcRRxO59RyrN0ZgAACFheaWTq1Kl68MEHg66lx4m6RpEuS3DJ9rNmAABAcPJaZvI8TzfffLOefPJJjRo1ao8B4FtvvTWQ4spdzHUkkwk1Kc8qkfY4ZwYAgIDlFWZWrVql448/XpL0yiuv5LzXdRj4YBd1HfnWqiLiKuWl2680KHVVAAD0LHmFmWeeeSboOnqkiOvIyioedbUjkVYyzd1MAAAEjQneELlOpkvVcT9T0vPpzAAAEDDCTIhcx8hIqoi2h5k0YQYAgKARZkLkGCNrpXj7/UzJ9lOAAQBAcAgzIYo4RsYYxbt0ZjxOzQMAIFCEmRA57ZdNxt3OmRk6MwAABIswE6KIY+QaKdZlmSlNZwYAgEARZkLkdnRm2nczpejMAAAQOMJMiBxj5BqTvTmbmRkAAIJHmAlRxDFyjFEs0vXm7BIXBQBAD0OYCZHjGLmOydzRpMwAsGf9ElcFAEDPQpgJWTRiFO3SmfHIMgAABIowE7KY62Q7MylmZgAACBxhJmRR11GkfQC4Y2bGMjgDAEBgCDMhi7mOom7HMpMnay1DwAAABIgwE7KI6ygW6dyabSXOmgEAIECEmZA5zu5bs62IMgAABIcwE7KIY1TRfp1BIu3Lt3RmAAAIEmEmZI4xuTMzYmYGAIAgEWZC5jpGcbe9M5Py5fuEGQAAglRWYeamm26SMUYzZswodSn7zTVGlbFMmLGSUmnLMhMAAAEqmzCzdOlS/fznP9eoUaNKXcoBcRwpHut8zG1pjwFgAAACVBZhZufOnZoyZYp++ctfqk+fPqUu54B03M0UcTLbs9vSPp0ZAAACVBZhZtq0aTr77LM1ceLEf/nZRCKh5ubmnK9Sckzm5ux4x/bslCfumgQAIDiRUhfwrzzwwANasWKFli5dul+fb2xs1PXXXx9yVfvPdYwcxygeddWS9JRI+eKkGQAAgtOtOzMbN27UFVdcoXvvvVcVFRX79T1z5sxRU1NT9mvjxo0hV/nhXGPkqktnJu2JuyYBAAhOt+7MLF++XFu2bNEJJ5yQfc3zPC1atEh33HGHEomE3PZtzx3i8bji8XixS90nxzFyHGVvzm5rPwUYAAAEo1uHmQkTJmjVqlU5r1188cU6+uijdfXVV+8RZLqrWMTJXmmQ9Hw6MwAABKhbh5nq6mqNGDEi57VevXqpX79+e7zenUW63M+UpDMDAECguvXMTE8RjTjZZaaOm7MBAEAwunVnZm8WLlxY6hIOWMx1cjoznDMDAEBw6MwUQcRxci+bJMsAABAYwkwROI6yW7OT3M0EAECgCDNF4HYZAKYzAwBAsAgzReCa3XczlbggAAB6EMJMEThO5wnAmXNmSDMAAASFMFMEEccoHskc8JdM+/I4NQ8AgMAQZorAcYwqomzNBgAgDISZInBNZ5hJpH2l6cwAABAYwkwRuI5RRccyEzMzAAAEijBTBI4xqogxMwMAQBgIM0XgOkaV0UyYSbA1GwCAQBFmisB1jCq7dmasX+KKAADoOQgzRdIrlrnTM5H25Hm0ZgAACAphpkh6xTNhxrdSW5rODAAAQSHMFEl13M3+ui3lyzI4AwBAIAgzRVIZi8g1RpLUlkozBAwAQEAIM0USizhdbs7mrBkAAIJCmCkSx3ReNtmW9ESUAQAgGISZInEdk+3M7ErRmQEAICiEmSLpGmYSnsfMDAAAASHMFIljuoSZFKcAAwAQFMJMkbiOUdztDDMsMwEAEAzCTJG4xijefj9TW5oBYAAAgkKYKRLHUeduppRHZwYAgIAQZook4jiKRzOPO5n25fuEGQAAgkCYKRLHkSoi7ctMKU8pLpsEACAQhJki6Tozk/Ss0j6XTQIAEATCTJG4jlFle2cmmfaUpjMDAEAgCDNFYoxRZaxjZsYqmaYzAwBAEAgzRVQVi0iSUp6vtrRX4moAAOgZCDNFVNXRmfF8JQgzAAAEgjBTRL3imc5MMu0rkbKynDUDAEDBCDNF1DXMeL7P9mwAAAJAmCmiXu0zM4m0r7Rv5XFwHgAABSPMFFFVvOOcmUyYSXHWDAAABSPMFFG2M5Py5HmWs2YAAAgAYaaIOjozibQvGSnt0ZkBAKBQhJki6t3emcnMy/hKMTMDAEDBCDNF1LGbScqcAkxnBgCAwhFmiigedeSYzK/Tnq+2FAfnAQBQKMJMEUUcR7FI5pGnPZuZnQEAAAUhzBSR6xhVV0QlSTsTacIMAAAB6PZhprGxUSeeeKKqq6s1YMAAnXfeeVq9enWpy8qLY4z69YpJkra3ppRK+xycBwBAgbp9mHn22Wc1bdo0vfDCC3rqqaeUSqX06U9/Wi0tLaUu7YBFHKP+veOSpK2ticzBeQwBAwBQkMi//khpzZ8/P+f3d999twYMGKDly5frk5/8ZImqyo/jGPXvnenMbG1JyfMzJwEDAID8dfsws7umpiZJUt++fff6fiKRUCKRyP6+ubm5KHXtrwE1mc7MBy0Jeb7kcQowAAAF6fbLTF35vq8ZM2Zo/PjxGjFixF4/09jYqNra2uxXQ0NDkav8cPU1FZKkD3Ym2w/OY5kJAIBClFWYmTZtml555RU98MAD+/zMnDlz1NTUlP3auHFjESv81wbVVkqS3tuZkIzhfiYAAApUNstMl19+uR577DEtWrRIhx122D4/F4/HFY/Hi1jZgRlcm+nM7GhLK5nyGQAGAKBA3b4zY63V5ZdfrocfflhPP/20hg0bVuqSClJXFVW8/eC8ba1JwgwAAAXq9p2ZadOm6b777tOf/vQnVVdXa9OmTZKk2tpaVVZWlri6A+c6jvr2iundpjY17UpxpQEAAAXq9p2Zu+66S01NTTrttNM0aNCg7NeDDz5Y6tLy4jpGfToOztuV4hRgAAAK1O07M9b2rAFZ1zHqW5W50mB7a1JtKV/WWhljSlwZAADlqdt3Znoaxxj1qeo4OC8pz1oOzgMAoACEmSKLOEZ9e3UJM57P9mwAAApAmCkyp8v9TB+0JJW2loPzAAAoAGGmyFzHqF/7/Uwf7EwonaYzAwBAIQgzReaazssmd6V8tSQ9penMAACQN8JMkTmOVBmLqDqe2Ui2rTVBZwYAgAIQZoos4jhyTedS07aWNGEGAIACEGaKzHWMqmKR7Pbsba1JJdKcAgwAQL4IMyVQXRFRbfbgvJR2caUBAAB5I8yUQGXM3a0zwwAwAAD5IsyUQEXUVb9eHTMzSaXSvnxOAQYAIC+EmRKoiDoaUJM5OG9rS1Jpn4PzAADIF2GmBOIRVwOrKyW1nwLMlQYAAOSNMFMCrmN0aJ8KGSOlfattrSnCDAAAeSLMlEjfXjHVVmZ2NL2/M8EyEwAAeSLMlEhlLKK+XXY00ZkBACA/hJkSiUcc9enVceFkkvuZAADIE2GmRCqirg5pv9Jge2tmezYAADhwhJkSiUccDaipkCRta02pNckpwAAA5IMwUyKOY3RoXWZ79vbWlLa1JtXGtQYAABwwwkwJHd6vSpK0tTWpnQlP21tTJa4IAIDyQ5gpoSF9M2FmW0tSRlZbdrSVuCIAAMoPYaaEBtVWKuIYWUlpL3O1wc5EutRlAQBQVggzJVQZc7Pbs3ckUkqkfG1rSZa4KgAAygthpoTiEUf927dnv7cjoYqoq83NbdygDQDAASDMlJAxRoNqM9uz39+ZVHVFRNt3pdTcxiAwAAD7izBTYofWZYaA39+ZUNR15Pm+PtjJUhMAAPuLMFNiQ9u3Z7/+brMkqVcsqi3NCaU8TgQGAGB/EGZKbOKx9Yo4Rm++36L17+9U73hEOxIpzpwBAGA/EWZKbGBthY4fUidJWvD6FrmOkWOM3t/JmTMAAOwPwkyJxVxH/+foAZKkhWveU9rz1Tse0fs7ud4AAID9QZgpMWOMThneXzUVETXtSmn5hm2qirlqTaZZagIAYD8QZrqBuqqYThrWT1JmqckYo4jjcL0BAAD7gTDTDfSOR3TK8EyYWfp/t6ppV0rV8ai2tSTVwvUGAAB8KMJMN1BTGdWxg2s0tF+V0r7VojXvqTLmqi3ta/sulpoAAPgwhJluwHWM6msqNPaIvpKkBW9slpQZDt7S3CZrud4AAIB9Icx0E316xTT+yP6KOEb/fK9F699vUe94RNtbuUkbAIAPQ5jpJqrjER3Wt1Ifa6iTJD39xmZVRF0lPJ9dTQAAfAjCTDdhjFF9TaVOGpZZalq4+j2lPF+VkQg3aQMA8CEIM91IXWVUHz+8Tn2qotq+K6XbF6xV77irpraUdrSx1AQAwN4QZrqRXvGIDqmu0MUnD5XrGC1c854eXPb/lEpbbWtNlLo8AAC6JcJMNzOgukIfGVijaacdKUl6aNlGvbj+A21qTshjqQkAgD2URZi58847NXToUFVUVGjs2LF68cUXS11SaOqqouoVdzXuyP668MQGSdLd//i/euGfH6iJM2cAANhDtw8zDz74oGbNmqXvf//7WrFihUaPHq0zzzxTW7ZsKXVpoaiIuurXO6aWRFpTThqi0z96iHwr3fXsP/W7pRu0uYkrDgAA6MrYbn4i29ixY3XiiSfqjjvukCT5vq+GhgZ95zvf0ezZs//l9zc3N6u2tlZNTU2qqakJu9xAbNnRppUbtqt/77gk6QePvqr/fbtJkmSMdMzAap320QE6cWhfVcZcxSKO4u1fjjEyxsi0fzbzq70z+34rbwf6Z+7v//rCqBUAEIzqeFS1VdFA/8wD+fs7EuhPDlgymdTy5cs1Z86c7GuO42jixIlavHjxXr8nkUgokegclm1ubg69zqDVVcbUt1dMW1uS8qzVJacM0xOr3tWqt5v0blObXnt3h157d4ekf5a6VAAA9O+fPEJzPntMyX5+tw4z77//vjzPU319fc7r9fX1euONN/b6PY2Njbr++uuLUV5oYhFHow6r066Up0TaUzLta8ShNWpLeXp3e0LLN2zTyxu3692mXUr7Vsm0r5TnK+n5sjbT7bDKtDys7exqdG1uWHV2Rexu7+1Nt27f9ST78/+MYv6soOoJ6mcF+T/EnvKzgvqzD+b/CBzM/+z5MJKz2zOLuKVtn3frMJOPOXPmaNasWdnfNzc3q6GhoYQV5ScWcRSLOJJy23YjDpXOOK5e1lr5VrLWZv89863tDCjZoJL7b6GR2eO1fHXvBUoAQBiibsffT91Htw4z/fv3l+u62rx5c87rmzdv1sCBA/f6PfF4XPF4vBjllZQxRpkgzDAJAODg1r2i1W5isZg+/vGPa8GCBdnXfN/XggULNG7cuBJWBgAAuotu3ZmRpFmzZmnq1KkaM2aMTjrpJN12221qaWnRxRdfXOrSAABAN9Dtw8yFF16o9957T9ddd502bdqkj33sY5o/f/4eQ8EAAODg1O3PmSlUOZ4zAwDAwe5A/v7u1jMzAAAA/wphBgAAlDXCDAAAKGuEGQAAUNYIMwAAoKwRZgAAQFkjzAAAgLJGmAEAAGWNMAMAAMpat7/OoFAdBxw3NzeXuBIAALC/Ov7e3p+LCnp8mNmxY4ckqaGhocSVAACAA7Vjxw7V1tZ+6Gd6/N1Mvu/rnXfeUXV1tYwxgf7Zzc3Namho0MaNG7n3KUQ85+LgORcHz7k4eM7FEeZzttZqx44dGjx4sBznw6dienxnxnEcHXbYYaH+jJqaGv5lKQKec3HwnIuD51wcPOfiCOs5/6uOTAcGgAEAQFkjzAAAgLJGmClAPB7X97//fcXj8VKX0qPxnIuD51wcPOfi4DkXR3d5zj1+ABgAAPRsdGYAAEBZI8wAAICyRpgBAABljTADAADKGmEmT3feeaeGDh2qiooKjR07Vi+++GKpSyprjY2NOvHEE1VdXa0BAwbovPPO0+rVq3M+09bWpmnTpqlfv37q3bu3vvCFL2jz5s0lqrhnuOmmm2SM0YwZM7Kv8ZyD8fbbb+srX/mK+vXrp8rKSo0cOVLLli3Lvm+t1XXXXadBgwapsrJSEydO1Nq1a0tYcXnyPE9z587VsGHDVFlZqSOPPFLz5s3Luc+HZ33gFi1apEmTJmnw4MEyxuiRRx7JeX9/nunWrVs1ZcoU1dTUqK6uTt/4xje0c+fOcAq2OGAPPPCAjcVi9n/+53/sq6++ar/5zW/auro6u3nz5lKXVrbOPPNM++tf/9q+8sorduXKlfazn/2sHTJkiN25c2f2M5deeqltaGiwCxYssMuWLbOf+MQn7Mknn1zCqsvbiy++aIcOHWpHjRplr7jiiuzrPOfCbd261R5++OH261//ul2yZIl988037ZNPPmnXrVuX/cxNN91ka2tr7SOPPGJffvlle84559hhw4bZXbt2lbDy8nPjjTfafv362ccee8yuX7/e/u53v7O9e/e2P/nJT7Kf4VkfuCeeeMJee+219o9//KOVZB9++OGc9/fnmX7mM5+xo0ePti+88IL9+9//bocPH26/9KUvhVIvYSYPJ510kp02bVr2957n2cGDB9vGxsYSVtWzbNmyxUqyzz77rLXW2u3bt9toNGp/97vfZT/z+uuvW0l28eLFpSqzbO3YscMeddRR9qmnnrKf+tSnsmGG5xyMq6++2p5yyin7fN/3fTtw4ED7n//5n9nXtm/fbuPxuL3//vuLUWKPcfbZZ9tLLrkk57XPf/7zdsqUKdZannUQdg8z+/NMX3vtNSvJLl26NPuZv/zlL9YYY99+++3Aa2SZ6QAlk0ktX75cEydOzL7mOI4mTpyoxYsXl7CynqWpqUmS1LdvX0nS8uXLlUqlcp770UcfrSFDhvDc8zBt2jSdffbZOc9T4jkH5dFHH9WYMWN0wQUXaMCAATr++OP1y1/+Mvv++vXrtWnTppznXFtbq7Fjx/KcD9DJJ5+sBQsWaM2aNZKkl19+Wc8995zOOussSTzrMOzPM128eLHq6uo0ZsyY7GcmTpwox3G0ZMmSwGvq8RdNBu3999+X53mqr6/Peb2+vl5vvPFGiarqWXzf14wZMzR+/HiNGDFCkrRp0ybFYjHV1dXlfLa+vl6bNm0qQZXl64EHHtCKFSu0dOnSPd7jOQfjzTff1F133aVZs2bpmmuu0dKlSzV9+nTFYjFNnTo1+yz39t8RnvOBmT17tpqbm3X00UfLdV15nqcbb7xRU6ZMkSSedQj255lu2rRJAwYMyHk/Eomob9++oTx3wgy6nWnTpumVV17Rc889V+pSepyNGzfqiiuu0FNPPaWKiopSl9Nj+b6vMWPG6Ec/+pEk6fjjj9crr7yin/3sZ5o6dWqJq+tZHnroId1777267777dNxxx2nlypWaMWOGBg8ezLM+iLDMdID69+8v13X32N2xefNmDRw4sERV9RyXX365HnvsMT3zzDM67LDDsq8PHDhQyWRS27dvz/k8z/3ALF++XFu2bNEJJ5ygSCSiSCSiZ599VrfffrsikYjq6+t5zgEYNGiQjj322JzXjjnmGG3YsEGSss+S/44U7rvf/a5mz56tiy66SCNHjtRXv/pVzZw5U42NjZJ41mHYn2c6cOBAbdmyJef9dDqtrVu3hvLcCTMHKBaL6eMf/7gWLFiQfc33fS1YsEDjxo0rYWXlzVqryy+/XA8//LCefvppDRs2LOf9j3/844pGoznPffXq1dqwYQPP/QBMmDBBq1at0sqVK7NfY8aM0ZQpU7K/5jkXbvz48XscLbBmzRodfvjhkqRhw4Zp4MCBOc+5ublZS5Ys4TkfoNbWVjlO7l9lruvK931JPOsw7M8zHTdunLZv367ly5dnP/P000/L932NHTs2+KICHyk+CDzwwAM2Ho/bu+++27722mv2W9/6lq2rq7ObNm0qdWll69vf/ratra21CxcutO+++272q7W1NfuZSy+91A4ZMsQ+/fTTdtmyZXbcuHF23LhxJay6Z+i6m8lannMQXnzxRRuJROyNN95o165da++9915bVVVlf/vb32Y/c9NNN9m6ujr7pz/9yf7v//6vPffcc9kunIepU6faQw89NLs1+49//KPt37+/veqqq7Kf4VkfuB07dtiXXnrJvvTSS1aSvfXWW+1LL71k33rrLWvt/j3Tz3zmM/b444+3S5Yssc8995w96qij2Jrd3fz0pz+1Q4YMsbFYzJ500kn2hRdeKHVJZU3SXr9+/etfZz+za9cue9lll9k+ffrYqqoqe/7559t33323dEX3ELuHGZ5zMP785z/bESNG2Hg8bo8++mj7i1/8Iud93/ft3LlzbX19vY3H43bChAl29erVJaq2fDU3N9srrrjCDhkyxFZUVNgjjjjCXnvttTaRSGQ/w7M+cM8888xe/5s8depUa+3+PdMPPvjAfulLX7K9e/e2NTU19uKLL7Y7duwIpV5jbZdjEgEAAMoMMzMAAKCsEWYAAEBZI8wAAICyRpgBAABljTADAADKGmEGAACUNcIMAAAoa4QZAABQ1ggzAA46CxculDFmjws1AZQnwgwAAChrhBkAAFDWCDMAis73fTU2NmrYsGGqrKzU6NGj9fvf/15S5xLQ448/rlGjRqmiokKf+MQn9Morr+T8GX/4wx903HHHKR6Pa+jQobrlllty3k8kErr66qvV0NCgeDyu4cOH61e/+lXOZ5YvX64xY8aoqqpKJ598slavXh3uPziAUBBmABRdY2Oj7rnnHv3sZz/Tq6++qpkzZ+orX/mKnn322exnvvvd7+qWW27R0qVLdcghh2jSpElKpVKSMiFk8uTJuuiii7Rq1Sr94Ac/0Ny5c3X33Xdnv/9rX/ua7r//ft1+++16/fXX9fOf/1y9e/fOqePaa6/VLbfcomXLlikSieiSSy4pyj8/gGBxazaAokokEurbt6/+9re/ady4cdnX/+3f/k2tra361re+pdNPP10PPPCALrzwQknS1q1bddhhh+nuu+/W5MmTNWXKFL333nv661//mv3+q666So8//rheffVVrVmzRh/96Ef11FNPaeLEiXvUsHDhQp1++un629/+pgkTJkiSnnjiCZ199tnatWuXKioqQn4KAIJEZwZAUa1bt06tra0644wz1Lt37+zXPffco3/+85/Zz3UNOn379tVHP/pRvf7665Kk119/XePHj8/5c8ePH6+1a9fK8zytXLlSruvqU5/61IfWMmrUqOyvBw0aJEnasmVLwf+MAIorUuoCABxcdu7cKUl6/PHHdeihh+a8F4/HcwJNviorK/frc9FoNPtrY4ykzDwPgPJCZwZAUR177LGKx+PasGGDhg8fnvPV0NCQ/dwLL7yQ/fW2bdu0Zs0aHXPMMZKkY445Rs8//3zOn/v888/rIx/5iFzX1ciRI+X7fs4MDoCei84MgKKqrq7Wf/zHf2jmzJnyfV+nnHKKmpqa9Pzzz6umpkaHH364JOmGG25Qv379VF9fr2uvvVb9+/fXeeedJ0m68sordeKJJ2revHm68MILtXjxYt1xxx367//+b0nS0KFDNXXqVF1yySW6/fbbNXr0aL311lvasmWLJk+eXKp/dAAhIcwAKLp58+bpkEMOUWNjo958803V1dXphBNO0DXXXJNd5rnpppt0xRVXaO3atfrYxz6mP//5z4rFYpKkE044QQ899JCuu+46zZs3T4MGDdINN9ygr3/969mfcdddd+maa67RZZddpg8++EBDhgzRNddcU4p/XAAhYzcTgG6lY6fRtm3bVFdXV+pyAJQBZmYAAEBZI8wAAICyxjITAAAoa3RmAABAWSPMAACAskaYAQAAZY0wAwAAyhphBgAAlDXCDAAAKGuEGQAAUNYIMwAAoKz9f+tvkxc9CaeTAAAAAElFTkSuQmCC", "text/plain": [ "
      " ] @@ -492,7 +532,7 @@ }, { "cell_type": "code", - "execution_count": null, + "execution_count": 14, "metadata": { "id": "zO0YcuSyxydZ" }, @@ -503,21 +543,18 @@ }, { "cell_type": "code", - "execution_count": null, + "execution_count": 15, "metadata": { "id": "UwGrrj6hS_x2" }, "outputs": [ { "data": { - "application/vnd.google.colaboratory.intrinsic+json": { - "type": "string" - }, "text/plain": [ "'56'" ] }, - "execution_count": 12, + "execution_count": 15, "metadata": {}, "output_type": "execute_result" } @@ -529,21 +566,18 @@ }, { "cell_type": "code", - "execution_count": null, + "execution_count": 16, "metadata": { "id": "YSNB2zjTx5SZ" }, "outputs": [ { "data": { - "application/vnd.google.colaboratory.intrinsic+json": { - "type": "string" - }, "text/plain": [ "'123456'" ] }, - "execution_count": 13, + "execution_count": 16, "metadata": {}, "output_type": "execute_result" } @@ -555,21 +589,18 @@ }, { "cell_type": "code", - "execution_count": null, + "execution_count": 17, "metadata": { "id": "Y2YVO-m0Ut9H" }, "outputs": [ { "data": { - "application/vnd.google.colaboratory.intrinsic+json": { - "type": "string" - }, "text/plain": [ "'five'" ] }, - "execution_count": 14, + "execution_count": 17, "metadata": {}, "output_type": "execute_result" } @@ -581,21 +612,18 @@ }, { "cell_type": "code", - "execution_count": null, + "execution_count": 18, "metadata": { "id": "h2MkTR0uTb6U" }, "outputs": [ { "data": { - "application/vnd.google.colaboratory.intrinsic+json": { - "type": "string" - }, "text/plain": [ "'cinq'" ] }, - "execution_count": 15, + "execution_count": 18, "metadata": {}, "output_type": "execute_result" } @@ -607,21 +635,18 @@ }, { "cell_type": "code", - "execution_count": null, + "execution_count": 19, "metadata": { "id": "OruCW1zETsZw" }, "outputs": [ { "data": { - "application/vnd.google.colaboratory.intrinsic+json": { - "type": "string" - }, "text/plain": [ "'IV'" ] }, - "execution_count": 16, + "execution_count": 19, "metadata": {}, "output_type": "execute_result" } @@ -633,21 +658,18 @@ }, { "cell_type": "code", - "execution_count": null, + "execution_count": 20, "metadata": { "id": "thDdSuUDUJOx" }, "outputs": [ { "data": { - "application/vnd.google.colaboratory.intrinsic+json": { - "type": "string" - }, "text/plain": [ "'八'" ] }, - "execution_count": 17, + "execution_count": 20, "metadata": {}, "output_type": "execute_result" } @@ -679,7 +701,7 @@ }, { "cell_type": "code", - "execution_count": null, + "execution_count": 21, "metadata": { "id": "9gAVuXT_wG3x" }, @@ -690,21 +712,18 @@ }, { "cell_type": "code", - "execution_count": null, + "execution_count": 22, "metadata": { "id": "d-c3YerBxVYs" }, "outputs": [ { "data": { - "application/vnd.google.colaboratory.intrinsic+json": { - "type": "string" - }, "text/plain": [ "'This is my model.'" ] }, - "execution_count": 20, + "execution_count": 22, "metadata": {}, "output_type": "execute_result" } @@ -728,7 +747,7 @@ }, { "cell_type": "code", - "execution_count": null, + "execution_count": 23, "metadata": { "id": "cepfaUCvVGCo" }, @@ -748,11 +767,19 @@ }, { "cell_type": "code", - "execution_count": null, + "execution_count": 24, "metadata": { "id": "kN_bkut_4ayL" }, - "outputs": [], + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + ": 404 Tuned model tunedModels/generate-num-9401 does not exist.\n" + ] + } + ], "source": [ "try:\n", " m = genai.get_tuned_model(f'tunedModels/{name}')\n", diff --git a/quickstarts/rest/Safety_REST.ipynb b/quickstarts/rest/Safety_REST.ipynb index 719af99ac..2e0e67762 100644 --- a/quickstarts/rest/Safety_REST.ipynb +++ b/quickstarts/rest/Safety_REST.ipynb @@ -98,8 +98,7 @@ }, "outputs": [], "source": [ - "import os\n", - "from google.colab import userdata" + "import os" ] }, { @@ -110,6 +109,7 @@ }, "outputs": [], "source": [ + "from google.colab import userdata\n", "os.environ['GOOGLE_API_KEY'] = userdata.get('GOOGLE_API_KEY')" ] }, @@ -121,7 +121,7 @@ }, "outputs": [], "source": [ - "os.environ['UNSAFE_PROMPT'] = " + "os.environ['UNSAFE_PROMPT'] = \"\"" ] }, { diff --git a/tools/run_notebooks.py b/tools/run_notebooks.py new file mode 100644 index 000000000..95e3b2b0c --- /dev/null +++ b/tools/run_notebooks.py @@ -0,0 +1,385 @@ +""" +https://github.com/google-gemini/generative-ai-python@main +""" + +import logging +import pathlib +import re +import sys +import os +import traceback + +from typing import Optional + +import tqdm + +from absl import app +from absl import flags +import absl.logging + +import nbconvert +import nbformat + +os.environ['PYDEVD_DISABLE_FILE_VALIDATION'] = '1' + +flags.DEFINE_bool("clean", False, "Remove the cache files and start a clearn run") +flags.DEFINE_bool("debug", False, "Print the notebook execution log") +flags.DEFINE_bool("save_output", False, "save the output back to the notebook file.") +flags.DEFINE_integer("timeout", 600, "Timeout in seconds for a cell's execution.") +flags.DEFINE_list('skip', None, "list of path patterns to skip") + +FLAGS = flags.FLAGS + +SKIP_EXECUTE = [re.compile("pip .*install .*google\.(ai\.generativelanguage|generativeai)"), + re.compile("userdata\.get"), + re.compile("google.colab.*?userdata"), + re.compile("list(_tuned)?_models")] + + +class DiscardStatusMessagesFilter(logging.Filter): + """Filters out jupyter execution status messages. + + These messages are just cluttter: + + ``` + I0507 execute.py:643] msg_type: status + I0507 execute.py:645] content: {'execution_state': 'busy'} + ``` + + The records have the form: + + ``` + record.msg = "msg_type: %s" + record.args = ('status',) + ``` + + and + + ``` + record.msg = "content: %s" + record.args = {'execution_state': ...} + ``` + """ + + def filter(self, record: logging.LogRecord) -> bool: + """Reject status messages. + + Args: + record: A `logging.LogRecord`. + + Returns: + False: (discard) for status messages. + True: (keep) for anything else. + """ + if record.msg.startswith("msg_type:"): + if record.args == ("status",): + return False + + if not record.msg.startswith("content:"): + return True + + args = record.args + if not isinstance(args, dict): + return True + + if args.get("execution_state", None): + return False + + return True + + +class DiscardRawDataFilter(logging.Filter): + r"""Trims binary and html data, discards raw code and exceptions. + + Image and video data are long, trim those entries to the first few characters. + + Raw-exceptions are filled with escaped color control characters. These are + not human readable, so these are discarded. We can rely on the + pretty-printed exceptions, those work fine. + + Similarly code cells are pretty-printed as well by the "Executing Cell" + records. So drop the raw-code `LogRecords`. + + These binary and html messages have the form: + + ``` + record.msg = "content: %s" + record.args = {'data':{MIME-TYPE:CONTENT}} + ``` + + The raw exceptions have the form: + + ``` + record.msg = "content: %s" + record.args = {'traceback': ...} + record.args = {'code': ...} + ``` + + """ + + _TRIM_LENGTH = 20 + + def filter(self, record: logging.LogRecord) -> bool: + """Trims binary and html data records, and discards raw-exceptions. + + Args: + record: A `logging.LogRecord`. + + Returns: + False: (discard) for raw-exception records. + True: (keep) all other records. + """ + if not record.msg.startswith("content:"): + return True + + args = record.args + if not isinstance(args, dict): + return True + + if args.get("traceback") is not None: + return False + if args.get("code") is not None: + return False + + data = args.get("data", None) + if data is None: + return True + + new_data = {} + for key, value in data.items(): + key = key.lower() + if "image" in key or "video" in key or "html" in key: + value = value[: self._TRIM_LENGTH] + "..." + new_data[key] = value + + # Replace the args dict with a copy, so it doesn't affect notebook output. + new_args = args.copy() + new_args["data"] = new_data + record.args = new_args + return True + + +class PrettyPrintNotebookStdout(logging.Filter): + """Pretty-prints std-out messages generated during notebook exdecution. + + These messages have the form: + + ``` + record.msg = 'content: %s' + record.args = {'name': 'stdout', 'text': '...'} + ``` + + The text __repr__ is hard to read, replace the record's dict with a + pretty-printed text. + """ + + def filter(self, record: logging.LogRecord) -> bool: + """Converts stdout records to a pretty-printed form. + + Args: + record: A `logging.LogRecord`. + + Returns: + True: (keep) all records. + """ + if not record.msg.startswith("content:"): + return True + + if not isinstance(record.args, dict): + return True + + name = record.args.get("name", None) + if name is None: + return True + + text = record.args.get("text", None) + if name == "stdout" and text is not None: + record.msg = "StdOut: \n\n%s" + record.args = (text,) + + return True + + +class CustomNotebookExecutor(nbconvert.preprocessors.ExecutePreprocessor): + """Executes all cells in a notebook.""" + + def _should_execute(self, cell: nbformat.notebooknode.NotebookNode) -> bool: + if cell["cell_type"] == "code": + source: str = cell.source + if any(pattern.search(source) for pattern in SKIP_EXECUTE): + return False + + return True + + def preprocess_cell(self, cell, resources, cell_index, **kwargs): + """Executes one cell in a notebook.""" + if not self._should_execute(cell): + print(">>>>>>>> Skiping cell:") + print(cell.source) + print("<<<<<<<<") + + return cell, resources + + return super().preprocess_cell(cell, resources, cell_index, **kwargs) + + +def init_logging() -> None: + """Initialize logger and handler to report execution results. + + `nbconvert` uses the LogRecords to capture notebook execution results. + These handlers are independent from the ones used in nbconvert. They + * Listen to the same stream of events. + * Are careful not to modify mutable datastructures in the messages. + + See https://docs.python.org/3/howto/logging.html#logging-flow for details. + """ + root_logger = logging.getLogger() + root_logger.setLevel(logging.DEBUG) + + handler = absl.logging.get_absl_handler() + handler.setLevel(logging.DEBUG) + handler.addFilter(DiscardStatusMessagesFilter()) + handler.addFilter(DiscardRawDataFilter()) + handler.addFilter(PrettyPrintNotebookStdout()) + + +def execute( + processor: nbconvert.preprocessors.ExecutePreprocessor, + input_notebook: str, + output_notebook: Optional[str] = None, +): + """Executes a notebook with the custom executor. + + It also saves the outputs: + * To the same notebook if output notebook is not specified. + * To an output notebook if it is specified. + + Args: + processor: The processor to use to execute the notebooks. + input_notebook: Path of the input notebook. + output_notebook: Path of the output notebook. + + Raises: + nbconvert.preprocessors.CellExecutionError: When a cell's execution fails. + """ + + # Read the notebook contents. + with open(input_notebook) as input_nb: + nb = nbformat.read(input_nb, as_version=4) + + # Default the output_notebook to the notebooks passed in via the flag. + # If its `None`, then set the output_notebook to the input_notebook + # overwriting the input_notebook. + if output_notebook is None: + output_notebook = input_notebook + + # Execute the notebook. + processor.preprocess( + nb, + resources={"metadata": {"path": str(pathlib.Path(input_notebook).parent)}}, + ) + + if FLAGS.save_output: + with open(output_notebook, "w", encoding="utf-8") as output_nb: + nbformat.write(nb, output_nb) + + +def test_notebook(processor, notebook): + execute( + processor=processor, + input_notebook=str(notebook), + output_notebook=str(notebook), + ) + + +def main(argv): + notebooks = argv[1:] + + if FLAGS.debug: + init_logging() + + if FLAGS.clean: + pathlib.Path('error.txt').unlink(missing_ok=True) + pathlib.Path('good.txt').unlink(missing_ok=True) + pathlib.Path('tracebacks.txt').unlink(missing_ok=True) + + + processor = CustomNotebookExecutor(timeout=FLAGS.timeout) + + if notebooks: + if len(notebooks) == 1: + nb = pathlib.Path(notebooks[0]) + if nb.is_file(): + print(nb) + test_notebook(processor, nb) + print(' Okay!') + return + + else: + notebooks = [os.getcwd()] + notebooks = [pathlib.Path(p) for p in notebooks] + + def expand_dirs(paths): + for p in paths: + if p.is_dir(): + yield from p.rglob("*.ipynb") + else: + yield p + + + notebooks = expand_dirs(notebooks) + skip = [".ipynb_checkpoints"] + if FLAGS.skip: + skip.extend(FLAGS.skip) + + def filter(paths): + for path in paths: + if any(s in str(path) for s in skip): + continue + yield path + + notebooks = filter(notebooks) + notebooks = list(notebooks) + + good_file = pathlib.Path('good.txt') + if good_file.exists(): + good_notebooks = set(good_file.read_text().splitlines()) + else: + good_notebooks = [] + + error_file = pathlib.Path('error.txt') + if error_file.exists(): + error_notebooks = set(error_file.read_text().splitlines()) + else: + error_notebooks = [] + + traceback_file = pathlib.Path('tracebacks.txt') + with open(error_file, 'a') as ef, open(good_file, 'a') as df, open(traceback_file, 'a') as tbf: + for notebook in tqdm.tqdm(notebooks): + print("\n"+"_"*80) + print(notebook) + if str(notebook) in good_notebooks: + print(' Okay!') + continue + if str(notebook) in error_notebooks: + print(' Error!') + continue + + # Execute a notebook with the custom executor. + try: + test_notebook(processor, notebook) + except Exception as e: + print(" Error!") + tbf.write("_"*80 + "\n") + tbf.write(f"notebook: {notebook}\n") + traceback.print_exception(e, file=tbf) + traceback.print_exception(e) + print(f"\n\nin notebook: {notebook}") + ef.write(str(notebook)+'\n') + else: + print(" Okay!") + df.write(str(notebook)+'\n') + + +if __name__ == "__main__": + app.run(main)