Spaces:
Runtime error
Runtime error
File size: 53,602 Bytes
eefd46e |
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 159 160 161 162 163 164 165 166 167 168 169 170 171 172 173 174 175 176 177 178 179 180 181 182 183 184 185 186 187 188 189 190 |
{
"cells": [
{
"cell_type": "code",
"execution_count": 1,
"metadata": {},
"outputs": [],
"source": [
"from langchain.agents.agent_toolkits import PlayWrightBrowserToolkit\n",
"from langchain.tools.playwright.utils import (\n",
" create_async_playwright_browser,\n",
" create_sync_playwright_browser,# A synchronous browser is available, though it isn't compatible with jupyter.\n",
")"
]
},
{
"cell_type": "code",
"execution_count": 2,
"metadata": {},
"outputs": [],
"source": [
"# This import is required only for jupyter notebooks, since they have their own eventloop\n",
"import nest_asyncio\n",
"nest_asyncio.apply()"
]
},
{
"cell_type": "code",
"execution_count": 3,
"metadata": {},
"outputs": [
{
"data": {
"text/plain": [
"[ClickTool(name='click_element', description='Click on an element with the given CSS selector', args_schema=<class 'langchain.tools.playwright.click.ClickToolInput'>, return_direct=False, verbose=False, callbacks=None, callback_manager=None, sync_browser=None, async_browser=<Browser type=<BrowserType name=chromium executable_path=/Users/tutu/Library/Caches/ms-playwright/chromium-1060/chrome-mac/Chromium.app/Contents/MacOS/Chromium> version=113.0.5672.53>),\n",
" NavigateTool(name='navigate_browser', description='Navigate a browser to the specified URL', args_schema=<class 'langchain.tools.playwright.navigate.NavigateToolInput'>, return_direct=False, verbose=False, callbacks=None, callback_manager=None, sync_browser=None, async_browser=<Browser type=<BrowserType name=chromium executable_path=/Users/tutu/Library/Caches/ms-playwright/chromium-1060/chrome-mac/Chromium.app/Contents/MacOS/Chromium> version=113.0.5672.53>),\n",
" NavigateBackTool(name='previous_webpage', description='Navigate back to the previous page in the browser history', args_schema=<class 'pydantic.main.BaseModel'>, return_direct=False, verbose=False, callbacks=None, callback_manager=None, sync_browser=None, async_browser=<Browser type=<BrowserType name=chromium executable_path=/Users/tutu/Library/Caches/ms-playwright/chromium-1060/chrome-mac/Chromium.app/Contents/MacOS/Chromium> version=113.0.5672.53>),\n",
" ExtractTextTool(name='extract_text', description='Extract all the text on the current webpage', args_schema=<class 'pydantic.main.BaseModel'>, return_direct=False, verbose=False, callbacks=None, callback_manager=None, sync_browser=None, async_browser=<Browser type=<BrowserType name=chromium executable_path=/Users/tutu/Library/Caches/ms-playwright/chromium-1060/chrome-mac/Chromium.app/Contents/MacOS/Chromium> version=113.0.5672.53>),\n",
" ExtractHyperlinksTool(name='extract_hyperlinks', description='Extract all hyperlinks on the current webpage', args_schema=<class 'langchain.tools.playwright.extract_hyperlinks.ExtractHyperlinksToolInput'>, return_direct=False, verbose=False, callbacks=None, callback_manager=None, sync_browser=None, async_browser=<Browser type=<BrowserType name=chromium executable_path=/Users/tutu/Library/Caches/ms-playwright/chromium-1060/chrome-mac/Chromium.app/Contents/MacOS/Chromium> version=113.0.5672.53>),\n",
" GetElementsTool(name='get_elements', description='Retrieve elements in the current web page matching the given CSS selector', args_schema=<class 'langchain.tools.playwright.get_elements.GetElementsToolInput'>, return_direct=False, verbose=False, callbacks=None, callback_manager=None, sync_browser=None, async_browser=<Browser type=<BrowserType name=chromium executable_path=/Users/tutu/Library/Caches/ms-playwright/chromium-1060/chrome-mac/Chromium.app/Contents/MacOS/Chromium> version=113.0.5672.53>),\n",
" CurrentWebPageTool(name='current_webpage', description='Returns the URL of the current page', args_schema=<class 'pydantic.main.BaseModel'>, return_direct=False, verbose=False, callbacks=None, callback_manager=None, sync_browser=None, async_browser=<Browser type=<BrowserType name=chromium executable_path=/Users/tutu/Library/Caches/ms-playwright/chromium-1060/chrome-mac/Chromium.app/Contents/MacOS/Chromium> version=113.0.5672.53>)]"
]
},
"execution_count": 3,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"async_browser = create_async_playwright_browser()\n",
"toolkit = PlayWrightBrowserToolkit.from_browser(async_browser=async_browser)\n",
"tools = toolkit.get_tools()\n",
"tools"
]
},
{
"cell_type": "code",
"execution_count": 4,
"metadata": {},
"outputs": [],
"source": [
"from langchain.agents import initialize_agent, AgentType\n",
"from langchain.chat_models import ChatOpenAI, ChatAnthropic\n",
"from langchain.llms import OpenAI\n",
"\n",
"llm = ChatOpenAI(temperature=0) # or any other LLM, e.g., ChatOpenAI(), OpenAI()\n",
"\n",
"agent_chain = initialize_agent(tools, llm, agent=AgentType.STRUCTURED_CHAT_ZERO_SHOT_REACT_DESCRIPTION, verbose=True)"
]
},
{
"cell_type": "code",
"execution_count": 5,
"metadata": {},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"\n",
"\n",
"\u001b[1m> Entering new AgentExecutor chain...\u001b[0m\n"
]
},
{
"name": "stderr",
"output_type": "stream",
"text": [
"Retrying langchain.chat_models.openai.acompletion_with_retry.<locals>._completion_with_retry in 1.0 seconds as it raised APIConnectionError: Error communicating with OpenAI.\n",
"Retrying langchain.chat_models.openai.acompletion_with_retry.<locals>._completion_with_retry in 2.0 seconds as it raised APIConnectionError: Error communicating with OpenAI.\n",
"Retrying langchain.chat_models.openai.acompletion_with_retry.<locals>._completion_with_retry in 4.0 seconds as it raised APIConnectionError: Error communicating with OpenAI.\n",
"Retrying langchain.chat_models.openai.acompletion_with_retry.<locals>._completion_with_retry in 8.0 seconds as it raised APIConnectionError: Error communicating with OpenAI.\n",
"Retrying langchain.chat_models.openai.acompletion_with_retry.<locals>._completion_with_retry in 16.0 seconds as it raised APIConnectionError: Error communicating with OpenAI.\n"
]
},
{
"ename": "APIConnectionError",
"evalue": "Error communicating with OpenAI",
"output_type": "error",
"traceback": [
"\u001b[0;31m---------------------------------------------------------------------------\u001b[0m",
"\u001b[0;31mTimeoutError\u001b[0m Traceback (most recent call last)",
"File \u001b[0;32m~/anaconda3/lib/python3.10/site-packages/aiohttp/connector.py:980\u001b[0m, in \u001b[0;36mTCPConnector._wrap_create_connection\u001b[0;34m(self, req, timeout, client_error, *args, **kwargs)\u001b[0m\n\u001b[1;32m 979\u001b[0m \u001b[39masync\u001b[39;00m \u001b[39mwith\u001b[39;00m ceil_timeout(timeout\u001b[39m.\u001b[39msock_connect):\n\u001b[0;32m--> 980\u001b[0m \u001b[39mreturn\u001b[39;00m \u001b[39mawait\u001b[39;00m \u001b[39mself\u001b[39m\u001b[39m.\u001b[39m_loop\u001b[39m.\u001b[39mcreate_connection(\u001b[39m*\u001b[39margs, \u001b[39m*\u001b[39m\u001b[39m*\u001b[39mkwargs) \u001b[39m# type: ignore[return-value] # noqa\u001b[39;00m\n\u001b[1;32m 981\u001b[0m \u001b[39mexcept\u001b[39;00m cert_errors \u001b[39mas\u001b[39;00m exc:\n",
"File \u001b[0;32m~/anaconda3/lib/python3.10/asyncio/base_events.py:1076\u001b[0m, in \u001b[0;36mBaseEventLoop.create_connection\u001b[0;34m(self, protocol_factory, host, port, ssl, family, proto, flags, sock, local_addr, server_hostname, ssl_handshake_timeout, happy_eyeballs_delay, interleave)\u001b[0m\n\u001b[1;32m 1075\u001b[0m \u001b[39mif\u001b[39;00m \u001b[39mlen\u001b[39m(exceptions) \u001b[39m==\u001b[39m \u001b[39m1\u001b[39m:\n\u001b[0;32m-> 1076\u001b[0m \u001b[39mraise\u001b[39;00m exceptions[\u001b[39m0\u001b[39m]\n\u001b[1;32m 1077\u001b[0m \u001b[39melse\u001b[39;00m:\n\u001b[1;32m 1078\u001b[0m \u001b[39m# If they all have the same str(), raise one.\u001b[39;00m\n",
"File \u001b[0;32m~/anaconda3/lib/python3.10/asyncio/base_events.py:1060\u001b[0m, in \u001b[0;36mBaseEventLoop.create_connection\u001b[0;34m(self, protocol_factory, host, port, ssl, family, proto, flags, sock, local_addr, server_hostname, ssl_handshake_timeout, happy_eyeballs_delay, interleave)\u001b[0m\n\u001b[1;32m 1059\u001b[0m \u001b[39mtry\u001b[39;00m:\n\u001b[0;32m-> 1060\u001b[0m sock \u001b[39m=\u001b[39m \u001b[39mawait\u001b[39;00m \u001b[39mself\u001b[39m\u001b[39m.\u001b[39m_connect_sock(\n\u001b[1;32m 1061\u001b[0m exceptions, addrinfo, laddr_infos)\n\u001b[1;32m 1062\u001b[0m \u001b[39mbreak\u001b[39;00m\n",
"File \u001b[0;32m~/anaconda3/lib/python3.10/asyncio/base_events.py:969\u001b[0m, in \u001b[0;36mBaseEventLoop._connect_sock\u001b[0;34m(self, exceptions, addr_info, local_addr_infos)\u001b[0m\n\u001b[1;32m 968\u001b[0m \u001b[39mraise\u001b[39;00m \u001b[39mOSError\u001b[39;00m(\u001b[39mf\u001b[39m\u001b[39m\"\u001b[39m\u001b[39mno matching local address with \u001b[39m\u001b[39m{\u001b[39;00mfamily\u001b[39m=}\u001b[39;00m\u001b[39m found\u001b[39m\u001b[39m\"\u001b[39m)\n\u001b[0;32m--> 969\u001b[0m \u001b[39mawait\u001b[39;00m \u001b[39mself\u001b[39m\u001b[39m.\u001b[39msock_connect(sock, address)\n\u001b[1;32m 970\u001b[0m \u001b[39mreturn\u001b[39;00m sock\n",
"File \u001b[0;32m~/anaconda3/lib/python3.10/asyncio/selector_events.py:501\u001b[0m, in \u001b[0;36mBaseSelectorEventLoop.sock_connect\u001b[0;34m(self, sock, address)\u001b[0m\n\u001b[1;32m 500\u001b[0m \u001b[39mtry\u001b[39;00m:\n\u001b[0;32m--> 501\u001b[0m \u001b[39mreturn\u001b[39;00m \u001b[39mawait\u001b[39;00m fut\n\u001b[1;32m 502\u001b[0m \u001b[39mfinally\u001b[39;00m:\n\u001b[1;32m 503\u001b[0m \u001b[39m# Needed to break cycles when an exception occurs.\u001b[39;00m\n",
"File \u001b[0;32m~/anaconda3/lib/python3.10/asyncio/futures.py:285\u001b[0m, in \u001b[0;36mFuture.__await__\u001b[0;34m(self)\u001b[0m\n\u001b[1;32m 284\u001b[0m \u001b[39mself\u001b[39m\u001b[39m.\u001b[39m_asyncio_future_blocking \u001b[39m=\u001b[39m \u001b[39mTrue\u001b[39;00m\n\u001b[0;32m--> 285\u001b[0m \u001b[39myield\u001b[39;00m \u001b[39mself\u001b[39m \u001b[39m# This tells Task to wait for completion.\u001b[39;00m\n\u001b[1;32m 286\u001b[0m \u001b[39mif\u001b[39;00m \u001b[39mnot\u001b[39;00m \u001b[39mself\u001b[39m\u001b[39m.\u001b[39mdone():\n",
"File \u001b[0;32m~/anaconda3/lib/python3.10/asyncio/tasks.py:304\u001b[0m, in \u001b[0;36mTask.__wakeup\u001b[0;34m(self, future)\u001b[0m\n\u001b[1;32m 303\u001b[0m \u001b[39mtry\u001b[39;00m:\n\u001b[0;32m--> 304\u001b[0m future\u001b[39m.\u001b[39;49mresult()\n\u001b[1;32m 305\u001b[0m \u001b[39mexcept\u001b[39;00m \u001b[39mBaseException\u001b[39;00m \u001b[39mas\u001b[39;00m exc:\n\u001b[1;32m 306\u001b[0m \u001b[39m# This may also be a cancellation.\u001b[39;00m\n",
"File \u001b[0;32m~/anaconda3/lib/python3.10/asyncio/futures.py:201\u001b[0m, in \u001b[0;36mFuture.result\u001b[0;34m(self)\u001b[0m\n\u001b[1;32m 200\u001b[0m \u001b[39mif\u001b[39;00m \u001b[39mself\u001b[39m\u001b[39m.\u001b[39m_exception \u001b[39mis\u001b[39;00m \u001b[39mnot\u001b[39;00m \u001b[39mNone\u001b[39;00m:\n\u001b[0;32m--> 201\u001b[0m \u001b[39mraise\u001b[39;00m \u001b[39mself\u001b[39m\u001b[39m.\u001b[39m_exception\u001b[39m.\u001b[39mwith_traceback(\u001b[39mself\u001b[39m\u001b[39m.\u001b[39m_exception_tb)\n\u001b[1;32m 202\u001b[0m \u001b[39mreturn\u001b[39;00m \u001b[39mself\u001b[39m\u001b[39m.\u001b[39m_result\n",
"File \u001b[0;32m~/anaconda3/lib/python3.10/asyncio/selector_events.py:541\u001b[0m, in \u001b[0;36mBaseSelectorEventLoop._sock_connect_cb\u001b[0;34m(self, fut, sock, address)\u001b[0m\n\u001b[1;32m 539\u001b[0m \u001b[39mif\u001b[39;00m err \u001b[39m!=\u001b[39m \u001b[39m0\u001b[39m:\n\u001b[1;32m 540\u001b[0m \u001b[39m# Jump to any except clause below.\u001b[39;00m\n\u001b[0;32m--> 541\u001b[0m \u001b[39mraise\u001b[39;00m \u001b[39mOSError\u001b[39;00m(err, \u001b[39mf\u001b[39m\u001b[39m'\u001b[39m\u001b[39mConnect call failed \u001b[39m\u001b[39m{\u001b[39;00maddress\u001b[39m}\u001b[39;00m\u001b[39m'\u001b[39m)\n\u001b[1;32m 542\u001b[0m \u001b[39mexcept\u001b[39;00m (\u001b[39mBlockingIOError\u001b[39;00m, \u001b[39mInterruptedError\u001b[39;00m):\n\u001b[1;32m 543\u001b[0m \u001b[39m# socket is still registered, the callback will be retried later\u001b[39;00m\n",
"\u001b[0;31mTimeoutError\u001b[0m: [Errno 60] Connect call failed ('108.160.166.42', 443)",
"\nThe above exception was the direct cause of the following exception:\n",
"\u001b[0;31mClientConnectorError\u001b[0m Traceback (most recent call last)",
"File \u001b[0;32m~/anaconda3/lib/python3.10/site-packages/openai/api_requestor.py:588\u001b[0m, in \u001b[0;36mAPIRequestor.arequest_raw\u001b[0;34m(self, method, url, session, params, supplied_headers, files, request_id, request_timeout)\u001b[0m\n\u001b[1;32m 587\u001b[0m \u001b[39mtry\u001b[39;00m:\n\u001b[0;32m--> 588\u001b[0m result \u001b[39m=\u001b[39m \u001b[39mawait\u001b[39;00m session\u001b[39m.\u001b[39mrequest(\u001b[39m*\u001b[39m\u001b[39m*\u001b[39mrequest_kwargs)\n\u001b[1;32m 589\u001b[0m util\u001b[39m.\u001b[39mlog_info(\n\u001b[1;32m 590\u001b[0m \u001b[39m\"\u001b[39m\u001b[39mOpenAI API response\u001b[39m\u001b[39m\"\u001b[39m,\n\u001b[1;32m 591\u001b[0m path\u001b[39m=\u001b[39mabs_url,\n\u001b[0;32m (...)\u001b[0m\n\u001b[1;32m 594\u001b[0m request_id\u001b[39m=\u001b[39mresult\u001b[39m.\u001b[39mheaders\u001b[39m.\u001b[39mget(\u001b[39m\"\u001b[39m\u001b[39mX-Request-Id\u001b[39m\u001b[39m\"\u001b[39m),\n\u001b[1;32m 595\u001b[0m )\n",
"File \u001b[0;32m~/anaconda3/lib/python3.10/site-packages/aiohttp/client.py:536\u001b[0m, in \u001b[0;36mClientSession._request\u001b[0;34m(self, method, str_or_url, params, data, json, cookies, headers, skip_auto_headers, auth, allow_redirects, max_redirects, compress, chunked, expect100, raise_for_status, read_until_eof, proxy, proxy_auth, timeout, verify_ssl, fingerprint, ssl_context, ssl, proxy_headers, trace_request_ctx, read_bufsize)\u001b[0m\n\u001b[1;32m 535\u001b[0m \u001b[39massert\u001b[39;00m \u001b[39mself\u001b[39m\u001b[39m.\u001b[39m_connector \u001b[39mis\u001b[39;00m \u001b[39mnot\u001b[39;00m \u001b[39mNone\u001b[39;00m\n\u001b[0;32m--> 536\u001b[0m conn \u001b[39m=\u001b[39m \u001b[39mawait\u001b[39;00m \u001b[39mself\u001b[39m\u001b[39m.\u001b[39m_connector\u001b[39m.\u001b[39mconnect(\n\u001b[1;32m 537\u001b[0m req, traces\u001b[39m=\u001b[39mtraces, timeout\u001b[39m=\u001b[39mreal_timeout\n\u001b[1;32m 538\u001b[0m )\n\u001b[1;32m 539\u001b[0m \u001b[39mexcept\u001b[39;00m asyncio\u001b[39m.\u001b[39mTimeoutError \u001b[39mas\u001b[39;00m exc:\n",
"File \u001b[0;32m~/anaconda3/lib/python3.10/site-packages/aiohttp/connector.py:540\u001b[0m, in \u001b[0;36mBaseConnector.connect\u001b[0;34m(self, req, traces, timeout)\u001b[0m\n\u001b[1;32m 539\u001b[0m \u001b[39mtry\u001b[39;00m:\n\u001b[0;32m--> 540\u001b[0m proto \u001b[39m=\u001b[39m \u001b[39mawait\u001b[39;00m \u001b[39mself\u001b[39m\u001b[39m.\u001b[39m_create_connection(req, traces, timeout)\n\u001b[1;32m 541\u001b[0m \u001b[39mif\u001b[39;00m \u001b[39mself\u001b[39m\u001b[39m.\u001b[39m_closed:\n",
"File \u001b[0;32m~/anaconda3/lib/python3.10/site-packages/aiohttp/connector.py:901\u001b[0m, in \u001b[0;36mTCPConnector._create_connection\u001b[0;34m(self, req, traces, timeout)\u001b[0m\n\u001b[1;32m 900\u001b[0m \u001b[39melse\u001b[39;00m:\n\u001b[0;32m--> 901\u001b[0m _, proto \u001b[39m=\u001b[39m \u001b[39mawait\u001b[39;00m \u001b[39mself\u001b[39m\u001b[39m.\u001b[39m_create_direct_connection(req, traces, timeout)\n\u001b[1;32m 903\u001b[0m \u001b[39mreturn\u001b[39;00m proto\n",
"File \u001b[0;32m~/anaconda3/lib/python3.10/site-packages/aiohttp/connector.py:1206\u001b[0m, in \u001b[0;36mTCPConnector._create_direct_connection\u001b[0;34m(self, req, traces, timeout, client_error)\u001b[0m\n\u001b[1;32m 1205\u001b[0m \u001b[39massert\u001b[39;00m last_exc \u001b[39mis\u001b[39;00m \u001b[39mnot\u001b[39;00m \u001b[39mNone\u001b[39;00m\n\u001b[0;32m-> 1206\u001b[0m \u001b[39mraise\u001b[39;00m last_exc\n",
"File \u001b[0;32m~/anaconda3/lib/python3.10/site-packages/aiohttp/connector.py:1175\u001b[0m, in \u001b[0;36mTCPConnector._create_direct_connection\u001b[0;34m(self, req, traces, timeout, client_error)\u001b[0m\n\u001b[1;32m 1174\u001b[0m \u001b[39mtry\u001b[39;00m:\n\u001b[0;32m-> 1175\u001b[0m transp, proto \u001b[39m=\u001b[39m \u001b[39mawait\u001b[39;00m \u001b[39mself\u001b[39m\u001b[39m.\u001b[39m_wrap_create_connection(\n\u001b[1;32m 1176\u001b[0m \u001b[39mself\u001b[39m\u001b[39m.\u001b[39m_factory,\n\u001b[1;32m 1177\u001b[0m host,\n\u001b[1;32m 1178\u001b[0m port,\n\u001b[1;32m 1179\u001b[0m timeout\u001b[39m=\u001b[39mtimeout,\n\u001b[1;32m 1180\u001b[0m ssl\u001b[39m=\u001b[39msslcontext,\n\u001b[1;32m 1181\u001b[0m family\u001b[39m=\u001b[39mhinfo[\u001b[39m\"\u001b[39m\u001b[39mfamily\u001b[39m\u001b[39m\"\u001b[39m],\n\u001b[1;32m 1182\u001b[0m proto\u001b[39m=\u001b[39mhinfo[\u001b[39m\"\u001b[39m\u001b[39mproto\u001b[39m\u001b[39m\"\u001b[39m],\n\u001b[1;32m 1183\u001b[0m flags\u001b[39m=\u001b[39mhinfo[\u001b[39m\"\u001b[39m\u001b[39mflags\u001b[39m\u001b[39m\"\u001b[39m],\n\u001b[1;32m 1184\u001b[0m server_hostname\u001b[39m=\u001b[39mhinfo[\u001b[39m\"\u001b[39m\u001b[39mhostname\u001b[39m\u001b[39m\"\u001b[39m] \u001b[39mif\u001b[39;00m sslcontext \u001b[39melse\u001b[39;00m \u001b[39mNone\u001b[39;00m,\n\u001b[1;32m 1185\u001b[0m local_addr\u001b[39m=\u001b[39m\u001b[39mself\u001b[39m\u001b[39m.\u001b[39m_local_addr,\n\u001b[1;32m 1186\u001b[0m req\u001b[39m=\u001b[39mreq,\n\u001b[1;32m 1187\u001b[0m client_error\u001b[39m=\u001b[39mclient_error,\n\u001b[1;32m 1188\u001b[0m )\n\u001b[1;32m 1189\u001b[0m \u001b[39mexcept\u001b[39;00m ClientConnectorError \u001b[39mas\u001b[39;00m exc:\n",
"File \u001b[0;32m~/anaconda3/lib/python3.10/site-packages/aiohttp/connector.py:988\u001b[0m, in \u001b[0;36mTCPConnector._wrap_create_connection\u001b[0;34m(self, req, timeout, client_error, *args, **kwargs)\u001b[0m\n\u001b[1;32m 987\u001b[0m \u001b[39mraise\u001b[39;00m\n\u001b[0;32m--> 988\u001b[0m \u001b[39mraise\u001b[39;00m client_error(req\u001b[39m.\u001b[39mconnection_key, exc) \u001b[39mfrom\u001b[39;00m \u001b[39mexc\u001b[39;00m\n",
"\u001b[0;31mClientConnectorError\u001b[0m: Cannot connect to host api.openai.com:443 ssl:default [Connect call failed ('108.160.166.42', 443)]",
"\nThe above exception was the direct cause of the following exception:\n",
"\u001b[0;31mAPIConnectionError\u001b[0m Traceback (most recent call last)",
"Cell \u001b[0;32mIn[5], line 1\u001b[0m\n\u001b[0;32m----> 1\u001b[0m result \u001b[39m=\u001b[39m \u001b[39mawait\u001b[39;00m agent_chain\u001b[39m.\u001b[39marun(\u001b[39m\"\u001b[39m\u001b[39mWhat are the headers on langchain.com?\u001b[39m\u001b[39m\"\u001b[39m)\n\u001b[1;32m 2\u001b[0m \u001b[39mprint\u001b[39m(result)\n",
"File \u001b[0;32m~/anaconda3/lib/python3.10/site-packages/langchain/chains/base.py:259\u001b[0m, in \u001b[0;36mChain.arun\u001b[0;34m(self, callbacks, *args, **kwargs)\u001b[0m\n\u001b[1;32m 257\u001b[0m \u001b[39mif\u001b[39;00m \u001b[39mlen\u001b[39m(args) \u001b[39m!=\u001b[39m \u001b[39m1\u001b[39m:\n\u001b[1;32m 258\u001b[0m \u001b[39mraise\u001b[39;00m \u001b[39mValueError\u001b[39;00m(\u001b[39m\"\u001b[39m\u001b[39m`run` supports only one positional argument.\u001b[39m\u001b[39m\"\u001b[39m)\n\u001b[0;32m--> 259\u001b[0m \u001b[39mreturn\u001b[39;00m (\u001b[39mawait\u001b[39;00m \u001b[39mself\u001b[39m\u001b[39m.\u001b[39macall(args[\u001b[39m0\u001b[39m], callbacks\u001b[39m=\u001b[39mcallbacks))[\u001b[39mself\u001b[39m\u001b[39m.\u001b[39moutput_keys[\u001b[39m0\u001b[39m]]\n\u001b[1;32m 261\u001b[0m \u001b[39mif\u001b[39;00m kwargs \u001b[39mand\u001b[39;00m \u001b[39mnot\u001b[39;00m args:\n\u001b[1;32m 262\u001b[0m \u001b[39mreturn\u001b[39;00m (\u001b[39mawait\u001b[39;00m \u001b[39mself\u001b[39m\u001b[39m.\u001b[39macall(kwargs, callbacks\u001b[39m=\u001b[39mcallbacks))[\u001b[39mself\u001b[39m\u001b[39m.\u001b[39moutput_keys[\u001b[39m0\u001b[39m]]\n",
"File \u001b[0;32m~/anaconda3/lib/python3.10/site-packages/langchain/chains/base.py:180\u001b[0m, in \u001b[0;36mChain.acall\u001b[0;34m(self, inputs, return_only_outputs, callbacks)\u001b[0m\n\u001b[1;32m 178\u001b[0m \u001b[39mexcept\u001b[39;00m (\u001b[39mKeyboardInterrupt\u001b[39;00m, \u001b[39mException\u001b[39;00m) \u001b[39mas\u001b[39;00m e:\n\u001b[1;32m 179\u001b[0m \u001b[39mawait\u001b[39;00m run_manager\u001b[39m.\u001b[39mon_chain_error(e)\n\u001b[0;32m--> 180\u001b[0m \u001b[39mraise\u001b[39;00m e\n\u001b[1;32m 181\u001b[0m \u001b[39mawait\u001b[39;00m run_manager\u001b[39m.\u001b[39mon_chain_end(outputs)\n\u001b[1;32m 182\u001b[0m \u001b[39mreturn\u001b[39;00m \u001b[39mself\u001b[39m\u001b[39m.\u001b[39mprep_outputs(inputs, outputs, return_only_outputs)\n",
"File \u001b[0;32m~/anaconda3/lib/python3.10/site-packages/langchain/chains/base.py:174\u001b[0m, in \u001b[0;36mChain.acall\u001b[0;34m(self, inputs, return_only_outputs, callbacks)\u001b[0m\n\u001b[1;32m 168\u001b[0m run_manager \u001b[39m=\u001b[39m \u001b[39mawait\u001b[39;00m callback_manager\u001b[39m.\u001b[39mon_chain_start(\n\u001b[1;32m 169\u001b[0m {\u001b[39m\"\u001b[39m\u001b[39mname\u001b[39m\u001b[39m\"\u001b[39m: \u001b[39mself\u001b[39m\u001b[39m.\u001b[39m\u001b[39m__class__\u001b[39m\u001b[39m.\u001b[39m\u001b[39m__name__\u001b[39m},\n\u001b[1;32m 170\u001b[0m inputs,\n\u001b[1;32m 171\u001b[0m )\n\u001b[1;32m 172\u001b[0m \u001b[39mtry\u001b[39;00m:\n\u001b[1;32m 173\u001b[0m outputs \u001b[39m=\u001b[39m (\n\u001b[0;32m--> 174\u001b[0m \u001b[39mawait\u001b[39;00m \u001b[39mself\u001b[39m\u001b[39m.\u001b[39m_acall(inputs, run_manager\u001b[39m=\u001b[39mrun_manager)\n\u001b[1;32m 175\u001b[0m \u001b[39mif\u001b[39;00m new_arg_supported\n\u001b[1;32m 176\u001b[0m \u001b[39melse\u001b[39;00m \u001b[39mawait\u001b[39;00m \u001b[39mself\u001b[39m\u001b[39m.\u001b[39m_acall(inputs)\n\u001b[1;32m 177\u001b[0m )\n\u001b[1;32m 178\u001b[0m \u001b[39mexcept\u001b[39;00m (\u001b[39mKeyboardInterrupt\u001b[39;00m, \u001b[39mException\u001b[39;00m) \u001b[39mas\u001b[39;00m e:\n\u001b[1;32m 179\u001b[0m \u001b[39mawait\u001b[39;00m run_manager\u001b[39m.\u001b[39mon_chain_error(e)\n",
"File \u001b[0;32m~/anaconda3/lib/python3.10/site-packages/langchain/agents/agent.py:952\u001b[0m, in \u001b[0;36mAgentExecutor._acall\u001b[0;34m(self, inputs, run_manager)\u001b[0m\n\u001b[1;32m 950\u001b[0m \u001b[39mtry\u001b[39;00m:\n\u001b[1;32m 951\u001b[0m \u001b[39mwhile\u001b[39;00m \u001b[39mself\u001b[39m\u001b[39m.\u001b[39m_should_continue(iterations, time_elapsed):\n\u001b[0;32m--> 952\u001b[0m next_step_output \u001b[39m=\u001b[39m \u001b[39mawait\u001b[39;00m \u001b[39mself\u001b[39m\u001b[39m.\u001b[39m_atake_next_step(\n\u001b[1;32m 953\u001b[0m name_to_tool_map,\n\u001b[1;32m 954\u001b[0m color_mapping,\n\u001b[1;32m 955\u001b[0m inputs,\n\u001b[1;32m 956\u001b[0m intermediate_steps,\n\u001b[1;32m 957\u001b[0m run_manager\u001b[39m=\u001b[39mrun_manager,\n\u001b[1;32m 958\u001b[0m )\n\u001b[1;32m 959\u001b[0m \u001b[39mif\u001b[39;00m \u001b[39misinstance\u001b[39m(next_step_output, AgentFinish):\n\u001b[1;32m 960\u001b[0m \u001b[39mreturn\u001b[39;00m \u001b[39mawait\u001b[39;00m \u001b[39mself\u001b[39m\u001b[39m.\u001b[39m_areturn(next_step_output, intermediate_steps)\n",
"File \u001b[0;32m~/anaconda3/lib/python3.10/site-packages/langchain/agents/agent.py:823\u001b[0m, in \u001b[0;36mAgentExecutor._atake_next_step\u001b[0;34m(self, name_to_tool_map, color_mapping, inputs, intermediate_steps, run_manager)\u001b[0m\n\u001b[1;32m 821\u001b[0m \u001b[39mexcept\u001b[39;00m \u001b[39mException\u001b[39;00m \u001b[39mas\u001b[39;00m e:\n\u001b[1;32m 822\u001b[0m \u001b[39mif\u001b[39;00m \u001b[39mnot\u001b[39;00m \u001b[39mself\u001b[39m\u001b[39m.\u001b[39mhandle_parsing_errors:\n\u001b[0;32m--> 823\u001b[0m \u001b[39mraise\u001b[39;00m e\n\u001b[1;32m 824\u001b[0m text \u001b[39m=\u001b[39m \u001b[39mstr\u001b[39m(e)\u001b[39m.\u001b[39msplit(\u001b[39m\"\u001b[39m\u001b[39m`\u001b[39m\u001b[39m\"\u001b[39m)[\u001b[39m1\u001b[39m]\n\u001b[1;32m 825\u001b[0m observation \u001b[39m=\u001b[39m \u001b[39m\"\u001b[39m\u001b[39mInvalid or incomplete response\u001b[39m\u001b[39m\"\u001b[39m\n",
"File \u001b[0;32m~/anaconda3/lib/python3.10/site-packages/langchain/agents/agent.py:816\u001b[0m, in \u001b[0;36mAgentExecutor._atake_next_step\u001b[0;34m(self, name_to_tool_map, color_mapping, inputs, intermediate_steps, run_manager)\u001b[0m\n\u001b[1;32m 810\u001b[0m \u001b[39m\u001b[39m\u001b[39m\"\"\"Take a single step in the thought-action-observation loop.\u001b[39;00m\n\u001b[1;32m 811\u001b[0m \n\u001b[1;32m 812\u001b[0m \u001b[39mOverride this to take control of how the agent makes and acts on choices.\u001b[39;00m\n\u001b[1;32m 813\u001b[0m \u001b[39m\"\"\"\u001b[39;00m\n\u001b[1;32m 814\u001b[0m \u001b[39mtry\u001b[39;00m:\n\u001b[1;32m 815\u001b[0m \u001b[39m# Call the LLM to see what to do.\u001b[39;00m\n\u001b[0;32m--> 816\u001b[0m output \u001b[39m=\u001b[39m \u001b[39mawait\u001b[39;00m \u001b[39mself\u001b[39m\u001b[39m.\u001b[39magent\u001b[39m.\u001b[39maplan(\n\u001b[1;32m 817\u001b[0m intermediate_steps,\n\u001b[1;32m 818\u001b[0m callbacks\u001b[39m=\u001b[39mrun_manager\u001b[39m.\u001b[39mget_child() \u001b[39mif\u001b[39;00m run_manager \u001b[39melse\u001b[39;00m \u001b[39mNone\u001b[39;00m,\n\u001b[1;32m 819\u001b[0m \u001b[39m*\u001b[39m\u001b[39m*\u001b[39minputs,\n\u001b[1;32m 820\u001b[0m )\n\u001b[1;32m 821\u001b[0m \u001b[39mexcept\u001b[39;00m \u001b[39mException\u001b[39;00m \u001b[39mas\u001b[39;00m e:\n\u001b[1;32m 822\u001b[0m \u001b[39mif\u001b[39;00m \u001b[39mnot\u001b[39;00m \u001b[39mself\u001b[39m\u001b[39m.\u001b[39mhandle_parsing_errors:\n",
"File \u001b[0;32m~/anaconda3/lib/python3.10/site-packages/langchain/agents/agent.py:446\u001b[0m, in \u001b[0;36mAgent.aplan\u001b[0;34m(self, intermediate_steps, callbacks, **kwargs)\u001b[0m\n\u001b[1;32m 434\u001b[0m \u001b[39m\u001b[39m\u001b[39m\"\"\"Given input, decided what to do.\u001b[39;00m\n\u001b[1;32m 435\u001b[0m \n\u001b[1;32m 436\u001b[0m \u001b[39mArgs:\u001b[39;00m\n\u001b[0;32m (...)\u001b[0m\n\u001b[1;32m 443\u001b[0m \u001b[39m Action specifying what tool to use.\u001b[39;00m\n\u001b[1;32m 444\u001b[0m \u001b[39m\"\"\"\u001b[39;00m\n\u001b[1;32m 445\u001b[0m full_inputs \u001b[39m=\u001b[39m \u001b[39mself\u001b[39m\u001b[39m.\u001b[39mget_full_inputs(intermediate_steps, \u001b[39m*\u001b[39m\u001b[39m*\u001b[39mkwargs)\n\u001b[0;32m--> 446\u001b[0m full_output \u001b[39m=\u001b[39m \u001b[39mawait\u001b[39;00m \u001b[39mself\u001b[39m\u001b[39m.\u001b[39mllm_chain\u001b[39m.\u001b[39mapredict(callbacks\u001b[39m=\u001b[39mcallbacks, \u001b[39m*\u001b[39m\u001b[39m*\u001b[39mfull_inputs)\n\u001b[1;32m 447\u001b[0m \u001b[39mreturn\u001b[39;00m \u001b[39mself\u001b[39m\u001b[39m.\u001b[39moutput_parser\u001b[39m.\u001b[39mparse(full_output)\n",
"File \u001b[0;32m~/anaconda3/lib/python3.10/site-packages/langchain/chains/llm.py:230\u001b[0m, in \u001b[0;36mLLMChain.apredict\u001b[0;34m(self, callbacks, **kwargs)\u001b[0m\n\u001b[1;32m 215\u001b[0m \u001b[39masync\u001b[39;00m \u001b[39mdef\u001b[39;00m \u001b[39mapredict\u001b[39m(\u001b[39mself\u001b[39m, callbacks: Callbacks \u001b[39m=\u001b[39m \u001b[39mNone\u001b[39;00m, \u001b[39m*\u001b[39m\u001b[39m*\u001b[39mkwargs: Any) \u001b[39m-\u001b[39m\u001b[39m>\u001b[39m \u001b[39mstr\u001b[39m:\n\u001b[1;32m 216\u001b[0m \u001b[39m \u001b[39m\u001b[39m\"\"\"Format prompt with kwargs and pass to LLM.\u001b[39;00m\n\u001b[1;32m 217\u001b[0m \n\u001b[1;32m 218\u001b[0m \u001b[39m Args:\u001b[39;00m\n\u001b[0;32m (...)\u001b[0m\n\u001b[1;32m 228\u001b[0m \u001b[39m completion = llm.predict(adjective=\"funny\")\u001b[39;00m\n\u001b[1;32m 229\u001b[0m \u001b[39m \"\"\"\u001b[39;00m\n\u001b[0;32m--> 230\u001b[0m \u001b[39mreturn\u001b[39;00m (\u001b[39mawait\u001b[39;00m \u001b[39mself\u001b[39m\u001b[39m.\u001b[39macall(kwargs, callbacks\u001b[39m=\u001b[39mcallbacks))[\u001b[39mself\u001b[39m\u001b[39m.\u001b[39moutput_key]\n",
"File \u001b[0;32m~/anaconda3/lib/python3.10/site-packages/langchain/chains/base.py:180\u001b[0m, in \u001b[0;36mChain.acall\u001b[0;34m(self, inputs, return_only_outputs, callbacks)\u001b[0m\n\u001b[1;32m 178\u001b[0m \u001b[39mexcept\u001b[39;00m (\u001b[39mKeyboardInterrupt\u001b[39;00m, \u001b[39mException\u001b[39;00m) \u001b[39mas\u001b[39;00m e:\n\u001b[1;32m 179\u001b[0m \u001b[39mawait\u001b[39;00m run_manager\u001b[39m.\u001b[39mon_chain_error(e)\n\u001b[0;32m--> 180\u001b[0m \u001b[39mraise\u001b[39;00m e\n\u001b[1;32m 181\u001b[0m \u001b[39mawait\u001b[39;00m run_manager\u001b[39m.\u001b[39mon_chain_end(outputs)\n\u001b[1;32m 182\u001b[0m \u001b[39mreturn\u001b[39;00m \u001b[39mself\u001b[39m\u001b[39m.\u001b[39mprep_outputs(inputs, outputs, return_only_outputs)\n",
"File \u001b[0;32m~/anaconda3/lib/python3.10/site-packages/langchain/chains/base.py:174\u001b[0m, in \u001b[0;36mChain.acall\u001b[0;34m(self, inputs, return_only_outputs, callbacks)\u001b[0m\n\u001b[1;32m 168\u001b[0m run_manager \u001b[39m=\u001b[39m \u001b[39mawait\u001b[39;00m callback_manager\u001b[39m.\u001b[39mon_chain_start(\n\u001b[1;32m 169\u001b[0m {\u001b[39m\"\u001b[39m\u001b[39mname\u001b[39m\u001b[39m\"\u001b[39m: \u001b[39mself\u001b[39m\u001b[39m.\u001b[39m\u001b[39m__class__\u001b[39m\u001b[39m.\u001b[39m\u001b[39m__name__\u001b[39m},\n\u001b[1;32m 170\u001b[0m inputs,\n\u001b[1;32m 171\u001b[0m )\n\u001b[1;32m 172\u001b[0m \u001b[39mtry\u001b[39;00m:\n\u001b[1;32m 173\u001b[0m outputs \u001b[39m=\u001b[39m (\n\u001b[0;32m--> 174\u001b[0m \u001b[39mawait\u001b[39;00m \u001b[39mself\u001b[39m\u001b[39m.\u001b[39m_acall(inputs, run_manager\u001b[39m=\u001b[39mrun_manager)\n\u001b[1;32m 175\u001b[0m \u001b[39mif\u001b[39;00m new_arg_supported\n\u001b[1;32m 176\u001b[0m \u001b[39melse\u001b[39;00m \u001b[39mawait\u001b[39;00m \u001b[39mself\u001b[39m\u001b[39m.\u001b[39m_acall(inputs)\n\u001b[1;32m 177\u001b[0m )\n\u001b[1;32m 178\u001b[0m \u001b[39mexcept\u001b[39;00m (\u001b[39mKeyboardInterrupt\u001b[39;00m, \u001b[39mException\u001b[39;00m) \u001b[39mas\u001b[39;00m e:\n\u001b[1;32m 179\u001b[0m \u001b[39mawait\u001b[39;00m run_manager\u001b[39m.\u001b[39mon_chain_error(e)\n",
"File \u001b[0;32m~/anaconda3/lib/python3.10/site-packages/langchain/chains/llm.py:195\u001b[0m, in \u001b[0;36mLLMChain._acall\u001b[0;34m(self, inputs, run_manager)\u001b[0m\n\u001b[1;32m 190\u001b[0m \u001b[39masync\u001b[39;00m \u001b[39mdef\u001b[39;00m \u001b[39m_acall\u001b[39m(\n\u001b[1;32m 191\u001b[0m \u001b[39mself\u001b[39m,\n\u001b[1;32m 192\u001b[0m inputs: Dict[\u001b[39mstr\u001b[39m, Any],\n\u001b[1;32m 193\u001b[0m run_manager: Optional[AsyncCallbackManagerForChainRun] \u001b[39m=\u001b[39m \u001b[39mNone\u001b[39;00m,\n\u001b[1;32m 194\u001b[0m ) \u001b[39m-\u001b[39m\u001b[39m>\u001b[39m Dict[\u001b[39mstr\u001b[39m, \u001b[39mstr\u001b[39m]:\n\u001b[0;32m--> 195\u001b[0m response \u001b[39m=\u001b[39m \u001b[39mawait\u001b[39;00m \u001b[39mself\u001b[39m\u001b[39m.\u001b[39magenerate([inputs], run_manager\u001b[39m=\u001b[39mrun_manager)\n\u001b[1;32m 196\u001b[0m \u001b[39mreturn\u001b[39;00m \u001b[39mself\u001b[39m\u001b[39m.\u001b[39mcreate_outputs(response)[\u001b[39m0\u001b[39m]\n",
"File \u001b[0;32m~/anaconda3/lib/python3.10/site-packages/langchain/chains/llm.py:90\u001b[0m, in \u001b[0;36mLLMChain.agenerate\u001b[0;34m(self, input_list, run_manager)\u001b[0m\n\u001b[1;32m 88\u001b[0m \u001b[39m\u001b[39m\u001b[39m\"\"\"Generate LLM result from inputs.\"\"\"\u001b[39;00m\n\u001b[1;32m 89\u001b[0m prompts, stop \u001b[39m=\u001b[39m \u001b[39mawait\u001b[39;00m \u001b[39mself\u001b[39m\u001b[39m.\u001b[39maprep_prompts(input_list)\n\u001b[0;32m---> 90\u001b[0m \u001b[39mreturn\u001b[39;00m \u001b[39mawait\u001b[39;00m \u001b[39mself\u001b[39m\u001b[39m.\u001b[39mllm\u001b[39m.\u001b[39magenerate_prompt(\n\u001b[1;32m 91\u001b[0m prompts, stop, callbacks\u001b[39m=\u001b[39mrun_manager\u001b[39m.\u001b[39mget_child() \u001b[39mif\u001b[39;00m run_manager \u001b[39melse\u001b[39;00m \u001b[39mNone\u001b[39;00m\n\u001b[1;32m 92\u001b[0m )\n",
"File \u001b[0;32m~/anaconda3/lib/python3.10/site-packages/langchain/chat_models/base.py:149\u001b[0m, in \u001b[0;36mBaseChatModel.agenerate_prompt\u001b[0;34m(self, prompts, stop, callbacks)\u001b[0m\n\u001b[1;32m 142\u001b[0m \u001b[39masync\u001b[39;00m \u001b[39mdef\u001b[39;00m \u001b[39magenerate_prompt\u001b[39m(\n\u001b[1;32m 143\u001b[0m \u001b[39mself\u001b[39m,\n\u001b[1;32m 144\u001b[0m prompts: List[PromptValue],\n\u001b[1;32m 145\u001b[0m stop: Optional[List[\u001b[39mstr\u001b[39m]] \u001b[39m=\u001b[39m \u001b[39mNone\u001b[39;00m,\n\u001b[1;32m 146\u001b[0m callbacks: Callbacks \u001b[39m=\u001b[39m \u001b[39mNone\u001b[39;00m,\n\u001b[1;32m 147\u001b[0m ) \u001b[39m-\u001b[39m\u001b[39m>\u001b[39m LLMResult:\n\u001b[1;32m 148\u001b[0m prompt_messages \u001b[39m=\u001b[39m [p\u001b[39m.\u001b[39mto_messages() \u001b[39mfor\u001b[39;00m p \u001b[39min\u001b[39;00m prompts]\n\u001b[0;32m--> 149\u001b[0m \u001b[39mreturn\u001b[39;00m \u001b[39mawait\u001b[39;00m \u001b[39mself\u001b[39m\u001b[39m.\u001b[39magenerate(prompt_messages, stop\u001b[39m=\u001b[39mstop, callbacks\u001b[39m=\u001b[39mcallbacks)\n",
"File \u001b[0;32m~/anaconda3/lib/python3.10/site-packages/langchain/chat_models/base.py:126\u001b[0m, in \u001b[0;36mBaseChatModel.agenerate\u001b[0;34m(self, messages, stop, callbacks)\u001b[0m\n\u001b[1;32m 124\u001b[0m \u001b[39mexcept\u001b[39;00m (\u001b[39mKeyboardInterrupt\u001b[39;00m, \u001b[39mException\u001b[39;00m) \u001b[39mas\u001b[39;00m e:\n\u001b[1;32m 125\u001b[0m \u001b[39mawait\u001b[39;00m run_manager\u001b[39m.\u001b[39mon_llm_error(e)\n\u001b[0;32m--> 126\u001b[0m \u001b[39mraise\u001b[39;00m e\n\u001b[1;32m 127\u001b[0m llm_output \u001b[39m=\u001b[39m \u001b[39mself\u001b[39m\u001b[39m.\u001b[39m_combine_llm_outputs([res\u001b[39m.\u001b[39mllm_output \u001b[39mfor\u001b[39;00m res \u001b[39min\u001b[39;00m results])\n\u001b[1;32m 128\u001b[0m generations \u001b[39m=\u001b[39m [res\u001b[39m.\u001b[39mgenerations \u001b[39mfor\u001b[39;00m res \u001b[39min\u001b[39;00m results]\n",
"File \u001b[0;32m~/anaconda3/lib/python3.10/site-packages/langchain/chat_models/base.py:116\u001b[0m, in \u001b[0;36mBaseChatModel.agenerate\u001b[0;34m(self, messages, stop, callbacks)\u001b[0m\n\u001b[1;32m 112\u001b[0m new_arg_supported \u001b[39m=\u001b[39m inspect\u001b[39m.\u001b[39msignature(\u001b[39mself\u001b[39m\u001b[39m.\u001b[39m_agenerate)\u001b[39m.\u001b[39mparameters\u001b[39m.\u001b[39mget(\n\u001b[1;32m 113\u001b[0m \u001b[39m\"\u001b[39m\u001b[39mrun_manager\u001b[39m\u001b[39m\"\u001b[39m\n\u001b[1;32m 114\u001b[0m )\n\u001b[1;32m 115\u001b[0m \u001b[39mtry\u001b[39;00m:\n\u001b[0;32m--> 116\u001b[0m results \u001b[39m=\u001b[39m \u001b[39mawait\u001b[39;00m asyncio\u001b[39m.\u001b[39mgather(\n\u001b[1;32m 117\u001b[0m \u001b[39m*\u001b[39m[\n\u001b[1;32m 118\u001b[0m \u001b[39mself\u001b[39m\u001b[39m.\u001b[39m_agenerate(m, stop\u001b[39m=\u001b[39mstop, run_manager\u001b[39m=\u001b[39mrun_manager)\n\u001b[1;32m 119\u001b[0m \u001b[39mif\u001b[39;00m new_arg_supported\n\u001b[1;32m 120\u001b[0m \u001b[39melse\u001b[39;00m \u001b[39mself\u001b[39m\u001b[39m.\u001b[39m_agenerate(m, stop\u001b[39m=\u001b[39mstop)\n\u001b[1;32m 121\u001b[0m \u001b[39mfor\u001b[39;00m m \u001b[39min\u001b[39;00m messages\n\u001b[1;32m 122\u001b[0m ]\n\u001b[1;32m 123\u001b[0m )\n\u001b[1;32m 124\u001b[0m \u001b[39mexcept\u001b[39;00m (\u001b[39mKeyboardInterrupt\u001b[39;00m, \u001b[39mException\u001b[39;00m) \u001b[39mas\u001b[39;00m e:\n\u001b[1;32m 125\u001b[0m \u001b[39mawait\u001b[39;00m run_manager\u001b[39m.\u001b[39mon_llm_error(e)\n",
"File \u001b[0;32m~/anaconda3/lib/python3.10/asyncio/tasks.py:304\u001b[0m, in \u001b[0;36mTask.__wakeup\u001b[0;34m(self, future)\u001b[0m\n\u001b[1;32m 302\u001b[0m \u001b[39mdef\u001b[39;00m \u001b[39m__wakeup\u001b[39m(\u001b[39mself\u001b[39m, future):\n\u001b[1;32m 303\u001b[0m \u001b[39mtry\u001b[39;00m:\n\u001b[0;32m--> 304\u001b[0m future\u001b[39m.\u001b[39;49mresult()\n\u001b[1;32m 305\u001b[0m \u001b[39mexcept\u001b[39;00m \u001b[39mBaseException\u001b[39;00m \u001b[39mas\u001b[39;00m exc:\n\u001b[1;32m 306\u001b[0m \u001b[39m# This may also be a cancellation.\u001b[39;00m\n\u001b[1;32m 307\u001b[0m \u001b[39mself\u001b[39m\u001b[39m.\u001b[39m__step(exc)\n",
"File \u001b[0;32m~/anaconda3/lib/python3.10/asyncio/tasks.py:232\u001b[0m, in \u001b[0;36mTask.__step\u001b[0;34m(***failed resolving arguments***)\u001b[0m\n\u001b[1;32m 228\u001b[0m \u001b[39mtry\u001b[39;00m:\n\u001b[1;32m 229\u001b[0m \u001b[39mif\u001b[39;00m exc \u001b[39mis\u001b[39;00m \u001b[39mNone\u001b[39;00m:\n\u001b[1;32m 230\u001b[0m \u001b[39m# We use the `send` method directly, because coroutines\u001b[39;00m\n\u001b[1;32m 231\u001b[0m \u001b[39m# don't have `__iter__` and `__next__` methods.\u001b[39;00m\n\u001b[0;32m--> 232\u001b[0m result \u001b[39m=\u001b[39m coro\u001b[39m.\u001b[39;49msend(\u001b[39mNone\u001b[39;49;00m)\n\u001b[1;32m 233\u001b[0m \u001b[39melse\u001b[39;00m:\n\u001b[1;32m 234\u001b[0m result \u001b[39m=\u001b[39m coro\u001b[39m.\u001b[39mthrow(exc)\n",
"File \u001b[0;32m~/anaconda3/lib/python3.10/site-packages/langchain/chat_models/openai.py:318\u001b[0m, in \u001b[0;36mChatOpenAI._agenerate\u001b[0;34m(self, messages, stop, run_manager)\u001b[0m\n\u001b[1;32m 316\u001b[0m \u001b[39mreturn\u001b[39;00m ChatResult(generations\u001b[39m=\u001b[39m[ChatGeneration(message\u001b[39m=\u001b[39mmessage)])\n\u001b[1;32m 317\u001b[0m \u001b[39melse\u001b[39;00m:\n\u001b[0;32m--> 318\u001b[0m response \u001b[39m=\u001b[39m \u001b[39mawait\u001b[39;00m acompletion_with_retry(\n\u001b[1;32m 319\u001b[0m \u001b[39mself\u001b[39m, messages\u001b[39m=\u001b[39mmessage_dicts, \u001b[39m*\u001b[39m\u001b[39m*\u001b[39mparams\n\u001b[1;32m 320\u001b[0m )\n\u001b[1;32m 321\u001b[0m \u001b[39mreturn\u001b[39;00m \u001b[39mself\u001b[39m\u001b[39m.\u001b[39m_create_chat_result(response)\n",
"File \u001b[0;32m~/anaconda3/lib/python3.10/site-packages/langchain/chat_models/openai.py:67\u001b[0m, in \u001b[0;36macompletion_with_retry\u001b[0;34m(llm, **kwargs)\u001b[0m\n\u001b[1;32m 62\u001b[0m \u001b[39m@retry_decorator\u001b[39m\n\u001b[1;32m 63\u001b[0m \u001b[39masync\u001b[39;00m \u001b[39mdef\u001b[39;00m \u001b[39m_completion_with_retry\u001b[39m(\u001b[39m*\u001b[39m\u001b[39m*\u001b[39mkwargs: Any) \u001b[39m-\u001b[39m\u001b[39m>\u001b[39m Any:\n\u001b[1;32m 64\u001b[0m \u001b[39m# Use OpenAI's async api https://github.com/openai/openai-python#async-api\u001b[39;00m\n\u001b[1;32m 65\u001b[0m \u001b[39mreturn\u001b[39;00m \u001b[39mawait\u001b[39;00m llm\u001b[39m.\u001b[39mclient\u001b[39m.\u001b[39macreate(\u001b[39m*\u001b[39m\u001b[39m*\u001b[39mkwargs)\n\u001b[0;32m---> 67\u001b[0m \u001b[39mreturn\u001b[39;00m \u001b[39mawait\u001b[39;00m _completion_with_retry(\u001b[39m*\u001b[39m\u001b[39m*\u001b[39mkwargs)\n",
"File \u001b[0;32m~/anaconda3/lib/python3.10/site-packages/tenacity/_asyncio.py:88\u001b[0m, in \u001b[0;36mAsyncRetrying.wraps.<locals>.async_wrapped\u001b[0;34m(*args, **kwargs)\u001b[0m\n\u001b[1;32m 86\u001b[0m \u001b[39m@functools\u001b[39m\u001b[39m.\u001b[39mwraps(fn)\n\u001b[1;32m 87\u001b[0m \u001b[39masync\u001b[39;00m \u001b[39mdef\u001b[39;00m \u001b[39masync_wrapped\u001b[39m(\u001b[39m*\u001b[39margs: t\u001b[39m.\u001b[39mAny, \u001b[39m*\u001b[39m\u001b[39m*\u001b[39mkwargs: t\u001b[39m.\u001b[39mAny) \u001b[39m-\u001b[39m\u001b[39m>\u001b[39m t\u001b[39m.\u001b[39mAny:\n\u001b[0;32m---> 88\u001b[0m \u001b[39mreturn\u001b[39;00m \u001b[39mawait\u001b[39;00m fn(\u001b[39m*\u001b[39margs, \u001b[39m*\u001b[39m\u001b[39m*\u001b[39mkwargs)\n",
"File \u001b[0;32m~/anaconda3/lib/python3.10/site-packages/tenacity/_asyncio.py:47\u001b[0m, in \u001b[0;36mAsyncRetrying.__call__\u001b[0;34m(self, fn, *args, **kwargs)\u001b[0m\n\u001b[1;32m 45\u001b[0m retry_state \u001b[39m=\u001b[39m RetryCallState(retry_object\u001b[39m=\u001b[39m\u001b[39mself\u001b[39m, fn\u001b[39m=\u001b[39mfn, args\u001b[39m=\u001b[39margs, kwargs\u001b[39m=\u001b[39mkwargs)\n\u001b[1;32m 46\u001b[0m \u001b[39mwhile\u001b[39;00m \u001b[39mTrue\u001b[39;00m:\n\u001b[0;32m---> 47\u001b[0m do \u001b[39m=\u001b[39m \u001b[39mself\u001b[39;49m\u001b[39m.\u001b[39;49miter(retry_state\u001b[39m=\u001b[39;49mretry_state)\n\u001b[1;32m 48\u001b[0m \u001b[39mif\u001b[39;00m \u001b[39misinstance\u001b[39m(do, DoAttempt):\n\u001b[1;32m 49\u001b[0m \u001b[39mtry\u001b[39;00m:\n",
"File \u001b[0;32m~/anaconda3/lib/python3.10/site-packages/tenacity/__init__.py:325\u001b[0m, in \u001b[0;36mBaseRetrying.iter\u001b[0;34m(self, retry_state)\u001b[0m\n\u001b[1;32m 323\u001b[0m retry_exc \u001b[39m=\u001b[39m \u001b[39mself\u001b[39m\u001b[39m.\u001b[39mretry_error_cls(fut)\n\u001b[1;32m 324\u001b[0m \u001b[39mif\u001b[39;00m \u001b[39mself\u001b[39m\u001b[39m.\u001b[39mreraise:\n\u001b[0;32m--> 325\u001b[0m \u001b[39mraise\u001b[39;00m retry_exc\u001b[39m.\u001b[39;49mreraise()\n\u001b[1;32m 326\u001b[0m \u001b[39mraise\u001b[39;00m retry_exc \u001b[39mfrom\u001b[39;00m \u001b[39mfut\u001b[39;00m\u001b[39m.\u001b[39;00m\u001b[39mexception\u001b[39;00m()\n\u001b[1;32m 328\u001b[0m \u001b[39mif\u001b[39;00m \u001b[39mself\u001b[39m\u001b[39m.\u001b[39mwait:\n",
"File \u001b[0;32m~/anaconda3/lib/python3.10/site-packages/tenacity/__init__.py:158\u001b[0m, in \u001b[0;36mRetryError.reraise\u001b[0;34m(self)\u001b[0m\n\u001b[1;32m 156\u001b[0m \u001b[39mdef\u001b[39;00m \u001b[39mreraise\u001b[39m(\u001b[39mself\u001b[39m) \u001b[39m-\u001b[39m\u001b[39m>\u001b[39m t\u001b[39m.\u001b[39mNoReturn:\n\u001b[1;32m 157\u001b[0m \u001b[39mif\u001b[39;00m \u001b[39mself\u001b[39m\u001b[39m.\u001b[39mlast_attempt\u001b[39m.\u001b[39mfailed:\n\u001b[0;32m--> 158\u001b[0m \u001b[39mraise\u001b[39;00m \u001b[39mself\u001b[39;49m\u001b[39m.\u001b[39;49mlast_attempt\u001b[39m.\u001b[39;49mresult()\n\u001b[1;32m 159\u001b[0m \u001b[39mraise\u001b[39;00m \u001b[39mself\u001b[39m\n",
"File \u001b[0;32m~/anaconda3/lib/python3.10/concurrent/futures/_base.py:451\u001b[0m, in \u001b[0;36mFuture.result\u001b[0;34m(self, timeout)\u001b[0m\n\u001b[1;32m 449\u001b[0m \u001b[39mraise\u001b[39;00m CancelledError()\n\u001b[1;32m 450\u001b[0m \u001b[39melif\u001b[39;00m \u001b[39mself\u001b[39m\u001b[39m.\u001b[39m_state \u001b[39m==\u001b[39m FINISHED:\n\u001b[0;32m--> 451\u001b[0m \u001b[39mreturn\u001b[39;00m \u001b[39mself\u001b[39;49m\u001b[39m.\u001b[39;49m__get_result()\n\u001b[1;32m 453\u001b[0m \u001b[39mself\u001b[39m\u001b[39m.\u001b[39m_condition\u001b[39m.\u001b[39mwait(timeout)\n\u001b[1;32m 455\u001b[0m \u001b[39mif\u001b[39;00m \u001b[39mself\u001b[39m\u001b[39m.\u001b[39m_state \u001b[39min\u001b[39;00m [CANCELLED, CANCELLED_AND_NOTIFIED]:\n",
"File \u001b[0;32m~/anaconda3/lib/python3.10/concurrent/futures/_base.py:403\u001b[0m, in \u001b[0;36mFuture.__get_result\u001b[0;34m(self)\u001b[0m\n\u001b[1;32m 401\u001b[0m \u001b[39mif\u001b[39;00m \u001b[39mself\u001b[39m\u001b[39m.\u001b[39m_exception:\n\u001b[1;32m 402\u001b[0m \u001b[39mtry\u001b[39;00m:\n\u001b[0;32m--> 403\u001b[0m \u001b[39mraise\u001b[39;00m \u001b[39mself\u001b[39m\u001b[39m.\u001b[39m_exception\n\u001b[1;32m 404\u001b[0m \u001b[39mfinally\u001b[39;00m:\n\u001b[1;32m 405\u001b[0m \u001b[39m# Break a reference cycle with the exception in self._exception\u001b[39;00m\n\u001b[1;32m 406\u001b[0m \u001b[39mself\u001b[39m \u001b[39m=\u001b[39m \u001b[39mNone\u001b[39;00m\n",
"File \u001b[0;32m~/anaconda3/lib/python3.10/site-packages/tenacity/_asyncio.py:50\u001b[0m, in \u001b[0;36mAsyncRetrying.__call__\u001b[0;34m(self, fn, *args, **kwargs)\u001b[0m\n\u001b[1;32m 48\u001b[0m \u001b[39mif\u001b[39;00m \u001b[39misinstance\u001b[39m(do, DoAttempt):\n\u001b[1;32m 49\u001b[0m \u001b[39mtry\u001b[39;00m:\n\u001b[0;32m---> 50\u001b[0m result \u001b[39m=\u001b[39m \u001b[39mawait\u001b[39;00m fn(\u001b[39m*\u001b[39margs, \u001b[39m*\u001b[39m\u001b[39m*\u001b[39mkwargs)\n\u001b[1;32m 51\u001b[0m \u001b[39mexcept\u001b[39;00m \u001b[39mBaseException\u001b[39;00m: \u001b[39m# noqa: B902\u001b[39;00m\n\u001b[1;32m 52\u001b[0m retry_state\u001b[39m.\u001b[39mset_exception(sys\u001b[39m.\u001b[39mexc_info()) \u001b[39m# type: ignore[arg-type]\u001b[39;00m\n",
"File \u001b[0;32m~/anaconda3/lib/python3.10/site-packages/langchain/chat_models/openai.py:65\u001b[0m, in \u001b[0;36macompletion_with_retry.<locals>._completion_with_retry\u001b[0;34m(**kwargs)\u001b[0m\n\u001b[1;32m 62\u001b[0m \u001b[39m@retry_decorator\u001b[39m\n\u001b[1;32m 63\u001b[0m \u001b[39masync\u001b[39;00m \u001b[39mdef\u001b[39;00m \u001b[39m_completion_with_retry\u001b[39m(\u001b[39m*\u001b[39m\u001b[39m*\u001b[39mkwargs: Any) \u001b[39m-\u001b[39m\u001b[39m>\u001b[39m Any:\n\u001b[1;32m 64\u001b[0m \u001b[39m# Use OpenAI's async api https://github.com/openai/openai-python#async-api\u001b[39;00m\n\u001b[0;32m---> 65\u001b[0m \u001b[39mreturn\u001b[39;00m \u001b[39mawait\u001b[39;00m llm\u001b[39m.\u001b[39mclient\u001b[39m.\u001b[39macreate(\u001b[39m*\u001b[39m\u001b[39m*\u001b[39mkwargs)\n",
"File \u001b[0;32m~/anaconda3/lib/python3.10/site-packages/openai/api_resources/chat_completion.py:45\u001b[0m, in \u001b[0;36mChatCompletion.acreate\u001b[0;34m(cls, *args, **kwargs)\u001b[0m\n\u001b[1;32m 43\u001b[0m \u001b[39mwhile\u001b[39;00m \u001b[39mTrue\u001b[39;00m:\n\u001b[1;32m 44\u001b[0m \u001b[39mtry\u001b[39;00m:\n\u001b[0;32m---> 45\u001b[0m \u001b[39mreturn\u001b[39;00m \u001b[39mawait\u001b[39;00m \u001b[39msuper\u001b[39m()\u001b[39m.\u001b[39macreate(\u001b[39m*\u001b[39margs, \u001b[39m*\u001b[39m\u001b[39m*\u001b[39mkwargs)\n\u001b[1;32m 46\u001b[0m \u001b[39mexcept\u001b[39;00m TryAgain \u001b[39mas\u001b[39;00m e:\n\u001b[1;32m 47\u001b[0m \u001b[39mif\u001b[39;00m timeout \u001b[39mis\u001b[39;00m \u001b[39mnot\u001b[39;00m \u001b[39mNone\u001b[39;00m \u001b[39mand\u001b[39;00m time\u001b[39m.\u001b[39mtime() \u001b[39m>\u001b[39m start \u001b[39m+\u001b[39m timeout:\n",
"File \u001b[0;32m~/anaconda3/lib/python3.10/site-packages/openai/api_resources/abstract/engine_api_resource.py:217\u001b[0m, in \u001b[0;36mEngineAPIResource.acreate\u001b[0;34m(cls, api_key, api_base, api_type, request_id, api_version, organization, **params)\u001b[0m\n\u001b[1;32m 192\u001b[0m \u001b[39m@classmethod\u001b[39m\n\u001b[1;32m 193\u001b[0m \u001b[39masync\u001b[39;00m \u001b[39mdef\u001b[39;00m \u001b[39macreate\u001b[39m(\n\u001b[1;32m 194\u001b[0m \u001b[39mcls\u001b[39m,\n\u001b[0;32m (...)\u001b[0m\n\u001b[1;32m 201\u001b[0m \u001b[39m*\u001b[39m\u001b[39m*\u001b[39mparams,\n\u001b[1;32m 202\u001b[0m ):\n\u001b[1;32m 203\u001b[0m (\n\u001b[1;32m 204\u001b[0m deployment_id,\n\u001b[1;32m 205\u001b[0m engine,\n\u001b[0;32m (...)\u001b[0m\n\u001b[1;32m 215\u001b[0m api_key, api_base, api_type, api_version, organization, \u001b[39m*\u001b[39m\u001b[39m*\u001b[39mparams\n\u001b[1;32m 216\u001b[0m )\n\u001b[0;32m--> 217\u001b[0m response, _, api_key \u001b[39m=\u001b[39m \u001b[39mawait\u001b[39;00m requestor\u001b[39m.\u001b[39marequest(\n\u001b[1;32m 218\u001b[0m \u001b[39m\"\u001b[39m\u001b[39mpost\u001b[39m\u001b[39m\"\u001b[39m,\n\u001b[1;32m 219\u001b[0m url,\n\u001b[1;32m 220\u001b[0m params\u001b[39m=\u001b[39mparams,\n\u001b[1;32m 221\u001b[0m headers\u001b[39m=\u001b[39mheaders,\n\u001b[1;32m 222\u001b[0m stream\u001b[39m=\u001b[39mstream,\n\u001b[1;32m 223\u001b[0m request_id\u001b[39m=\u001b[39mrequest_id,\n\u001b[1;32m 224\u001b[0m request_timeout\u001b[39m=\u001b[39mrequest_timeout,\n\u001b[1;32m 225\u001b[0m )\n\u001b[1;32m 227\u001b[0m \u001b[39mif\u001b[39;00m stream:\n\u001b[1;32m 228\u001b[0m \u001b[39m# must be an iterator\u001b[39;00m\n\u001b[1;32m 229\u001b[0m \u001b[39massert\u001b[39;00m \u001b[39mnot\u001b[39;00m \u001b[39misinstance\u001b[39m(response, OpenAIResponse)\n",
"File \u001b[0;32m~/anaconda3/lib/python3.10/site-packages/openai/api_requestor.py:300\u001b[0m, in \u001b[0;36mAPIRequestor.arequest\u001b[0;34m(self, method, url, params, headers, files, stream, request_id, request_timeout)\u001b[0m\n\u001b[1;32m 298\u001b[0m session \u001b[39m=\u001b[39m \u001b[39mawait\u001b[39;00m ctx\u001b[39m.\u001b[39m\u001b[39m__aenter__\u001b[39m()\n\u001b[1;32m 299\u001b[0m \u001b[39mtry\u001b[39;00m:\n\u001b[0;32m--> 300\u001b[0m result \u001b[39m=\u001b[39m \u001b[39mawait\u001b[39;00m \u001b[39mself\u001b[39m\u001b[39m.\u001b[39marequest_raw(\n\u001b[1;32m 301\u001b[0m method\u001b[39m.\u001b[39mlower(),\n\u001b[1;32m 302\u001b[0m url,\n\u001b[1;32m 303\u001b[0m session,\n\u001b[1;32m 304\u001b[0m params\u001b[39m=\u001b[39mparams,\n\u001b[1;32m 305\u001b[0m supplied_headers\u001b[39m=\u001b[39mheaders,\n\u001b[1;32m 306\u001b[0m files\u001b[39m=\u001b[39mfiles,\n\u001b[1;32m 307\u001b[0m request_id\u001b[39m=\u001b[39mrequest_id,\n\u001b[1;32m 308\u001b[0m request_timeout\u001b[39m=\u001b[39mrequest_timeout,\n\u001b[1;32m 309\u001b[0m )\n\u001b[1;32m 310\u001b[0m resp, got_stream \u001b[39m=\u001b[39m \u001b[39mawait\u001b[39;00m \u001b[39mself\u001b[39m\u001b[39m.\u001b[39m_interpret_async_response(result, stream)\n\u001b[1;32m 311\u001b[0m \u001b[39mexcept\u001b[39;00m \u001b[39mException\u001b[39;00m:\n",
"File \u001b[0;32m~/anaconda3/lib/python3.10/site-packages/openai/api_requestor.py:605\u001b[0m, in \u001b[0;36mAPIRequestor.arequest_raw\u001b[0;34m(self, method, url, session, params, supplied_headers, files, request_id, request_timeout)\u001b[0m\n\u001b[1;32m 603\u001b[0m \u001b[39mraise\u001b[39;00m error\u001b[39m.\u001b[39mTimeout(\u001b[39m\"\u001b[39m\u001b[39mRequest timed out\u001b[39m\u001b[39m\"\u001b[39m) \u001b[39mfrom\u001b[39;00m \u001b[39me\u001b[39;00m\n\u001b[1;32m 604\u001b[0m \u001b[39mexcept\u001b[39;00m aiohttp\u001b[39m.\u001b[39mClientError \u001b[39mas\u001b[39;00m e:\n\u001b[0;32m--> 605\u001b[0m \u001b[39mraise\u001b[39;00m error\u001b[39m.\u001b[39mAPIConnectionError(\u001b[39m\"\u001b[39m\u001b[39mError communicating with OpenAI\u001b[39m\u001b[39m\"\u001b[39m) \u001b[39mfrom\u001b[39;00m \u001b[39me\u001b[39;00m\n",
"\u001b[0;31mAPIConnectionError\u001b[0m: Error communicating with OpenAI"
]
}
],
"source": [
"result = await agent_chain.arun(\"What are the headers on langchain.com?\")\n",
"print(result)"
]
}
],
"metadata": {
"kernelspec": {
"display_name": "base",
"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.10.10"
},
"orig_nbformat": 4
},
"nbformat": 4,
"nbformat_minor": 2
}
|