From f187a36fec266c397076f57e1dc4e5bb93011346 Mon Sep 17 00:00:00 2001 From: Sarah Widder Date: Fri, 5 Jan 2024 17:10:32 -0800 Subject: [PATCH] Fix comma/pipe separator issue and improve local dev loop (#483) Co-authored-by: Sarah Widder --- .env.sample | 8 +++++++- .vscode/launch.json | 17 +++++++++++++++++ app.py | 18 ++++++++++++------ 3 files changed, 36 insertions(+), 7 deletions(-) create mode 100644 .vscode/launch.json diff --git a/.env.sample b/.env.sample index 9058b24c50..cecde37668 100644 --- a/.env.sample +++ b/.env.sample @@ -30,4 +30,10 @@ AZURE_OPENAI_EMBEDDING_NAME= AZURE_COSMOSDB_ACCOUNT= AZURE_COSMOSDB_DATABASE= AZURE_COSMOSDB_CONVERSATIONS_CONTAINER= -AZURE_COSMOSDB_ACCOUNT_KEY= \ No newline at end of file +AZURE_COSMOSDB_ACCOUNT_KEY= +AZURE_COSMOSDB_MONGO_VCORE_DATABASE= +AZURE_COSMOSDB_MONGO_VCORE_CONNECTION_STRING= +AZURE_COSMOSDB_MONGO_VCORE_CONTAINER= +AZURE_COSMOSDB_MONGO_VCORE_INDEX= +AZURE_COSMOSDB_MONGO_VCORE_CONTENT_COLUMNS= +AZURE_COSMOSDB_MONGO_VCORE_VECTOR_COLUMNS= \ No newline at end of file diff --git a/.vscode/launch.json b/.vscode/launch.json new file mode 100644 index 0000000000..10f61c767f --- /dev/null +++ b/.vscode/launch.json @@ -0,0 +1,17 @@ +{ + // Use IntelliSense to learn about possible attributes. + // Hover to view descriptions of existing attributes. + // For more information, visit: https://go.microsoft.com/fwlink/?linkid=830387 + "version": "0.2.0", + "configurations": [ + { + "name": "Python: Sample UI Backend", + "type": "python", + "request": "launch", + "module": "flask", + "envFile": "${workspaceFolder}/.env", + "args": ["run", "--no-debugger", "--no-reload", "-p 5000"], + "justMyCode": true + } + ] +} diff --git a/app.py b/app.py index 0f9d2ba261..a654f4af0f 100644 --- a/app.py +++ b/app.py @@ -162,6 +162,12 @@ def should_use_data(): def format_as_ndjson(obj: dict) -> str: return json.dumps(obj, ensure_ascii=False) + "\n" +def parse_multi_columns(columns: str) -> list: + if "|" in columns: + return columns.split("|") + else: + return columns.split(",") + def fetchUserGroups(userToken, nextLink=None): # Recursively fetch group membership if nextLink: @@ -244,11 +250,11 @@ def prepare_body_headers_with_data(request): "key": AZURE_SEARCH_KEY, "indexName": AZURE_SEARCH_INDEX, "fieldsMapping": { - "contentFields": AZURE_SEARCH_CONTENT_COLUMNS.split("|") if AZURE_SEARCH_CONTENT_COLUMNS else [], + "contentFields": parse_multi_columns(AZURE_SEARCH_CONTENT_COLUMNS) if AZURE_SEARCH_CONTENT_COLUMNS else [], "titleField": AZURE_SEARCH_TITLE_COLUMN if AZURE_SEARCH_TITLE_COLUMN else None, "urlField": AZURE_SEARCH_URL_COLUMN if AZURE_SEARCH_URL_COLUMN else None, "filepathField": AZURE_SEARCH_FILENAME_COLUMN if AZURE_SEARCH_FILENAME_COLUMN else None, - "vectorFields": AZURE_SEARCH_VECTOR_COLUMNS.split("|") if AZURE_SEARCH_VECTOR_COLUMNS else [] + "vectorFields": parse_multi_columns(AZURE_SEARCH_VECTOR_COLUMNS) if AZURE_SEARCH_VECTOR_COLUMNS else [] }, "inScope": True if AZURE_SEARCH_ENABLE_IN_DOMAIN.lower() == "true" else False, "topNDocuments": AZURE_SEARCH_TOP_K, @@ -272,11 +278,11 @@ def prepare_body_headers_with_data(request): "databaseName": AZURE_COSMOSDB_MONGO_VCORE_DATABASE, "containerName": AZURE_COSMOSDB_MONGO_VCORE_CONTAINER, "fieldsMapping": { - "contentFields": AZURE_COSMOSDB_MONGO_VCORE_CONTENT_COLUMNS.split("|") if AZURE_COSMOSDB_MONGO_VCORE_CONTENT_COLUMNS else [], + "contentFields": parse_multi_columns(AZURE_COSMOSDB_MONGO_VCORE_CONTENT_COLUMNS) if AZURE_COSMOSDB_MONGO_VCORE_CONTENT_COLUMNS else [], "titleField": AZURE_COSMOSDB_MONGO_VCORE_TITLE_COLUMN if AZURE_COSMOSDB_MONGO_VCORE_TITLE_COLUMN else None, "urlField": AZURE_COSMOSDB_MONGO_VCORE_URL_COLUMN if AZURE_COSMOSDB_MONGO_VCORE_URL_COLUMN else None, "filepathField": AZURE_COSMOSDB_MONGO_VCORE_FILENAME_COLUMN if AZURE_COSMOSDB_MONGO_VCORE_FILENAME_COLUMN else None, - "vectorFields": AZURE_COSMOSDB_MONGO_VCORE_VECTOR_COLUMNS.split("|") if AZURE_COSMOSDB_MONGO_VCORE_VECTOR_COLUMNS else [] + "vectorFields": parse_multi_columns(AZURE_COSMOSDB_MONGO_VCORE_VECTOR_COLUMNS) if AZURE_COSMOSDB_MONGO_VCORE_VECTOR_COLUMNS else [] }, "inScope": True if AZURE_COSMOSDB_MONGO_VCORE_ENABLE_IN_DOMAIN.lower() == "true" else False, "topNDocuments": AZURE_COSMOSDB_MONGO_VCORE_TOP_K, @@ -304,11 +310,11 @@ def prepare_body_headers_with_data(request): "encodedApiKey": ELASTICSEARCH_ENCODED_API_KEY, "indexName": ELASTICSEARCH_INDEX, "fieldsMapping": { - "contentFields": ELASTICSEARCH_CONTENT_COLUMNS.split("|") if ELASTICSEARCH_CONTENT_COLUMNS else [], + "contentFields": parse_multi_columns(ELASTICSEARCH_CONTENT_COLUMNS) if ELASTICSEARCH_CONTENT_COLUMNS else [], "titleField": ELASTICSEARCH_TITLE_COLUMN if ELASTICSEARCH_TITLE_COLUMN else None, "urlField": ELASTICSEARCH_URL_COLUMN if ELASTICSEARCH_URL_COLUMN else None, "filepathField": ELASTICSEARCH_FILENAME_COLUMN if ELASTICSEARCH_FILENAME_COLUMN else None, - "vectorFields": ELASTICSEARCH_VECTOR_COLUMNS.split("|") if ELASTICSEARCH_VECTOR_COLUMNS else [] + "vectorFields": parse_multi_columns(ELASTICSEARCH_VECTOR_COLUMNS) if ELASTICSEARCH_VECTOR_COLUMNS else [] }, "inScope": True if ELASTICSEARCH_ENABLE_IN_DOMAIN.lower() == "true" else False, "topNDocuments": int(ELASTICSEARCH_TOP_K),