def refresh_from( self, values, api_key=None, api_version=None, api_type=None, organization=None, response_ms: Optional[int] = None, ): self.api_key = api_key or getattr(values, "api_key", None) self.api_version = api_version or getattr(values, "api_version", None) self.api_type = api_type or getattr(values, "api_type", None) self.organization = organization or getattr(values, "organization", None) self._response_ms = response_ms or getattr(values, "_response_ms", None) # Wipe old state before setting new. self.clear() for k, v in values.items(): super(OpenAIObject, self).__setitem__( k, util.convert_to_openai_object(v, api_key, api_version, organization)) self._previous = values
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 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 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 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 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, 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 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 _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 refresh_from( self, values, api_key=None, partial=False, api_version=None, organization=None, last_response=None, ): self.api_key = api_key or getattr(values, "api_key", None) self.api_version = api_version or getattr(values, "api_version", None) self.organization = organization or getattr(values, "organization", None) self._last_response = last_response or getattr(values, "_last_response", None) # Wipe old state before setting new. This is useful for e.g. # updating a customer, where there is no persistent card # parameter. Mark those values which don't persist as transient if partial: self._unsaved_values = self._unsaved_values - set(values) else: removed = set(self.keys()) - set(values) self._transient_values = self._transient_values | removed self._unsaved_values = set() self.clear() self._transient_values = self._transient_values - set(values) for k, v in six.iteritems(values): super(OpenAIObject, self).__setitem__( k, util.convert_to_openai_object(v, api_key, api_version, organization)) self._previous = values
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