Skip to content

Instantly share code, notes, and snippets.

@brockmanmatt
Created July 20, 2020 03:09
Show Gist options
  • Star 1 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save brockmanmatt/40f23a3101684a857567524401c4650f to your computer and use it in GitHub Desktop.
Save brockmanmatt/40f23a3101684a857567524401c4650f to your computer and use it in GitHub Desktop.
Count01s.ipynb
Display the source blob
Display the rendered blob
Raw
{
"nbformat": 4,
"nbformat_minor": 0,
"metadata": {
"kernelspec": {
"display_name": "Python 3",
"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.7.4"
},
"colab": {
"name": "Count01s.ipynb",
"provenance": [],
"collapsed_sections": [],
"include_colab_link": true
}
},
"cells": [
{
"cell_type": "markdown",
"metadata": {
"id": "view-in-github",
"colab_type": "text"
},
"source": [
"<a href=\"https://colab.research.google.com/gist/brockmanmatt/40f23a3101684a857567524401c4650f/count01s.ipynb\" target=\"_parent\"><img src=\"https://colab.research.google.com/assets/colab-badge.svg\" alt=\"Open In Colab\"/></a>"
]
},
{
"cell_type": "code",
"metadata": {
"id": "sCAYYcKGtbZE",
"colab_type": "code",
"colab": {
"base_uri": "https://localhost:8080/",
"height": 292
},
"outputId": "638405d6-f43c-4cc2-a7bc-3bd3e5315aae"
},
"source": [
"!pip install openai"
],
"execution_count": 2,
"outputs": [
{
"output_type": "stream",
"text": [
"Collecting openai\n",
"\u001b[?25l Downloading https://files.pythonhosted.org/packages/a8/65/c7461f4c87984534683f480ea5742777bc39bbf5721123194c2d0347dc1f/openai-0.2.4.tar.gz (157kB)\n",
"\r\u001b[K |██ | 10kB 19.3MB/s eta 0:00:01\r\u001b[K |████▏ | 20kB 6.5MB/s eta 0:00:01\r\u001b[K |██████▎ | 30kB 7.0MB/s eta 0:00:01\r\u001b[K |████████▍ | 40kB 8.2MB/s eta 0:00:01\r\u001b[K |██████████▍ | 51kB 7.0MB/s eta 0:00:01\r\u001b[K |████████████▌ | 61kB 7.2MB/s eta 0:00:01\r\u001b[K |██████████████▋ | 71kB 7.7MB/s eta 0:00:01\r\u001b[K |████████████████▊ | 81kB 8.2MB/s eta 0:00:01\r\u001b[K |██████████████████▊ | 92kB 7.7MB/s eta 0:00:01\r\u001b[K |████████████████████▉ | 102kB 8.0MB/s eta 0:00:01\r\u001b[K |███████████████████████ | 112kB 8.0MB/s eta 0:00:01\r\u001b[K |█████████████████████████ | 122kB 8.0MB/s eta 0:00:01\r\u001b[K |███████████████████████████ | 133kB 8.0MB/s eta 0:00:01\r\u001b[K |█████████████████████████████▏ | 143kB 8.0MB/s eta 0:00:01\r\u001b[K |███████████████████████████████▎| 153kB 8.0MB/s eta 0:00:01\r\u001b[K |████████████████████████████████| 163kB 8.0MB/s \n",
"\u001b[?25hRequirement already satisfied: requests>=2.20 in /usr/local/lib/python3.6/dist-packages (from openai) (2.23.0)\n",
"Requirement already satisfied: chardet<4,>=3.0.2 in /usr/local/lib/python3.6/dist-packages (from requests>=2.20->openai) (3.0.4)\n",
"Requirement already satisfied: certifi>=2017.4.17 in /usr/local/lib/python3.6/dist-packages (from requests>=2.20->openai) (2020.6.20)\n",
"Requirement already satisfied: idna<3,>=2.5 in /usr/local/lib/python3.6/dist-packages (from requests>=2.20->openai) (2.10)\n",
"Requirement already satisfied: urllib3!=1.25.0,!=1.25.1,<1.26,>=1.21.1 in /usr/local/lib/python3.6/dist-packages (from requests>=2.20->openai) (1.24.3)\n",
"Building wheels for collected packages: openai\n",
" Building wheel for openai (setup.py) ... \u001b[?25l\u001b[?25hdone\n",
" Created wheel for openai: filename=openai-0.2.4-cp36-none-any.whl size=170709 sha256=c0cd9164cfcf4e62236a4ee56094c5e1446d7cc5507d43333b0c0941fbd3ddb6\n",
" Stored in directory: /root/.cache/pip/wheels/74/96/c8/c6e170929c276b836613e1b9985343b501fe455e53d85e7d48\n",
"Successfully built openai\n",
"Installing collected packages: openai\n",
"Successfully installed openai-0.2.4\n"
],
"name": "stdout"
}
]
},
{
"cell_type": "code",
"metadata": {
"id": "euWE2d9eVj3M",
"colab_type": "code",
"colab": {}
},
"source": [
"import openai, json, pandas as pd"
],
"execution_count": 3,
"outputs": []
},
{
"cell_type": "code",
"metadata": {
"id": "gSqGLVigtgEw",
"colab_type": "code",
"colab": {
"resources": {
"http://localhost:8080/nbextensions/google.colab/files.js": {
"data": "Ly8gQ29weXJpZ2h0IDIwMTcgR29vZ2xlIExMQwovLwovLyBMaWNlbnNlZCB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UsIFZlcnNpb24gMi4wICh0aGUgIkxpY2Vuc2UiKTsKLy8geW91IG1heSBub3QgdXNlIHRoaXMgZmlsZSBleGNlcHQgaW4gY29tcGxpYW5jZSB3aXRoIHRoZSBMaWNlbnNlLgovLyBZb3UgbWF5IG9idGFpbiBhIGNvcHkgb2YgdGhlIExpY2Vuc2UgYXQKLy8KLy8gICAgICBodHRwOi8vd3d3LmFwYWNoZS5vcmcvbGljZW5zZXMvTElDRU5TRS0yLjAKLy8KLy8gVW5sZXNzIHJlcXVpcmVkIGJ5IGFwcGxpY2FibGUgbGF3IG9yIGFncmVlZCB0byBpbiB3cml0aW5nLCBzb2Z0d2FyZQovLyBkaXN0cmlidXRlZCB1bmRlciB0aGUgTGljZW5zZSBpcyBkaXN0cmlidXRlZCBvbiBhbiAiQVMgSVMiIEJBU0lTLAovLyBXSVRIT1VUIFdBUlJBTlRJRVMgT1IgQ09ORElUSU9OUyBPRiBBTlkgS0lORCwgZWl0aGVyIGV4cHJlc3Mgb3IgaW1wbGllZC4KLy8gU2VlIHRoZSBMaWNlbnNlIGZvciB0aGUgc3BlY2lmaWMgbGFuZ3VhZ2UgZ292ZXJuaW5nIHBlcm1pc3Npb25zIGFuZAovLyBsaW1pdGF0aW9ucyB1bmRlciB0aGUgTGljZW5zZS4KCi8qKgogKiBAZmlsZW92ZXJ2aWV3IEhlbHBlcnMgZm9yIGdvb2dsZS5jb2xhYiBQeXRob24gbW9kdWxlLgogKi8KKGZ1bmN0aW9uKHNjb3BlKSB7CmZ1bmN0aW9uIHNwYW4odGV4dCwgc3R5bGVBdHRyaWJ1dGVzID0ge30pIHsKICBjb25zdCBlbGVtZW50ID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgnc3BhbicpOwogIGVsZW1lbnQudGV4dENvbnRlbnQgPSB0ZXh0OwogIGZvciAoY29uc3Qga2V5IG9mIE9iamVjdC5rZXlzKHN0eWxlQXR0cmlidXRlcykpIHsKICAgIGVsZW1lbnQuc3R5bGVba2V5XSA9IHN0eWxlQXR0cmlidXRlc1trZXldOwogIH0KICByZXR1cm4gZWxlbWVudDsKfQoKLy8gTWF4IG51bWJlciBvZiBieXRlcyB3aGljaCB3aWxsIGJlIHVwbG9hZGVkIGF0IGEgdGltZS4KY29uc3QgTUFYX1BBWUxPQURfU0laRSA9IDEwMCAqIDEwMjQ7CgpmdW5jdGlvbiBfdXBsb2FkRmlsZXMoaW5wdXRJZCwgb3V0cHV0SWQpIHsKICBjb25zdCBzdGVwcyA9IHVwbG9hZEZpbGVzU3RlcChpbnB1dElkLCBvdXRwdXRJZCk7CiAgY29uc3Qgb3V0cHV0RWxlbWVudCA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKG91dHB1dElkKTsKICAvLyBDYWNoZSBzdGVwcyBvbiB0aGUgb3V0cHV0RWxlbWVudCB0byBtYWtlIGl0IGF2YWlsYWJsZSBmb3IgdGhlIG5leHQgY2FsbAogIC8vIHRvIHVwbG9hZEZpbGVzQ29udGludWUgZnJvbSBQeXRob24uCiAgb3V0cHV0RWxlbWVudC5zdGVwcyA9IHN0ZXBzOwoKICByZXR1cm4gX3VwbG9hZEZpbGVzQ29udGludWUob3V0cHV0SWQpOwp9CgovLyBUaGlzIGlzIHJvdWdobHkgYW4gYXN5bmMgZ2VuZXJhdG9yIChub3Qgc3VwcG9ydGVkIGluIHRoZSBicm93c2VyIHlldCksCi8vIHdoZXJlIHRoZXJlIGFyZSBtdWx0aXBsZSBhc3luY2hyb25vdXMgc3RlcHMgYW5kIHRoZSBQeXRob24gc2lkZSBpcyBnb2luZwovLyB0byBwb2xsIGZvciBjb21wbGV0aW9uIG9mIGVhY2ggc3RlcC4KLy8gVGhpcyB1c2VzIGEgUHJvbWlzZSB0byBibG9jayB0aGUgcHl0aG9uIHNpZGUgb24gY29tcGxldGlvbiBvZiBlYWNoIHN0ZXAsCi8vIHRoZW4gcGFzc2VzIHRoZSByZXN1bHQgb2YgdGhlIHByZXZpb3VzIHN0ZXAgYXMgdGhlIGlucHV0IHRvIHRoZSBuZXh0IHN0ZXAuCmZ1bmN0aW9uIF91cGxvYWRGaWxlc0NvbnRpbnVlKG91dHB1dElkKSB7CiAgY29uc3Qgb3V0cHV0RWxlbWVudCA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKG91dHB1dElkKTsKICBjb25zdCBzdGVwcyA9IG91dHB1dEVsZW1lbnQuc3RlcHM7CgogIGNvbnN0IG5leHQgPSBzdGVwcy5uZXh0KG91dHB1dEVsZW1lbnQubGFzdFByb21pc2VWYWx1ZSk7CiAgcmV0dXJuIFByb21pc2UucmVzb2x2ZShuZXh0LnZhbHVlLnByb21pc2UpLnRoZW4oKHZhbHVlKSA9PiB7CiAgICAvLyBDYWNoZSB0aGUgbGFzdCBwcm9taXNlIHZhbHVlIHRvIG1ha2UgaXQgYXZhaWxhYmxlIHRvIHRoZSBuZXh0CiAgICAvLyBzdGVwIG9mIHRoZSBnZW5lcmF0b3IuCiAgICBvdXRwdXRFbGVtZW50Lmxhc3RQcm9taXNlVmFsdWUgPSB2YWx1ZTsKICAgIHJldHVybiBuZXh0LnZhbHVlLnJlc3BvbnNlOwogIH0pOwp9CgovKioKICogR2VuZXJhdG9yIGZ1bmN0aW9uIHdoaWNoIGlzIGNhbGxlZCBiZXR3ZWVuIGVhY2ggYXN5bmMgc3RlcCBvZiB0aGUgdXBsb2FkCiAqIHByb2Nlc3MuCiAqIEBwYXJhbSB7c3RyaW5nfSBpbnB1dElkIEVsZW1lbnQgSUQgb2YgdGhlIGlucHV0IGZpbGUgcGlja2VyIGVsZW1lbnQuCiAqIEBwYXJhbSB7c3RyaW5nfSBvdXRwdXRJZCBFbGVtZW50IElEIG9mIHRoZSBvdXRwdXQgZGlzcGxheS4KICogQHJldHVybiB7IUl0ZXJhYmxlPCFPYmplY3Q+fSBJdGVyYWJsZSBvZiBuZXh0IHN0ZXBzLgogKi8KZnVuY3Rpb24qIHVwbG9hZEZpbGVzU3RlcChpbnB1dElkLCBvdXRwdXRJZCkgewogIGNvbnN0IGlucHV0RWxlbWVudCA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKGlucHV0SWQpOwogIGlucHV0RWxlbWVudC5kaXNhYmxlZCA9IGZhbHNlOwoKICBjb25zdCBvdXRwdXRFbGVtZW50ID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQob3V0cHV0SWQpOwogIG91dHB1dEVsZW1lbnQuaW5uZXJIVE1MID0gJyc7CgogIGNvbnN0IHBpY2tlZFByb21pc2UgPSBuZXcgUHJvbWlzZSgocmVzb2x2ZSkgPT4gewogICAgaW5wdXRFbGVtZW50LmFkZEV2ZW50TGlzdGVuZXIoJ2NoYW5nZScsIChlKSA9PiB7CiAgICAgIHJlc29sdmUoZS50YXJnZXQuZmlsZXMpOwogICAgfSk7CiAgfSk7CgogIGNvbnN0IGNhbmNlbCA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ2J1dHRvbicpOwogIGlucHV0RWxlbWVudC5wYXJlbnRFbGVtZW50LmFwcGVuZENoaWxkKGNhbmNlbCk7CiAgY2FuY2VsLnRleHRDb250ZW50ID0gJ0NhbmNlbCB1cGxvYWQnOwogIGNvbnN0IGNhbmNlbFByb21pc2UgPSBuZXcgUHJvbWlzZSgocmVzb2x2ZSkgPT4gewogICAgY2FuY2VsLm9uY2xpY2sgPSAoKSA9PiB7CiAgICAgIHJlc29sdmUobnVsbCk7CiAgICB9OwogIH0pOwoKICAvLyBXYWl0IGZvciB0aGUgdXNlciB0byBwaWNrIHRoZSBmaWxlcy4KICBjb25zdCBmaWxlcyA9IHlpZWxkIHsKICAgIHByb21pc2U6IFByb21pc2UucmFjZShbcGlja2VkUHJvbWlzZSwgY2FuY2VsUHJvbWlzZV0pLAogICAgcmVzcG9uc2U6IHsKICAgICAgYWN0aW9uOiAnc3RhcnRpbmcnLAogICAgfQogIH07CgogIGNhbmNlbC5yZW1vdmUoKTsKCiAgLy8gRGlzYWJsZSB0aGUgaW5wdXQgZWxlbWVudCBzaW5jZSBmdXJ0aGVyIHBpY2tzIGFyZSBub3QgYWxsb3dlZC4KICBpbnB1dEVsZW1lbnQuZGlzYWJsZWQgPSB0cnVlOwoKICBpZiAoIWZpbGVzKSB7CiAgICByZXR1cm4gewogICAgICByZXNwb25zZTogewogICAgICAgIGFjdGlvbjogJ2NvbXBsZXRlJywKICAgICAgfQogICAgfTsKICB9CgogIGZvciAoY29uc3QgZmlsZSBvZiBmaWxlcykgewogICAgY29uc3QgbGkgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCdsaScpOwogICAgbGkuYXBwZW5kKHNwYW4oZmlsZS5uYW1lLCB7Zm9udFdlaWdodDogJ2JvbGQnfSkpOwogICAgbGkuYXBwZW5kKHNwYW4oCiAgICAgICAgYCgke2ZpbGUudHlwZSB8fCAnbi9hJ30pIC0gJHtmaWxlLnNpemV9IGJ5dGVzLCBgICsKICAgICAgICBgbGFzdCBtb2RpZmllZDogJHsKICAgICAgICAgICAgZmlsZS5sYXN0TW9kaWZpZWREYXRlID8gZmlsZS5sYXN0TW9kaWZpZWREYXRlLnRvTG9jYWxlRGF0ZVN0cmluZygpIDoKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ24vYSd9IC0gYCkpOwogICAgY29uc3QgcGVyY2VudCA9IHNwYW4oJzAlIGRvbmUnKTsKICAgIGxpLmFwcGVuZENoaWxkKHBlcmNlbnQpOwoKICAgIG91dHB1dEVsZW1lbnQuYXBwZW5kQ2hpbGQobGkpOwoKICAgIGNvbnN0IGZpbGVEYXRhUHJvbWlzZSA9IG5ldyBQcm9taXNlKChyZXNvbHZlKSA9PiB7CiAgICAgIGNvbnN0IHJlYWRlciA9IG5ldyBGaWxlUmVhZGVyKCk7CiAgICAgIHJlYWRlci5vbmxvYWQgPSAoZSkgPT4gewogICAgICAgIHJlc29sdmUoZS50YXJnZXQucmVzdWx0KTsKICAgICAgfTsKICAgICAgcmVhZGVyLnJlYWRBc0FycmF5QnVmZmVyKGZpbGUpOwogICAgfSk7CiAgICAvLyBXYWl0IGZvciB0aGUgZGF0YSB0byBiZSByZWFkeS4KICAgIGxldCBmaWxlRGF0YSA9IHlpZWxkIHsKICAgICAgcHJvbWlzZTogZmlsZURhdGFQcm9taXNlLAogICAgICByZXNwb25zZTogewogICAgICAgIGFjdGlvbjogJ2NvbnRpbnVlJywKICAgICAgfQogICAgfTsKCiAgICAvLyBVc2UgYSBjaHVua2VkIHNlbmRpbmcgdG8gYXZvaWQgbWVzc2FnZSBzaXplIGxpbWl0cy4gU2VlIGIvNjIxMTU2NjAuCiAgICBsZXQgcG9zaXRpb24gPSAwOwogICAgd2hpbGUgKHBvc2l0aW9uIDwgZmlsZURhdGEuYnl0ZUxlbmd0aCkgewogICAgICBjb25zdCBsZW5ndGggPSBNYXRoLm1pbihmaWxlRGF0YS5ieXRlTGVuZ3RoIC0gcG9zaXRpb24sIE1BWF9QQVlMT0FEX1NJWkUpOwogICAgICBjb25zdCBjaHVuayA9IG5ldyBVaW50OEFycmF5KGZpbGVEYXRhLCBwb3NpdGlvbiwgbGVuZ3RoKTsKICAgICAgcG9zaXRpb24gKz0gbGVuZ3RoOwoKICAgICAgY29uc3QgYmFzZTY0ID0gYnRvYShTdHJpbmcuZnJvbUNoYXJDb2RlLmFwcGx5KG51bGwsIGNodW5rKSk7CiAgICAgIHlpZWxkIHsKICAgICAgICByZXNwb25zZTogewogICAgICAgICAgYWN0aW9uOiAnYXBwZW5kJywKICAgICAgICAgIGZpbGU6IGZpbGUubmFtZSwKICAgICAgICAgIGRhdGE6IGJhc2U2NCwKICAgICAgICB9LAogICAgICB9OwogICAgICBwZXJjZW50LnRleHRDb250ZW50ID0KICAgICAgICAgIGAke01hdGgucm91bmQoKHBvc2l0aW9uIC8gZmlsZURhdGEuYnl0ZUxlbmd0aCkgKiAxMDApfSUgZG9uZWA7CiAgICB9CiAgfQoKICAvLyBBbGwgZG9uZS4KICB5aWVsZCB7CiAgICByZXNwb25zZTogewogICAgICBhY3Rpb246ICdjb21wbGV0ZScsCiAgICB9CiAgfTsKfQoKc2NvcGUuZ29vZ2xlID0gc2NvcGUuZ29vZ2xlIHx8IHt9OwpzY29wZS5nb29nbGUuY29sYWIgPSBzY29wZS5nb29nbGUuY29sYWIgfHwge307CnNjb3BlLmdvb2dsZS5jb2xhYi5fZmlsZXMgPSB7CiAgX3VwbG9hZEZpbGVzLAogIF91cGxvYWRGaWxlc0NvbnRpbnVlLAp9Owp9KShzZWxmKTsK",
"ok": true,
"headers": [
[
"content-type",
"application/javascript"
]
],
"status": 200,
"status_text": ""
}
},
"base_uri": "https://localhost:8080/",
"height": 89
},
"outputId": "c7ae7cbd-ec2a-4768-977e-732896c70753"
},
"source": [
"from google.colab import files\n",
"uploaded = files.upload()\n",
"print(\"done\")"
],
"execution_count": 4,
"outputs": [
{
"output_type": "display_data",
"data": {
"text/html": [
"\n",
" <input type=\"file\" id=\"files-cd43336c-4379-4aa3-af45-2ad809731ad4\" name=\"files[]\" multiple disabled\n",
" style=\"border:none\" />\n",
" <output id=\"result-cd43336c-4379-4aa3-af45-2ad809731ad4\">\n",
" Upload widget is only available when the cell has been executed in the\n",
" current browser session. Please rerun this cell to enable.\n",
" </output>\n",
" <script src=\"/nbextensions/google.colab/files.js\"></script> "
],
"text/plain": [
"<IPython.core.display.HTML object>"
]
},
"metadata": {
"tags": []
}
},
{
"output_type": "stream",
"text": [
"Saving key.json to key.json\n",
"done\n"
],
"name": "stdout"
}
]
},
{
"cell_type": "code",
"metadata": {
"id": "-IcR0riHVj3Q",
"colab_type": "code",
"colab": {}
},
"source": [
"openai.api_key = json.load(open(\"key.json\", \"r\"))[\"key\"]"
],
"execution_count": 9,
"outputs": []
},
{
"cell_type": "code",
"metadata": {
"id": "T6RwiN4rVj3S",
"colab_type": "code",
"colab": {}
},
"source": [
"from random import choices"
],
"execution_count": 10,
"outputs": []
},
{
"cell_type": "code",
"metadata": {
"id": "aHIvmfzwVj3U",
"colab_type": "code",
"colab": {}
},
"source": [
"kwargs = {\n",
"\"engine\":\"davinci\",\n",
"\"temperature\":0,\n",
"\"max_tokens\":10,\n",
"\"stop\":\"\\n\",\n",
"}"
],
"execution_count": 11,
"outputs": []
},
{
"cell_type": "code",
"metadata": {
"id": "VKW5kyw_Vj3X",
"colab_type": "code",
"colab": {
"base_uri": "https://localhost:8080/",
"height": 443
},
"outputId": "46a12706-affe-4eff-e270-6ca76d5c1091"
},
"source": [
"results = {}\n",
"\n",
"myPrompts = {}\n",
"for length in range(1,11):\n",
" print(length)\n",
" results[length] = {}\n",
" prompt = \"\"\n",
" simplePrompt = \"\"\n",
" for i in range(6):\n",
" choice = choices([1,0], k=length)\n",
" example = \" \".join([str(x) for x in choice])\n",
" prompt += example + \"\\n\"\n",
" prompt += \"q:what was the series?\\n\"\n",
" prompt += \"a:{}\\n\".format(example)\n",
" prompt += \"q:how many 1s?\\n\"\n",
" prompt += \"a:{}\\n\\n\".format(sum(choice))\n",
" \n",
" simplePrompt += example + \"\\n\"\n",
" simplePrompt += \"q:how many 1s?\\n\"\n",
" simplePrompt += \"a:{}\\n\\n\".format(sum(choice))\n",
"\n",
" myPrompts[length] = simplePrompt\n",
" \n",
" for i in range(25):\n",
" results[length][i] = {}\n",
" choice = choices([1,0], k=length)\n",
" results[length][i][\"choice\"] = choice\n",
"\n",
" suffix = \" \".join([str(x) for x in choice])\n",
" \n",
" newPrompt = simplePrompt + suffix + \"\\n\"\n",
" newPrompt += \"q:how many 1s?\\n\"\n",
" newPrompt += \"a:\"\n",
" results[length][i][\"simple_result\"] = openai.Completion.create(prompt=newPrompt, **kwargs)[\"choices\"][0][\"text\"].strip()\n",
" \n",
" \n",
" newPrompt = prompt + suffix + \"\\n\"\n",
" newPrompt += \"q:what was the series?\\n\"\n",
" newPrompt += \"a:{}\\n\".format(suffix)\n",
" newPrompt += \"q:how many 1s?\\n\"\n",
" newPrompt += \"a:\"\n",
" results[length][i][\"actual\"] = sum(choice)\n",
"\n",
" results[length][i][\"repeat_result\"] = openai.Completion.create(prompt=newPrompt, **kwargs)[\"choices\"][0][\"text\"].strip()"
],
"execution_count": 12,
"outputs": [
{
"output_type": "stream",
"text": [
"1\n"
],
"name": "stdout"
},
{
"output_type": "error",
"ename": "KeyboardInterrupt",
"evalue": "ignored",
"traceback": [
"\u001b[0;31m---------------------------------------------------------------------------\u001b[0m",
"\u001b[0;31mTypeError\u001b[0m Traceback (most recent call last)",
"\u001b[0;32m/usr/local/lib/python3.6/dist-packages/urllib3/connectionpool.py\u001b[0m in \u001b[0;36m_make_request\u001b[0;34m(self, conn, method, url, timeout, chunked, **httplib_request_kw)\u001b[0m\n\u001b[1;32m 376\u001b[0m \u001b[0;32mtry\u001b[0m\u001b[0;34m:\u001b[0m \u001b[0;31m# Python 2.7, use buffering of HTTP responses\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0;32m--> 377\u001b[0;31m \u001b[0mhttplib_response\u001b[0m \u001b[0;34m=\u001b[0m \u001b[0mconn\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mgetresponse\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mbuffering\u001b[0m\u001b[0;34m=\u001b[0m\u001b[0;32mTrue\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0m\u001b[1;32m 378\u001b[0m \u001b[0;32mexcept\u001b[0m \u001b[0mTypeError\u001b[0m\u001b[0;34m:\u001b[0m \u001b[0;31m# Python 3\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n",
"\u001b[0;31mTypeError\u001b[0m: getresponse() got an unexpected keyword argument 'buffering'",
"\nDuring handling of the above exception, another exception occurred:\n",
"\u001b[0;31mKeyboardInterrupt\u001b[0m Traceback (most recent call last)",
"\u001b[0;32m<ipython-input-12-77ae20fe8a80>\u001b[0m in \u001b[0;36m<module>\u001b[0;34m()\u001b[0m\n\u001b[1;32m 32\u001b[0m \u001b[0mnewPrompt\u001b[0m \u001b[0;34m+=\u001b[0m \u001b[0;34m\"q:how many 1s?\\n\"\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 33\u001b[0m \u001b[0mnewPrompt\u001b[0m \u001b[0;34m+=\u001b[0m \u001b[0;34m\"a:\"\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0;32m---> 34\u001b[0;31m \u001b[0mresults\u001b[0m\u001b[0;34m[\u001b[0m\u001b[0mlength\u001b[0m\u001b[0;34m]\u001b[0m\u001b[0;34m[\u001b[0m\u001b[0mi\u001b[0m\u001b[0;34m]\u001b[0m\u001b[0;34m[\u001b[0m\u001b[0;34m\"simple_result\"\u001b[0m\u001b[0;34m]\u001b[0m \u001b[0;34m=\u001b[0m \u001b[0mopenai\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mCompletion\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mcreate\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mprompt\u001b[0m\u001b[0;34m=\u001b[0m\u001b[0mnewPrompt\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0;34m**\u001b[0m\u001b[0mkwargs\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m[\u001b[0m\u001b[0;34m\"choices\"\u001b[0m\u001b[0;34m]\u001b[0m\u001b[0;34m[\u001b[0m\u001b[0;36m0\u001b[0m\u001b[0;34m]\u001b[0m\u001b[0;34m[\u001b[0m\u001b[0;34m\"text\"\u001b[0m\u001b[0;34m]\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mstrip\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0m\u001b[1;32m 35\u001b[0m \u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 36\u001b[0m \u001b[0;34m\u001b[0m\u001b[0m\n",
"\u001b[0;32m/usr/local/lib/python3.6/dist-packages/openai/api_resources/completion.py\u001b[0m in \u001b[0;36mcreate\u001b[0;34m(cls, *args, **kwargs)\u001b[0m\n\u001b[1;32m 17\u001b[0m \u001b[0;32mwhile\u001b[0m \u001b[0;32mTrue\u001b[0m\u001b[0;34m:\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 18\u001b[0m \u001b[0;32mtry\u001b[0m\u001b[0;34m:\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0;32m---> 19\u001b[0;31m \u001b[0;32mreturn\u001b[0m \u001b[0msuper\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mcreate\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0;34m*\u001b[0m\u001b[0margs\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0;34m**\u001b[0m\u001b[0mkwargs\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0m\u001b[1;32m 20\u001b[0m \u001b[0;32mexcept\u001b[0m \u001b[0mTryAgain\u001b[0m \u001b[0;32mas\u001b[0m \u001b[0me\u001b[0m\u001b[0;34m:\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 21\u001b[0m \u001b[0;32mif\u001b[0m \u001b[0mtimeout\u001b[0m \u001b[0;32mis\u001b[0m \u001b[0;32mnot\u001b[0m \u001b[0;32mNone\u001b[0m \u001b[0;32mand\u001b[0m \u001b[0mtime\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mtime\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0;34m)\u001b[0m \u001b[0;34m>\u001b[0m \u001b[0mstart\u001b[0m \u001b[0;34m+\u001b[0m \u001b[0mtimeout\u001b[0m\u001b[0;34m:\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n",
"\u001b[0;32m/usr/local/lib/python3.6/dist-packages/openai/api_resources/abstract/engine_api_resource.py\u001b[0m in \u001b[0;36mcreate\u001b[0;34m(cls, api_key, api_base, idempotency_key, request_id, api_version, organization, **params)\u001b[0m\n\u001b[1;32m 78\u001b[0m \u001b[0mheaders\u001b[0m \u001b[0;34m=\u001b[0m \u001b[0mutil\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mpopulate_headers\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0midempotency_key\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0mrequest_id\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 79\u001b[0m response, _, api_key = requestor.request(\n\u001b[0;32m---> 80\u001b[0;31m \u001b[0;34m\"post\"\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0murl\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0mparams\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0mheaders\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0mstream\u001b[0m\u001b[0;34m=\u001b[0m\u001b[0mstream\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0m\u001b[1;32m 81\u001b[0m )\n\u001b[1;32m 82\u001b[0m \u001b[0;34m\u001b[0m\u001b[0m\n",
"\u001b[0;32m/usr/local/lib/python3.6/dist-packages/openai/api_requestor.py\u001b[0m in \u001b[0;36mrequest\u001b[0;34m(self, method, url, params, headers, stream)\u001b[0m\n\u001b[1;32m 129\u001b[0m \u001b[0;32mdef\u001b[0m \u001b[0mrequest\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mself\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0mmethod\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0murl\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0mparams\u001b[0m\u001b[0;34m=\u001b[0m\u001b[0;32mNone\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0mheaders\u001b[0m\u001b[0;34m=\u001b[0m\u001b[0;32mNone\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0mstream\u001b[0m\u001b[0;34m=\u001b[0m\u001b[0;32mFalse\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m:\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 130\u001b[0m rbody, rcode, rheaders, stream, my_api_key = self.request_raw(\n\u001b[0;32m--> 131\u001b[0;31m \u001b[0mmethod\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mlower\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0murl\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0mparams\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0mheaders\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0mstream\u001b[0m\u001b[0;34m=\u001b[0m\u001b[0mstream\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0m\u001b[1;32m 132\u001b[0m )\n\u001b[1;32m 133\u001b[0m \u001b[0mresp\u001b[0m \u001b[0;34m=\u001b[0m \u001b[0mself\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0minterpret_response\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mrbody\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0mrcode\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0mrheaders\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0mstream\u001b[0m\u001b[0;34m=\u001b[0m\u001b[0mstream\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n",
"\u001b[0;32m/usr/local/lib/python3.6/dist-packages/openai/api_requestor.py\u001b[0m in \u001b[0;36mrequest_raw\u001b[0;34m(self, method, url, params, supplied_headers, stream)\u001b[0m\n\u001b[1;32m 328\u001b[0m \u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 329\u001b[0m rbody, rcode, rheaders, stream = self._client.request_with_retries(\n\u001b[0;32m--> 330\u001b[0;31m \u001b[0mmethod\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0mabs_url\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0mheaders\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0mpost_data\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0mstream\u001b[0m\u001b[0;34m=\u001b[0m\u001b[0mstream\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0m\u001b[1;32m 331\u001b[0m )\n\u001b[1;32m 332\u001b[0m \u001b[0;34m\u001b[0m\u001b[0m\n",
"\u001b[0;32m/usr/local/lib/python3.6/dist-packages/openai/http_client.py\u001b[0m in \u001b[0;36mrequest_with_retries\u001b[0;34m(self, method, url, headers, post_data, stream)\u001b[0m\n\u001b[1;32m 121\u001b[0m \u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 122\u001b[0m \u001b[0;32mtry\u001b[0m\u001b[0;34m:\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0;32m--> 123\u001b[0;31m \u001b[0mresponse\u001b[0m \u001b[0;34m=\u001b[0m \u001b[0mself\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mrequest\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mmethod\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0murl\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0mheaders\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0mpost_data\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0mstream\u001b[0m\u001b[0;34m=\u001b[0m\u001b[0mstream\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0m\u001b[1;32m 124\u001b[0m \u001b[0mconnection_error\u001b[0m \u001b[0;34m=\u001b[0m \u001b[0;32mNone\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 125\u001b[0m \u001b[0;32mexcept\u001b[0m \u001b[0merror\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mAPIConnectionError\u001b[0m \u001b[0;32mas\u001b[0m \u001b[0me\u001b[0m\u001b[0;34m:\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n",
"\u001b[0;32m/usr/local/lib/python3.6/dist-packages/openai/http_client.py\u001b[0m in \u001b[0;36mrequest\u001b[0;34m(self, method, url, headers, post_data, stream)\u001b[0m\n\u001b[1;32m 282\u001b[0m \u001b[0mtimeout\u001b[0m\u001b[0;34m=\u001b[0m\u001b[0mself\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0m_timeout\u001b[0m\u001b[0;34m,\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 283\u001b[0m \u001b[0mstream\u001b[0m\u001b[0;34m=\u001b[0m\u001b[0mstream\u001b[0m\u001b[0;34m,\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0;32m--> 284\u001b[0;31m \u001b[0;34m**\u001b[0m\u001b[0mkwargs\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0m\u001b[1;32m 285\u001b[0m )\n\u001b[1;32m 286\u001b[0m \u001b[0;32mexcept\u001b[0m \u001b[0mTypeError\u001b[0m \u001b[0;32mas\u001b[0m \u001b[0me\u001b[0m\u001b[0;34m:\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n",
"\u001b[0;32m/usr/local/lib/python3.6/dist-packages/requests/sessions.py\u001b[0m in \u001b[0;36mrequest\u001b[0;34m(self, method, url, params, data, headers, cookies, files, auth, timeout, allow_redirects, proxies, hooks, stream, verify, cert, json)\u001b[0m\n\u001b[1;32m 528\u001b[0m }\n\u001b[1;32m 529\u001b[0m \u001b[0msend_kwargs\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mupdate\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0msettings\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0;32m--> 530\u001b[0;31m \u001b[0mresp\u001b[0m \u001b[0;34m=\u001b[0m \u001b[0mself\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0msend\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mprep\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0;34m**\u001b[0m\u001b[0msend_kwargs\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0m\u001b[1;32m 531\u001b[0m \u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 532\u001b[0m \u001b[0;32mreturn\u001b[0m \u001b[0mresp\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n",
"\u001b[0;32m/usr/local/lib/python3.6/dist-packages/requests/sessions.py\u001b[0m in \u001b[0;36msend\u001b[0;34m(self, request, **kwargs)\u001b[0m\n\u001b[1;32m 641\u001b[0m \u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 642\u001b[0m \u001b[0;31m# Send the request\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0;32m--> 643\u001b[0;31m \u001b[0mr\u001b[0m \u001b[0;34m=\u001b[0m \u001b[0madapter\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0msend\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mrequest\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0;34m**\u001b[0m\u001b[0mkwargs\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0m\u001b[1;32m 644\u001b[0m \u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 645\u001b[0m \u001b[0;31m# Total elapsed time of the request (approximately)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n",
"\u001b[0;32m/usr/local/lib/python3.6/dist-packages/requests/adapters.py\u001b[0m in \u001b[0;36msend\u001b[0;34m(self, request, stream, timeout, verify, cert, proxies)\u001b[0m\n\u001b[1;32m 447\u001b[0m \u001b[0mdecode_content\u001b[0m\u001b[0;34m=\u001b[0m\u001b[0;32mFalse\u001b[0m\u001b[0;34m,\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 448\u001b[0m \u001b[0mretries\u001b[0m\u001b[0;34m=\u001b[0m\u001b[0mself\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mmax_retries\u001b[0m\u001b[0;34m,\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0;32m--> 449\u001b[0;31m \u001b[0mtimeout\u001b[0m\u001b[0;34m=\u001b[0m\u001b[0mtimeout\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0m\u001b[1;32m 450\u001b[0m )\n\u001b[1;32m 451\u001b[0m \u001b[0;34m\u001b[0m\u001b[0m\n",
"\u001b[0;32m/usr/local/lib/python3.6/dist-packages/urllib3/connectionpool.py\u001b[0m in \u001b[0;36murlopen\u001b[0;34m(self, method, url, body, headers, retries, redirect, assert_same_host, timeout, pool_timeout, release_conn, chunked, body_pos, **response_kw)\u001b[0m\n\u001b[1;32m 598\u001b[0m \u001b[0mtimeout\u001b[0m\u001b[0;34m=\u001b[0m\u001b[0mtimeout_obj\u001b[0m\u001b[0;34m,\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 599\u001b[0m \u001b[0mbody\u001b[0m\u001b[0;34m=\u001b[0m\u001b[0mbody\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0mheaders\u001b[0m\u001b[0;34m=\u001b[0m\u001b[0mheaders\u001b[0m\u001b[0;34m,\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0;32m--> 600\u001b[0;31m chunked=chunked)\n\u001b[0m\u001b[1;32m 601\u001b[0m \u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 602\u001b[0m \u001b[0;31m# If we're going to release the connection in ``finally:``, then\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n",
"\u001b[0;32m/usr/local/lib/python3.6/dist-packages/urllib3/connectionpool.py\u001b[0m in \u001b[0;36m_make_request\u001b[0;34m(self, conn, method, url, timeout, chunked, **httplib_request_kw)\u001b[0m\n\u001b[1;32m 378\u001b[0m \u001b[0;32mexcept\u001b[0m \u001b[0mTypeError\u001b[0m\u001b[0;34m:\u001b[0m \u001b[0;31m# Python 3\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 379\u001b[0m \u001b[0;32mtry\u001b[0m\u001b[0;34m:\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0;32m--> 380\u001b[0;31m \u001b[0mhttplib_response\u001b[0m \u001b[0;34m=\u001b[0m \u001b[0mconn\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mgetresponse\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0m\u001b[1;32m 381\u001b[0m \u001b[0;32mexcept\u001b[0m \u001b[0mException\u001b[0m \u001b[0;32mas\u001b[0m \u001b[0me\u001b[0m\u001b[0;34m:\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 382\u001b[0m \u001b[0;31m# Remove the TypeError from the exception chain in Python 3;\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n",
"\u001b[0;32m/usr/lib/python3.6/http/client.py\u001b[0m in \u001b[0;36mgetresponse\u001b[0;34m(self)\u001b[0m\n\u001b[1;32m 1354\u001b[0m \u001b[0;32mtry\u001b[0m\u001b[0;34m:\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 1355\u001b[0m \u001b[0;32mtry\u001b[0m\u001b[0;34m:\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0;32m-> 1356\u001b[0;31m \u001b[0mresponse\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mbegin\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0m\u001b[1;32m 1357\u001b[0m \u001b[0;32mexcept\u001b[0m \u001b[0mConnectionError\u001b[0m\u001b[0;34m:\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 1358\u001b[0m \u001b[0mself\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mclose\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n",
"\u001b[0;32m/usr/lib/python3.6/http/client.py\u001b[0m in \u001b[0;36mbegin\u001b[0;34m(self)\u001b[0m\n\u001b[1;32m 305\u001b[0m \u001b[0;31m# read until we get a non-100 response\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 306\u001b[0m \u001b[0;32mwhile\u001b[0m \u001b[0;32mTrue\u001b[0m\u001b[0;34m:\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0;32m--> 307\u001b[0;31m \u001b[0mversion\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0mstatus\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0mreason\u001b[0m \u001b[0;34m=\u001b[0m \u001b[0mself\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0m_read_status\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0m\u001b[1;32m 308\u001b[0m \u001b[0;32mif\u001b[0m \u001b[0mstatus\u001b[0m \u001b[0;34m!=\u001b[0m \u001b[0mCONTINUE\u001b[0m\u001b[0;34m:\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 309\u001b[0m \u001b[0;32mbreak\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n",
"\u001b[0;32m/usr/lib/python3.6/http/client.py\u001b[0m in \u001b[0;36m_read_status\u001b[0;34m(self)\u001b[0m\n\u001b[1;32m 266\u001b[0m \u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 267\u001b[0m \u001b[0;32mdef\u001b[0m \u001b[0m_read_status\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mself\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m:\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0;32m--> 268\u001b[0;31m \u001b[0mline\u001b[0m \u001b[0;34m=\u001b[0m \u001b[0mstr\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mself\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mfp\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mreadline\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0m_MAXLINE\u001b[0m \u001b[0;34m+\u001b[0m \u001b[0;36m1\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0;34m\"iso-8859-1\"\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0m\u001b[1;32m 269\u001b[0m \u001b[0;32mif\u001b[0m \u001b[0mlen\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mline\u001b[0m\u001b[0;34m)\u001b[0m \u001b[0;34m>\u001b[0m \u001b[0m_MAXLINE\u001b[0m\u001b[0;34m:\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 270\u001b[0m \u001b[0;32mraise\u001b[0m \u001b[0mLineTooLong\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0;34m\"status line\"\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n",
"\u001b[0;32m/usr/lib/python3.6/socket.py\u001b[0m in \u001b[0;36mreadinto\u001b[0;34m(self, b)\u001b[0m\n\u001b[1;32m 584\u001b[0m \u001b[0;32mwhile\u001b[0m \u001b[0;32mTrue\u001b[0m\u001b[0;34m:\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 585\u001b[0m \u001b[0;32mtry\u001b[0m\u001b[0;34m:\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0;32m--> 586\u001b[0;31m \u001b[0;32mreturn\u001b[0m \u001b[0mself\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0m_sock\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mrecv_into\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mb\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0m\u001b[1;32m 587\u001b[0m \u001b[0;32mexcept\u001b[0m \u001b[0mtimeout\u001b[0m\u001b[0;34m:\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 588\u001b[0m \u001b[0mself\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0m_timeout_occurred\u001b[0m \u001b[0;34m=\u001b[0m \u001b[0;32mTrue\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n",
"\u001b[0;32m/usr/lib/python3.6/ssl.py\u001b[0m in \u001b[0;36mrecv_into\u001b[0;34m(self, buffer, nbytes, flags)\u001b[0m\n\u001b[1;32m 1010\u001b[0m \u001b[0;34m\"non-zero flags not allowed in calls to recv_into() on %s\"\u001b[0m \u001b[0;34m%\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 1011\u001b[0m self.__class__)\n\u001b[0;32m-> 1012\u001b[0;31m \u001b[0;32mreturn\u001b[0m \u001b[0mself\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mread\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mnbytes\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0mbuffer\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0m\u001b[1;32m 1013\u001b[0m \u001b[0;32melse\u001b[0m\u001b[0;34m:\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 1014\u001b[0m \u001b[0;32mreturn\u001b[0m \u001b[0msocket\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mrecv_into\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mself\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0mbuffer\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0mnbytes\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0mflags\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n",
"\u001b[0;32m/usr/lib/python3.6/ssl.py\u001b[0m in \u001b[0;36mread\u001b[0;34m(self, len, buffer)\u001b[0m\n\u001b[1;32m 872\u001b[0m \u001b[0;32mraise\u001b[0m \u001b[0mValueError\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0;34m\"Read on closed or unwrapped SSL socket.\"\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 873\u001b[0m \u001b[0;32mtry\u001b[0m\u001b[0;34m:\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0;32m--> 874\u001b[0;31m \u001b[0;32mreturn\u001b[0m \u001b[0mself\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0m_sslobj\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mread\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mlen\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0mbuffer\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0m\u001b[1;32m 875\u001b[0m \u001b[0;32mexcept\u001b[0m \u001b[0mSSLError\u001b[0m \u001b[0;32mas\u001b[0m \u001b[0mx\u001b[0m\u001b[0;34m:\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 876\u001b[0m \u001b[0;32mif\u001b[0m \u001b[0mx\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0margs\u001b[0m\u001b[0;34m[\u001b[0m\u001b[0;36m0\u001b[0m\u001b[0;34m]\u001b[0m \u001b[0;34m==\u001b[0m \u001b[0mSSL_ERROR_EOF\u001b[0m \u001b[0;32mand\u001b[0m \u001b[0mself\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0msuppress_ragged_eofs\u001b[0m\u001b[0;34m:\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n",
"\u001b[0;32m/usr/lib/python3.6/ssl.py\u001b[0m in \u001b[0;36mread\u001b[0;34m(self, len, buffer)\u001b[0m\n\u001b[1;32m 629\u001b[0m \"\"\"\n\u001b[1;32m 630\u001b[0m \u001b[0;32mif\u001b[0m \u001b[0mbuffer\u001b[0m \u001b[0;32mis\u001b[0m \u001b[0;32mnot\u001b[0m \u001b[0;32mNone\u001b[0m\u001b[0;34m:\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0;32m--> 631\u001b[0;31m \u001b[0mv\u001b[0m \u001b[0;34m=\u001b[0m \u001b[0mself\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0m_sslobj\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mread\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mlen\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0mbuffer\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0m\u001b[1;32m 632\u001b[0m \u001b[0;32melse\u001b[0m\u001b[0;34m:\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 633\u001b[0m \u001b[0mv\u001b[0m \u001b[0;34m=\u001b[0m \u001b[0mself\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0m_sslobj\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mread\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mlen\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n",
"\u001b[0;31mKeyboardInterrupt\u001b[0m: "
]
}
]
},
{
"cell_type": "code",
"metadata": {
"id": "ceu6NpQrVj3a",
"colab_type": "code",
"colab": {}
},
"source": [
"with open(\"../count_digits/6_prompts.json\", \"w\") as fh:\n",
" json.dump(myPrompts, fh, indent=4)\n",
"\n",
"with open(\"../count_digits/6.json\", \"w\") as fh:\n",
" json.dump(results, fh, indent=4)\n"
],
"execution_count": null,
"outputs": []
},
{
"cell_type": "code",
"metadata": {
"id": "NZb2XkQKVj3c",
"colab_type": "code",
"colab": {},
"outputId": "cd0fe46d-043a-4bd1-d437-7f1f427ada9a"
},
"source": [
"scores = pd.DataFrame()\n",
"for i in range(1, 11):\n",
" \n",
" tmp = pd.DataFrame(results[i]).T\n",
" tmp[\"same_simple\"] = (tmp[\"actual\"] == tmp[\"simple_result\"].astype(int))\n",
" scores.at[i, \"Not Repeated\"] = 100*tmp[\"same_simple\"].sum()/len(tmp)\n",
"\n",
" tmp[\"same_repeat\"] = (tmp[\"actual\"] == tmp[\"repeat_result\"].astype(int))\n",
" scores.at[i, \"Repeated\"] = 100*tmp[\"same_repeat\"].sum()/len(tmp)\n",
" \n",
"\n",
"\n",
"import matplotlib.pyplot as plt\n",
"\n",
"fig, ax = plt.subplots(facecolor=\"w\")\n",
"scores.plot(title=\"% correct of counting space separated 0's and 1's with 6 examples (n=25 per length)\", ax=ax, ylim=0)\n",
"ax.set_ylabel(\"% Correct\")\n",
"ax.set_xlabel(\"Number of digits\")\n",
"plt.savefig(\"../count01.jpg\")"
],
"execution_count": null,
"outputs": [
{
"output_type": "display_data",
"data": {
"image/png": "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\n",
"text/plain": [
"<Figure size 432x288 with 1 Axes>"
]
},
"metadata": {
"tags": []
}
}
]
},
{
"cell_type": "code",
"metadata": {
"id": "Rjpu_WyEVj3e",
"colab_type": "code",
"colab": {
"base_uri": "https://localhost:8080/",
"height": 187
},
"outputId": "b2525506-5060-4dba-b7f8-7221bc548caa"
},
"source": [
"results = {}\n",
"\n",
"myPrompts = {}\n",
"for length in range(1,11):\n",
" print(length)\n",
" results[length] = {}\n",
" prompt = \"\"\n",
" simplePrompt = \"\"\n",
" for i in range(6):\n",
" choice = choices([1,0], k=length)\n",
" example = \" \".join([str(x) for x in choice])\n",
" prompt += example + \"\\n\"\n",
" prompt += \"q:what was the series?\\n\"\n",
" prompt += \"a:{}\\n\".format(example)\n",
" prompt += \"q:how many 1s?\\n\"\n",
" prompt += \"a:{}\\n\\n\".format(sum(choice))\n",
" \n",
" simplePrompt += example + \"\\n\"\n",
" simplePrompt += \"q:how many 1s?\\n\"\n",
" simplePrompt += \"a:{}\\n\\n\".format(sum(choice))\n",
"\n",
" myPrompts[length] = simplePrompt\n",
" \n",
" for i in range(500):\n",
" results[length][i] = {}\n",
" choice = choices([1,0], k=length)\n",
" results[length][i][\"choice\"] = choice\n",
"\n",
" suffix = \" \".join([str(x) for x in choice])\n",
" \n",
" newPrompt = simplePrompt + suffix + \"\\n\"\n",
" newPrompt += \"q:how many 1s?\\n\"\n",
" newPrompt += \"a:\"\n",
" results[length][i][\"simple_result\"] = openai.Completion.create(prompt=newPrompt, **kwargs)[\"choices\"][0][\"text\"].strip()\n",
" \n",
" \n",
" newPrompt = prompt + suffix + \"\\n\"\n",
" newPrompt += \"q:what was the series?\\n\"\n",
" newPrompt += \"a:{}\\n\".format(suffix)\n",
" newPrompt += \"q:how many 1s?\\n\"\n",
" newPrompt += \"a:\"\n",
" results[length][i][\"actual\"] = sum(choice)\n",
"\n",
" results[length][i][\"repeat_result\"] = openai.Completion.create(prompt=newPrompt, **kwargs)[\"choices\"][0][\"text\"].strip()"
],
"execution_count": 13,
"outputs": [
{
"output_type": "stream",
"text": [
"1\n",
"2\n",
"3\n",
"4\n",
"5\n",
"6\n",
"7\n",
"8\n",
"9\n",
"10\n"
],
"name": "stdout"
}
]
},
{
"cell_type": "code",
"metadata": {
"id": "WqJNPN_ctnsD",
"colab_type": "code",
"colab": {}
},
"source": [
"with open(\"500_prompts.json\", \"w\") as fh:\n",
" json.dump(myPrompts, fh, indent=4)\n",
"\n",
"with open(\"500_results.json\", \"w\") as fh:\n",
" json.dump(results, fh, indent=4)\n"
],
"execution_count": 16,
"outputs": []
},
{
"cell_type": "code",
"metadata": {
"id": "HJIPNtxZL5pP",
"colab_type": "code",
"colab": {
"base_uri": "https://localhost:8080/",
"height": 17
},
"outputId": "cf817e5c-19e7-4064-c04b-6cec638a6340"
},
"source": [
"from google.colab import files\n",
"import os\n",
"for x in os.listdir():\n",
" if not x.endswith(\".json\"):\n",
" continue\n",
" files.download(x)"
],
"execution_count": 17,
"outputs": [
{
"output_type": "display_data",
"data": {
"application/javascript": [
"\n",
" async function download(id, filename, size) {\n",
" if (!google.colab.kernel.accessAllowed) {\n",
" return;\n",
" }\n",
" const div = document.createElement('div');\n",
" const label = document.createElement('label');\n",
" label.textContent = `Downloading \"${filename}\": `;\n",
" div.appendChild(label);\n",
" const progress = document.createElement('progress');\n",
" progress.max = size;\n",
" div.appendChild(progress);\n",
" document.body.appendChild(div);\n",
"\n",
" const buffers = [];\n",
" let downloaded = 0;\n",
"\n",
" const channel = await google.colab.kernel.comms.open(id);\n",
" // Send a message to notify the kernel that we're ready.\n",
" channel.send({})\n",
"\n",
" for await (const message of channel.messages) {\n",
" // Send a message to notify the kernel that we're ready.\n",
" channel.send({})\n",
" if (message.buffers) {\n",
" for (const buffer of message.buffers) {\n",
" buffers.push(buffer);\n",
" downloaded += buffer.byteLength;\n",
" progress.value = downloaded;\n",
" }\n",
" }\n",
" }\n",
" const blob = new Blob(buffers, {type: 'application/binary'});\n",
" const a = document.createElement('a');\n",
" a.href = window.URL.createObjectURL(blob);\n",
" a.download = filename;\n",
" div.appendChild(a);\n",
" a.click();\n",
" div.remove();\n",
" }\n",
" "
],
"text/plain": [
"<IPython.core.display.Javascript object>"
]
},
"metadata": {
"tags": []
}
},
{
"output_type": "display_data",
"data": {
"application/javascript": [
"download(\"download_6879e925-ae24-4e43-b2d7-e8836a87c39d\", \"500_results.json\", 1311573)"
],
"text/plain": [
"<IPython.core.display.Javascript object>"
]
},
"metadata": {
"tags": []
}
},
{
"output_type": "display_data",
"data": {
"application/javascript": [
"\n",
" async function download(id, filename, size) {\n",
" if (!google.colab.kernel.accessAllowed) {\n",
" return;\n",
" }\n",
" const div = document.createElement('div');\n",
" const label = document.createElement('label');\n",
" label.textContent = `Downloading \"${filename}\": `;\n",
" div.appendChild(label);\n",
" const progress = document.createElement('progress');\n",
" progress.max = size;\n",
" div.appendChild(progress);\n",
" document.body.appendChild(div);\n",
"\n",
" const buffers = [];\n",
" let downloaded = 0;\n",
"\n",
" const channel = await google.colab.kernel.comms.open(id);\n",
" // Send a message to notify the kernel that we're ready.\n",
" channel.send({})\n",
"\n",
" for await (const message of channel.messages) {\n",
" // Send a message to notify the kernel that we're ready.\n",
" channel.send({})\n",
" if (message.buffers) {\n",
" for (const buffer of message.buffers) {\n",
" buffers.push(buffer);\n",
" downloaded += buffer.byteLength;\n",
" progress.value = downloaded;\n",
" }\n",
" }\n",
" }\n",
" const blob = new Blob(buffers, {type: 'application/binary'});\n",
" const a = document.createElement('a');\n",
" a.href = window.URL.createObjectURL(blob);\n",
" a.download = filename;\n",
" div.appendChild(a);\n",
" a.click();\n",
" div.remove();\n",
" }\n",
" "
],
"text/plain": [
"<IPython.core.display.Javascript object>"
]
},
"metadata": {
"tags": []
}
},
{
"output_type": "display_data",
"data": {
"application/javascript": [
"download(\"download_31d6bef7-3816-4c68-aa21-43f3af432f30\", \"500_prompts.json\", 2233)"
],
"text/plain": [
"<IPython.core.display.Javascript object>"
]
},
"metadata": {
"tags": []
}
},
{
"output_type": "display_data",
"data": {
"application/javascript": [
"\n",
" async function download(id, filename, size) {\n",
" if (!google.colab.kernel.accessAllowed) {\n",
" return;\n",
" }\n",
" const div = document.createElement('div');\n",
" const label = document.createElement('label');\n",
" label.textContent = `Downloading \"${filename}\": `;\n",
" div.appendChild(label);\n",
" const progress = document.createElement('progress');\n",
" progress.max = size;\n",
" div.appendChild(progress);\n",
" document.body.appendChild(div);\n",
"\n",
" const buffers = [];\n",
" let downloaded = 0;\n",
"\n",
" const channel = await google.colab.kernel.comms.open(id);\n",
" // Send a message to notify the kernel that we're ready.\n",
" channel.send({})\n",
"\n",
" for await (const message of channel.messages) {\n",
" // Send a message to notify the kernel that we're ready.\n",
" channel.send({})\n",
" if (message.buffers) {\n",
" for (const buffer of message.buffers) {\n",
" buffers.push(buffer);\n",
" downloaded += buffer.byteLength;\n",
" progress.value = downloaded;\n",
" }\n",
" }\n",
" }\n",
" const blob = new Blob(buffers, {type: 'application/binary'});\n",
" const a = document.createElement('a');\n",
" a.href = window.URL.createObjectURL(blob);\n",
" a.download = filename;\n",
" div.appendChild(a);\n",
" a.click();\n",
" div.remove();\n",
" }\n",
" "
],
"text/plain": [
"<IPython.core.display.Javascript object>"
]
},
"metadata": {
"tags": []
}
},
{
"output_type": "display_data",
"data": {
"application/javascript": [
"download(\"download_6bc03e27-dbe7-4f55-9809-058d88388cf3\", \"key.json\", 53)"
],
"text/plain": [
"<IPython.core.display.Javascript object>"
]
},
"metadata": {
"tags": []
}
}
]
},
{
"cell_type": "code",
"metadata": {
"id": "XGn8CstEtrAF",
"colab_type": "code",
"colab": {
"base_uri": "https://localhost:8080/",
"height": 295
},
"outputId": "1f9ab1b7-e848-4762-b429-c937fe599637"
},
"source": [
"scores = pd.DataFrame()\n",
"for i in range(1, 11):\n",
" \n",
" tmp = pd.DataFrame(results[i]).T\n",
" tmp[\"same_simple\"] = (tmp[\"actual\"] == tmp[\"simple_result\"].astype(int))\n",
" scores.at[i, \"Not Repeated\"] = 100*tmp[\"same_simple\"].sum()/len(tmp)\n",
"\n",
" tmp[\"same_repeat\"] = (tmp[\"actual\"] == tmp[\"repeat_result\"].astype(int))\n",
" scores.at[i, \"Repeated\"] = 100*tmp[\"same_repeat\"].sum()/len(tmp)\n",
" \n",
"\n",
"\n",
"import matplotlib.pyplot as plt\n",
"\n",
"fig, ax = plt.subplots(facecolor=\"w\")\n",
"scores.plot(title=\"% correct of counting space separated 0's and 1's with 6 examples (n=500 per length)\", ax=ax, ylim=0)\n",
"ax.set_ylabel(\"% Correct\")\n",
"ax.set_xlabel(\"Number of digits\")\n",
"plt.savefig(\"../count01.jpg\")"
],
"execution_count": 19,
"outputs": [
{
"output_type": "display_data",
"data": {
"image/png": "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rkQIwalTpzA3N1dZ/QxN0srVEn1dbU7cjlNvINra0ONHyEqGPyerNxZJqgBdXV1GjBjBjz/+WGxeeHg4r7zyCl5eXnTs2JH79+9z4sQJduzYwWeffUaLFi0ICwsrtewGDRpgZGREQkICADNnzsTX1xcvLy+mTJmi3EajRo0YOHAgjRs3Jjg4mPT0dAD++ecfAgMDadWqFV26dOHBgwcALF68GF9fX5o3b85bb71Fenp6iXGFhYXRtWtXWrVqRdu2bblx4wYAd+/exc/Pj2bNmjFp0qRK/TylqiefaFRA//79OXz4MLGxsTg7O/P114m4txMAACAASURBVF8zceJE+vTpw5IlS3B1dWXjxo0AvPbaa+zZs4f69etjZGTEsmXL1Bx91TDU06FVHUtOhKk50QCwbwJ+H8Dxn6DFAHALUHdEUjX09c5rhEQnV2qZTZzMmNLTs8zl3n//fby8vPi///u/ItM//PBDhg4dytChQ1m6dCljx45l27ZtBAUF0aNHD4KDg59a7vnz52nQoAF2dnbs37+f0NBQzpw5gxCCoKAgjh49Sp06dbh58yZLliwhICCAd955h19++YVx48bx4Ycfsn37dmxtbdmwYQNffvklS5cupVevXrz33nsATJo0iSVLlvDhhx8Wi6tjx44sWLCABg0acPr0acaMGcNff/3FuHHjGD16NEOGDOHnn3+u4KcraQqZaFTAunXrSpx+8ODBYtO0tLRq7IXi727N7D9vkZCWjaWxvnqDCZwA17bAro9h1N+gq+Z4JOkZmJmZMWTIEObNm0etWrWU00+ePMmWLVsAGDx4cLFEpDQ//vgjy5Yt49atW+zcuROA/fv3s3//flq2bAlAamoqoaGh1KlTBxcXFwICFAn6oEGDmDdvHl27duXq1au8+uqrAOTl5Smf1l69epVJkyaRmJhIamoqXbp0KRZDamoqJ06coHfv3sppWVlZABw/fpzff/9duV8TJkwo/4claRyZaEgq41/fmtl/wqk7cXRrpubXRfpG8NosWNsHTs6HtuPVG49U7ZTnyYMqffTRR3h7e/P2228/d1kFdTR27NjB8OHDCQsLQwjB559/zsiRI4ssGx4eXqxyu5aWFkIIPD09OXnyZLHyhw0bxrZt22jevDnLly9XNv0vLD8/HwsLCy5evFhijLL56otD1tGQVMbL2QIjfR3NeH0C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\n",
"text/plain": [
"<Figure size 432x288 with 1 Axes>"
]
},
"metadata": {
"tags": []
}
}
]
},
{
"cell_type": "code",
"metadata": {
"id": "vL-8VAwQtzhM",
"colab_type": "code",
"colab": {}
},
"source": [
""
],
"execution_count": null,
"outputs": []
}
]
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment