diff --git a/examples/azure/chat.ipynb b/examples/azure/chat.ipynb index 9699018e..46958bc6 100644 --- a/examples/azure/chat.ipynb +++ b/examples/azure/chat.ipynb @@ -89,6 +89,45 @@ "# openai.api_key = token.token" ] }, + { + "attachments": {}, + "cell_type": "markdown", + "metadata": {}, + "source": [ + "A token is valid for a period of time, after which it will expire. To ensure a valid token is sent with every request, you can refresh an expiring token by hooking into requests.auth:" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "import typing\n", + "import time\n", + "import requests\n", + "if typing.TYPE_CHECKING:\n", + " from azure.core.credentials import TokenCredential\n", + "\n", + "class TokenRefresh(requests.auth.AuthBase):\n", + "\n", + " def __init__(self, credential: \"TokenCredential\", scopes: typing.List[str]) -> None:\n", + " self.credential = credential\n", + " self.scopes = scopes\n", + " self.cached_token: typing.Optional[str] = None\n", + "\n", + " def __call__(self, req):\n", + " if not self.cached_token or self.cached_token.expires_on - time.time() < 300:\n", + " self.cached_token = self.credential.get_token(*self.scopes)\n", + " req.headers[\"Authorization\"] = f\"Bearer {self.cached_token.token}\"\n", + " return req\n", + "\n", + "session = requests.Session()\n", + "session.auth = TokenRefresh(default_credential, [\"https://cognitiveservices.azure.com/.default\"])\n", + "\n", + "openai.requestssession = session" + ] + }, { "attachments": {}, "cell_type": "markdown", diff --git a/examples/azure/completions.ipynb b/examples/azure/completions.ipynb index 9f5aea8c..72bfbc9b 100644 --- a/examples/azure/completions.ipynb +++ b/examples/azure/completions.ipynb @@ -89,6 +89,45 @@ "# openai.api_key = token.token" ] }, + { + "attachments": {}, + "cell_type": "markdown", + "metadata": {}, + "source": [ + "A token is valid for a period of time, after which it will expire. To ensure a valid token is sent with every request, you can refresh an expiring token by hooking into requests.auth:" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "import typing\n", + "import time\n", + "import requests\n", + "if typing.TYPE_CHECKING:\n", + " from azure.core.credentials import TokenCredential\n", + "\n", + "class TokenRefresh(requests.auth.AuthBase):\n", + "\n", + " def __init__(self, credential: \"TokenCredential\", scopes: typing.List[str]) -> None:\n", + " self.credential = credential\n", + " self.scopes = scopes\n", + " self.cached_token: typing.Optional[str] = None\n", + "\n", + " def __call__(self, req):\n", + " if not self.cached_token or self.cached_token.expires_on - time.time() < 300:\n", + " self.cached_token = self.credential.get_token(*self.scopes)\n", + " req.headers[\"Authorization\"] = f\"Bearer {self.cached_token.token}\"\n", + " return req\n", + "\n", + "session = requests.Session()\n", + "session.auth = TokenRefresh(default_credential, [\"https://cognitiveservices.azure.com/.default\"])\n", + "\n", + "openai.requestssession = session" + ] + }, { "attachments": {}, "cell_type": "markdown", diff --git a/examples/azure/embeddings.ipynb b/examples/azure/embeddings.ipynb index d4961a10..27dc6e5a 100644 --- a/examples/azure/embeddings.ipynb +++ b/examples/azure/embeddings.ipynb @@ -89,6 +89,45 @@ "# openai.api_key = token.token" ] }, + { + "attachments": {}, + "cell_type": "markdown", + "metadata": {}, + "source": [ + "A token is valid for a period of time, after which it will expire. To ensure a valid token is sent with every request, you can refresh an expiring token by hooking into requests.auth:" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "import typing\n", + "import time\n", + "import requests\n", + "if typing.TYPE_CHECKING:\n", + " from azure.core.credentials import TokenCredential\n", + "\n", + "class TokenRefresh(requests.auth.AuthBase):\n", + "\n", + " def __init__(self, credential: \"TokenCredential\", scopes: typing.List[str]) -> None:\n", + " self.credential = credential\n", + " self.scopes = scopes\n", + " self.cached_token: typing.Optional[str] = None\n", + "\n", + " def __call__(self, req):\n", + " if not self.cached_token or self.cached_token.expires_on - time.time() < 300:\n", + " self.cached_token = self.credential.get_token(*self.scopes)\n", + " req.headers[\"Authorization\"] = f\"Bearer {self.cached_token.token}\"\n", + " return req\n", + "\n", + "session = requests.Session()\n", + "session.auth = TokenRefresh(default_credential, [\"https://cognitiveservices.azure.com/.default\"])\n", + "\n", + "openai.requestssession = session" + ] + }, { "attachments": {}, "cell_type": "markdown",