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)
Example #3
0
 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
     )
Example #4
0
    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
Example #6
0
 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
     )
Example #7
0
    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
     )
Example #10
0
 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
Example #11
0
 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)
Example #12
0
    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
Example #13
0
 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)
Example #14
0
    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
Example #16
0
    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