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,
)