def create( cls, api_key=None, api_base=None, request_id=None, api_version=None, organization=None, **params, ): requestor = api_requestor.APIRequestor( api_key, api_base=api_base, api_version=api_version, organization=organization, ) url = cls.class_url() response, _, api_key = requestor.request("post", url, params, request_id=request_id) return util.convert_to_openai_object( response, api_key, api_version, organization, plain_old_data=cls.plain_old_data, )
def update( cls, api_key=None, api_base=None, idempotency_key=None, request_id=None, api_version=None, organization=None, **params, ): # TODO max engine_id = params.get("id") replicas = params.get("replicas") engine = EngineAPIResource(id=id) requestor = api_requestor.APIRequestor( api_key, api_base=api_base, api_version=api_version, organization=organization, ) url = cls.class_url(engine) headers = util.populate_headers(idempotency_key, request_id) response, _, api_key = requestor.request("post", url, params, headers)
def create( cls, file, purpose, model=None, api_key=None, api_base=None, api_version=None, organization=None, user_provided_filename=None, ): if purpose != "search" and model is not None: raise ValueError("'model' is only meaningful if 'purpose' is 'search'") requestor = api_requestor.APIRequestor( api_key, api_base=api_base or openai.api_base, api_version=api_version, organization=organization, ) url = cls.class_url() # Set the filename on 'purpose' and 'model' to None so they are # interpreted as form data. files = [("purpose", (None, purpose))] if model is not None: files.append(("model", (None, model))) if user_provided_filename is not None: files.append(("file", (user_provided_filename, file))) else: files.append(("file", file)) response, _, api_key = requestor.request("post", url, files=files) return util.convert_to_openai_object( response, api_key, api_version, organization )
def stream_events( cls, id, api_key=None, api_base=None, request_id=None, api_version=None, organization=None, **params, ): base = cls.class_url() extn = quote_plus(id) requestor = api_requestor.APIRequestor( api_key, api_base=api_base, api_version=api_version, organization=organization, ) url = "%s/%s/events?stream=true" % (base, extn) response, _, api_key = requestor.request("get", url, params, stream=True, request_id=request_id) assert not isinstance(response, OpenAIResponse) # must be an iterator return (util.convert_to_openai_object( line, api_key, api_version, organization, ) for line in response)
def list( cls, api_key=None, request_id=None, api_version=None, organization=None, api_base=None, **params, ): requestor = api_requestor.APIRequestor( api_key, api_base=api_base or cls.api_base(), api_version=api_version, organization=organization, ) url = cls.class_url() response, _, api_key = requestor.request("get", url, params, request_id=request_id) openai_object = util.convert_to_openai_object(response, api_key, api_version, organization) openai_object._retrieve_params = params return openai_object
def create( cls, api_key=None, api_base=None, api_version=None, organization=None, **params ): requestor = api_requestor.APIRequestor( api_key, api_base=openai.file_api_base or openai.api_base, api_version=api_version, organization=organization, ) url = cls.class_url() supplied_headers = {"Content-Type": "multipart/form-data"} response, _, api_key = requestor.request( "post", url, params=params, headers=supplied_headers ) return util.convert_to_openai_object( response, api_key, api_version, organization )
def request( self, method, url, params=None, headers=None, stream=False, plain_old_data=False, request_id: Optional[str] = None, ): if params is None: params = self._retrieve_params requestor = api_requestor.APIRequestor( key=self.api_key, api_base=self.api_base_override or self.api_base(), api_type=self.api_type, api_version=self.api_version, organization=self.organization, ) response, stream, api_key = requestor.request( method, url, params=params, stream=stream, headers=headers, request_id=request_id, ) if stream: assert not isinstance(response, OpenAIResponse) # must be an iterator return (util.convert_to_openai_object( line, api_key, self.api_version, self.organization, plain_old_data=plain_old_data, ) for line in response) else: return util.convert_to_openai_object( response, api_key, self.api_version, self.organization, plain_old_data=plain_old_data, )
def nested_resource_request( cls, method, url, api_key=None, idempotency_key=None, request_id=None, api_version=None, organization=None, **params ): requestor = api_requestor.APIRequestor( api_key, api_version=api_version, organization=organization ) headers = util.populate_headers(idempotency_key, request_id) response, _, api_key = requestor.request(method, url, params, headers) return util.convert_to_openai_object( response, api_key, api_version, organization )
def nested_resource_request( cls, method, url, api_key=None, request_id=None, api_version=None, organization=None, **params, ): requestor = api_requestor.APIRequestor( api_key, api_version=api_version, organization=organization ) response, _, api_key = requestor.request( method, url, params, request_id=request_id ) return util.convert_to_openai_object( response, api_key, api_version, organization )
def download( cls, id, api_key=None, api_base=None, api_version=None, organization=None ): requestor = api_requestor.APIRequestor( api_key, api_base=api_base or openai.api_base, api_version=api_version, organization=organization, ) url = f"{cls.class_url()}/{id}/content" result = requestor.request_raw("get", url) if not 200 <= result.status_code < 300: raise requestor.handle_error_response( result.content, result.status_code, json.loads(cast(bytes, result.content)), result.headers, stream_error=False, ) return result.content
def _static_request(cls, method_, url_, api_key=None, idempotency_key=None, request_id=None, api_version=None, organization=None, **params): requestor = api_requestor.APIRequestor( api_key, api_version=api_version, organization=organization, api_base=self.api_base, ) headers = util.populate_headers(idempotency_key, request_id) response, _, api_key = requestor.request(method_, url_, params, headers) return util.convert_to_openai_object(response, api_key, api_version, organization)
def _request(self, method_, url_, api_key=None, idempotency_key=None, openai_version=None, openai_account=None, **params): api_key = api_key or self.api_key openai_version = openai_version or self.openai_version openai_account = openai_account or self.openai_account requestor = api_requestor.APIRequestor(api_key, api_version=openai_version, account=openai_account) headers = util.populate_headers(idempotency_key) response, api_key = requestor.request(method_, url_, params, headers) openai_object = util.convert_to_openai_object(response, api_key, openai_version, openai_account) return openai_object
def _static_request( cls, method_, url_, api_key=None, api_base=None, request_id=None, api_version=None, organization=None, **params, ): requestor = api_requestor.APIRequestor( api_key, api_version=api_version, organization=organization, api_base=api_base, ) response, _, api_key = requestor.request(method_, url_, params, request_id=request_id) return util.convert_to_openai_object(response, api_key, api_version, organization)
def request(self, method, url, params=None, headers=None, stream=False, plain_old_data=False): if params is None: params = self._retrieve_params requestor = api_requestor.APIRequestor( key=self.api_key, api_base=self.api_base_override or self.api_base(), api_version=self.api_version, organization=self.organization, ) response, stream, api_key = requestor.request(method, url, params, headers, stream=stream) if stream: return (util.convert_to_openai_object( line, api_key, self.api_version, self.organization, plain_old_data=plain_old_data, ) for line in response) else: return util.convert_to_openai_object( response, api_key, self.api_version, self.organization, plain_old_data=plain_old_data, )
def create( cls, api_key=None, api_base=None, idempotency_key=None, request_id=None, api_version=None, organization=None, **params, ): """ Create a new instance of this model. Parameters: timeout (float): the number of seconds to wait on the promise returned by the API, where 0 means wait forever. """ engine = params.pop("engine", None) timeout = params.pop("timeout", None) stream = params.get("stream", False) if engine is None and cls.engine_required: raise error.InvalidRequestError( "Must provide an 'engine' parameter to create a %s" % cls, "engine") if timeout is None: # No special timeout handling pass elif timeout > 0: # API only supports timeouts up to MAX_TIMEOUT params["timeout"] = min(timeout, MAX_TIMEOUT) timeout = (timeout - params["timeout"]) or None elif timeout == 0: params["timeout"] = MAX_TIMEOUT requestor = api_requestor.APIRequestor( api_key, api_base=api_base, api_version=api_version, organization=organization, ) url = cls.class_url(engine) headers = util.populate_headers(idempotency_key, request_id) response, _, api_key = requestor.request("post", url, params, headers, stream=stream) if stream: return (util.convert_to_openai_object( line, api_key, api_version, organization, engine=engine, plain_old_data=cls.plain_old_data, ) for line in response) else: obj = util.convert_to_openai_object( response, api_key, api_version, organization, engine=engine, plain_old_data=cls.plain_old_data, ) if timeout is not None: obj.wait(timeout=timeout or None) return obj
def create( cls, api_key=None, api_base=None, api_type=None, request_id=None, api_version=None, organization=None, **params, ): engine = params.pop("engine", 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") if timeout is None: # No special timeout handling pass elif timeout > 0: # API only supports timeouts up to MAX_TIMEOUT params["timeout"] = min(timeout, MAX_TIMEOUT) timeout = (timeout - params["timeout"]) or None elif timeout == 0: params["timeout"] = MAX_TIMEOUT requestor = api_requestor.APIRequestor( api_key, api_base=api_base, api_type=api_type, api_version=api_version, organization=organization, ) url = cls.class_url(engine, api_type, api_version) response, _, api_key = requestor.request( "post", url, params=params, headers=headers, stream=stream, request_id=request_id, ) if stream: assert not isinstance(response, OpenAIResponse) # must be an iterator return (util.convert_to_openai_object( line, api_key, api_version, organization, engine=engine, plain_old_data=cls.plain_old_data, ) for line in response) else: obj = util.convert_to_openai_object( response, api_key, api_version, organization, engine=engine, plain_old_data=cls.plain_old_data, ) if timeout is not None: obj.wait(timeout=timeout or None) return obj