Skip to content

Generate



Text generation endpoints

generate_headlines(request) async

Extract patterns from remark and generate headlines based on those patterns

Parameters:

Name Type Description Default
request GenerateHeadlinesRequest

house data

required

Returns:

Name Type Description
response GenerateHeadlinesResponse

list of headlines

Source code in app/routers/generate.py
@router.post('/generate_headlines', response_model=response_schema.GenerateHeadlinesResponse,
             response_model_exclude_none=True)
async def generate_headlines(request: request_schema.GenerateHeadlinesRequest):
    """
    Extract patterns from remark and generate headlines based on those patterns

    Parameters
    ----------
    request : request_schema.GenerateHeadlinesRequest
        house data

    Returns
    -------
    response : response_schema.GenerateHeadlinesResponse
        list of headlines
    """
    listing_id = request.listing_id
    extractor_kwargs = request.dict(exclude={"listing_id"})
    headlines = services.generate_headlines(**extractor_kwargs)
    return response_schema.GenerateHeadlinesResponse(listing_id=listing_id, headlines=headlines)

generate_primary_text(request) async

Generate primary text based on home data

Parameters:

Name Type Description Default
request GeneratePrimaryTextRequest

home data

required

Returns:

Name Type Description
response GeneratePrimaryTextResponse

primary text

Source code in app/routers/generate.py
@router.post('/generate_primary_text', response_model=response_schema.GeneratePrimaryTextResponse,
             response_model_exclude_none=True)
async def generate_primary_text(request: request_schema.GeneratePrimaryTextRequest):
    """
    Generate primary text based on home data

    Parameters
    ----------
    request : request_schema.GeneratePrimaryTextRequest
        home data

    Returns
    -------
    response : response_schema.GeneratePrimaryTextResponse
        primary text
    """
    listing_id = request.listing_id
    extractor_kwargs = request.dict(exclude={"listing_id"})
    primary_text = services.generate_primary_text(**extractor_kwargs)
    return response_schema.GeneratePrimaryTextResponse(listing_id=listing_id, primary_text=primary_text)

generate_ad_copy(request) async

Generate both primary text and headlines based on home data

Parameters:

Name Type Description Default
request GenerateAdCopyRequest

home data

required

Returns:

Name Type Description
response GenerateFacebookAdCopyResponse

list of headlines and a primary text

Source code in app/routers/generate.py
@router.post('/generate_facebook_ad_copy', response_model=response_schema.GenerateFacebookAdCopyResponse,
             response_model_exclude_none=True)
async def generate_ad_copy(request: request_schema.GenerateAdCopyRequest):
    """
    Generate both primary text and headlines based on home data

    Parameters
    ----------
    request : request_schema.GenerateAdCopyRequest
        home data

    Returns
    -------
    response : response_schema.GenerateFacebookAdCopyResponse
        list of headlines and a primary text
    """
    listing_id = request.listing_id
    extractor_kwargs = request.dict(exclude={"listing_id"})
    headlines, primary_text = services.generate_facebook_ad_copy(**extractor_kwargs)
    return response_schema.GenerateFacebookAdCopyResponse(listing_id=listing_id, primary_text=primary_text,
                                                          headlines=headlines)

generate_google_ad_copy(request) async

Generate short headlines, long headlines and descriptions

Parameters:

Name Type Description Default
request GoogleAdCopyRequest

home data

required

Returns:

Name Type Description
response GenerateGoogleAdCopyResponse

list of headlines and a primary text

Source code in app/routers/generate.py
@router.post('/generate_google_ad_copy', response_model=response_schema.GenerateGoogleAdCopyResponse,
             response_model_exclude_none=True)
async def generate_google_ad_copy(request: request_schema.GoogleAdCopyRequest):
    """
    Generate short headlines, long headlines and descriptions

    Parameters
    ----------
    request : request_schema.GoogleAdCopyRequest
        home data

    Returns
    -------
    response : response_schema.GenerateGoogleAdCopyResponse
        list of headlines and a primary text
    """
    listing_id = request.home_data.listing_id
    headlines = await services.generate_google_ad_copy(generation_params=request.generation_params,
                                                       postprocessing_params=request.postprocessing_params,
                                                       home_data=request.home_data)
    return response_schema.GenerateGoogleAdCopyResponse(short_headlines=headlines.short_headlines,
                                                        descriptions=headlines.descriptions,
                                                        long_headlines=headlines.long_headlines,
                                                        listing_id=listing_id)

generate_invitation_text(request)

Generate client invitation text.

Parameters:

Name Type Description Default
request GenerateInvitationTextRequest

collection, agent, client and his preferences data

required

Returns:

Name Type Description
response GenerateInvitationTextResponse

greeting, system introduction, collection information, closing and all email

Source code in app/routers/generate.py
@router.post('/generate_invitation_text', response_model=response_schema.GenerateInvitationTextResponse,
             response_model_exclude_none=True)
def generate_invitation_text(request: request_schema.GenerateInvitationTextRequest):
    """
    Generate client invitation text.
    Parameters
    ----------
    request : request_schema.GenerateInvitationTextRequest
        collection, agent, client and his preferences data

    Returns
    -------
    response : response_schema.GenerateInvitationTextResponse
        greeting, system introduction, collection information, closing  and all email
    """
    collection_data = request.collection_data
    client_name = request.client_name
    agent_name = request.agent_name

    greeting, system_introduction, collection_information, closing, full_text, status_code, message = \
        services.generate_invitation_text(collection_data=collection_data, client_name=client_name,
                                          agent_name=agent_name, )
    if status_code != 200:
        raise HTTPException(detail=message, status_code=status_code)
    return response_schema.GenerateInvitationTextResponse(greeting=greeting,
                                                          system_introduction=system_introduction,
                                                          collection_information=collection_information,
                                                          closing=closing,
                                                          full_text=full_text)

generate_location_based_text(request)

Generate Location Based on text

Parameters:

Name Type Description Default
request GenerateLocationBasedTextRequest

location and words count of the generated text

required

Returns:

Name Type Description
response GenerateLocationBasedTextResponse

title and text of the given location

Source code in app/routers/generate.py
@router.post('/generate_location_based_text',
             response_model=response_schema.GenerateLocationBasedTextResponse,
             response_model_exclude_none=True)
def generate_location_based_text(request: request_schema.GenerateLocationBasedTextRequest):
    """
    Generate Location Based on text

    Parameters
    ----------
    request : request_schema.GenerateLocationBasedTextRequest
        location and words count of the generated text

    Returns
    -------
    response : response_schema.GenerateLocationBasedTextResponse
        title and text of the given location
    """
    location = request.location
    words_count = request.words_count
    text_title, status_code, message = services.generate_location_based_text(location=location,
                                                                             words_count=words_count)
    if text_title:
        return response_schema.GenerateLocationBasedTextResponse(text=text_title["text"],
                                                                 title=text_title["title"])
    raise HTTPException(detail=message, status_code=status_code)