From b149fd72141348139f8613c79ee30ccf64c934e9 Mon Sep 17 00:00:00 2001 From: reibs Date: Thu, 20 Jun 2024 15:23:27 -0700 Subject: [PATCH] added shadow to banner --- docs/images/external/logo/banner-badge.png | Bin 33596 -> 75368 bytes docs/images/external/logo/banner-badge.svg | 32 ++- .../multion/Autonomous_web_browsing.ipynb | 145 +++++++++++-- examples/multion/Sample_browsing_agent.ipynb | 48 ++++- examples/multion/Untitled.ipynb | 201 ++++++++++++++++++ 5 files changed, 391 insertions(+), 35 deletions(-) create mode 100644 examples/multion/Untitled.ipynb diff --git a/docs/images/external/logo/banner-badge.png b/docs/images/external/logo/banner-badge.png index 8324d3c389d70faca6dde924b14bbbd5b85ba393..7dd6fb9c3e78e842ec2e75bbde2fb3616a2987d1 100644 GIT binary patch literal 75368 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 fuffnTbP0l+XkKf9+t= literal 33596 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 diff --git a/docs/images/external/logo/banner-badge.svg b/docs/images/external/logo/banner-badge.svg index 9ae93e194..43b3d24ae 100644 --- a/docs/images/external/logo/banner-badge.svg +++ b/docs/images/external/logo/banner-badge.svg @@ -1,25 +1,37 @@ - - - + + + + + + + + + - - - - - + + + + + + + + + + + - + - + diff --git a/examples/multion/Autonomous_web_browsing.ipynb b/examples/multion/Autonomous_web_browsing.ipynb index 58cc6f969..e0d14f3fb 100644 --- a/examples/multion/Autonomous_web_browsing.ipynb +++ b/examples/multion/Autonomous_web_browsing.ipynb @@ -17,14 +17,65 @@ }, { "cell_type": "code", - "execution_count": null, - "metadata": {}, - "outputs": [], + "execution_count": 9, + "metadata": { + "scrolled": true + }, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Note: you may need to restart the kernel to use updated packages.\n", + "\u001b[33mWARNING: Skipping /Users/reibs/anaconda3/lib/python3.11/site-packages/pydantic_core-2.14.6.dist-info due to invalid metadata entry 'name'\u001b[0m\u001b[33m\n", + "\u001b[0m\u001b[33mWARNING: Skipping /Users/reibs/anaconda3/lib/python3.11/site-packages/pydantic_core-2.14.6.dist-info due to invalid metadata entry 'name'\u001b[0m\u001b[33m\n", + "\u001b[0mObtaining file:///Users/reibs/Projects/multion-python\n", + " Installing build dependencies ... \u001b[?25ldone\n", + "\u001b[?25h Checking if build backend supports build_editable ... \u001b[?25ldone\n", + "\u001b[?25h Getting requirements to build editable ... \u001b[?25ldone\n", + "\u001b[?25h Preparing editable metadata (pyproject.toml) ... \u001b[?25ldone\n", + "\u001b[33m WARNING: Skipping /Users/reibs/anaconda3/lib/python3.11/site-packages/pydantic_core-2.14.6.dist-info due to invalid metadata entry 'name'\u001b[0m\u001b[33m\n", + "\u001b[0m\u001b[?25hRequirement already satisfied: agentops<0.3.0,>=0.2.3 in /Users/reibs/anaconda3/lib/python3.11/site-packages (from multion==1.3.1) (0.2.3)\n", + "Requirement already satisfied: httpx>=0.21.2 in /Users/reibs/anaconda3/lib/python3.11/site-packages (from multion==1.3.1) (0.27.0)\n", + "Requirement already satisfied: httpx-sse==0.4.0 in /Users/reibs/anaconda3/lib/python3.11/site-packages (from multion==1.3.1) (0.4.0)\n", + "Requirement already satisfied: pydantic>=1.9.2 in /Users/reibs/anaconda3/lib/python3.11/site-packages (from multion==1.3.1) (2.7.1)\n", + "Requirement already satisfied: typing_extensions>=4.0.0 in /Users/reibs/anaconda3/lib/python3.11/site-packages (from multion==1.3.1) (4.11.0)\n", + "Requirement already satisfied: requests==2.31.0 in /Users/reibs/anaconda3/lib/python3.11/site-packages (from agentops<0.3.0,>=0.2.3->multion==1.3.1) (2.31.0)\n", + "Requirement already satisfied: psutil==5.9.8 in /Users/reibs/anaconda3/lib/python3.11/site-packages (from agentops<0.3.0,>=0.2.3->multion==1.3.1) (5.9.8)\n", + "Requirement already satisfied: packaging==23.2 in /Users/reibs/anaconda3/lib/python3.11/site-packages (from agentops<0.3.0,>=0.2.3->multion==1.3.1) (23.2)\n", + "Requirement already satisfied: termcolor==2.4.0 in /Users/reibs/anaconda3/lib/python3.11/site-packages (from agentops<0.3.0,>=0.2.3->multion==1.3.1) (2.4.0)\n", + "Requirement already satisfied: charset-normalizer<4,>=2 in /Users/reibs/anaconda3/lib/python3.11/site-packages (from requests==2.31.0->agentops<0.3.0,>=0.2.3->multion==1.3.1) (2.0.4)\n", + "Requirement already satisfied: idna<4,>=2.5 in /Users/reibs/anaconda3/lib/python3.11/site-packages (from requests==2.31.0->agentops<0.3.0,>=0.2.3->multion==1.3.1) (2.10)\n", + "Requirement already satisfied: urllib3<3,>=1.21.1 in /Users/reibs/anaconda3/lib/python3.11/site-packages (from requests==2.31.0->agentops<0.3.0,>=0.2.3->multion==1.3.1) (2.2.1)\n", + "Requirement already satisfied: certifi>=2017.4.17 in /Users/reibs/anaconda3/lib/python3.11/site-packages (from requests==2.31.0->agentops<0.3.0,>=0.2.3->multion==1.3.1) (2022.12.7)\n", + "Requirement already satisfied: anyio in /Users/reibs/anaconda3/lib/python3.11/site-packages (from httpx>=0.21.2->multion==1.3.1) (4.2.0)\n", + "Requirement already satisfied: httpcore==1.* in /Users/reibs/anaconda3/lib/python3.11/site-packages (from httpx>=0.21.2->multion==1.3.1) (1.0.4)\n", + "Requirement already satisfied: sniffio in /Users/reibs/anaconda3/lib/python3.11/site-packages (from httpx>=0.21.2->multion==1.3.1) (1.3.1)\n", + "Requirement already satisfied: h11<0.15,>=0.13 in /Users/reibs/anaconda3/lib/python3.11/site-packages (from httpcore==1.*->httpx>=0.21.2->multion==1.3.1) (0.14.0)\n", + "Requirement already satisfied: annotated-types>=0.4.0 in /Users/reibs/anaconda3/lib/python3.11/site-packages (from pydantic>=1.9.2->multion==1.3.1) (0.6.0)\n", + "Requirement already satisfied: pydantic-core==2.18.2 in /Users/reibs/anaconda3/lib/python3.11/site-packages (from pydantic>=1.9.2->multion==1.3.1) (2.18.2)\n", + "Building wheels for collected packages: multion\n", + " Building editable for multion (pyproject.toml) ... \u001b[?25ldone\n", + "\u001b[?25h Created wheel for multion: filename=multion-1.3.1-py3-none-any.whl size=2888 sha256=705a80daffe9d39b2b108258ed2afe7415ff97b0518fc724b54c68feddecaa64\n", + " Stored in directory: /private/var/folders/3v/sx9ds7pn6r549nzgvpcjhsw00000gn/T/pip-ephem-wheel-cache-gum23cmv/wheels/b6/bd/dc/6e96e52cdfa012ed615438c3981e30b812df904743d1e270c0\n", + "Successfully built multion\n", + "\u001b[33mWARNING: Skipping /Users/reibs/anaconda3/lib/python3.11/site-packages/pydantic_core-2.14.6.dist-info due to invalid metadata entry 'name'\u001b[0m\u001b[33m\n", + "\u001b[0mInstalling collected packages: multion\n", + "\u001b[33mWARNING: Skipping /Users/reibs/anaconda3/lib/python3.11/site-packages/pydantic_core-2.14.6.dist-info due to invalid metadata entry 'name'\u001b[0m\u001b[33m\n", + "\u001b[0mSuccessfully installed multion-1.3.1\n", + "\u001b[33mWARNING: Skipping /Users/reibs/anaconda3/lib/python3.11/site-packages/pydantic_core-2.14.6.dist-info due to invalid metadata entry 'name'\u001b[0m\u001b[33m\n", + "\u001b[0m\u001b[33mWARNING: Skipping /Users/reibs/anaconda3/lib/python3.11/site-packages/pydantic_core-2.14.6.dist-info due to invalid metadata entry 'name'\u001b[0m\u001b[33m\n", + "\u001b[0m\u001b[33mWARNING: Skipping /Users/reibs/anaconda3/lib/python3.11/site-packages/pydantic_core-2.14.6.dist-info due to invalid metadata entry 'name'\u001b[0m\u001b[33m\n", + "\u001b[0mNote: you may need to restart the kernel to use updated packages.\n" + ] + } + ], "source": [ "# Install dependencies\n", - "%pip install multion\n", - "%pip install agentops\n", - "%pip install openai" + "%pip uninstall multion -y -qqq\n", + "%pip install -e /Users/reibs/Projects/multion-python/\n", + "# %pip install agentops\n", + "# %pip install openai" ] }, { @@ -38,21 +89,40 @@ }, { "cell_type": "code", - "execution_count": null, + "execution_count": 1, "metadata": {}, "outputs": [], "source": [ "# Set your API keys\n", "import os\n", - "os.environ[\"MULTION_API_KEY\"] = \"multion_key\"\n", - "os.environ[\"AGENTOPS_API_KEY\"] = \"agentops_key\"" + "# os.environ[\"MULTION_API_KEY\"] = \"multion_key\"\n", + "os.environ[\"AGENTOPS_API_KEY\"] = \"a640373b-30ae-4655-a1f3-5caa882a8721\"" ] }, { "cell_type": "code", - "execution_count": null, + "execution_count": 2, "metadata": {}, - "outputs": [], + "outputs": [ + { + "name": "stderr", + "output_type": "stream", + "text": [ + "🖇 AgentOps: \u001b[34m\u001b[34mSession Replay: https://app.agentops.ai/drilldown?session_id=3fdb6c69-21aa-49df-864c-777a8fb4ff07\u001b[0m\u001b[0m\n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "The three things you get with AgentOps are:\n", + "1. Three Lines of Code.\n", + "2. Unlimited Testing.\n", + "3. Install in seconds. Save weeks.\n", + "\n" + ] + } + ], "source": [ "from multion.client import MultiOn\n", "from multion.core.request_options import RequestOptions\n", @@ -89,11 +159,22 @@ }, { "cell_type": "code", - "execution_count": null, + "execution_count": 3, "metadata": {}, - "outputs": [], + "outputs": [ + { + "data": { + "text/plain": [ + "UUID('3fdb6c69-21aa-49df-864c-777a8fb4ff07')" + ] + }, + "execution_count": 3, + "metadata": {}, + "output_type": "execute_result" + } + ], "source": [ - "agentops.init(auto_start_session=False, tags=['MultiOn browse example'])" + "agentops.init(auto_start_session=False, tags=['MultiOn brtreaowse example'])" ] }, { @@ -105,9 +186,41 @@ }, { "cell_type": "code", - "execution_count": null, + "execution_count": 4, "metadata": {}, - "outputs": [], + "outputs": [ + { + "name": "stderr", + "output_type": "stream", + "text": [ + "🖇 AgentOps: Cannot start session - session already started\n", + "🖇 AgentOps: Error: Expecting value: line 1 column 1 (char 0)\n" + ] + }, + { + "ename": "JSONDecodeError", + "evalue": "Expecting value: line 1 column 1 (char 0)", + "output_type": "error", + "traceback": [ + "\u001b[0;31m---------------------------------------------------------------------------\u001b[0m", + "\u001b[0;31mJSONDecodeError\u001b[0m Traceback (most recent call last)", + "Cell \u001b[0;32mIn[4], line 10\u001b[0m\n\u001b[1;32m 5\u001b[0m cmd \u001b[38;5;241m=\u001b[39m \u001b[38;5;124m\"\u001b[39m\u001b[38;5;124mwhat three things do i get with agentops\u001b[39m\u001b[38;5;124m\"\u001b[39m\n\u001b[1;32m 6\u001b[0m request_options \u001b[38;5;241m=\u001b[39m RequestOptions(\n\u001b[1;32m 7\u001b[0m timeout_in_seconds\u001b[38;5;241m=\u001b[39m\u001b[38;5;241m60\u001b[39m, max_retries\u001b[38;5;241m=\u001b[39m\u001b[38;5;241m4\u001b[39m, additional_headers\u001b[38;5;241m=\u001b[39m{\u001b[38;5;124m\"\u001b[39m\u001b[38;5;124mtest\u001b[39m\u001b[38;5;124m\"\u001b[39m: \u001b[38;5;124m\"\u001b[39m\u001b[38;5;124ming\u001b[39m\u001b[38;5;124m\"\u001b[39m}\n\u001b[1;32m 8\u001b[0m )\n\u001b[0;32m---> 10\u001b[0m browse_response \u001b[38;5;241m=\u001b[39m multion\u001b[38;5;241m.\u001b[39mbrowse(\n\u001b[1;32m 11\u001b[0m cmd\u001b[38;5;241m=\u001b[39m\u001b[38;5;124m\"\u001b[39m\u001b[38;5;124mwhat three things do i get with agentops\u001b[39m\u001b[38;5;124m\"\u001b[39m,\n\u001b[1;32m 12\u001b[0m url\u001b[38;5;241m=\u001b[39m\u001b[38;5;124m\"\u001b[39m\u001b[38;5;124mhttps://www.agentops.ai/\u001b[39m\u001b[38;5;124m\"\u001b[39m,\n\u001b[1;32m 13\u001b[0m max_steps\u001b[38;5;241m=\u001b[39m\u001b[38;5;241m4\u001b[39m,\n\u001b[1;32m 14\u001b[0m include_screenshot\u001b[38;5;241m=\u001b[39m\u001b[38;5;28;01mTrue\u001b[39;00m,\n\u001b[1;32m 15\u001b[0m request_options\u001b[38;5;241m=\u001b[39mrequest_options,\n\u001b[1;32m 16\u001b[0m )\n\u001b[1;32m 18\u001b[0m \u001b[38;5;28mprint\u001b[39m(browse_response\u001b[38;5;241m.\u001b[39mmessage)\n", + "File \u001b[0;32m~/Projects/multion-python/src/multion/client.py:83\u001b[0m, in \u001b[0;36mMultiOn.browse\u001b[0;34m(self, *args, **kwargs)\u001b[0m\n\u001b[1;32m 80\u001b[0m \u001b[38;5;129m@agentops\u001b[39m\u001b[38;5;241m.\u001b[39mrecord_function(event_name\u001b[38;5;241m=\u001b[39m\u001b[38;5;124m\"\u001b[39m\u001b[38;5;124mbrowse\u001b[39m\u001b[38;5;124m\"\u001b[39m)\n\u001b[1;32m 81\u001b[0m \u001b[38;5;28;01mdef\u001b[39;00m \u001b[38;5;21mwrapped_browse\u001b[39m(\u001b[38;5;241m*\u001b[39margs, \u001b[38;5;241m*\u001b[39m\u001b[38;5;241m*\u001b[39mkwargs):\n\u001b[1;32m 82\u001b[0m \u001b[38;5;28;01mreturn\u001b[39;00m \u001b[38;5;28mself\u001b[39m\u001b[38;5;241m.\u001b[39m_browse(\u001b[38;5;241m*\u001b[39margs, \u001b[38;5;241m*\u001b[39m\u001b[38;5;241m*\u001b[39mkwargs)\n\u001b[0;32m---> 83\u001b[0m \u001b[38;5;28;01mreturn\u001b[39;00m wrapped_browse(\u001b[38;5;241m*\u001b[39margs, \u001b[38;5;241m*\u001b[39m\u001b[38;5;241m*\u001b[39mkwargs)\n\u001b[1;32m 84\u001b[0m \u001b[38;5;28;01mreturn\u001b[39;00m \u001b[38;5;28mself\u001b[39m\u001b[38;5;241m.\u001b[39m_browse(\u001b[38;5;241m*\u001b[39margs, \u001b[38;5;241m*\u001b[39m\u001b[38;5;241m*\u001b[39mkwargs)\n", + "File \u001b[0;32m~/anaconda3/lib/python3.11/site-packages/agentops/decorators.py:31\u001b[0m, in \u001b[0;36mrecord_function..decorator..sync_wrapper\u001b[0;34m(*args, **kwargs)\u001b[0m\n\u001b[1;32m 29\u001b[0m \u001b[38;5;129m@functools\u001b[39m\u001b[38;5;241m.\u001b[39mwraps(func)\n\u001b[1;32m 30\u001b[0m \u001b[38;5;28;01mdef\u001b[39;00m \u001b[38;5;21msync_wrapper\u001b[39m(\u001b[38;5;241m*\u001b[39margs, \u001b[38;5;241m*\u001b[39m\u001b[38;5;241m*\u001b[39mkwargs):\n\u001b[0;32m---> 31\u001b[0m \u001b[38;5;28;01mreturn\u001b[39;00m Client()\u001b[38;5;241m.\u001b[39m_record_event_sync(func, event_name, \u001b[38;5;241m*\u001b[39margs, \u001b[38;5;241m*\u001b[39m\u001b[38;5;241m*\u001b[39mkwargs)\n", + "File \u001b[0;32m~/anaconda3/lib/python3.11/site-packages/agentops/meta_client.py:61\u001b[0m, in \u001b[0;36mhandle_exceptions..wrapper\u001b[0;34m(self, *args, **kwargs)\u001b[0m\n\u001b[1;32m 57\u001b[0m \u001b[38;5;28;01mif\u001b[39;00m config \u001b[38;5;129;01mis\u001b[39;00m \u001b[38;5;129;01mnot\u001b[39;00m \u001b[38;5;28;01mNone\u001b[39;00m:\n\u001b[1;32m 58\u001b[0m \u001b[38;5;28mtype\u001b[39m(\u001b[38;5;28mself\u001b[39m)\u001b[38;5;241m.\u001b[39msend_exception_to_server(\n\u001b[1;32m 59\u001b[0m e, \u001b[38;5;28mself\u001b[39m\u001b[38;5;241m.\u001b[39mconfig\u001b[38;5;241m.\u001b[39m_api_key, \u001b[38;5;28mself\u001b[39m\u001b[38;5;241m.\u001b[39m_session\n\u001b[1;32m 60\u001b[0m )\n\u001b[0;32m---> 61\u001b[0m \u001b[38;5;28;01mraise\u001b[39;00m e\n", + "File \u001b[0;32m~/anaconda3/lib/python3.11/site-packages/agentops/meta_client.py:53\u001b[0m, in \u001b[0;36mhandle_exceptions..wrapper\u001b[0;34m(self, *args, **kwargs)\u001b[0m\n\u001b[1;32m 51\u001b[0m \u001b[38;5;28;01mdef\u001b[39;00m \u001b[38;5;21mwrapper\u001b[39m(\u001b[38;5;28mself\u001b[39m, \u001b[38;5;241m*\u001b[39margs, \u001b[38;5;241m*\u001b[39m\u001b[38;5;241m*\u001b[39mkwargs):\n\u001b[1;32m 52\u001b[0m \u001b[38;5;28;01mtry\u001b[39;00m:\n\u001b[0;32m---> 53\u001b[0m \u001b[38;5;28;01mreturn\u001b[39;00m method(\u001b[38;5;28mself\u001b[39m, \u001b[38;5;241m*\u001b[39margs, \u001b[38;5;241m*\u001b[39m\u001b[38;5;241m*\u001b[39mkwargs)\n\u001b[1;32m 54\u001b[0m \u001b[38;5;28;01mexcept\u001b[39;00m \u001b[38;5;167;01mException\u001b[39;00m \u001b[38;5;28;01mas\u001b[39;00m e:\n\u001b[1;32m 55\u001b[0m logger\u001b[38;5;241m.\u001b[39mwarning(\u001b[38;5;124mf\u001b[39m\u001b[38;5;124m\"\u001b[39m\u001b[38;5;124mError: \u001b[39m\u001b[38;5;132;01m{\u001b[39;00me\u001b[38;5;132;01m}\u001b[39;00m\u001b[38;5;124m\"\u001b[39m)\n", + "File \u001b[0;32m~/anaconda3/lib/python3.11/site-packages/agentops/client.py:257\u001b[0m, in \u001b[0;36mClient._record_event_sync\u001b[0;34m(self, func, event_name, *args, **kwargs)\u001b[0m\n\u001b[1;32m 249\u001b[0m event \u001b[38;5;241m=\u001b[39m ActionEvent(\n\u001b[1;32m 250\u001b[0m params\u001b[38;5;241m=\u001b[39marg_values,\n\u001b[1;32m 251\u001b[0m init_timestamp\u001b[38;5;241m=\u001b[39minit_time,\n\u001b[1;32m 252\u001b[0m agent_id\u001b[38;5;241m=\u001b[39mcheck_call_stack_for_agent_id(),\n\u001b[1;32m 253\u001b[0m action_type\u001b[38;5;241m=\u001b[39mevent_name,\n\u001b[1;32m 254\u001b[0m )\n\u001b[1;32m 256\u001b[0m \u001b[38;5;28;01mtry\u001b[39;00m:\n\u001b[0;32m--> 257\u001b[0m returns \u001b[38;5;241m=\u001b[39m func(\u001b[38;5;241m*\u001b[39margs, \u001b[38;5;241m*\u001b[39m\u001b[38;5;241m*\u001b[39mkwargs)\n\u001b[1;32m 259\u001b[0m \u001b[38;5;66;03m# If the function returns multiple values, record them all in the same event\u001b[39;00m\n\u001b[1;32m 260\u001b[0m \u001b[38;5;28;01mif\u001b[39;00m \u001b[38;5;28misinstance\u001b[39m(returns, \u001b[38;5;28mtuple\u001b[39m):\n", + "File \u001b[0;32m~/Projects/multion-python/src/multion/client.py:82\u001b[0m, in \u001b[0;36mMultiOn.browse..wrapped_browse\u001b[0;34m(*args, **kwargs)\u001b[0m\n\u001b[1;32m 80\u001b[0m \u001b[38;5;129m@agentops\u001b[39m\u001b[38;5;241m.\u001b[39mrecord_function(event_name\u001b[38;5;241m=\u001b[39m\u001b[38;5;124m\"\u001b[39m\u001b[38;5;124mbrowse\u001b[39m\u001b[38;5;124m\"\u001b[39m)\n\u001b[1;32m 81\u001b[0m \u001b[38;5;28;01mdef\u001b[39;00m \u001b[38;5;21mwrapped_browse\u001b[39m(\u001b[38;5;241m*\u001b[39margs, \u001b[38;5;241m*\u001b[39m\u001b[38;5;241m*\u001b[39mkwargs):\n\u001b[0;32m---> 82\u001b[0m \u001b[38;5;28;01mreturn\u001b[39;00m \u001b[38;5;28mself\u001b[39m\u001b[38;5;241m.\u001b[39m_browse(\u001b[38;5;241m*\u001b[39margs, \u001b[38;5;241m*\u001b[39m\u001b[38;5;241m*\u001b[39mkwargs)\n", + "File \u001b[0;32m~/Projects/multion-python/src/multion/client.py:70\u001b[0m, in \u001b[0;36mMultiOn._browse\u001b[0;34m(self, *args, **kwargs)\u001b[0m\n\u001b[1;32m 68\u001b[0m \u001b[38;5;129m@wraps_function\u001b[39m(BaseMultiOn\u001b[38;5;241m.\u001b[39mbrowse) \u001b[38;5;66;03m# type: ignore\u001b[39;00m\n\u001b[1;32m 69\u001b[0m \u001b[38;5;28;01mdef\u001b[39;00m \u001b[38;5;21m_browse\u001b[39m(\u001b[38;5;28mself\u001b[39m, \u001b[38;5;241m*\u001b[39margs, \u001b[38;5;241m*\u001b[39m\u001b[38;5;241m*\u001b[39mkwargs) \u001b[38;5;241m-\u001b[39m\u001b[38;5;241m>\u001b[39m BrowseOutput:\n\u001b[0;32m---> 70\u001b[0m \u001b[38;5;28;01mreturn\u001b[39;00m \u001b[38;5;28msuper\u001b[39m()\u001b[38;5;241m.\u001b[39mbrowse(\u001b[38;5;241m*\u001b[39margs, \u001b[38;5;241m*\u001b[39m\u001b[38;5;241m*\u001b[39mkwargs)\n", + "File \u001b[0;32m~/Projects/multion-python/src/multion/base_client.py:201\u001b[0m, in \u001b[0;36mBaseMultiOn.browse\u001b[0;34m(self, cmd, url, local, session_id, max_steps, include_screenshot, temperature, mode, use_proxy, request_options)\u001b[0m\n\u001b[1;32m 196\u001b[0m \u001b[38;5;28;01mraise\u001b[39;00m UnprocessableEntityError(\n\u001b[1;32m 197\u001b[0m typing\u001b[38;5;241m.\u001b[39mcast(HttpValidationError, construct_type(type_\u001b[38;5;241m=\u001b[39mHttpValidationError, object_\u001b[38;5;241m=\u001b[39m_response\u001b[38;5;241m.\u001b[39mjson())) \u001b[38;5;66;03m# type: ignore\u001b[39;00m\n\u001b[1;32m 198\u001b[0m )\n\u001b[1;32m 199\u001b[0m \u001b[38;5;28;01mif\u001b[39;00m _response\u001b[38;5;241m.\u001b[39mstatus_code \u001b[38;5;241m==\u001b[39m \u001b[38;5;241m500\u001b[39m:\n\u001b[1;32m 200\u001b[0m \u001b[38;5;28;01mraise\u001b[39;00m InternalServerError(\n\u001b[0;32m--> 201\u001b[0m typing\u001b[38;5;241m.\u001b[39mcast(InternalServerErrorResponse, construct_type(type_\u001b[38;5;241m=\u001b[39mInternalServerErrorResponse, object_\u001b[38;5;241m=\u001b[39m_response\u001b[38;5;241m.\u001b[39mjson())) \u001b[38;5;66;03m# type: ignore\u001b[39;00m\n\u001b[1;32m 202\u001b[0m )\n\u001b[1;32m 203\u001b[0m \u001b[38;5;28;01mtry\u001b[39;00m:\n\u001b[1;32m 204\u001b[0m _response_json \u001b[38;5;241m=\u001b[39m _response\u001b[38;5;241m.\u001b[39mjson()\n", + "File \u001b[0;32m~/anaconda3/lib/python3.11/site-packages/httpx/_models.py:764\u001b[0m, in \u001b[0;36mResponse.json\u001b[0;34m(self, **kwargs)\u001b[0m\n\u001b[1;32m 763\u001b[0m \u001b[38;5;28;01mdef\u001b[39;00m \u001b[38;5;21mjson\u001b[39m(\u001b[38;5;28mself\u001b[39m, \u001b[38;5;241m*\u001b[39m\u001b[38;5;241m*\u001b[39mkwargs: typing\u001b[38;5;241m.\u001b[39mAny) \u001b[38;5;241m-\u001b[39m\u001b[38;5;241m>\u001b[39m typing\u001b[38;5;241m.\u001b[39mAny:\n\u001b[0;32m--> 764\u001b[0m \u001b[38;5;28;01mreturn\u001b[39;00m jsonlib\u001b[38;5;241m.\u001b[39mloads(\u001b[38;5;28mself\u001b[39m\u001b[38;5;241m.\u001b[39mcontent, \u001b[38;5;241m*\u001b[39m\u001b[38;5;241m*\u001b[39mkwargs)\n", + "File \u001b[0;32m~/anaconda3/lib/python3.11/json/__init__.py:346\u001b[0m, in \u001b[0;36mloads\u001b[0;34m(s, cls, object_hook, parse_float, parse_int, parse_constant, object_pairs_hook, **kw)\u001b[0m\n\u001b[1;32m 341\u001b[0m s \u001b[38;5;241m=\u001b[39m s\u001b[38;5;241m.\u001b[39mdecode(detect_encoding(s), \u001b[38;5;124m'\u001b[39m\u001b[38;5;124msurrogatepass\u001b[39m\u001b[38;5;124m'\u001b[39m)\n\u001b[1;32m 343\u001b[0m \u001b[38;5;28;01mif\u001b[39;00m (\u001b[38;5;28mcls\u001b[39m \u001b[38;5;129;01mis\u001b[39;00m \u001b[38;5;28;01mNone\u001b[39;00m \u001b[38;5;129;01mand\u001b[39;00m object_hook \u001b[38;5;129;01mis\u001b[39;00m \u001b[38;5;28;01mNone\u001b[39;00m \u001b[38;5;129;01mand\u001b[39;00m\n\u001b[1;32m 344\u001b[0m parse_int \u001b[38;5;129;01mis\u001b[39;00m \u001b[38;5;28;01mNone\u001b[39;00m \u001b[38;5;129;01mand\u001b[39;00m parse_float \u001b[38;5;129;01mis\u001b[39;00m \u001b[38;5;28;01mNone\u001b[39;00m \u001b[38;5;129;01mand\u001b[39;00m\n\u001b[1;32m 345\u001b[0m parse_constant \u001b[38;5;129;01mis\u001b[39;00m \u001b[38;5;28;01mNone\u001b[39;00m \u001b[38;5;129;01mand\u001b[39;00m object_pairs_hook \u001b[38;5;129;01mis\u001b[39;00m \u001b[38;5;28;01mNone\u001b[39;00m \u001b[38;5;129;01mand\u001b[39;00m \u001b[38;5;129;01mnot\u001b[39;00m kw):\n\u001b[0;32m--> 346\u001b[0m \u001b[38;5;28;01mreturn\u001b[39;00m _default_decoder\u001b[38;5;241m.\u001b[39mdecode(s)\n\u001b[1;32m 347\u001b[0m \u001b[38;5;28;01mif\u001b[39;00m \u001b[38;5;28mcls\u001b[39m \u001b[38;5;129;01mis\u001b[39;00m \u001b[38;5;28;01mNone\u001b[39;00m:\n\u001b[1;32m 348\u001b[0m \u001b[38;5;28mcls\u001b[39m \u001b[38;5;241m=\u001b[39m JSONDecoder\n", + "File \u001b[0;32m~/anaconda3/lib/python3.11/json/decoder.py:337\u001b[0m, in \u001b[0;36mJSONDecoder.decode\u001b[0;34m(self, s, _w)\u001b[0m\n\u001b[1;32m 332\u001b[0m \u001b[38;5;28;01mdef\u001b[39;00m \u001b[38;5;21mdecode\u001b[39m(\u001b[38;5;28mself\u001b[39m, s, _w\u001b[38;5;241m=\u001b[39mWHITESPACE\u001b[38;5;241m.\u001b[39mmatch):\n\u001b[1;32m 333\u001b[0m \u001b[38;5;250m \u001b[39m\u001b[38;5;124;03m\"\"\"Return the Python representation of ``s`` (a ``str`` instance\u001b[39;00m\n\u001b[1;32m 334\u001b[0m \u001b[38;5;124;03m containing a JSON document).\u001b[39;00m\n\u001b[1;32m 335\u001b[0m \n\u001b[1;32m 336\u001b[0m \u001b[38;5;124;03m \"\"\"\u001b[39;00m\n\u001b[0;32m--> 337\u001b[0m obj, end \u001b[38;5;241m=\u001b[39m \u001b[38;5;28mself\u001b[39m\u001b[38;5;241m.\u001b[39mraw_decode(s, idx\u001b[38;5;241m=\u001b[39m_w(s, \u001b[38;5;241m0\u001b[39m)\u001b[38;5;241m.\u001b[39mend())\n\u001b[1;32m 338\u001b[0m end \u001b[38;5;241m=\u001b[39m _w(s, end)\u001b[38;5;241m.\u001b[39mend()\n\u001b[1;32m 339\u001b[0m \u001b[38;5;28;01mif\u001b[39;00m end \u001b[38;5;241m!=\u001b[39m \u001b[38;5;28mlen\u001b[39m(s):\n", + "File \u001b[0;32m~/anaconda3/lib/python3.11/json/decoder.py:355\u001b[0m, in \u001b[0;36mJSONDecoder.raw_decode\u001b[0;34m(self, s, idx)\u001b[0m\n\u001b[1;32m 353\u001b[0m obj, end \u001b[38;5;241m=\u001b[39m \u001b[38;5;28mself\u001b[39m\u001b[38;5;241m.\u001b[39mscan_once(s, idx)\n\u001b[1;32m 354\u001b[0m \u001b[38;5;28;01mexcept\u001b[39;00m \u001b[38;5;167;01mStopIteration\u001b[39;00m \u001b[38;5;28;01mas\u001b[39;00m err:\n\u001b[0;32m--> 355\u001b[0m \u001b[38;5;28;01mraise\u001b[39;00m JSONDecodeError(\u001b[38;5;124m\"\u001b[39m\u001b[38;5;124mExpecting value\u001b[39m\u001b[38;5;124m\"\u001b[39m, s, err\u001b[38;5;241m.\u001b[39mvalue) \u001b[38;5;28;01mfrom\u001b[39;00m \u001b[38;5;28;01mNone\u001b[39;00m\n\u001b[1;32m 356\u001b[0m \u001b[38;5;28;01mreturn\u001b[39;00m obj, end\n", + "\u001b[0;31mJSONDecodeError\u001b[0m: Expecting value: line 1 column 1 (char 0)" + ] + } + ], "source": [ "multion = MultiOn(\n", " api_key=os.environ.get(\"MULTION_API_KEY\"),\n", diff --git a/examples/multion/Sample_browsing_agent.ipynb b/examples/multion/Sample_browsing_agent.ipynb index 54a379f52..f9c6aa789 100644 --- a/examples/multion/Sample_browsing_agent.ipynb +++ b/examples/multion/Sample_browsing_agent.ipynb @@ -29,7 +29,7 @@ }, { "cell_type": "code", - "execution_count": null, + "execution_count": 4, "metadata": {}, "outputs": [], "source": [ @@ -42,14 +42,14 @@ }, { "cell_type": "code", - "execution_count": null, + "execution_count": 2, "metadata": {}, "outputs": [], "source": [ "# Set your API keys\n", "import os\n", - "os.environ[\"MULTION_API_KEY\"] = \"multion_key\"\n", - "os.environ[\"AGENTOPS_API_KEY\"] = \"agentops_key\"" + "os.environ[\"MULTION_API_KEY\"] = \"\"\n", + "# os.environ[\"AGENTOPS_API_KEY\"] = \"a640373b-30ae-4655-a1f3-5caa882a8721\"" ] }, { @@ -62,9 +62,17 @@ }, { "cell_type": "code", - "execution_count": null, + "execution_count": 3, "metadata": {}, - "outputs": [], + "outputs": [ + { + "name": "stderr", + "output_type": "stream", + "text": [ + "🖇 AgentOps: No API key provided - no data will be recorded.\n" + ] + } + ], "source": [ "agentops.init(auto_start_session=False, tags=['MultiOn browse example'])" ] @@ -78,13 +86,28 @@ }, { "cell_type": "code", - "execution_count": null, + "execution_count": 5, "metadata": {}, - "outputs": [], + "outputs": [ + { + "ename": "UnauthorizedError", + "evalue": "status_code: 401, body: status_code=None error=None message=None detail='No API key or access token provided'", + "output_type": "error", + "traceback": [ + "\u001b[0;31m---------------------------------------------------------------------------\u001b[0m", + "\u001b[0;31mUnauthorizedError\u001b[0m Traceback (most recent call last)", + "Cell \u001b[0;32mIn[5], line 10\u001b[0m\n\u001b[1;32m 5\u001b[0m cmd \u001b[38;5;241m=\u001b[39m \u001b[38;5;124m\"\u001b[39m\u001b[38;5;124mwhat three things do i get with agentops\u001b[39m\u001b[38;5;124m\"\u001b[39m\n\u001b[1;32m 6\u001b[0m request_options \u001b[38;5;241m=\u001b[39m RequestOptions(\n\u001b[1;32m 7\u001b[0m timeout_in_seconds\u001b[38;5;241m=\u001b[39m\u001b[38;5;241m60\u001b[39m, max_retries\u001b[38;5;241m=\u001b[39m\u001b[38;5;241m4\u001b[39m, additional_headers\u001b[38;5;241m=\u001b[39m{\u001b[38;5;124m\"\u001b[39m\u001b[38;5;124mtest\u001b[39m\u001b[38;5;124m\"\u001b[39m: \u001b[38;5;124m\"\u001b[39m\u001b[38;5;124ming\u001b[39m\u001b[38;5;124m\"\u001b[39m}\n\u001b[1;32m 8\u001b[0m )\n\u001b[0;32m---> 10\u001b[0m browse_response \u001b[38;5;241m=\u001b[39m multion\u001b[38;5;241m.\u001b[39mbrowse(\n\u001b[1;32m 11\u001b[0m cmd\u001b[38;5;241m=\u001b[39m\u001b[38;5;124m\"\u001b[39m\u001b[38;5;124mwhat three things do i get with agentops\u001b[39m\u001b[38;5;124m\"\u001b[39m,\n\u001b[1;32m 12\u001b[0m url\u001b[38;5;241m=\u001b[39m\u001b[38;5;124m\"\u001b[39m\u001b[38;5;124mhttps://www.agentops.ai/\u001b[39m\u001b[38;5;124m\"\u001b[39m,\n\u001b[1;32m 13\u001b[0m max_steps\u001b[38;5;241m=\u001b[39m\u001b[38;5;241m4\u001b[39m,\n\u001b[1;32m 14\u001b[0m include_screenshot\u001b[38;5;241m=\u001b[39m\u001b[38;5;28;01mTrue\u001b[39;00m,\n\u001b[1;32m 15\u001b[0m request_options\u001b[38;5;241m=\u001b[39mrequest_options,\n\u001b[1;32m 16\u001b[0m )\n\u001b[1;32m 18\u001b[0m \u001b[38;5;28mprint\u001b[39m(browse_response\u001b[38;5;241m.\u001b[39mmessage)\n", + "File \u001b[0;32m~/Projects/multion-python/src/multion/client.py:84\u001b[0m, in \u001b[0;36mMultiOn.browse\u001b[0;34m(self, *args, **kwargs)\u001b[0m\n\u001b[1;32m 82\u001b[0m \u001b[38;5;28;01mreturn\u001b[39;00m \u001b[38;5;28mself\u001b[39m\u001b[38;5;241m.\u001b[39m_browse(\u001b[38;5;241m*\u001b[39margs, \u001b[38;5;241m*\u001b[39m\u001b[38;5;241m*\u001b[39mkwargs)\n\u001b[1;32m 83\u001b[0m \u001b[38;5;28;01mreturn\u001b[39;00m wrapped_browse(\u001b[38;5;241m*\u001b[39margs, \u001b[38;5;241m*\u001b[39m\u001b[38;5;241m*\u001b[39mkwargs)\n\u001b[0;32m---> 84\u001b[0m \u001b[38;5;28;01mreturn\u001b[39;00m \u001b[38;5;28mself\u001b[39m\u001b[38;5;241m.\u001b[39m_browse(\u001b[38;5;241m*\u001b[39margs, \u001b[38;5;241m*\u001b[39m\u001b[38;5;241m*\u001b[39mkwargs)\n", + "File \u001b[0;32m~/Projects/multion-python/src/multion/client.py:70\u001b[0m, in \u001b[0;36mMultiOn._browse\u001b[0;34m(self, *args, **kwargs)\u001b[0m\n\u001b[1;32m 68\u001b[0m \u001b[38;5;129m@wraps_function\u001b[39m(BaseMultiOn\u001b[38;5;241m.\u001b[39mbrowse) \u001b[38;5;66;03m# type: ignore\u001b[39;00m\n\u001b[1;32m 69\u001b[0m \u001b[38;5;28;01mdef\u001b[39;00m \u001b[38;5;21m_browse\u001b[39m(\u001b[38;5;28mself\u001b[39m, \u001b[38;5;241m*\u001b[39margs, \u001b[38;5;241m*\u001b[39m\u001b[38;5;241m*\u001b[39mkwargs) \u001b[38;5;241m-\u001b[39m\u001b[38;5;241m>\u001b[39m BrowseOutput:\n\u001b[0;32m---> 70\u001b[0m \u001b[38;5;28;01mreturn\u001b[39;00m \u001b[38;5;28msuper\u001b[39m()\u001b[38;5;241m.\u001b[39mbrowse(\u001b[38;5;241m*\u001b[39margs, \u001b[38;5;241m*\u001b[39m\u001b[38;5;241m*\u001b[39mkwargs)\n", + "File \u001b[0;32m~/Projects/multion-python/src/multion/base_client.py:188\u001b[0m, in \u001b[0;36mBaseMultiOn.browse\u001b[0;34m(self, cmd, url, local, session_id, max_steps, include_screenshot, temperature, mode, use_proxy, request_options)\u001b[0m\n\u001b[1;32m 184\u001b[0m \u001b[38;5;28;01mraise\u001b[39;00m BadRequestError(\n\u001b[1;32m 185\u001b[0m typing\u001b[38;5;241m.\u001b[39mcast(BadRequestResponse, construct_type(type_\u001b[38;5;241m=\u001b[39mBadRequestResponse, object_\u001b[38;5;241m=\u001b[39m_response\u001b[38;5;241m.\u001b[39mjson())) \u001b[38;5;66;03m# type: ignore\u001b[39;00m\n\u001b[1;32m 186\u001b[0m )\n\u001b[1;32m 187\u001b[0m \u001b[38;5;28;01mif\u001b[39;00m _response\u001b[38;5;241m.\u001b[39mstatus_code \u001b[38;5;241m==\u001b[39m \u001b[38;5;241m401\u001b[39m:\n\u001b[0;32m--> 188\u001b[0m \u001b[38;5;28;01mraise\u001b[39;00m UnauthorizedError(\n\u001b[1;32m 189\u001b[0m typing\u001b[38;5;241m.\u001b[39mcast(UnauthorizedResponse, construct_type(type_\u001b[38;5;241m=\u001b[39mUnauthorizedResponse, object_\u001b[38;5;241m=\u001b[39m_response\u001b[38;5;241m.\u001b[39mjson())) \u001b[38;5;66;03m# type: ignore\u001b[39;00m\n\u001b[1;32m 190\u001b[0m )\n\u001b[1;32m 191\u001b[0m \u001b[38;5;28;01mif\u001b[39;00m _response\u001b[38;5;241m.\u001b[39mstatus_code \u001b[38;5;241m==\u001b[39m \u001b[38;5;241m402\u001b[39m:\n\u001b[1;32m 192\u001b[0m \u001b[38;5;28;01mraise\u001b[39;00m PaymentRequiredError(\n\u001b[1;32m 193\u001b[0m typing\u001b[38;5;241m.\u001b[39mcast(PaymentRequiredResponse, construct_type(type_\u001b[38;5;241m=\u001b[39mPaymentRequiredResponse, object_\u001b[38;5;241m=\u001b[39m_response\u001b[38;5;241m.\u001b[39mjson())) \u001b[38;5;66;03m# type: ignore\u001b[39;00m\n\u001b[1;32m 194\u001b[0m )\n", + "\u001b[0;31mUnauthorizedError\u001b[0m: status_code: 401, body: status_code=None error=None message=None detail='No API key or access token provided'" + ] + } + ], "source": [ "multion = MultiOn(\n", " api_key=os.environ.get(\"MULTION_API_KEY\"),\n", - " agentops_api_key=os.environ.get(\"AGENTOPS_API_KEY\"),\n", + " # agentops_api_key=os.environ.get(\"AGENTOPS_API_KEY\"),\n", ")\n", "cmd = \"what three things do i get with agentops\"\n", "request_options = RequestOptions(\n", @@ -139,6 +162,13 @@ "## Check your session\n", "Check your session on [AgentOps](https://app.agentops.ai). This session should include the MultiOn browse action and the OpenAI call." ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [] } ], "metadata": { diff --git a/examples/multion/Untitled.ipynb b/examples/multion/Untitled.ipynb new file mode 100644 index 000000000..920dc729f --- /dev/null +++ b/examples/multion/Untitled.ipynb @@ -0,0 +1,201 @@ +{ + "cells": [ + { + "cell_type": "code", + "execution_count": 6, + "id": "56aa3a31-e9cd-4035-b10e-f8795d4a796c", + "metadata": { + "scrolled": true + }, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Note: you may need to restart the kernel to use updated packages.\n", + "Note: you may need to restart the kernel to use updated packages.\n" + ] + } + ], + "source": [ + "%pip uninstall multion -y -qqq\n", + "%pip install -e /Users/reibs/Projects/multion-python/ -qqq\n" + ] + }, + { + "cell_type": "code", + "execution_count": 1, + "id": "b7267393-f6cb-4bad-8b84-da41a67a99f3", + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "\n" + ] + }, + { + "name": "stderr", + "output_type": "stream", + "text": [ + "🖇 AgentOps: \u001b[34m\u001b[34mSession Replay: https://app.agentops.ai/drilldown?session_id=2049d2b6-7d57-4254-8b87-3b05a8e6fc05\u001b[0m\u001b[0m\n", + "🖇 AgentOps: Cannot start session - session already started\n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "browse: message='Hello, Howard! How can I assist you today?\\n' status='DONE' url='https://www.google.com/' screenshot='' session_id='29e7acd2-4105-4712-bd6d-413d02be9c55' metadata=Metadata(step_count=1, processing_time=4, temperature=0.2)\n" + ] + }, + { + "name": "stderr", + "output_type": "stream", + "text": [ + "🖇 AgentOps: Could not post data - internal server error\n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "createSession response: status='CONTINUE' message='New Session Created' session_id='5f7d8853-181e-4e04-b0e0-9242a3e378a8' url='https://www.google.com' screenshot=''\n", + "sessionId: 5f7d8853-181e-4e04-b0e0-9242a3e378a8\n", + "stepSession response: data=None session_id='5f7d8853-181e-4e04-b0e0-9242a3e378a8' type='event' delta={'content': 'I am'}\n", + "stepSession response: data=None session_id='5f7d8853-181e-4e04-b0e0-9242a3e378a8' type='event' delta={'content': ' entering'}\n", + "stepSession response: data=None session_id='5f7d8853-181e-4e04-b0e0-9242a3e378a8' type='event' delta={'content': ' the'}\n", + "stepSession response: data=None session_id='5f7d8853-181e-4e04-b0e0-9242a3e378a8' type='event' delta={'content': ' search'}\n", + "stepSession response: data=None session_id='5f7d8853-181e-4e04-b0e0-9242a3e378a8' type='event' delta={'content': ' query'}\n", + "stepSession response: data=None session_id='5f7d8853-181e-4e04-b0e0-9242a3e378a8' type='event' delta={'content': ' \"'}\n", + "stepSession response: data=None session_id='5f7d8853-181e-4e04-b0e0-9242a3e378a8' type='event' delta={'content': 'cake'}\n", + "stepSession response: data=None session_id='5f7d8853-181e-4e04-b0e0-9242a3e378a8' type='event' delta={'content': ' in'}\n", + "stepSession response: data=None session_id='5f7d8853-181e-4e04-b0e0-9242a3e378a8' type='event' delta={'content': ' london'}\n", + "stepSession response: data=None session_id='5f7d8853-181e-4e04-b0e0-9242a3e378a8' type='event' delta={'content': '\"'}\n", + "stepSession response: data=None session_id='5f7d8853-181e-4e04-b0e0-9242a3e378a8' type='event' delta={'content': ' into'}\n", + "stepSession response: data=None session_id='5f7d8853-181e-4e04-b0e0-9242a3e378a8' type='event' delta={'content': ' the'}\n", + "stepSession response: data=None session_id='5f7d8853-181e-4e04-b0e0-9242a3e378a8' type='event' delta={'content': ' search'}\n", + "stepSession response: data=None session_id='5f7d8853-181e-4e04-b0e0-9242a3e378a8' type='event' delta={'content': ' bar'}\n", + "stepSession response: data=None session_id='5f7d8853-181e-4e04-b0e0-9242a3e378a8' type='event' delta={'content': ' and'}\n", + "stepSession response: data=None session_id='5f7d8853-181e-4e04-b0e0-9242a3e378a8' type='event' delta={'content': ' submitting'}\n", + "stepSession response: data=None session_id='5f7d8853-181e-4e04-b0e0-9242a3e378a8' type='event' delta={'content': ' it'}\n", + "stepSession response: data=None session_id='5f7d8853-181e-4e04-b0e0-9242a3e378a8' type='event' delta={'content': ' to'}\n", + "stepSession response: data=None session_id='5f7d8853-181e-4e04-b0e0-9242a3e378a8' type='event' delta={'content': ' find'}\n", + "stepSession response: data=None session_id='5f7d8853-181e-4e04-b0e0-9242a3e378a8' type='event' delta={'content': ' relevant'}\n", + "stepSession response: data=None session_id='5f7d8853-181e-4e04-b0e0-9242a3e378a8' type='event' delta={'content': ' results'}\n", + "stepSession response: data=None session_id='5f7d8853-181e-4e04-b0e0-9242a3e378a8' type='event' delta={'content': '.\\n'}\n", + "stepSession response: data=None session_id='5f7d8853-181e-4e04-b0e0-9242a3e378a8' screenshot=None type='final_event' status='CONTINUE' delta={'status': 'CONTINUE'} url='https://www.google.com/search?q=cake+in+london&sca_esv=2ef42cc145b3d098&source=hp&ei=HGNyZvfYKsmSwbkP-6SU2Ac&iflsig=AL9hbdgAAAAAZnJxLNoGPkYfLsNj_FokcHwnjuUpzjHy&ved=0ahUKEwj31tLG7uaGAxVJSTABHXsSBXsQ4dUDCBA&uact=5&oq=cake+in+london&gs_lp=Egdnd3Mtd2l6Ig5jYWtlIGluIGxvbmRvbjIFEAAYgAQyBRAAGIAEMgYQABgWGB4yBhAAGBYYHjIGEAAYFhgeMgYQABgWGB4yBhAAGBYYHjIGEAAYFhgeMgYQABgWGB4yBhAAGBYYHkhBUABYAHAAeACQAQCYASSgASSqAQExuAEDyAEA-AEBmAIBoAItmAMAkgcBMaAH2AU&sclient=gws-wiz'\n", + "stepSession response: status='DONE' message='Here are some cake shops in London based on the search results:\\n\\n1. **Crumbs & Doilies**\\n - Rating: 4.6 out of 5\\n - Price: £1–10\\n - Location: 1 Kingly Ct\\n - Services: In-store shopping, In-store pickup, Delivery\\n - Hours: Closed ⋅ Opens 11 AM\\n\\n2. **Anges de Sucre**\\n - Rating: 4.7 out of 5\\n - Location: London, United Kingdom\\n - Description: Lauded cake shop with intricate designs\\n - Hours: Closed ⋅ Opens 9 AM\\n\\n3. **Cutter & Squidge**\\n - Rating: 4.3 out of 5\\n - Price: $$\\n - Location: 20 Brewer St\\n - Description: Light-filled bakery for cakes & pastries\\n - Hours: Closed ⋅ Opens 11 AM\\n' session_id='5f7d8853-181e-4e04-b0e0-9242a3e378a8' url='https://www.google.com/search?q=cake+in+london&sca_esv=2ef42cc145b3d098&source=hp&ei=HGNyZvfYKsmSwbkP-6SU2Ac&iflsig=AL9hbdgAAAAAZnJxLNoGPkYfLsNj_FokcHwnjuUpzjHy&ved=0ahUKEwj31tLG7uaGAxVJSTABHXsSBXsQ4dUDCBA&uact=5&oq=cake+in+london&gs_lp=Egdnd3Mtd2l6Ig5jYWtlIGluIGxvbmRvbjIFEAAYgAQyBRAAGIAEMgYQABgWGB4yBhAAGBYYHjIGEAAYFhgeMgYQABgWGB4yBhAAGBYYHjIGEAAYFhgeMgYQABgWGB4yBhAAGBYYHkhBUABYAHAAeACQAQCYASSgASSqAQExuAEDyAEA-AEBmAIBoAItmAMAkgcBMaAH2AU&sclient=gws-wiz' screenshot='' metadata=SessionStepSuccessMetadata(temperature=0.2)\n" + ] + }, + { + "name": "stderr", + "output_type": "stream", + "text": [ + "🖇 AgentOps: Could not post data - internal server error\n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Error: status_code: 500, body: Internal Server Error\n" + ] + } + ], + "source": [ + "from multion.client import MultiOn\n", + "import os\n", + "os.environ[\"MULTION_API_KEY\"] = \"ccafc73615ef4f93a8fdd815a12ae5c8\"\n", + "os.environ[\"AGENTOPS_API_KEY\"] = \"a640373b-30ae-4655-a1f3-5caa882a8721\"\n", + "\n", + "def run_tests():\n", + " \n", + " multion = MultiOn(api_key=\"ccafc73615ef4f93a8fdd815a12ae5c8\", \n", + " agentops_api_key=os.environ[\"AGENTOPS_API_KEY\"]\n", + " )\n", + "\n", + " print(multion)\n", + "\n", + " try:\n", + " browse = multion.browse(cmd=\"hello\", url=\"https://www.google.com\")\n", + " print(\"browse:\", browse)\n", + " create_session_response = multion.sessions.create(url=\"https://www.google.com\")\n", + " print(\"createSession response:\", create_session_response)\n", + " session_id = create_session_response.session_id\n", + " print(\"sessionId:\", session_id)\n", + " step_session_stream = multion.sessions.step_stream(\n", + " session_id=session_id,\n", + " cmd=\"search for cake in london\",\n", + " url=\"https://www.google.com\",\n", + " )\n", + " for step in step_session_stream:\n", + " print(\"stepSession response:\", step)\n", + " step_session_response = multion.sessions.step(\n", + " session_id=session_id,\n", + " cmd=\"search for cake in london\",\n", + " url=\"https://www.google.com\"\n", + " )\n", + " print(\"stepSession response:\", step_session_response)\n", + " sessions = multion.sessions.list()\n", + " print(\"sessions:\", sessions)\n", + " close_session_response = multion.sessions.close(session_id=session_id)\n", + " print(\"closeSession response:\", close_session_response)\n", + " get_screenshot = multion.sessions.screenshot(session_id=session_id)\n", + " print(\"getScreenshot response:\", get_screenshot)\n", + "\n", + " except Exception as e:\n", + " print(\"Error:\", e)\n", + "\n", + "run_tests()\n", + "\n" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "2b887ce1-94d2-42cf-8f0e-af9644e7b2d7", + "metadata": {}, + "outputs": [], + "source": [] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "45a7e052-1f10-4653-92b1-db63a2686224", + "metadata": {}, + "outputs": [], + "source": [] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "10c56c32-0e9c-4a46-874a-4671bbaf048e", + "metadata": {}, + "outputs": [], + "source": [] + } + ], + "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.11.5" + } + }, + "nbformat": 4, + "nbformat_minor": 5 +}