From 4b8cef905fa91e1b1661e85422b678b5cee6324b Mon Sep 17 00:00:00 2001 From: Hyesoo Kim <100982596+duper203@users.noreply.github.com> Date: Fri, 4 Oct 2024 16:44:00 -0700 Subject: [PATCH 1/4] change phoenix code --- Solar-Fullstack-LLM-101/14_Reasoning.ipynb | 1278 +++++++++++--------- 1 file changed, 696 insertions(+), 582 deletions(-) diff --git a/Solar-Fullstack-LLM-101/14_Reasoning.ipynb b/Solar-Fullstack-LLM-101/14_Reasoning.ipynb index 4e8d3b8..ce7f909 100644 --- a/Solar-Fullstack-LLM-101/14_Reasoning.ipynb +++ b/Solar-Fullstack-LLM-101/14_Reasoning.ipynb @@ -1,596 +1,710 @@ { - "cells": [ - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "\n", - "\"Open\n", - "" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "# 14. Reasoning" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "## Goal\n", - "Apply reasoning and CoT in the prompt." - ] - }, - { - "cell_type": "code", - "execution_count": 1, - "metadata": {}, - "outputs": [], - "source": [ - "! pip3 install -qU langchain-upstage requests python-dotenv datasets arize-phoenix" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "## UPSTAGE_API_KEY\n", - "To obtain your Upstage API key, follow these steps:\n", - "\n", - "1. Visit the Upstage AI console at .\n", - "2. Sign up for an account if you don't already have one.\n", - "3. Log in to your account.\n", - "4. Navigate to the API key section.\n", - "5. Generate your API key.\n", - "6. Copy the key and save it securely.\n", - "\n", - "![Console](./figures/console.upstage.ai.jpg)" - ] - }, - { - "cell_type": "code", - "execution_count": 2, - "metadata": {}, - "outputs": [], - "source": [ - "# @title set API key\n", - "from pprint import pprint\n", - "import os\n", - "\n", - "import warnings\n", - "\n", - "warnings.filterwarnings(\"ignore\")\n", - "\n", - "if \"google.colab\" in str(get_ipython()):\n", - " # Running in Google Colab. Please set the UPSTAGE_API_KEY in the Colab Secrets\n", - " from google.colab import userdata\n", - "\n", - " os.environ[\"UPSTAGE_API_KEY\"] = userdata.get(\"UPSTAGE_API_KEY\")\n", - "else:\n", - " # Running locally. Please set the UPSTAGE_API_KEY in the .env file\n", - " from dotenv import load_dotenv\n", - "\n", - " load_dotenv()\n", - "\n", - "assert (\n", - " \"UPSTAGE_API_KEY\" in os.environ\n", - "), \"Please set the UPSTAGE_API_KEY environment variable\"" - ] - }, - { - "cell_type": "code", - "execution_count": 3, - "metadata": {}, - "outputs": [ + "cells": [ { - "name": "stdout", - "output_type": "stream", - "text": [ - "🌍 To view the Phoenix app in your browser, visit http://localhost:6006/\n", - "📖 For more information on how to use Phoenix, check out https://docs.arize.com/phoenix\n" - ] - } - ], - "source": [ - "import phoenix as px\n", - "\n", - "ssession = px.launch_app()" - ] - }, - { - "cell_type": "code", - "execution_count": 4, - "metadata": {}, - "outputs": [ + "cell_type": "markdown", + "metadata": { + "id": "1wENfKv_jcdq" + }, + "source": [ + "\n", + "\"Open\n", + "" + ] + }, { - "data": { - "text/plain": [ - ">" + "cell_type": "markdown", + "metadata": { + "id": "yL9Ci8Ofjcdr" + }, + "source": [ + "# 14. Reasoning" ] - }, - "execution_count": 4, - "metadata": {}, - "output_type": "execute_result" - } - ], - "source": [ - "from phoenix.trace.langchain import LangChainInstrumentor\n", - "\n", - "LangChainInstrumentor().instrument" - ] - }, - { - "cell_type": "code", - "execution_count": 5, - "metadata": {}, - "outputs": [], - "source": [ - "from datasets import load_dataset\n", - "\n", - "ds = load_dataset(\"SkunkworksAI/reasoning-0.01\")" - ] - }, - { - "cell_type": "code", - "execution_count": 6, - "metadata": {}, - "outputs": [ + }, { - "data": { - "text/plain": [ - "DatasetDict({\n", - " train: Dataset({\n", - " features: ['instruction', 'reasoning', 'output', 'reasoning_chains'],\n", - " num_rows: 29857\n", - " })\n", - "})" + "cell_type": "markdown", + "metadata": { + "id": "dStdKMBljcds" + }, + "source": [ + "## Goal\n", + "Apply reasoning and CoT in the prompt." ] - }, - "execution_count": 6, - "metadata": {}, - "output_type": "execute_result" - } - ], - "source": [ - "ds" - ] - }, - { - "cell_type": "code", - "execution_count": 7, - "metadata": {}, - "outputs": [ + }, { - "name": "stdout", - "output_type": "stream", - "text": [ - "('----\\n'\n", - " 'Example 1:\\n'\n", - " '\\n'\n", - " 'Instruction: If a die is rolled three times, what is the probability of '\n", - " 'getting a sum of 11? None\\n'\n", - " '\\n'\n", - " 'Reasoning: 1. Understand the problem: We need to find the probability of '\n", - " 'getting a sum of 11 when rolling a die three times.\\n'\n", - " '2. Calculate total possible outcomes: A die has 6 faces, so for each roll, '\n", - " 'there are 6 possibilities. For three rolls, the total possible outcomes are '\n", - " '6^3 = 216.\\n'\n", - " '3. Identify favorable outcomes: List all combinations of rolls that result '\n", - " 'in a sum of 11. There are 18 such combinations.\\n'\n", - " '4. Calculate probability: Divide the number of favorable outcomes by the '\n", - " 'total possible outcomes: 18 / 216 = 1/12.\\n'\n", - " '5. Conclusion: The probability of getting a sum of 11 when rolling a die '\n", - " 'three times is 1/12.\\n'\n", - " '\\n'\n", - " \"Reasoning Chains: [{'step': 1, 'thought': 'Understand the problem: We need \"\n", - " 'to find the probability of getting a sum of 11 when rolling a die three '\n", - " \"times.'}, {'step': 2, 'thought': 'Calculate total possible outcomes: A die \"\n", - " 'has 6 faces, so for each roll, there are 6 possibilities. For three rolls, '\n", - " \"the total possible outcomes are 6^3 = 216.'}, {'step': 3, 'thought': \"\n", - " \"'Identify favorable outcomes: List all combinations of rolls that result in \"\n", - " \"a sum of 11. There are 18 such combinations.'}, {'step': 4, 'thought': \"\n", - " \"'Calculate probability: Divide the number of favorable outcomes by the total \"\n", - " \"possible outcomes: 18 / 216 = 1/12.'}, {'step': 5, 'thought': 'Conclusion: \"\n", - " 'The probability of getting a sum of 11 when rolling a die three times is '\n", - " \"1/12.'}]\\n\"\n", - " '----\\n'\n", - " 'Example 2:\\n'\n", - " '\\n'\n", - " 'Instruction: The interactions will be about the science behind culinary '\n", - " 'techniques. The setting is a cooking class where three friends are '\n", - " 'discussing various aspects of cooking and sharing their knowledge.\\n'\n", - " '- USER/Jane: A curious learner who wants to understand the science behind '\n", - " 'cooking\\n'\n", - " '- Mike: An experienced home cook with a passion for experimenting in the '\n", - " 'kitchen\\n'\n", - " '- Sarah: A food scientist who loves explaining the chemistry behind '\n", - " 'different cooking processes\\n'\n", - " '\\n'\n", - " ' None\\n'\n", - " '\\n'\n", - " 'Reasoning: 1. Start with the given setting: a cooking class with three '\n", - " 'friends discussing the science behind culinary techniques.\\n'\n", - " '2. Introduce the topic of resting meat after cooking, with Mike asking Jane '\n", - " \"if she's ever wondered about it.\\n\"\n", - " '3. Have Sarah explain the science behind resting meat, mentioning denatured '\n", - " 'proteins and juice redistribution.\\n'\n", - " \"4. Address the user's question about resting meat, with Sarah confirming \"\n", - " 'that it allows juices to redistribute.\\n'\n", - " '5. Move on to the topic of adding salt to water, with Mike mentioning its '\n", - " 'effect on boiling point.\\n'\n", - " \"6. Have Sarah explain the science behind salt's effect on boiling point, \"\n", - " 'mentioning the higher temperature required for boiling.\\n'\n", - " \"7. Address the user's question about cooking speed, with Sarah explaining \"\n", - " \"that it's slightly faster due to the hotter water.\\n\"\n", - " '8. Introduce the topic of acids in cooking, with Mike mentioning their use '\n", - " 'in brightening dishes.\\n'\n", - " \"9. Have Sarah explain the science behind acids' effects on flavor and \"\n", - " 'tenderizing meats.\\n'\n", - " \"10. Address the user's question about baking, with Mike mentioning the \"\n", - " 'science involved in baking and Sarah explaining the role of gluten and '\n", - " 'leavening agents.\\n'\n", - " '11. Conclude the conversation with the characters expressing their '\n", - " 'fascination with the science behind cooking and their excitement to continue '\n", - " 'learning and experimenting.\\n'\n", - " '\\n'\n", - " \"Reasoning Chains: [{'step': 1, 'thought': 'Start with the given setting: a \"\n", - " 'cooking class with three friends discussing the science behind culinary '\n", - " 'techniques.\\'}, {\\'step\\': 2, \\'thought\\': \"Introduce the topic of resting '\n", - " \"meat after cooking, with Mike asking Jane if she's ever wondered about \"\n", - " 'it.\"}, {\\'step\\': 3, \\'thought\\': \\'Have Sarah explain the science behind '\n", - " \"resting meat, mentioning denatured proteins and juice redistribution.'}, \"\n", - " '{\\'step\\': 4, \\'thought\\': \"Address the user\\'s question about resting meat, '\n", - " 'with Sarah confirming that it allows juices to redistribute.\"}, {\\'step\\': '\n", - " \"5, 'thought': 'Move on to the topic of adding salt to water, with Mike \"\n", - " 'mentioning its effect on boiling point.\\'}, {\\'step\\': 6, \\'thought\\': \"Have '\n", - " \"Sarah explain the science behind salt's effect on boiling point, mentioning \"\n", - " 'the higher temperature required for boiling.\"}, {\\'step\\': 7, \\'thought\\': '\n", - " '\"Address the user\\'s question about cooking speed, with Sarah explaining '\n", - " 'that it\\'s slightly faster due to the hotter water.\"}, {\\'step\\': 8, '\n", - " \"'thought': 'Introduce the topic of acids in cooking, with Mike mentioning \"\n", - " 'their use in brightening dishes.\\'}, {\\'step\\': 9, \\'thought\\': \"Have Sarah '\n", - " \"explain the science behind acids' effects on flavor and tenderizing \"\n", - " 'meats.\"}, {\\'step\\': 10, \\'thought\\': \"Address the user\\'s question about '\n", - " 'baking, with Mike mentioning the science involved in baking and Sarah '\n", - " 'explaining the role of gluten and leavening agents.\"}, {\\'step\\': 11, '\n", - " \"'thought': 'Conclude the conversation with the characters expressing their \"\n", - " 'fascination with the science behind cooking and their excitement to continue '\n", - " \"learning and experimenting.'}]\\n\")\n" - ] - } - ], - "source": [ - "# DatasetDict({\n", - "# train: Dataset({\n", - "# features: ['instruction', 'reasoning', 'output', 'reasoning_chains'],\n", - "# num_rows: 29857\n", - "# })\n", - "# })\n", - "\n", - "# Let's take a look at the first five examples in the training set\n", - "# Skip Output: {example['output']}\n", - "reasoning_chain_examples = \"\"\n", - "for i, example in enumerate(ds[\"train\"].select(range(2))):\n", - " reasoning_chain_examples += f\"\"\"----\n", - "Example {i + 1}:\n", - "\n", - "Instruction: {example['instruction']}\n", - "\n", - "Reasoning: {example['reasoning']}\n", - "\n", - "Reasoning Chains: {example['reasoning_chains']}\n", - "\"\"\"\n", - "\n", - "pprint(reasoning_chain_examples)" - ] - }, - { - "cell_type": "code", - "execution_count": 8, - "metadata": {}, - "outputs": [ + "cell_type": "code", + "execution_count": 1, + "metadata": { + "id": "1iCAb4EGjcds" + }, + "outputs": [], + "source": [ + "! pip3 install -qU langchain-upstage requests python-dotenv datasets arize-phoenix openinference-instrumentation-langchain" + ] + }, { - "name": "stdout", - "output_type": "stream", - "text": [ - "Human: Given Instruction, please generate {what}. Please use the following exampels.\n", - " If reasoning and/or reasoning chains are provided, please use them as context to generate the {what}.\n", - " Please only generate the {what} and do not include others.\n", - " \n", - " See the examples below:\n", - " ----\n", - "Example 1:\n", - "\n", - "Instruction: If a die is rolled three times, what is the probability of getting a sum of 11? None\n", - "\n", - "Reasoning: 1. Understand the problem: We need to find the probability of getting a sum of 11 when rolling a die three times.\n", - "2. Calculate total possible outcomes: A die has 6 faces, so for each roll, there are 6 possibilities. For three rolls, the total possible outcomes are 6^3 = 216.\n", - "3. Identify favorable outcomes: List all combinations of rolls that result in a sum of 11. There are 18 such combinations.\n", - "4. Calculate probability: Divide the number of favorable outcomes by the total possible outcomes: 18 / 216 = 1/12.\n", - "5. Conclusion: The probability of getting a sum of 11 when rolling a die three times is 1/12.\n", - "\n", - "Reasoning Chains: [{'step': 1, 'thought': 'Understand the problem: We need to find the probability of getting a sum of 11 when rolling a die three times.'}, {'step': 2, 'thought': 'Calculate total possible outcomes: A die has 6 faces, so for each roll, there are 6 possibilities. For three rolls, the total possible outcomes are 6^3 = 216.'}, {'step': 3, 'thought': 'Identify favorable outcomes: List all combinations of rolls that result in a sum of 11. There are 18 such combinations.'}, {'step': 4, 'thought': 'Calculate probability: Divide the number of favorable outcomes by the total possible outcomes: 18 / 216 = 1/12.'}, {'step': 5, 'thought': 'Conclusion: The probability of getting a sum of 11 when rolling a die three times is 1/12.'}]\n", - "----\n", - "Example 2:\n", - "\n", - "Instruction: The interactions will be about the science behind culinary techniques. The setting is a cooking class where three friends are discussing various aspects of cooking and sharing their knowledge.\n", - "- USER/Jane: A curious learner who wants to understand the science behind cooking\n", - "- Mike: An experienced home cook with a passion for experimenting in the kitchen\n", - "- Sarah: A food scientist who loves explaining the chemistry behind different cooking processes\n", - "\n", - " None\n", - "\n", - "Reasoning: 1. Start with the given setting: a cooking class with three friends discussing the science behind culinary techniques.\n", - "2. Introduce the topic of resting meat after cooking, with Mike asking Jane if she's ever wondered about it.\n", - "3. Have Sarah explain the science behind resting meat, mentioning denatured proteins and juice redistribution.\n", - "4. Address the user's question about resting meat, with Sarah confirming that it allows juices to redistribute.\n", - "5. Move on to the topic of adding salt to water, with Mike mentioning its effect on boiling point.\n", - "6. Have Sarah explain the science behind salt's effect on boiling point, mentioning the higher temperature required for boiling.\n", - "7. Address the user's question about cooking speed, with Sarah explaining that it's slightly faster due to the hotter water.\n", - "8. Introduce the topic of acids in cooking, with Mike mentioning their use in brightening dishes.\n", - "9. Have Sarah explain the science behind acids' effects on flavor and tenderizing meats.\n", - "10. Address the user's question about baking, with Mike mentioning the science involved in baking and Sarah explaining the role of gluten and leavening agents.\n", - "11. Conclude the conversation with the characters expressing their fascination with the science behind cooking and their excitement to continue learning and experimenting.\n", - "\n", - "Reasoning Chains: [{'step': 1, 'thought': 'Start with the given setting: a cooking class with three friends discussing the science behind culinary techniques.'}, {'step': 2, 'thought': \"Introduce the topic of resting meat after cooking, with Mike asking Jane if she's ever wondered about it.\"}, {'step': 3, 'thought': 'Have Sarah explain the science behind resting meat, mentioning denatured proteins and juice redistribution.'}, {'step': 4, 'thought': \"Address the user's question about resting meat, with Sarah confirming that it allows juices to redistribute.\"}, {'step': 5, 'thought': 'Move on to the topic of adding salt to water, with Mike mentioning its effect on boiling point.'}, {'step': 6, 'thought': \"Have Sarah explain the science behind salt's effect on boiling point, mentioning the higher temperature required for boiling.\"}, {'step': 7, 'thought': \"Address the user's question about cooking speed, with Sarah explaining that it's slightly faster due to the hotter water.\"}, {'step': 8, 'thought': 'Introduce the topic of acids in cooking, with Mike mentioning their use in brightening dishes.'}, {'step': 9, 'thought': \"Have Sarah explain the science behind acids' effects on flavor and tenderizing meats.\"}, {'step': 10, 'thought': \"Address the user's question about baking, with Mike mentioning the science involved in baking and Sarah explaining the role of gluten and leavening agents.\"}, {'step': 11, 'thought': 'Conclude the conversation with the characters expressing their fascination with the science behind cooking and their excitement to continue learning and experimenting.'}]\n", - "\n", - " ---\n", - " \n", - " Instruction: {instruction}\n", - " --\n", - " {reasoning}\n", - " --\n", - " {reasoning_chains} \n", - " \n" - ] - } - ], - "source": [ - "from langchain_core.prompts import PromptTemplate, ChatPromptTemplate\n", - "from langchain_core.output_parsers import StrOutputParser\n", - "from langchain_upstage import ChatUpstage\n", - "\n", - "reasoning_chain_teample = ChatPromptTemplate.from_messages(\n", - " [\n", - " (\n", - " \"human\",\n", - " \"\"\"Given Instruction, please generate {what}. Please use the following exampels.\n", - " If reasoning and/or reasoning chains are provided, please use them as context to generate the {what}.\n", - " Please only generate the {what} and do not include others.\n", - " \n", - " See the examples below:\n", - " {examples}\n", - " ---\n", - " \n", - " Instruction: {instruction}\n", - " --\n", - " {reasoning}\n", - " --\n", - " {reasoning_chains} \n", - " \"\"\",\n", - " )\n", - " ]\n", - ")\n", - "\n", - "\n", - "promt_example = reasoning_chain_teample.format(\n", - " what=\"{what}\",\n", - " instruction=\"{instruction}\",\n", - " reasoning=\"{reasoning}\",\n", - " reasoning_chains=\"{reasoning_chains}\",\n", - " examples=reasoning_chain_examples,\n", - ")\n", - "print(promt_example)" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [] - }, - { - "cell_type": "code", - "execution_count": 9, - "metadata": {}, - "outputs": [], - "source": [ - "llm = ChatUpstage(model=\"solar-pro\")\n", - "chain = reasoning_chain_teample | llm | StrOutputParser()" - ] - }, - { - "cell_type": "code", - "execution_count": 10, - "metadata": {}, - "outputs": [], - "source": [ - "instruction = \"3.11 vs 3.9 which one is greater?\"" - ] - }, - { - "cell_type": "code", - "execution_count": 11, - "metadata": {}, - "outputs": [ + "cell_type": "markdown", + "metadata": { + "id": "JtwI22PXjcds" + }, + "source": [ + "## UPSTAGE_API_KEY\n", + "To obtain your Upstage API key, follow these steps:\n", + "\n", + "1. Visit the Upstage AI console at .\n", + "2. Sign up for an account if you don't already have one.\n", + "3. Log in to your account.\n", + "4. Navigate to the API key section.\n", + "5. Generate your API key.\n", + "6. Copy the key and save it securely.\n", + "\n", + "![Console](https://github.com/UpstageAI/cookbook/blob/main/Solar-Fullstack-LLM-101/figures/console.upstage.ai.jpg?raw=1)" + ] + }, { - "name": "stdout", - "output_type": "stream", - "text": [ - "('Reasoning: 1. Identify the problem: We need to compare the numerical values '\n", - " 'of 3.11 and 3.9.\\n'\n", - " '2. Understand place values: Recognize that both numbers have the same whole '\n", - " 'number part (3), so we only need to compare the decimal parts (0.11 and '\n", - " '0.9).\\n'\n", - " '3. Compare decimal parts: Since 0.9 is greater than 0.11, the number with '\n", - " '0.9 as its decimal part is greater.\\n'\n", - " '4. Conclude: Based on the comparison, 3.9 is greater than 3.11.\\n'\n", - " '\\n'\n", - " \"Reasoning Chains: [{'step': 1, 'thought': 'Identify the problem: We need to \"\n", - " \"compare the numerical values of 3.11 and 3.9.'}, {'step': 2, 'thought': \"\n", - " \"'Understand place values: Recognize that both numbers have the same whole \"\n", - " 'number part (3), so we only need to compare the decimal parts (0.11 and '\n", - " \"0.9).'}, {'step': 3, 'thought': 'Compare decimal parts: Since 0.9 is greater \"\n", - " \"than 0.11, the number with 0.9 as its decimal part is greater.'}, {'step': \"\n", - " \"4, 'thought': 'Conclude: Based on the comparison, 3.9 is greater than \"\n", - " \"3.11.'}]\")\n" - ] - } - ], - "source": [ - "reasoning = chain.invoke(\n", - " {\n", - " \"instruction\": instruction,\n", - " \"reasoning\": \"\",\n", - " \"reasoning_chains\": \"\",\n", - " \"what\": \"reasoning\",\n", - " \"examples\": reasoning_chain_examples,\n", - " }\n", - ")\n", - "\n", - "pprint(reasoning)" - ] - }, - { - "cell_type": "code", - "execution_count": 12, - "metadata": {}, - "outputs": [ + "cell_type": "code", + "execution_count": 2, + "metadata": { + "id": "LiXXGlRJjcds" + }, + "outputs": [], + "source": [ + "# @title set API key\n", + "from pprint import pprint\n", + "import os\n", + "\n", + "import warnings\n", + "\n", + "warnings.filterwarnings(\"ignore\")\n", + "\n", + "if \"google.colab\" in str(get_ipython()):\n", + " # Running in Google Colab. Please set the UPSTAGE_API_KEY in the Colab Secrets\n", + " from google.colab import userdata\n", + "\n", + " os.environ[\"UPSTAGE_API_KEY\"] = userdata.get(\"UPSTAGE_API_KEY\")\n", + "else:\n", + " # Running locally. Please set the UPSTAGE_API_KEY in the .env file\n", + " from dotenv import load_dotenv\n", + "\n", + " load_dotenv()\n", + "\n", + "assert (\n", + " \"UPSTAGE_API_KEY\" in os.environ\n", + "), \"Please set the UPSTAGE_API_KEY environment variable\"" + ] + }, { - "name": "stdout", - "output_type": "stream", - "text": [ - "('Reasoning: 1. Understand the problem: We need to compare two decimal '\n", - " 'numbers, 3.11 and 3.9, to determine which one is greater.\\n'\n", - " '2. Compare the whole number parts: Both numbers have the same whole number '\n", - " 'part, which is 3.\\n'\n", - " '3. Compare the decimal parts: Look at the first decimal place. For 3.11, '\n", - " \"it's 1, and for 3.9, it's 9. Since 9 is greater than 1, 3.9 is greater than \"\n", - " '3.11.\\n'\n", - " '4. Conclusion: 3.9 is greater than 3.11.\\n'\n", - " '\\n'\n", - " \"Reasoning Chains: [{'step': 1, 'thought': 'Understand the problem: We need \"\n", - " 'to compare two decimal numbers, 3.11 and 3.9, to determine which one is '\n", - " \"greater.'}, {'step': 2, 'thought': 'Compare the whole number parts: Both \"\n", - " \"numbers have the same whole number part, which is 3.'}, {'step': 3, \"\n", - " \"'thought': 'Compare the decimal parts: Look at the first decimal place. For \"\n", - " \"3.11, it\\\\'s 1, and for 3.9, it\\\\'s 9. Since 9 is greater than 1, 3.9 is \"\n", - " \"greater than 3.11.'}, {'step': 4, 'thought': 'Conclusion: 3.9 is greater \"\n", - " \"than 3.11.'}]\")\n" - ] - } - ], - "source": [ - "reasoning = chain.invoke(\n", - " {\n", - " \"instruction\": instruction,\n", - " \"reasoning\": \"\",\n", - " \"reasoning_chains\": \"\",\n", - " \"what\": \"reasoning\",\n", - " \"examples\": reasoning_chain_examples,\n", - " }\n", - ")\n", - "\n", - "pprint(reasoning)" - ] - }, - { - "cell_type": "code", - "execution_count": 13, - "metadata": {}, - "outputs": [ + "cell_type": "code", + "execution_count": 3, + "metadata": { + "id": "t_IpbqFGjcds", + "outputId": "d914f467-71b2-44df-efd9-ba9b49ba89c3", + "colab": { + "base_uri": "https://localhost:8080/", + "height": 69 + } + }, + "outputs": [ + { + "output_type": "stream", + "name": "stdout", + "text": [ + "🌍 To view the Phoenix app in your browser, visit https://xylx1gv2ve9-496ff2e9c6d22116-6006-colab.googleusercontent.com/\n", + "📖 For more information on how to use Phoenix, check out https://docs.arize.com/phoenix\n" + ] + }, + { + "output_type": "execute_result", + "data": { + "text/plain": [ + "" + ] + }, + "metadata": {}, + "execution_count": 3 + } + ], + "source": [ + "import phoenix as px\n", + "\n", + "px.launch_app()" + ] + }, { - "name": "stdout", - "output_type": "stream", - "text": [ - "('Reasoning: Reasoning: 1. Understand the problem: We need to compare two '\n", - " 'decimal numbers, 3.11 and 3.9, to determine which one is greater.\\n'\n", - " '2. Compare the whole number parts: Both numbers have the same whole number '\n", - " 'part, which is 3.\\n'\n", - " '3. Compare the decimal parts: Look at the first decimal place. For 3.11, '\n", - " \"it's 1, and for 3.9, it's 9. Since 9 is greater than 1, 3.9 is greater than \"\n", - " '3.11.\\n'\n", - " '4. Conclusion: 3.9 is greater than 3.11.\\n'\n", - " '\\n'\n", - " \"Reasoning Chains: [{'step': 1, 'thought': 'Understand the problem: We need \"\n", - " 'to compare two decimal numbers, 3.11 and 3.9, to determine which one is '\n", - " \"greater.'}, {'step': 2, 'thought': 'Compare the whole number parts: Both \"\n", - " \"numbers have the same whole number part, which is 3.'}, {'step': 3, \"\n", - " \"'thought': 'Compare the decimal parts: Look at the first decimal place. For \"\n", - " \"3.11, it\\\\'s 1, and for 3.9, it\\\\'s 9. Since 9 is greater than 1, 3.9 is \"\n", - " \"greater than 3.11.'}, {'step': 4, 'thought': 'Conclusion: 3.9 is greater \"\n", - " \"than 3.11.'}]\")\n" - ] - } - ], - "source": [ - "reasoning_chain = chain.invoke(\n", - " {\n", - " \"instruction\": instruction,\n", - " \"reasoning\": f\"Reasoning: {reasoning}\",\n", - " \"reasoning_chains\": \"\",\n", - " \"what\": \"reasoning chain\",\n", - " \"examples\": reasoning_chain_examples,\n", - " }\n", - ")\n", - "\n", - "pprint(reasoning_chain)" - ] - }, - { - "cell_type": "code", - "execution_count": 14, - "metadata": {}, - "outputs": [ + "cell_type": "code", + "source": [ + "from phoenix.otel import register\n", + "\n", + "tracer_provider = register(\n", + " project_name=\"reasoning\", # Default is 'default'\n", + ")" + ], + "metadata": { + "id": "d5LIEVPZxDxh", + "outputId": "5850b17a-fd37-471d-ab82-3dd03b6733ef", + "colab": { + "base_uri": "https://localhost:8080/" + } + }, + "execution_count": 4, + "outputs": [ + { + "output_type": "stream", + "name": "stdout", + "text": [ + "🔭 OpenTelemetry Tracing Details 🔭\n", + "| Phoenix Project: reasoning\n", + "| Span Processor: SimpleSpanProcessor\n", + "| Collector Endpoint: localhost:4317\n", + "| Transport: gRPC\n", + "| Transport Headers: {'user-agent': '****'}\n", + "| \n", + "| Using a default SpanProcessor. `add_span_processor` will overwrite this default.\n", + "| \n", + "| `register` has set this TracerProvider as the global OpenTelemetry default.\n", + "| To disable this behavior, call `register` with `set_global_tracer_provider=False`.\n", + "\n" + ] + } + ] + }, + { + "cell_type": "code", + "execution_count": 5, + "metadata": { + "id": "0Yn4WRGqjcdt" + }, + "outputs": [], + "source": [ + "from openinference.instrumentation.langchain import LangChainInstrumentor\n", + "\n", + "LangChainInstrumentor().instrument(tracer_provider=tracer_provider)" + ] + }, { - "name": "stdout", - "output_type": "stream", - "text": [ - "'3.9'\n" - ] + "cell_type": "code", + "execution_count": 6, + "metadata": { + "id": "al1_0GWMjcdt" + }, + "outputs": [], + "source": [ + "from datasets import load_dataset\n", + "\n", + "ds = load_dataset(\"SkunkworksAI/reasoning-0.01\")" + ] + }, + { + "cell_type": "code", + "execution_count": 7, + "metadata": { + "id": "JFuqj2fJjcdt", + "outputId": "19c52097-896a-452a-afd6-28d542672f70", + "colab": { + "base_uri": "https://localhost:8080/" + } + }, + "outputs": [ + { + "output_type": "execute_result", + "data": { + "text/plain": [ + "DatasetDict({\n", + " train: Dataset({\n", + " features: ['instruction', 'reasoning', 'output', 'reasoning_chains'],\n", + " num_rows: 29857\n", + " })\n", + "})" + ] + }, + "metadata": {}, + "execution_count": 7 + } + ], + "source": [ + "ds" + ] + }, + { + "cell_type": "code", + "execution_count": 8, + "metadata": { + "id": "tLvFMWNPjcdt", + "outputId": "87488305-3661-42e9-b0af-5ee552f4e118", + "colab": { + "base_uri": "https://localhost:8080/" + } + }, + "outputs": [ + { + "output_type": "stream", + "name": "stdout", + "text": [ + "('----\\n'\n", + " 'Example 1:\\n'\n", + " '\\n'\n", + " 'Instruction: If a die is rolled three times, what is the probability of '\n", + " 'getting a sum of 11? None\\n'\n", + " '\\n'\n", + " 'Reasoning: 1. Understand the problem: We need to find the probability of '\n", + " 'getting a sum of 11 when rolling a die three times.\\n'\n", + " '2. Calculate total possible outcomes: A die has 6 faces, so for each roll, '\n", + " 'there are 6 possibilities. For three rolls, the total possible outcomes are '\n", + " '6^3 = 216.\\n'\n", + " '3. Identify favorable outcomes: List all combinations of rolls that result '\n", + " 'in a sum of 11. There are 18 such combinations.\\n'\n", + " '4. Calculate probability: Divide the number of favorable outcomes by the '\n", + " 'total possible outcomes: 18 / 216 = 1/12.\\n'\n", + " '5. Conclusion: The probability of getting a sum of 11 when rolling a die '\n", + " 'three times is 1/12.\\n'\n", + " '\\n'\n", + " \"Reasoning Chains: [{'step': 1, 'thought': 'Understand the problem: We need \"\n", + " 'to find the probability of getting a sum of 11 when rolling a die three '\n", + " \"times.'}, {'step': 2, 'thought': 'Calculate total possible outcomes: A die \"\n", + " 'has 6 faces, so for each roll, there are 6 possibilities. For three rolls, '\n", + " \"the total possible outcomes are 6^3 = 216.'}, {'step': 3, 'thought': \"\n", + " \"'Identify favorable outcomes: List all combinations of rolls that result in \"\n", + " \"a sum of 11. There are 18 such combinations.'}, {'step': 4, 'thought': \"\n", + " \"'Calculate probability: Divide the number of favorable outcomes by the total \"\n", + " \"possible outcomes: 18 / 216 = 1/12.'}, {'step': 5, 'thought': 'Conclusion: \"\n", + " 'The probability of getting a sum of 11 when rolling a die three times is '\n", + " \"1/12.'}]\\n\"\n", + " '----\\n'\n", + " 'Example 2:\\n'\n", + " '\\n'\n", + " 'Instruction: The interactions will be about the science behind culinary '\n", + " 'techniques. The setting is a cooking class where three friends are '\n", + " 'discussing various aspects of cooking and sharing their knowledge.\\n'\n", + " '- USER/Jane: A curious learner who wants to understand the science behind '\n", + " 'cooking\\n'\n", + " '- Mike: An experienced home cook with a passion for experimenting in the '\n", + " 'kitchen\\n'\n", + " '- Sarah: A food scientist who loves explaining the chemistry behind '\n", + " 'different cooking processes\\n'\n", + " '\\n'\n", + " ' None\\n'\n", + " '\\n'\n", + " 'Reasoning: 1. Start with the given setting: a cooking class with three '\n", + " 'friends discussing the science behind culinary techniques.\\n'\n", + " '2. Introduce the topic of resting meat after cooking, with Mike asking Jane '\n", + " \"if she's ever wondered about it.\\n\"\n", + " '3. Have Sarah explain the science behind resting meat, mentioning denatured '\n", + " 'proteins and juice redistribution.\\n'\n", + " \"4. Address the user's question about resting meat, with Sarah confirming \"\n", + " 'that it allows juices to redistribute.\\n'\n", + " '5. Move on to the topic of adding salt to water, with Mike mentioning its '\n", + " 'effect on boiling point.\\n'\n", + " \"6. Have Sarah explain the science behind salt's effect on boiling point, \"\n", + " 'mentioning the higher temperature required for boiling.\\n'\n", + " \"7. Address the user's question about cooking speed, with Sarah explaining \"\n", + " \"that it's slightly faster due to the hotter water.\\n\"\n", + " '8. Introduce the topic of acids in cooking, with Mike mentioning their use '\n", + " 'in brightening dishes.\\n'\n", + " \"9. Have Sarah explain the science behind acids' effects on flavor and \"\n", + " 'tenderizing meats.\\n'\n", + " \"10. Address the user's question about baking, with Mike mentioning the \"\n", + " 'science involved in baking and Sarah explaining the role of gluten and '\n", + " 'leavening agents.\\n'\n", + " '11. Conclude the conversation with the characters expressing their '\n", + " 'fascination with the science behind cooking and their excitement to continue '\n", + " 'learning and experimenting.\\n'\n", + " '\\n'\n", + " \"Reasoning Chains: [{'step': 1, 'thought': 'Start with the given setting: a \"\n", + " 'cooking class with three friends discussing the science behind culinary '\n", + " 'techniques.\\'}, {\\'step\\': 2, \\'thought\\': \"Introduce the topic of resting '\n", + " \"meat after cooking, with Mike asking Jane if she's ever wondered about \"\n", + " 'it.\"}, {\\'step\\': 3, \\'thought\\': \\'Have Sarah explain the science behind '\n", + " \"resting meat, mentioning denatured proteins and juice redistribution.'}, \"\n", + " '{\\'step\\': 4, \\'thought\\': \"Address the user\\'s question about resting meat, '\n", + " 'with Sarah confirming that it allows juices to redistribute.\"}, {\\'step\\': '\n", + " \"5, 'thought': 'Move on to the topic of adding salt to water, with Mike \"\n", + " 'mentioning its effect on boiling point.\\'}, {\\'step\\': 6, \\'thought\\': \"Have '\n", + " \"Sarah explain the science behind salt's effect on boiling point, mentioning \"\n", + " 'the higher temperature required for boiling.\"}, {\\'step\\': 7, \\'thought\\': '\n", + " '\"Address the user\\'s question about cooking speed, with Sarah explaining '\n", + " 'that it\\'s slightly faster due to the hotter water.\"}, {\\'step\\': 8, '\n", + " \"'thought': 'Introduce the topic of acids in cooking, with Mike mentioning \"\n", + " 'their use in brightening dishes.\\'}, {\\'step\\': 9, \\'thought\\': \"Have Sarah '\n", + " \"explain the science behind acids' effects on flavor and tenderizing \"\n", + " 'meats.\"}, {\\'step\\': 10, \\'thought\\': \"Address the user\\'s question about '\n", + " 'baking, with Mike mentioning the science involved in baking and Sarah '\n", + " 'explaining the role of gluten and leavening agents.\"}, {\\'step\\': 11, '\n", + " \"'thought': 'Conclude the conversation with the characters expressing their \"\n", + " 'fascination with the science behind cooking and their excitement to continue '\n", + " \"learning and experimenting.'}]\\n\")\n" + ] + } + ], + "source": [ + "# DatasetDict({\n", + "# train: Dataset({\n", + "# features: ['instruction', 'reasoning', 'output', 'reasoning_chains'],\n", + "# num_rows: 29857\n", + "# })\n", + "# })\n", + "\n", + "# Let's take a look at the first five examples in the training set\n", + "# Skip Output: {example['output']}\n", + "reasoning_chain_examples = \"\"\n", + "for i, example in enumerate(ds[\"train\"].select(range(2))):\n", + " reasoning_chain_examples += f\"\"\"----\n", + "Example {i + 1}:\n", + "\n", + "Instruction: {example['instruction']}\n", + "\n", + "Reasoning: {example['reasoning']}\n", + "\n", + "Reasoning Chains: {example['reasoning_chains']}\n", + "\"\"\"\n", + "\n", + "pprint(reasoning_chain_examples)" + ] + }, + { + "cell_type": "code", + "execution_count": 9, + "metadata": { + "id": "1dHvSSSkjcdt", + "outputId": "7eeea154-c38f-4a8f-81e2-109a326f0ed2", + "colab": { + "base_uri": "https://localhost:8080/" + } + }, + "outputs": [ + { + "output_type": "stream", + "name": "stdout", + "text": [ + "Human: Given Instruction, please generate {what}. Please use the following exampels.\n", + " If reasoning and/or reasoning chains are provided, please use them as context to generate the {what}.\n", + " Please only generate the {what} and do not include others.\n", + " \n", + " See the examples below:\n", + " ----\n", + "Example 1:\n", + "\n", + "Instruction: If a die is rolled three times, what is the probability of getting a sum of 11? None\n", + "\n", + "Reasoning: 1. Understand the problem: We need to find the probability of getting a sum of 11 when rolling a die three times.\n", + "2. Calculate total possible outcomes: A die has 6 faces, so for each roll, there are 6 possibilities. For three rolls, the total possible outcomes are 6^3 = 216.\n", + "3. Identify favorable outcomes: List all combinations of rolls that result in a sum of 11. There are 18 such combinations.\n", + "4. Calculate probability: Divide the number of favorable outcomes by the total possible outcomes: 18 / 216 = 1/12.\n", + "5. Conclusion: The probability of getting a sum of 11 when rolling a die three times is 1/12.\n", + "\n", + "Reasoning Chains: [{'step': 1, 'thought': 'Understand the problem: We need to find the probability of getting a sum of 11 when rolling a die three times.'}, {'step': 2, 'thought': 'Calculate total possible outcomes: A die has 6 faces, so for each roll, there are 6 possibilities. For three rolls, the total possible outcomes are 6^3 = 216.'}, {'step': 3, 'thought': 'Identify favorable outcomes: List all combinations of rolls that result in a sum of 11. There are 18 such combinations.'}, {'step': 4, 'thought': 'Calculate probability: Divide the number of favorable outcomes by the total possible outcomes: 18 / 216 = 1/12.'}, {'step': 5, 'thought': 'Conclusion: The probability of getting a sum of 11 when rolling a die three times is 1/12.'}]\n", + "----\n", + "Example 2:\n", + "\n", + "Instruction: The interactions will be about the science behind culinary techniques. The setting is a cooking class where three friends are discussing various aspects of cooking and sharing their knowledge.\n", + "- USER/Jane: A curious learner who wants to understand the science behind cooking\n", + "- Mike: An experienced home cook with a passion for experimenting in the kitchen\n", + "- Sarah: A food scientist who loves explaining the chemistry behind different cooking processes\n", + "\n", + " None\n", + "\n", + "Reasoning: 1. Start with the given setting: a cooking class with three friends discussing the science behind culinary techniques.\n", + "2. Introduce the topic of resting meat after cooking, with Mike asking Jane if she's ever wondered about it.\n", + "3. Have Sarah explain the science behind resting meat, mentioning denatured proteins and juice redistribution.\n", + "4. Address the user's question about resting meat, with Sarah confirming that it allows juices to redistribute.\n", + "5. Move on to the topic of adding salt to water, with Mike mentioning its effect on boiling point.\n", + "6. Have Sarah explain the science behind salt's effect on boiling point, mentioning the higher temperature required for boiling.\n", + "7. Address the user's question about cooking speed, with Sarah explaining that it's slightly faster due to the hotter water.\n", + "8. Introduce the topic of acids in cooking, with Mike mentioning their use in brightening dishes.\n", + "9. Have Sarah explain the science behind acids' effects on flavor and tenderizing meats.\n", + "10. Address the user's question about baking, with Mike mentioning the science involved in baking and Sarah explaining the role of gluten and leavening agents.\n", + "11. Conclude the conversation with the characters expressing their fascination with the science behind cooking and their excitement to continue learning and experimenting.\n", + "\n", + "Reasoning Chains: [{'step': 1, 'thought': 'Start with the given setting: a cooking class with three friends discussing the science behind culinary techniques.'}, {'step': 2, 'thought': \"Introduce the topic of resting meat after cooking, with Mike asking Jane if she's ever wondered about it.\"}, {'step': 3, 'thought': 'Have Sarah explain the science behind resting meat, mentioning denatured proteins and juice redistribution.'}, {'step': 4, 'thought': \"Address the user's question about resting meat, with Sarah confirming that it allows juices to redistribute.\"}, {'step': 5, 'thought': 'Move on to the topic of adding salt to water, with Mike mentioning its effect on boiling point.'}, {'step': 6, 'thought': \"Have Sarah explain the science behind salt's effect on boiling point, mentioning the higher temperature required for boiling.\"}, {'step': 7, 'thought': \"Address the user's question about cooking speed, with Sarah explaining that it's slightly faster due to the hotter water.\"}, {'step': 8, 'thought': 'Introduce the topic of acids in cooking, with Mike mentioning their use in brightening dishes.'}, {'step': 9, 'thought': \"Have Sarah explain the science behind acids' effects on flavor and tenderizing meats.\"}, {'step': 10, 'thought': \"Address the user's question about baking, with Mike mentioning the science involved in baking and Sarah explaining the role of gluten and leavening agents.\"}, {'step': 11, 'thought': 'Conclude the conversation with the characters expressing their fascination with the science behind cooking and their excitement to continue learning and experimenting.'}]\n", + "\n", + " ---\n", + " \n", + " Instruction: {instruction}\n", + " --\n", + " {reasoning}\n", + " --\n", + " {reasoning_chains} \n", + " \n" + ] + } + ], + "source": [ + "from langchain_core.prompts import PromptTemplate, ChatPromptTemplate\n", + "from langchain_core.output_parsers import StrOutputParser\n", + "from langchain_upstage import ChatUpstage\n", + "\n", + "reasoning_chain_teample = ChatPromptTemplate.from_messages(\n", + " [\n", + " (\n", + " \"human\",\n", + " \"\"\"Given Instruction, please generate {what}. Please use the following exampels.\n", + " If reasoning and/or reasoning chains are provided, please use them as context to generate the {what}.\n", + " Please only generate the {what} and do not include others.\n", + "\n", + " See the examples below:\n", + " {examples}\n", + " ---\n", + "\n", + " Instruction: {instruction}\n", + " --\n", + " {reasoning}\n", + " --\n", + " {reasoning_chains}\n", + " \"\"\",\n", + " )\n", + " ]\n", + ")\n", + "\n", + "\n", + "promt_example = reasoning_chain_teample.format(\n", + " what=\"{what}\",\n", + " instruction=\"{instruction}\",\n", + " reasoning=\"{reasoning}\",\n", + " reasoning_chains=\"{reasoning_chains}\",\n", + " examples=reasoning_chain_examples,\n", + ")\n", + "print(promt_example)" + ] + }, + { + "cell_type": "code", + "execution_count": 10, + "metadata": { + "id": "LkywI_n_jcdt" + }, + "outputs": [], + "source": [ + "llm = ChatUpstage(model=\"solar-pro\")\n", + "chain = reasoning_chain_teample | llm | StrOutputParser()" + ] + }, + { + "cell_type": "code", + "execution_count": 11, + "metadata": { + "id": "7M-gv72Ijcdu" + }, + "outputs": [], + "source": [ + "instruction = \"3.11 vs 3.9 which one is greater?\"" + ] + }, + { + "cell_type": "code", + "execution_count": 12, + "metadata": { + "id": "iKz80445jcdu", + "outputId": "79ebcd9d-6346-4685-bcab-0d30c657bd87", + "colab": { + "base_uri": "https://localhost:8080/" + } + }, + "outputs": [ + { + "output_type": "stream", + "name": "stdout", + "text": [ + "('1. Understand the problem: We need to compare the numerical values 3.11 and '\n", + " '3.9 to determine which one is greater.\\n'\n", + " '2. Identify the whole number part: Both numbers have the same whole number '\n", + " 'part, which is 3.\\n'\n", + " '3. Compare the decimal parts: Since the whole number parts are equal, we '\n", + " 'compare the decimal parts. 11 is greater than 9.\\n'\n", + " '4. Conclusion: The number with the greater decimal part is the larger '\n", + " 'number. Therefore, 3.11 is greater than 3.9.\\n'\n", + " '\\n'\n", + " \"Reasoning Chains: [{'step': 1, 'thought': 'Understand the problem: We need \"\n", + " 'to compare the numerical values 3.11 and 3.9 to determine which one is '\n", + " \"greater.'}, {'step': 2, 'thought': 'Identify the whole number part: Both \"\n", + " \"numbers have the same whole number part, which is 3.'}, {'step': 3, \"\n", + " \"'thought': 'Compare the decimal parts: Since the whole number parts are \"\n", + " \"equal, we compare the decimal parts. 11 is greater than 9.'}, {'step': 4, \"\n", + " \"'thought': 'Conclusion: The number with the greater decimal part is the \"\n", + " \"larger number. Therefore, 3.11 is greater than 3.9.'}]\")\n" + ] + } + ], + "source": [ + "reasoning = chain.invoke(\n", + " {\n", + " \"instruction\": instruction,\n", + " \"reasoning\": \"\",\n", + " \"reasoning_chains\": \"\",\n", + " \"what\": \"reasoning\",\n", + " \"examples\": reasoning_chain_examples,\n", + " }\n", + ")\n", + "\n", + "pprint(reasoning)" + ] + }, + { + "cell_type": "code", + "execution_count": 13, + "metadata": { + "id": "FRCdBLivjcdu", + "outputId": "1f2b5288-f1eb-4c8f-c679-2f7de02b9a44", + "colab": { + "base_uri": "https://localhost:8080/" + } + }, + "outputs": [ + { + "output_type": "stream", + "name": "stdout", + "text": [ + "('Reasoning: 1. Understand the problem: We need to compare two decimal '\n", + " 'numbers, 3.11 and 3.9, and determine which one is greater.\\n'\n", + " '2. Compare the integer parts: Since both numbers have the same integer part '\n", + " '(3), we need to compare the decimal parts.\\n'\n", + " '3. Compare the decimal parts: Compare the first decimal place of both '\n", + " \"numbers. For 3.11, it's 1, and for 3.9, it's 9.\\n\"\n", + " '4. Determine the greater number: Since 9 is greater than 1, 3.9 is greater '\n", + " 'than 3.11.\\n'\n", + " '5. Conclusion: The number 3.9 is greater than 3.11.\\n'\n", + " '\\n'\n", + " \"Reasoning Chains: [{'step': 1, 'thought': 'Understand the problem: We need \"\n", + " 'to compare two decimal numbers, 3.11 and 3.9, and determine which one is '\n", + " \"greater.'}, {'step': 2, 'thought': 'Compare the integer parts: Since both \"\n", + " 'numbers have the same integer part (3), we need to compare the decimal '\n", + " \"parts.'}, {'step': 3, 'thought': 'Compare the decimal parts: Compare the \"\n", + " \"first decimal place of both numbers. For 3.11, it\\\\'s 1, and for 3.9, it\\\\'s \"\n", + " \"9.'}, {'step': 4, 'thought': 'Determine the greater number: Since 9 is \"\n", + " \"greater than 1, 3.9 is greater than 3.11.'}, {'step': 5, 'thought': \"\n", + " \"'Conclusion: The number 3.9 is greater than 3.11.'}]\")\n" + ] + } + ], + "source": [ + "reasoning = chain.invoke(\n", + " {\n", + " \"instruction\": instruction,\n", + " \"reasoning\": \"\",\n", + " \"reasoning_chains\": \"\",\n", + " \"what\": \"reasoning\",\n", + " \"examples\": reasoning_chain_examples,\n", + " }\n", + ")\n", + "\n", + "pprint(reasoning)" + ] + }, + { + "cell_type": "code", + "execution_count": 14, + "metadata": { + "id": "c3F9HYRtjcdu", + "outputId": "0a578749-5771-45a0-c934-00ee721e704e", + "colab": { + "base_uri": "https://localhost:8080/" + } + }, + "outputs": [ + { + "output_type": "stream", + "name": "stdout", + "text": [ + "('Reasoning: Reasoning: 1. Understand the problem: We need to compare two '\n", + " 'decimal numbers, 3.11 and 3.9, and determine which one is greater.\\n'\n", + " '2. Compare the integer parts: Since both numbers have the same integer part '\n", + " '(3), we need to compare the decimal parts.\\n'\n", + " '3. Compare the decimal parts: Compare the first decimal place of both '\n", + " \"numbers. For 3.11, it's 1, and for 3.9, it's 9.\\n\"\n", + " '4. Determine the greater number: Since 9 is greater than 1, 3.9 is greater '\n", + " 'than 3.11.\\n'\n", + " '5. Conclusion: The number 3.9 is greater than 3.11.\\n'\n", + " '\\n'\n", + " \"Reasoning Chains: [{'step': 1, 'thought': 'Understand the problem: We need \"\n", + " 'to compare two decimal numbers, 3.11 and 3.9, and determine which one is '\n", + " \"greater.'}, {'step': 2, 'thought': 'Compare the integer parts: Since both \"\n", + " 'numbers have the same integer part (3), we need to compare the decimal '\n", + " \"parts.'}, {'step': 3, 'thought': 'Compare the decimal parts: Compare the \"\n", + " \"first decimal place of both numbers. For 3.11, it\\\\'s 1, and for 3.9, it\\\\'s \"\n", + " \"9.'}, {'step': 4, 'thought': 'Determine the greater number: Since 9 is \"\n", + " \"greater than 1, 3.9 is greater than 3.11.'}, {'step': 5, 'thought': \"\n", + " \"'Conclusion: The number 3.9 is greater than 3.11.'}]\")\n" + ] + } + ], + "source": [ + "reasoning_chain = chain.invoke(\n", + " {\n", + " \"instruction\": instruction,\n", + " \"reasoning\": f\"Reasoning: {reasoning}\",\n", + " \"reasoning_chains\": \"\",\n", + " \"what\": \"reasoning chain\",\n", + " \"examples\": reasoning_chain_examples,\n", + " }\n", + ")\n", + "\n", + "pprint(reasoning_chain)" + ] + }, + { + "cell_type": "code", + "execution_count": 15, + "metadata": { + "id": "vI4qFp-Zjcdu", + "outputId": "4c863bb0-62ff-44a7-cef2-52a717809ba4", + "colab": { + "base_uri": "https://localhost:8080/" + } + }, + "outputs": [ + { + "output_type": "stream", + "name": "stdout", + "text": [ + "('Reasoning Chains: Reasoning: Reasoning: 1. Understand the problem: We need '\n", + " 'to compare two decimal numbers, 3.11 and 3.9, and determine which one is '\n", + " 'greater.\\n'\n", + " '2. Compare the integer parts: Since both numbers have the same integer part '\n", + " '(3), we need to compare the decimal parts.\\n'\n", + " '3. Compare the decimal parts: Compare the first decimal place of both '\n", + " \"numbers. For 3.11, it's 1, and for 3.9, it's 9.\\n\"\n", + " '4. Determine the greater number: Since 9 is greater than 1, 3.9 is greater '\n", + " 'than 3.11.\\n'\n", + " '5. Conclusion: The number 3.9 is greater than 3.11.\\n'\n", + " '\\n'\n", + " 'Final Answer: 3.9 is greater than 3.11')\n" + ] + } + ], + "source": [ + "output = chain.invoke(\n", + " {\n", + " \"instruction\": instruction,\n", + " \"reasoning\": f\"Reasoning: {reasoning}\",\n", + " \"reasoning_chains\": f\"Reasoning Chains: {reasoning_chain}\",\n", + " \"examples\": reasoning_chain_examples,\n", + " \"what\": \"Final answer of the instruction\",\n", + " }\n", + ")\n", + "\n", + "pprint(output)" + ] + } + ], + "metadata": { + "kernelspec": { + "display_name": "Python 3 (ipykernel)", + "language": "python", + "name": "python3" + }, + "language_info": { + "codemirror_mode": { + "name": "ipython", + "version": 3 + }, + "file_extension": ".py", + "mimetype": "text/x-python", + "name": "python", + "nbconvert_exporter": "python", + "pygments_lexer": "ipython3", + "version": "3.9.6" + }, + "colab": { + "provenance": [] } - ], - "source": [ - "output = chain.invoke(\n", - " {\n", - " \"instruction\": instruction,\n", - " \"reasoning\": f\"Reasoning: {reasoning}\",\n", - " \"reasoning_chains\": f\"Reasoning Chains: {reasoning_chain}\",\n", - " \"examples\": reasoning_chain_examples,\n", - " \"what\": \"Final answer of the instruction\",\n", - " }\n", - ")\n", - "\n", - "pprint(output)" - ] - } - ], - "metadata": { - "kernelspec": { - "display_name": "Python 3 (ipykernel)", - "language": "python", - "name": "python3" }, - "language_info": { - "codemirror_mode": { - "name": "ipython", - "version": 3 - }, - "file_extension": ".py", - "mimetype": "text/x-python", - "name": "python", - "nbconvert_exporter": "python", - "pygments_lexer": "ipython3", - "version": "3.9.6" - } - }, - "nbformat": 4, - "nbformat_minor": 4 -} + "nbformat": 4, + "nbformat_minor": 0 +} \ No newline at end of file From a2ae3f220933949ab7e48408f648109c6072fa7a Mon Sep 17 00:00:00 2001 From: Hyesoo Kim <100982596+duper203@users.noreply.github.com> Date: Fri, 4 Oct 2024 16:45:37 -0700 Subject: [PATCH 2/4] change of code: phoenix --- Solar-Fullstack-LLM-101/14_Reasoning.ipynb | 177 ++++++++++----------- 1 file changed, 83 insertions(+), 94 deletions(-) diff --git a/Solar-Fullstack-LLM-101/14_Reasoning.ipynb b/Solar-Fullstack-LLM-101/14_Reasoning.ipynb index ce7f909..0a4c001 100644 --- a/Solar-Fullstack-LLM-101/14_Reasoning.ipynb +++ b/Solar-Fullstack-LLM-101/14_Reasoning.ipynb @@ -96,12 +96,12 @@ "cell_type": "code", "execution_count": 3, "metadata": { - "id": "t_IpbqFGjcds", - "outputId": "d914f467-71b2-44df-efd9-ba9b49ba89c3", "colab": { "base_uri": "https://localhost:8080/", "height": 69 - } + }, + "id": "t_IpbqFGjcds", + "outputId": "d914f467-71b2-44df-efd9-ba9b49ba89c3" }, "outputs": [ { @@ -139,11 +139,11 @@ ")" ], "metadata": { - "id": "d5LIEVPZxDxh", - "outputId": "5850b17a-fd37-471d-ab82-3dd03b6733ef", "colab": { "base_uri": "https://localhost:8080/" - } + }, + "id": "d5LIEVPZxDxh", + "outputId": "5850b17a-fd37-471d-ab82-3dd03b6733ef" }, "execution_count": 4, "outputs": [ @@ -197,11 +197,11 @@ "cell_type": "code", "execution_count": 7, "metadata": { - "id": "JFuqj2fJjcdt", - "outputId": "19c52097-896a-452a-afd6-28d542672f70", "colab": { "base_uri": "https://localhost:8080/" - } + }, + "id": "JFuqj2fJjcdt", + "outputId": "19c52097-896a-452a-afd6-28d542672f70" }, "outputs": [ { @@ -228,11 +228,11 @@ "cell_type": "code", "execution_count": 8, "metadata": { - "id": "tLvFMWNPjcdt", - "outputId": "87488305-3661-42e9-b0af-5ee552f4e118", "colab": { "base_uri": "https://localhost:8080/" - } + }, + "id": "tLvFMWNPjcdt", + "outputId": "87488305-3661-42e9-b0af-5ee552f4e118" }, "outputs": [ { @@ -361,13 +361,13 @@ }, { "cell_type": "code", - "execution_count": 9, + "execution_count": 16, "metadata": { - "id": "1dHvSSSkjcdt", - "outputId": "7eeea154-c38f-4a8f-81e2-109a326f0ed2", "colab": { "base_uri": "https://localhost:8080/" - } + }, + "id": "1dHvSSSkjcdt", + "outputId": "d877a566-289a-4c5f-eec2-6c9eaad8ae34" }, "outputs": [ { @@ -466,7 +466,7 @@ }, { "cell_type": "code", - "execution_count": 10, + "execution_count": 17, "metadata": { "id": "LkywI_n_jcdt" }, @@ -478,7 +478,7 @@ }, { "cell_type": "code", - "execution_count": 11, + "execution_count": 18, "metadata": { "id": "7M-gv72Ijcdu" }, @@ -489,36 +489,36 @@ }, { "cell_type": "code", - "execution_count": 12, + "execution_count": 19, "metadata": { - "id": "iKz80445jcdu", - "outputId": "79ebcd9d-6346-4685-bcab-0d30c657bd87", "colab": { "base_uri": "https://localhost:8080/" - } + }, + "id": "iKz80445jcdu", + "outputId": "cac14aa3-83d0-4d9f-f96c-dbbed23362d1" }, "outputs": [ { "output_type": "stream", "name": "stdout", "text": [ - "('1. Understand the problem: We need to compare the numerical values 3.11 and '\n", + "('Reasoning: 1. Understand the problem: We need to compare the values 3.11 and '\n", " '3.9 to determine which one is greater.\\n'\n", - " '2. Identify the whole number part: Both numbers have the same whole number '\n", - " 'part, which is 3.\\n'\n", - " '3. Compare the decimal parts: Since the whole number parts are equal, we '\n", - " 'compare the decimal parts. 11 is greater than 9.\\n'\n", - " '4. Conclusion: The number with the greater decimal part is the larger '\n", - " 'number. Therefore, 3.11 is greater than 3.9.\\n'\n", + " '2. Analyze the numbers: Both numbers have the same whole number part (3), so '\n", + " 'we need to compare the decimal parts (0.11 and 0.9).\\n'\n", + " '3. Compare the decimal parts: 0.11 is smaller than 0.9 since 11 is less than '\n", + " '90 (when comparing the same number of decimal places).\\n'\n", + " '4. Conclude the comparison: Since 3.11 has a smaller decimal part than 3.9, '\n", + " '3.9 is greater than 3.11.\\n'\n", " '\\n'\n", " \"Reasoning Chains: [{'step': 1, 'thought': 'Understand the problem: We need \"\n", - " 'to compare the numerical values 3.11 and 3.9 to determine which one is '\n", - " \"greater.'}, {'step': 2, 'thought': 'Identify the whole number part: Both \"\n", - " \"numbers have the same whole number part, which is 3.'}, {'step': 3, \"\n", - " \"'thought': 'Compare the decimal parts: Since the whole number parts are \"\n", - " \"equal, we compare the decimal parts. 11 is greater than 9.'}, {'step': 4, \"\n", - " \"'thought': 'Conclusion: The number with the greater decimal part is the \"\n", - " \"larger number. Therefore, 3.11 is greater than 3.9.'}]\")\n" + " \"to compare the values 3.11 and 3.9 to determine which one is greater.'}, \"\n", + " \"{'step': 2, 'thought': 'Analyze the numbers: Both numbers have the same \"\n", + " 'whole number part (3), so we need to compare the decimal parts (0.11 and '\n", + " \"0.9).'}, {'step': 3, 'thought': 'Compare the decimal parts: 0.11 is smaller \"\n", + " 'than 0.9 since 11 is less than 90 (when comparing the same number of decimal '\n", + " \"places).'}, {'step': 4, 'thought': 'Conclude the comparison: Since 3.11 has \"\n", + " \"a smaller decimal part than 3.9, 3.9 is greater than 3.11.'}]\")\n" ] } ], @@ -538,38 +538,38 @@ }, { "cell_type": "code", - "execution_count": 13, + "execution_count": 20, "metadata": { - "id": "FRCdBLivjcdu", - "outputId": "1f2b5288-f1eb-4c8f-c679-2f7de02b9a44", "colab": { "base_uri": "https://localhost:8080/" - } + }, + "id": "FRCdBLivjcdu", + "outputId": "8022b484-09ba-49d1-d65f-72dba7443dd2" }, "outputs": [ { "output_type": "stream", "name": "stdout", "text": [ - "('Reasoning: 1. Understand the problem: We need to compare two decimal '\n", - " 'numbers, 3.11 and 3.9, and determine which one is greater.\\n'\n", - " '2. Compare the integer parts: Since both numbers have the same integer part '\n", - " '(3), we need to compare the decimal parts.\\n'\n", - " '3. Compare the decimal parts: Compare the first decimal place of both '\n", - " \"numbers. For 3.11, it's 1, and for 3.9, it's 9.\\n\"\n", - " '4. Determine the greater number: Since 9 is greater than 1, 3.9 is greater '\n", - " 'than 3.11.\\n'\n", - " '5. Conclusion: The number 3.9 is greater than 3.11.\\n'\n", + "('Reasoning: 1. Understand the problem: We need to compare the values of 3.11 '\n", + " 'and 3.9 to determine which one is greater.\\n'\n", + " '2. Compare the whole number part: Both numbers have the same whole number '\n", + " 'part, which is 3.\\n'\n", + " '3. Compare the decimal part: Compare the decimal parts, 11 and 9, to '\n", + " 'determine which number is greater.\\n'\n", + " '4. Identify the greater decimal part: Since 11 is greater than 9, the number '\n", + " '3.11 has a greater decimal part.\\n'\n", + " '5. Draw a conclusion: Based on the comparison, 3.11 is greater than 3.9.\\n'\n", " '\\n'\n", " \"Reasoning Chains: [{'step': 1, 'thought': 'Understand the problem: We need \"\n", - " 'to compare two decimal numbers, 3.11 and 3.9, and determine which one is '\n", - " \"greater.'}, {'step': 2, 'thought': 'Compare the integer parts: Since both \"\n", - " 'numbers have the same integer part (3), we need to compare the decimal '\n", - " \"parts.'}, {'step': 3, 'thought': 'Compare the decimal parts: Compare the \"\n", - " \"first decimal place of both numbers. For 3.11, it\\\\'s 1, and for 3.9, it\\\\'s \"\n", - " \"9.'}, {'step': 4, 'thought': 'Determine the greater number: Since 9 is \"\n", - " \"greater than 1, 3.9 is greater than 3.11.'}, {'step': 5, 'thought': \"\n", - " \"'Conclusion: The number 3.9 is greater than 3.11.'}]\")\n" + " \"to compare the values of 3.11 and 3.9 to determine which one is greater.'}, \"\n", + " \"{'step': 2, 'thought': 'Compare the whole number part: Both numbers have the \"\n", + " \"same whole number part, which is 3.'}, {'step': 3, 'thought': 'Compare the \"\n", + " 'decimal part: Compare the decimal parts, 11 and 9, to determine which number '\n", + " \"is greater.'}, {'step': 4, 'thought': 'Identify the greater decimal part: \"\n", + " \"Since 11 is greater than 9, the number 3.11 has a greater decimal part.'}, \"\n", + " \"{'step': 5, 'thought': 'Draw a conclusion: Based on the comparison, 3.11 is \"\n", + " \"greater than 3.9.'}]\")\n" ] } ], @@ -589,38 +589,38 @@ }, { "cell_type": "code", - "execution_count": 14, + "execution_count": 21, "metadata": { - "id": "c3F9HYRtjcdu", - "outputId": "0a578749-5771-45a0-c934-00ee721e704e", "colab": { "base_uri": "https://localhost:8080/" - } + }, + "id": "c3F9HYRtjcdu", + "outputId": "7e08f125-db72-4d79-e841-e4671eceb0ba" }, "outputs": [ { "output_type": "stream", "name": "stdout", "text": [ - "('Reasoning: Reasoning: 1. Understand the problem: We need to compare two '\n", - " 'decimal numbers, 3.11 and 3.9, and determine which one is greater.\\n'\n", - " '2. Compare the integer parts: Since both numbers have the same integer part '\n", - " '(3), we need to compare the decimal parts.\\n'\n", - " '3. Compare the decimal parts: Compare the first decimal place of both '\n", - " \"numbers. For 3.11, it's 1, and for 3.9, it's 9.\\n\"\n", - " '4. Determine the greater number: Since 9 is greater than 1, 3.9 is greater '\n", - " 'than 3.11.\\n'\n", - " '5. Conclusion: The number 3.9 is greater than 3.11.\\n'\n", + "('Reasoning: Reasoning: 1. Understand the problem: We need to compare the '\n", + " 'values of 3.11 and 3.9 to determine which one is greater.\\n'\n", + " '2. Compare the whole number part: Both numbers have the same whole number '\n", + " 'part, which is 3.\\n'\n", + " '3. Compare the decimal part: Compare the decimal parts, 11 and 9, to '\n", + " 'determine which number is greater.\\n'\n", + " '4. Identify the greater decimal part: Since 11 is greater than 9, the number '\n", + " '3.11 has a greater decimal part.\\n'\n", + " '5. Draw a conclusion: Based on the comparison, 3.11 is greater than 3.9.\\n'\n", " '\\n'\n", " \"Reasoning Chains: [{'step': 1, 'thought': 'Understand the problem: We need \"\n", - " 'to compare two decimal numbers, 3.11 and 3.9, and determine which one is '\n", - " \"greater.'}, {'step': 2, 'thought': 'Compare the integer parts: Since both \"\n", - " 'numbers have the same integer part (3), we need to compare the decimal '\n", - " \"parts.'}, {'step': 3, 'thought': 'Compare the decimal parts: Compare the \"\n", - " \"first decimal place of both numbers. For 3.11, it\\\\'s 1, and for 3.9, it\\\\'s \"\n", - " \"9.'}, {'step': 4, 'thought': 'Determine the greater number: Since 9 is \"\n", - " \"greater than 1, 3.9 is greater than 3.11.'}, {'step': 5, 'thought': \"\n", - " \"'Conclusion: The number 3.9 is greater than 3.11.'}]\")\n" + " \"to compare the values of 3.11 and 3.9 to determine which one is greater.'}, \"\n", + " \"{'step': 2, 'thought': 'Compare the whole number part: Both numbers have the \"\n", + " \"same whole number part, which is 3.'}, {'step': 3, 'thought': 'Compare the \"\n", + " 'decimal part: Compare the decimal parts, 11 and 9, to determine which number '\n", + " \"is greater.'}, {'step': 4, 'thought': 'Identify the greater decimal part: \"\n", + " \"Since 11 is greater than 9, the number 3.11 has a greater decimal part.'}, \"\n", + " \"{'step': 5, 'thought': 'Draw a conclusion: Based on the comparison, 3.11 is \"\n", + " \"greater than 3.9.'}]\")\n" ] } ], @@ -640,31 +640,20 @@ }, { "cell_type": "code", - "execution_count": 15, + "execution_count": 22, "metadata": { - "id": "vI4qFp-Zjcdu", - "outputId": "4c863bb0-62ff-44a7-cef2-52a717809ba4", "colab": { "base_uri": "https://localhost:8080/" - } + }, + "id": "vI4qFp-Zjcdu", + "outputId": "8ba9e301-fbfc-4409-9154-240b315ea969" }, "outputs": [ { "output_type": "stream", "name": "stdout", "text": [ - "('Reasoning Chains: Reasoning: Reasoning: 1. Understand the problem: We need '\n", - " 'to compare two decimal numbers, 3.11 and 3.9, and determine which one is '\n", - " 'greater.\\n'\n", - " '2. Compare the integer parts: Since both numbers have the same integer part '\n", - " '(3), we need to compare the decimal parts.\\n'\n", - " '3. Compare the decimal parts: Compare the first decimal place of both '\n", - " \"numbers. For 3.11, it's 1, and for 3.9, it's 9.\\n\"\n", - " '4. Determine the greater number: Since 9 is greater than 1, 3.9 is greater '\n", - " 'than 3.11.\\n'\n", - " '5. Conclusion: The number 3.9 is greater than 3.11.\\n'\n", - " '\\n'\n", - " 'Final Answer: 3.9 is greater than 3.11')\n" + "'3.11'\n" ] } ], From d983e37b693c85dae21dd31df8f677e567422ed5 Mon Sep 17 00:00:00 2001 From: Hyesoo Kim <100982596+duper203@users.noreply.github.com> Date: Mon, 7 Oct 2024 09:56:15 -0700 Subject: [PATCH 3/4] Update 82_gradio_chatpdf.ipynb : env setting --- .../82_gradio_chatpdf.ipynb | 46 +++++++++---------- 1 file changed, 23 insertions(+), 23 deletions(-) diff --git a/Solar-Fullstack-LLM-101/82_gradio_chatpdf.ipynb b/Solar-Fullstack-LLM-101/82_gradio_chatpdf.ipynb index d3c0138..ef8e14e 100644 --- a/Solar-Fullstack-LLM-101/82_gradio_chatpdf.ipynb +++ b/Solar-Fullstack-LLM-101/82_gradio_chatpdf.ipynb @@ -29,29 +29,29 @@ "metadata": {}, "outputs": [], "source": [ - "# @title set API key\n", - "import os\n", - "import getpass\n", - "from pprint import pprint\n", - "import warnings\n", - "\n", - "warnings.filterwarnings(\"ignore\")\n", - "\n", - "from IPython import get_ipython\n", - "\n", - "if \"google.colab\" in str(get_ipython()):\n", - " # Running in Google Colab. Please set the UPSTAGE_API_KEY in the Colab Secrets\n", - " from google.colab import userdata\n", - " os.environ[\"UPSTAGE_API_KEY\"] = userdata.get(\"UPSTAGE_API_KEY\")\n", - "else:\n", - " # Running locally. Please set the UPSTAGE_API_KEY in the .env file\n", - " from dotenv import load_dotenv\n", - "\n", - " load_dotenv()\n", - "\n", - "if \"UPSTAGE_API_KEY\" not in os.environ:\n", - " os.environ[\"UPSTAGE_API_KEY\"] = getpass.getpass(\"Enter your Upstage API key: \")\n" - ] + "# @title set API key\n", + "from pprint import pprint\n", + "import os\n", + "\n", + "import warnings\n", + "\n", + "warnings.filterwarnings(\"ignore\")\n", + "\n", + "if \"google.colab\" in str(get_ipython()):\n", + " # Running in Google Colab. Please set the UPSTAGE_API_KEY in the Colab Secrets\n", + " from google.colab import userdata\n", + "\n", + " os.environ[\"UPSTAGE_API_KEY\"] = userdata.get(\"UPSTAGE_API_KEY\")\n", + "else:\n", + " # Running locally. Please set the UPSTAGE_API_KEY in the .env file\n", + " from dotenv import load_dotenv\n", + "\n", + " load_dotenv()\n", + "\n", + "assert (\n", + " \"UPSTAGE_API_KEY\" in os.environ\n", + "), \"Please set the UPSTAGE_API_KEY environment variable\"" + ] }, { From 53f1bea5217bdface5785c548d843024bfa80ad9 Mon Sep 17 00:00:00 2001 From: Hyesoo Kim Date: Mon, 7 Oct 2024 09:59:53 -0700 Subject: [PATCH 4/4] Revert "Update 82_gradio_chatpdf.ipynb : env setting" This reverts commit d983e37b693c85dae21dd31df8f677e567422ed5. --- .../82_gradio_chatpdf.ipynb | 46 +++++++++---------- 1 file changed, 23 insertions(+), 23 deletions(-) diff --git a/Solar-Fullstack-LLM-101/82_gradio_chatpdf.ipynb b/Solar-Fullstack-LLM-101/82_gradio_chatpdf.ipynb index ef8e14e..d3c0138 100644 --- a/Solar-Fullstack-LLM-101/82_gradio_chatpdf.ipynb +++ b/Solar-Fullstack-LLM-101/82_gradio_chatpdf.ipynb @@ -29,29 +29,29 @@ "metadata": {}, "outputs": [], "source": [ - "# @title set API key\n", - "from pprint import pprint\n", - "import os\n", - "\n", - "import warnings\n", - "\n", - "warnings.filterwarnings(\"ignore\")\n", - "\n", - "if \"google.colab\" in str(get_ipython()):\n", - " # Running in Google Colab. Please set the UPSTAGE_API_KEY in the Colab Secrets\n", - " from google.colab import userdata\n", - "\n", - " os.environ[\"UPSTAGE_API_KEY\"] = userdata.get(\"UPSTAGE_API_KEY\")\n", - "else:\n", - " # Running locally. Please set the UPSTAGE_API_KEY in the .env file\n", - " from dotenv import load_dotenv\n", - "\n", - " load_dotenv()\n", - "\n", - "assert (\n", - " \"UPSTAGE_API_KEY\" in os.environ\n", - "), \"Please set the UPSTAGE_API_KEY environment variable\"" - ] + "# @title set API key\n", + "import os\n", + "import getpass\n", + "from pprint import pprint\n", + "import warnings\n", + "\n", + "warnings.filterwarnings(\"ignore\")\n", + "\n", + "from IPython import get_ipython\n", + "\n", + "if \"google.colab\" in str(get_ipython()):\n", + " # Running in Google Colab. Please set the UPSTAGE_API_KEY in the Colab Secrets\n", + " from google.colab import userdata\n", + " os.environ[\"UPSTAGE_API_KEY\"] = userdata.get(\"UPSTAGE_API_KEY\")\n", + "else:\n", + " # Running locally. Please set the UPSTAGE_API_KEY in the .env file\n", + " from dotenv import load_dotenv\n", + "\n", + " load_dotenv()\n", + "\n", + "if \"UPSTAGE_API_KEY\" not in os.environ:\n", + " os.environ[\"UPSTAGE_API_KEY\"] = getpass.getpass(\"Enter your Upstage API key: \")\n" + ] }, {