Thanks to visit codestin.com
Credit goes to github.com

Skip to content

Commit a7e3edf

Browse files
authored
Add deployment_id parameter for azure (openai#109)
* Add deployment_id parameter overload for az * Refactor error messages into engine_api_resource * Add unsupported warning for edit * bump version * Correct optional type annotation * Rebump version * Change unsupported method warning message
1 parent 3005ee5 commit a7e3edf

File tree

12 files changed

+32
-42
lines changed

12 files changed

+32
-42
lines changed

examples/azure/embeddings.ipynb

+1-1
Original file line numberDiff line numberDiff line change
@@ -141,7 +141,7 @@
141141
"metadata": {},
142142
"outputs": [],
143143
"source": [
144-
"embeddings = openai.Embedding.create(engine=deployment_id,\n",
144+
"embeddings = openai.Embedding.create(deployment_id=deployment_id,\n",
145145
" input=\"The food was delicious and the waiter...\")\n",
146146
" \n",
147147
"print(embeddings)"

examples/azure/finetuning.ipynb

+1-1
Original file line numberDiff line numberDiff line change
@@ -414,7 +414,7 @@
414414
"source": [
415415
"print('Sending a test completion job')\n",
416416
"start_phrase = 'When I go to the store, I want a'\n",
417-
"response = openai.Completion.create(engine=deployment_id, prompt=start_phrase, max_tokens=4)\n",
417+
"response = openai.Completion.create(deployment_id=deployment_id, prompt=start_phrase, max_tokens=4)\n",
418418
"text = response['choices'][0]['text'].replace('\\n', '').replace(' .', '.').strip()\n",
419419
"print(f'\"{start_phrase} {text}\"')\n"
420420
]

openai/api_resources/abstract/api_resource.py

+2-1
Original file line numberDiff line numberDiff line change
@@ -4,6 +4,7 @@
44
from openai import api_requestor, error, util
55
from openai.openai_object import OpenAIObject
66
from openai.util import ApiType
7+
from typing import Optional
78

89

910
class APIResource(OpenAIObject):
@@ -110,7 +111,7 @@ def _static_request(
110111
)
111112

112113
@classmethod
113-
def _get_api_type_and_version(cls, api_type: str, api_version: str):
114+
def _get_api_type_and_version(cls, api_type: Optional[str] = None, api_version: Optional[str] = None):
114115
typed_api_type = ApiType.from_str(
115116
api_type) if api_type else ApiType.from_str(openai.api_type)
116117
typed_api_version = api_version or openai.api_version

openai/api_resources/abstract/engine_api_resource.py

+15-6
Original file line numberDiff line numberDiff line change
@@ -13,7 +13,6 @@
1313

1414

1515
class EngineAPIResource(APIResource):
16-
engine_required = True
1716
plain_old_data = False
1817

1918
def __init__(self, engine: Optional[str] = None, **kwargs):
@@ -71,14 +70,24 @@ def create(
7170
organization=None,
7271
**params,
7372
):
74-
engine = params.pop("engine", None)
73+
deployment_id = params.pop("deployment_id", None)
74+
engine = params.pop("engine", deployment_id)
75+
model = params.get("model", None)
7576
timeout = params.pop("timeout", None)
7677
stream = params.get("stream", False)
7778
headers = params.pop("headers", None)
78-
if engine is None and cls.engine_required:
79-
raise error.InvalidRequestError(
80-
"Must provide an 'engine' parameter to create a %s" % cls, "engine"
81-
)
79+
80+
typed_api_type = cls._get_api_type_and_version(api_type=api_type)[0]
81+
if typed_api_type in (util.ApiType.AZURE, util.ApiType.AZURE_AD):
82+
if deployment_id is None and engine is None:
83+
raise error.InvalidRequestError(
84+
"Must provide an 'engine' or 'deployment_id' parameter to create a %s" % cls, "engine"
85+
)
86+
else:
87+
if model is None and engine is None:
88+
raise error.InvalidRequestError(
89+
"Must provide an 'engine' or 'model' parameter to create a %s" % cls, "engine"
90+
)
8291

8392
if timeout is None:
8493
# No special timeout handling

openai/api_resources/completion.py

+1-7
Original file line numberDiff line numberDiff line change
@@ -3,11 +3,10 @@
33
from openai import util
44
from openai.api_resources.abstract import DeletableAPIResource, ListableAPIResource
55
from openai.api_resources.abstract.engine_api_resource import EngineAPIResource
6-
from openai.error import InvalidRequestError, TryAgain
6+
from openai.error import TryAgain
77

88

99
class Completion(EngineAPIResource):
10-
engine_required = False
1110
OBJECT_NAME = "completions"
1211

1312
@classmethod
@@ -20,11 +19,6 @@ def create(cls, *args, **kwargs):
2019
"""
2120
start = time.time()
2221
timeout = kwargs.pop("timeout", None)
23-
if kwargs.get("model", None) is None and kwargs.get("engine", None) is None:
24-
raise InvalidRequestError(
25-
"Must provide an 'engine' or 'model' parameter to create a Completion.",
26-
param="engine",
27-
)
2822

2923
while True:
3024
try:

openai/api_resources/deployment.py

-1
Original file line numberDiff line numberDiff line change
@@ -4,7 +4,6 @@
44

55

66
class Deployment(CreateableAPIResource, ListableAPIResource, DeletableAPIResource):
7-
engine_required = False
87
OBJECT_NAME = "deployments"
98

109
@classmethod

openai/api_resources/edit.py

+8-8
Original file line numberDiff line numberDiff line change
@@ -1,12 +1,11 @@
11
import time
22

3-
from openai import util
3+
from openai import util, error
44
from openai.api_resources.abstract.engine_api_resource import EngineAPIResource
5-
from openai.error import InvalidRequestError, TryAgain
5+
from openai.error import TryAgain
66

77

88
class Edit(EngineAPIResource):
9-
engine_required = False
109
OBJECT_NAME = "edits"
1110

1211
@classmethod
@@ -16,11 +15,12 @@ def create(cls, *args, **kwargs):
1615
"""
1716
start = time.time()
1817
timeout = kwargs.pop("timeout", None)
19-
if kwargs.get("model", None) is None and kwargs.get("engine", None) is None:
20-
raise InvalidRequestError(
21-
"Must provide an 'engine' or 'model' parameter to create an Edit.",
22-
param="engine",
23-
)
18+
19+
api_type = kwargs.pop("api_type", None)
20+
typed_api_type = cls._get_api_type_and_version(api_type=api_type)[0]
21+
if typed_api_type in (util.ApiType.AZURE, util.ApiType.AZURE_AD):
22+
raise error.InvalidAPIType(
23+
"This operation is not supported by the Azure OpenAI API yet.")
2424

2525
while True:
2626
try:

openai/api_resources/embedding.py

+1-7
Original file line numberDiff line numberDiff line change
@@ -6,11 +6,10 @@
66
from openai import util
77
from openai.api_resources.abstract import DeletableAPIResource, ListableAPIResource
88
from openai.api_resources.abstract.engine_api_resource import EngineAPIResource
9-
from openai.error import InvalidRequestError, TryAgain
9+
from openai.error import TryAgain
1010

1111

1212
class Embedding(EngineAPIResource):
13-
engine_required = False
1413
OBJECT_NAME = "embeddings"
1514

1615
@classmethod
@@ -23,11 +22,6 @@ def create(cls, *args, **kwargs):
2322
"""
2423
start = time.time()
2524
timeout = kwargs.pop("timeout", None)
26-
if kwargs.get("model", None) is None and kwargs.get("engine", None) is None:
27-
raise InvalidRequestError(
28-
"Must provide an 'engine' or 'model' parameter to create an Embedding.",
29-
param="engine",
30-
)
3125

3226
user_provided_encoding_format = kwargs.get("encoding_format", None)
3327

openai/api_resources/model.py

-1
Original file line numberDiff line numberDiff line change
@@ -2,5 +2,4 @@
22

33

44
class Model(ListableAPIResource, DeletableAPIResource):
5-
engine_required = False
65
OBJECT_NAME = "models"

openai/api_resources/search.py

+1-7
Original file line numberDiff line numberDiff line change
@@ -2,11 +2,10 @@
22

33
from openai import util
44
from openai.api_resources.abstract.engine_api_resource import EngineAPIResource
5-
from openai.error import InvalidRequestError, TryAgain
5+
from openai.error import TryAgain
66

77

88
class Search(EngineAPIResource):
9-
engine_required = False
109
OBJECT_NAME = "search"
1110

1211
@classmethod
@@ -20,11 +19,6 @@ def create(cls, *args, **kwargs):
2019

2120
start = time.time()
2221
timeout = kwargs.pop("timeout", None)
23-
if kwargs.get("model", None) is None and kwargs.get("engine", None) is None:
24-
raise InvalidRequestError(
25-
"Must provide an 'engine' or 'model' parameter to create a Search.",
26-
param="engine",
27-
)
2822

2923
while True:
3024
try:

openai/util.py

+1-1
Original file line numberDiff line numberDiff line change
@@ -40,7 +40,7 @@ def from_str(label):
4040
return ApiType.OPEN_AI
4141
else:
4242
raise openai.error.InvalidAPIType(
43-
"The API type provided in invalid. Please select one of the supported API types: 'azure', 'open_ai'"
43+
"The API type provided in invalid. Please select one of the supported API types: 'azure', 'azure_ad', 'open_ai'"
4444
)
4545

4646

openai/version.py

+1-1
Original file line numberDiff line numberDiff line change
@@ -1 +1 @@
1-
VERSION = "0.21.0"
1+
VERSION = "0.22.0"

0 commit comments

Comments
 (0)