Commit d4f2d0fd

t-asutedjo <100279393+t-asutedjo@users.noreply.github.com>
2022-06-22 01:01:27
Add azure embeddings example notebook (#104)
* Remove invalid inheritances from Embedding and Completion - Remove ListableAPIResource inheritance - Remove DeletableAPIResource * Add embeddings example notebook * bump version
1 parent 0e37b49
Changed files (3)
examples
openai
examples/azure/embeddings.ipynb
@@ -0,0 +1,194 @@
+{
+ "cells": [
+  {
+   "cell_type": "markdown",
+   "metadata": {},
+   "source": [
+    "# Azure embeddings example\n",
+    "In this example we'll try to go over all operations for embeddings that can be done using the Azure endpoints. \\\n",
+    "This example focuses on finetuning but touches on the majority of operations that are also available using the API. This example is meant to be a quick way of showing simple operations and is not meant as a tutorial."
+   ]
+  },
+  {
+   "cell_type": "code",
+   "execution_count": null,
+   "metadata": {},
+   "outputs": [],
+   "source": [
+    "import openai\n",
+    "from openai import cli"
+   ]
+  },
+  {
+   "cell_type": "markdown",
+   "metadata": {},
+   "source": [
+    "## Setup\n",
+    "In the following section the endpoint and key need to be set up of the next sections to work. \\\n",
+    "Please go to https://portal.azure.com, find your resource and then under \"Resource Management\" -> \"Keys and Endpoints\" look for the \"Endpoint\" value and one of the Keys. They will act as api_base and api_key in the code below."
+   ]
+  },
+  {
+   "cell_type": "code",
+   "execution_count": null,
+   "metadata": {},
+   "outputs": [],
+   "source": [
+    "openai.api_key = ''  # Please add your api key here\n",
+    "openai.api_base = '' # Please add your endpoint here\n",
+    "\n",
+    "openai.api_type = 'azure'\n",
+    "openai.api_version = '2022-03-01-preview' # this may change in the future"
+   ]
+  },
+  {
+   "cell_type": "markdown",
+   "metadata": {},
+   "source": [
+    "## Deployments\n",
+    "In this section we are going to create a deployment using the finetune model that we just adapted and then used the deployment to create a simple completion operation."
+   ]
+  },
+  {
+   "cell_type": "markdown",
+   "metadata": {},
+   "source": [
+    "### Deployments: Create Manually\n",
+    "Let's create a deployment using the text-similarity-curie-001 engine. You can create a new deployment by going to your Resource in your portal under \"Resource Management\" -> \"Deployments\"."
+   ]
+  },
+  {
+   "cell_type": "markdown",
+   "metadata": {},
+   "source": [
+    "### (Optional) Deployments: Create Programatically\n",
+    "We can also create a deployment using code:"
+   ]
+  },
+  {
+   "cell_type": "code",
+   "execution_count": null,
+   "metadata": {},
+   "outputs": [],
+   "source": [
+    "model = \"text-similarity-curie-001\"\n",
+    "\n",
+    "# Now let's create the deployment\n",
+    "print(f'Creating a new deployment with model: {model}')\n",
+    "result = openai.Deployment.create(model=model, scale_settings={\"scale_type\":\"manual\", \"capacity\": 1})\n",
+    "deployment_id = result[\"id\"]"
+   ]
+  },
+  {
+   "cell_type": "markdown",
+   "metadata": {},
+   "source": [
+    "### (Optional) Deployments: Retrieving\n",
+    "Now let's check the status of the newly created deployment"
+   ]
+  },
+  {
+   "cell_type": "code",
+   "execution_count": null,
+   "metadata": {},
+   "outputs": [],
+   "source": [
+    "print(f'Checking for deployment status.')\n",
+    "resp = openai.Deployment.retrieve(id=deployment_id)\n",
+    "status = resp[\"status\"]\n",
+    "print(f'Deployment {deployment_id} is with status: {status}')"
+   ]
+  },
+  {
+   "cell_type": "markdown",
+   "metadata": {},
+   "source": [
+    "### Deployments: Listing\n",
+    "Now because creating a new deployment takes a long time, let's look in the subscription for an already finished deployment that succeeded."
+   ]
+  },
+  {
+   "cell_type": "code",
+   "execution_count": null,
+   "metadata": {},
+   "outputs": [],
+   "source": [
+    "print('While deployment running, selecting a completed one.')\n",
+    "deployment_id = None\n",
+    "result = openai.Deployment.list()\n",
+    "for deployment in result.data:\n",
+    "    if deployment[\"status\"] == \"succeeded\":\n",
+    "        deployment_id = deployment[\"id\"]\n",
+    "        break\n",
+    "\n",
+    "if not deployment_id:\n",
+    "    print('No deployment with status: succeeded found.')\n",
+    "else:\n",
+    "    print(f'Found a successful deployment with id: {deployment_id}.')"
+   ]
+  },
+  {
+   "cell_type": "markdown",
+   "metadata": {},
+   "source": [
+    "### Embeddings\n",
+    "Now let's send a sample embedding to the deployment."
+   ]
+  },
+  {
+   "cell_type": "code",
+   "execution_count": null,
+   "metadata": {},
+   "outputs": [],
+   "source": [
+    "embeddings = openai.Embedding.create(engine=deployment_id,\n",
+    "                                     input=\"The food was delicious and the waiter...\")\n",
+    "                                \n",
+    "print(embeddings)"
+   ]
+  },
+  {
+   "cell_type": "markdown",
+   "metadata": {},
+   "source": [
+    "### (Optional) Deployments: Delete\n",
+    "Finally let's delete the deployment"
+   ]
+  },
+  {
+   "cell_type": "code",
+   "execution_count": null,
+   "metadata": {},
+   "outputs": [],
+   "source": [
+    "print(f'Deleting deployment: {deployment_id}')\n",
+    "openai.Deployment.delete(sid=deployment_id)"
+   ]
+  }
+ ],
+ "metadata": {
+  "interpreter": {
+   "hash": "31f2aee4e71d21fbe5cf8b01ff0e069b9275f58929596ceb00d14d90e3e16cd6"
+  },
+  "kernelspec": {
+   "display_name": "Python 3.8.10 64-bit",
+   "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.8.10"
+  },
+  "orig_nbformat": 4
+ },
+ "nbformat": 4,
+ "nbformat_minor": 2
+}
openai/api_resources/completion.py
@@ -6,7 +6,7 @@ from openai.api_resources.abstract.engine_api_resource import EngineAPIResource
 from openai.error import InvalidRequestError, TryAgain
 
 
-class Completion(EngineAPIResource, ListableAPIResource, DeletableAPIResource):
+class Completion(EngineAPIResource):
     engine_required = False
     OBJECT_NAME = "completions"
 
openai/api_resources/embedding.py
@@ -9,7 +9,7 @@ from openai.api_resources.abstract.engine_api_resource import EngineAPIResource
 from openai.error import InvalidRequestError, TryAgain
 
 
-class Embedding(EngineAPIResource, ListableAPIResource, DeletableAPIResource):
+class Embedding(EngineAPIResource):
     engine_required = False
     OBJECT_NAME = "embeddings"