def _create_workspace_aurora()

in packages/constructs/L3/ai/gaia-l3-construct/lib/chatbot-api/functions/api-handler/routes/workspaces.py [0:0]


def _create_workspace_aurora(request: CreateWorkspaceAuroraRequest, config: dict):
    workspace_name = request.name.strip()
    embedding_models = config["rag"]["embeddingsModels"]
    cross_encoder_models = config["rag"]["crossEncoderModels"]

    embeddings_model = None
    cross_encoder_model = None
    for model in embedding_models:
        if (
                model["provider"] == request.embeddingsModelProvider
                and model["name"] == request.embeddingsModelName
        ):
            embeddings_model = model
            break

    for model in cross_encoder_models:
        if (
                model["provider"] == request.crossEncoderModelProvider
                and model["name"] == request.crossEncoderModelName
        ):
            cross_encoder_model = model
            break

    if embeddings_model is None:
        raise genai_core.types.CommonError("Embeddings model not found")

    embeddings_model_dimensions = embeddings_model["dimensions"]

    workspace_name_match = name_regex.match(workspace_name)
    workspace_name_is_match = bool(workspace_name_match)
    if (
            len(workspace_name) == 0
            or len(workspace_name) > 100
            or not workspace_name_is_match
    ):
        raise genai_core.types.CommonError("Invalid workspace name")

    if len(request.languages) == 0 or len(request.languages) > 3:
        raise genai_core.types.CommonError("Invalid languages")

    if request.metric not in ["inner", "cosine", "l2"]:
        raise genai_core.types.CommonError("Invalid metric")

    if request.chunking_strategy not in ["recursive"]:
        raise genai_core.types.CommonError("Invalid chunking strategy")

    if request.chunkSize < 100 or request.chunkSize > 10000:
        raise genai_core.types.CommonError("Invalid chunk size")

    if request.chunkOverlap < 0 or request.chunkOverlap >= request.chunkSize:
        raise genai_core.types.CommonError("Invalid chunk overlap")

    return genai_core.workspaces.create_workspace_aurora(
        workspace_name=workspace_name,
        embeddings_model_provider=request.embeddingsModelProvider,
        embeddings_model_name=request.embeddingsModelName,
        embeddings_model_dimensions=embeddings_model_dimensions,
        cross_encoder_model_provider=request.crossEncoderModelProvider,
        cross_encoder_model_name=request.crossEncoderModelName,
        languages=request.languages,
        metric=request.metric,
        has_index=request.index,
        hybrid_search=request.hybridSearch,
        chunking_strategy=request.chunking_strategy,
        chunk_size=request.chunkSize,
        chunk_overlap=request.chunkOverlap,
    )