Commit 64c45330
Changed files (14)
openai
openai/api_resources/abstract/api_resource.py
@@ -33,8 +33,8 @@ class APIResource(OpenAIObject):
# with forward slashes (/), so replace the former with the latter.
base = cls.OBJECT_NAME.replace(".", "/") # type: ignore
if cls.api_prefix:
- return "/%s/%ss" % (cls.api_prefix, base)
- return "/%ss" % (base)
+ return "/%s/%s" % (cls.api_prefix, base)
+ return "/%s" % (base)
def instance_url(self, operation=None):
id = self.get("id")
openai/api_resources/abstract/engine_api_resource.py
@@ -41,7 +41,7 @@ class EngineAPIResource(APIResource):
"You must provide the deployment name in the 'engine' parameter to access the Azure OpenAI service"
)
extn = quote_plus(engine)
- return "/%s/%s/%s/%ss?api-version=%s" % (
+ return "/%s/%s/%s/%s?api-version=%s" % (
cls.azure_api_prefix,
cls.azure_deployments_prefix,
extn,
@@ -51,10 +51,10 @@ class EngineAPIResource(APIResource):
elif typed_api_type == ApiType.OPEN_AI:
if engine is None:
- return "/%ss" % (base)
+ return "/%s" % (base)
extn = quote_plus(engine)
- return "/engines/%s/%ss" % (extn, base)
+ return "/engines/%s/%s" % (extn, base)
else:
raise error.InvalidAPIType("Unsupported API type %s" % api_type)
@@ -153,7 +153,7 @@ class EngineAPIResource(APIResource):
"An API version is required for the Azure API type."
)
base = self.OBJECT_NAME.replace(".", "/")
- url = "/%s/%s/%s/%ss/%s?api-version=%s" % (
+ url = "/%s/%s/%s/%s/%s?api-version=%s" % (
self.azure_api_prefix,
self.azure_deployments_prefix,
self.engine,
openai/api_resources/experimental/completion_config.py
@@ -8,4 +8,4 @@ from openai.api_resources.abstract import (
class CompletionConfig(
CreateableAPIResource, ListableAPIResource, DeletableAPIResource
):
- OBJECT_NAME = "experimental.completion_config"
+ OBJECT_NAME = "experimental.completion_configs"
openai/api_resources/completion.py
@@ -8,7 +8,7 @@ from openai.error import InvalidRequestError, TryAgain
class Completion(EngineAPIResource, ListableAPIResource, DeletableAPIResource):
engine_required = False
- OBJECT_NAME = "completion"
+ OBJECT_NAME = "completions"
@classmethod
def create(cls, *args, **kwargs):
openai/api_resources/deployment.py
@@ -5,7 +5,7 @@ from openai.error import InvalidRequestError, APIError
class Deployment(CreateableAPIResource, ListableAPIResource, DeletableAPIResource):
engine_required = False
- OBJECT_NAME = "deployment"
+ OBJECT_NAME = "deployments"
@classmethod
def create(cls, *args, **kwargs):
openai/api_resources/edit.py
@@ -7,7 +7,7 @@ from openai.error import InvalidRequestError, TryAgain
class Edit(EngineAPIResource):
engine_required = False
- OBJECT_NAME = "edit"
+ OBJECT_NAME = "edits"
@classmethod
def create(cls, *args, **kwargs):
openai/api_resources/embedding.py
@@ -10,8 +10,8 @@ from openai.error import InvalidRequestError, TryAgain
class Embedding(EngineAPIResource, ListableAPIResource, DeletableAPIResource):
- engine_required = True
- OBJECT_NAME = "embedding"
+ engine_required = False
+ OBJECT_NAME = "embeddings"
@classmethod
def create(cls, *args, **kwargs):
openai/api_resources/engine.py
@@ -8,7 +8,7 @@ from openai.util import ApiType
class Engine(ListableAPIResource, UpdateableAPIResource):
- OBJECT_NAME = "engine"
+ OBJECT_NAME = "engines"
def generate(self, timeout=None, **params):
start = time.time()
openai/api_resources/file.py
@@ -9,7 +9,7 @@ from openai.util import ApiType
class File(ListableAPIResource, DeletableAPIResource):
- OBJECT_NAME = "file"
+ OBJECT_NAME = "files"
@classmethod
def create(
openai/api_resources/fine_tune.py
@@ -13,7 +13,7 @@ from openai.util import ApiType
@nested_resource_class_methods("event", operations=["list"])
class FineTune(ListableAPIResource, CreateableAPIResource, DeletableAPIResource):
- OBJECT_NAME = "fine-tune"
+ OBJECT_NAME = "fine-tunes"
@classmethod
def cancel(
openai/api_resources/model.py
@@ -3,4 +3,4 @@ from openai.api_resources.abstract import DeletableAPIResource, ListableAPIResou
class Model(ListableAPIResource, DeletableAPIResource):
engine_required = False
- OBJECT_NAME = "model"
+ OBJECT_NAME = "models"
openai/api_resources/search.py
@@ -1,12 +1,36 @@
-from openai.api_resources.abstract.api_resource import APIResource
+import time
+from openai import util
+from openai.api_resources.abstract.engine_api_resource import EngineAPIResource
+from openai.error import InvalidRequestError, TryAgain
-class Search(APIResource):
- @classmethod
- def class_url(cls):
- return "/search_indices/search"
+
+class Search(EngineAPIResource):
+ engine_required = False
+ OBJECT_NAME = "search"
@classmethod
- def create_alpha(cls, **params):
- instance = cls()
- return instance.request("post", cls.class_url(), params)
+ def create(cls, *args, **kwargs):
+ """
+ Creates a new search for the provided input and parameters.
+
+ See https://beta.openai.com/docs/api-reference/search for a list
+ of valid parameters.
+ """
+
+ 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:
+ return super().create(*args, **kwargs)
+ except TryAgain as e:
+ if timeout is not None and time.time() > start + timeout:
+ raise
+
+ util.log_info("Waiting for model to warm up", error=e)
openai/cli.py
@@ -266,11 +266,11 @@ class Search:
)
@classmethod
- def create_alpha(cls, args):
- resp = openai.Search.create_alpha(
- query=[args.query],
- max_documents=args.max_documents,
- file_id=args.file,
+ def create(cls, args):
+ resp = openai.Search.create(
+ query=args.query,
+ documents=args.documents,
+ model=args.model,
)
print(resp)
@@ -827,20 +827,14 @@ Mutually exclusive with `top_p`.""",
sub.set_defaults(func=File.list)
# Search
- sub = subparsers.add_parser("search.create_alpha")
+ sub = subparsers.add_parser("search.create")
sub.add_argument(
- "-f",
- "--file",
- required=True,
- help="ID for previously uploaded file that contains the documents you want to search",
- )
- sub.add_argument(
- "-m",
- "--max_documents",
- help="The maximum number of documents to return",
- type=int,
- default=200,
+ "-d",
+ "--documents",
+ help="Documents to search over",
+ type=str,
+ nargs="+",
)
sub.add_argument(
"-q",
@@ -848,7 +842,12 @@ Mutually exclusive with `top_p`.""",
required=True,
help="Search query",
)
- sub.set_defaults(func=Search.create_alpha)
+ sub.add_argument(
+ "-m",
+ "--model",
+ help="The model to search with",
+ )
+ sub.set_defaults(func=Search.create)
# Finetune
sub = subparsers.add_parser("fine_tunes.list")
openai/version.py
@@ -1,1 +1,1 @@
-VERSION = "0.18.1"
+VERSION = "0.19.0"