Commit a7e3edf0
Changed files (12)
examples
openai
examples/azure/embeddings.ipynb
@@ -141,7 +141,7 @@
"metadata": {},
"outputs": [],
"source": [
- "embeddings = openai.Embedding.create(engine=deployment_id,\n",
+ "embeddings = openai.Embedding.create(deployment_id=deployment_id,\n",
" input=\"The food was delicious and the waiter...\")\n",
" \n",
"print(embeddings)"
examples/azure/finetuning.ipynb
@@ -414,7 +414,7 @@
"source": [
"print('Sending a test completion job')\n",
"start_phrase = 'When I go to the store, I want a'\n",
- "response = openai.Completion.create(engine=deployment_id, prompt=start_phrase, max_tokens=4)\n",
+ "response = openai.Completion.create(deployment_id=deployment_id, prompt=start_phrase, max_tokens=4)\n",
"text = response['choices'][0]['text'].replace('\\n', '').replace(' .', '.').strip()\n",
"print(f'\"{start_phrase} {text}\"')\n"
]
openai/api_resources/abstract/api_resource.py
@@ -4,6 +4,7 @@ import openai
from openai import api_requestor, error, util
from openai.openai_object import OpenAIObject
from openai.util import ApiType
+from typing import Optional
class APIResource(OpenAIObject):
@@ -110,7 +111,7 @@ class APIResource(OpenAIObject):
)
@classmethod
- def _get_api_type_and_version(cls, api_type: str, api_version: str):
+ def _get_api_type_and_version(cls, api_type: Optional[str] = None, api_version: Optional[str] = None):
typed_api_type = ApiType.from_str(
api_type) if api_type else ApiType.from_str(openai.api_type)
typed_api_version = api_version or openai.api_version
openai/api_resources/abstract/engine_api_resource.py
@@ -13,7 +13,6 @@ MAX_TIMEOUT = 20
class EngineAPIResource(APIResource):
- engine_required = True
plain_old_data = False
def __init__(self, engine: Optional[str] = None, **kwargs):
@@ -71,14 +70,24 @@ class EngineAPIResource(APIResource):
organization=None,
**params,
):
- engine = params.pop("engine", None)
+ deployment_id = params.pop("deployment_id", None)
+ engine = params.pop("engine", deployment_id)
+ model = params.get("model", None)
timeout = params.pop("timeout", None)
stream = params.get("stream", False)
headers = params.pop("headers", None)
- if engine is None and cls.engine_required:
- raise error.InvalidRequestError(
- "Must provide an 'engine' parameter to create a %s" % cls, "engine"
- )
+
+ typed_api_type = cls._get_api_type_and_version(api_type=api_type)[0]
+ if typed_api_type in (util.ApiType.AZURE, util.ApiType.AZURE_AD):
+ if deployment_id is None and engine is None:
+ raise error.InvalidRequestError(
+ "Must provide an 'engine' or 'deployment_id' parameter to create a %s" % cls, "engine"
+ )
+ else:
+ if model is None and engine is None:
+ raise error.InvalidRequestError(
+ "Must provide an 'engine' or 'model' parameter to create a %s" % cls, "engine"
+ )
if timeout is None:
# No special timeout handling
openai/api_resources/completion.py
@@ -3,11 +3,10 @@ import time
from openai import util
from openai.api_resources.abstract import DeletableAPIResource, ListableAPIResource
from openai.api_resources.abstract.engine_api_resource import EngineAPIResource
-from openai.error import InvalidRequestError, TryAgain
+from openai.error import TryAgain
class Completion(EngineAPIResource):
- engine_required = False
OBJECT_NAME = "completions"
@classmethod
@@ -20,11 +19,6 @@ class Completion(EngineAPIResource):
"""
start = time.time()
timeout = kwargs.pop("timeout", None)
- if kwargs.get("model", None) is None and kwargs.get("engine", None) is None:
- raise InvalidRequestError(
- "Must provide an 'engine' or 'model' parameter to create a Completion.",
- param="engine",
- )
while True:
try:
openai/api_resources/deployment.py
@@ -4,7 +4,6 @@ from openai.error import InvalidRequestError, APIError
class Deployment(CreateableAPIResource, ListableAPIResource, DeletableAPIResource):
- engine_required = False
OBJECT_NAME = "deployments"
@classmethod
openai/api_resources/edit.py
@@ -1,12 +1,11 @@
import time
-from openai import util
+from openai import util, error
from openai.api_resources.abstract.engine_api_resource import EngineAPIResource
-from openai.error import InvalidRequestError, TryAgain
+from openai.error import TryAgain
class Edit(EngineAPIResource):
- engine_required = False
OBJECT_NAME = "edits"
@classmethod
@@ -16,11 +15,12 @@ class Edit(EngineAPIResource):
"""
start = time.time()
timeout = kwargs.pop("timeout", None)
- if kwargs.get("model", None) is None and kwargs.get("engine", None) is None:
- raise InvalidRequestError(
- "Must provide an 'engine' or 'model' parameter to create an Edit.",
- param="engine",
- )
+
+ api_type = kwargs.pop("api_type", None)
+ typed_api_type = cls._get_api_type_and_version(api_type=api_type)[0]
+ if typed_api_type in (util.ApiType.AZURE, util.ApiType.AZURE_AD):
+ raise error.InvalidAPIType(
+ "This operation is not supported by the Azure OpenAI API yet.")
while True:
try:
openai/api_resources/embedding.py
@@ -6,11 +6,10 @@ import numpy as np
from openai import util
from openai.api_resources.abstract import DeletableAPIResource, ListableAPIResource
from openai.api_resources.abstract.engine_api_resource import EngineAPIResource
-from openai.error import InvalidRequestError, TryAgain
+from openai.error import TryAgain
class Embedding(EngineAPIResource):
- engine_required = False
OBJECT_NAME = "embeddings"
@classmethod
@@ -23,11 +22,6 @@ class Embedding(EngineAPIResource):
"""
start = time.time()
timeout = kwargs.pop("timeout", None)
- if kwargs.get("model", None) is None and kwargs.get("engine", None) is None:
- raise InvalidRequestError(
- "Must provide an 'engine' or 'model' parameter to create an Embedding.",
- param="engine",
- )
user_provided_encoding_format = kwargs.get("encoding_format", None)
openai/api_resources/model.py
@@ -2,5 +2,4 @@ from openai.api_resources.abstract import DeletableAPIResource, ListableAPIResou
class Model(ListableAPIResource, DeletableAPIResource):
- engine_required = False
OBJECT_NAME = "models"
openai/api_resources/search.py
@@ -2,11 +2,10 @@ import time
from openai import util
from openai.api_resources.abstract.engine_api_resource import EngineAPIResource
-from openai.error import InvalidRequestError, TryAgain
+from openai.error import TryAgain
class Search(EngineAPIResource):
- engine_required = False
OBJECT_NAME = "search"
@classmethod
@@ -20,11 +19,6 @@ class Search(EngineAPIResource):
start = time.time()
timeout = kwargs.pop("timeout", None)
- if kwargs.get("model", None) is None and kwargs.get("engine", None) is None:
- raise InvalidRequestError(
- "Must provide an 'engine' or 'model' parameter to create a Search.",
- param="engine",
- )
while True:
try:
openai/util.py
@@ -40,7 +40,7 @@ class ApiType(Enum):
return ApiType.OPEN_AI
else:
raise openai.error.InvalidAPIType(
- "The API type provided in invalid. Please select one of the supported API types: 'azure', 'open_ai'"
+ "The API type provided in invalid. Please select one of the supported API types: 'azure', 'azure_ad', 'open_ai'"
)
openai/version.py
@@ -1,1 +1,1 @@
-VERSION = "0.21.0"
+VERSION = "0.22.0"