<SYSTEM_TASK:>
Solve the following problem using Python, implementing the functions described below, one line at a time
<END_TASK>
<USER_TASK:>
Description:
 def create_insight(self, project_key, **kwargs):
 """Create a new insight :param project_key: Project identifier, in the form of projectOwner/projectid :type project_key: str :param title: Insight title :type title: str :param description: Insight description. :type description: str, optional :param image_url: If image-based, the URL of the image :type image_url: str :param embed_url: If embed-based, the embeddable URL :type embed_url: str :param source_link: Permalink to source code or platform this insight was generated with. Allows others to replicate the steps originally used to produce the insight. :type source_link: str, optional :param data_source_links: One or more permalinks to the data sources used to generate this insight. Allows others to access the data originally used to produce the insight. :type data_source_links: array :returns: Insight with message and uri object :rtype: object :raises RestApiException: If a server error occurs Examples -------- """

        request = self.__build_insight_obj(
            lambda: _swagger.InsightCreateRequest(
                title=kwargs.get('title'),
                body=_swagger.InsightBody(
                    image_url=kwargs.get('image_url'),
                    embed_url=kwargs.get('embed_url'),
                    markdown_body=kwargs.get('markdown_body')
                )
            ), kwargs)
        project_owner, project_id = parse_dataset_key(project_key)
        try:
            (_, _, headers) = self._insights_api.create_insight_with_http_info(
                project_owner,
                project_id,
                body=request,
                _return_http_data_only=False)
            if 'Location' in headers:
                return headers['Location']
        except _swagger.rest.ApiException as e:
            raise RestApiError(cause=e)