Skip to content

Commit f60f79f

Browse files
TaylorTaylor
authored andcommitted
Merge branch 'main' into feature/hydrate-agent-results
2 parents 8faa419 + f2007b2 commit f60f79f

File tree

177 files changed

+7829
-3727
lines changed

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

177 files changed

+7829
-3727
lines changed

.azdo/pipelines/azure-dev.yml

Lines changed: 9 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -77,11 +77,6 @@ steps:
7777
AZURE_OPENAI_EMB_DEPLOYMENT_VERSION: $(AZURE_OPENAI_EMB_DEPLOYMENT_VERSION)
7878
AZURE_OPENAI_EMB_DEPLOYMENT_SKU: $(AZURE_OPENAI_EMB_DEPLOYMENT_SKU)
7979
AZURE_OPENAI_EMB_DIMENSIONS: $(AZURE_OPENAI_EMB_DIMENSIONS)
80-
AZURE_OPENAI_GPT4V_MODEL: $(AZURE_OPENAI_GPT4V_MODEL)
81-
AZURE_OPENAI_GPT4V_DEPLOYMENT: $(AZURE_OPENAI_GPT4V_DEPLOYMENT)
82-
AZURE_OPENAI_GPT4V_DEPLOYMENT_CAPACITY: $(AZURE_OPENAI_GPT4V_DEPLOYMENT_CAPACITY)
83-
AZURE_OPENAI_GPT4V_DEPLOYMENT_VERSION: $(AZURE_OPENAI_GPT4V_DEPLOYMENT_VERSION)
84-
AZURE_OPENAI_GPT4V_DEPLOYMENT_SKU: $(AZURE_OPENAI_GPT4V_DEPLOYMENT_SKU)
8580
AZURE_OPENAI_DISABLE_KEYS: $(AZURE_OPENAI_DISABLE_KEYS)
8681
OPENAI_HOST: $(OPENAI_HOST)
8782
OPENAI_API_KEY: $(OPENAI_API_KEY)
@@ -91,13 +86,13 @@ steps:
9186
AZURE_APPLICATION_INSIGHTS_DASHBOARD: $(AZURE_APPLICATION_INSIGHTS_DASHBOARD)
9287
AZURE_LOG_ANALYTICS: $(AZURE_LOG_ANALYTICS)
9388
USE_VECTORS: $(USE_VECTORS)
94-
USE_GPT4V: $(USE_GPT4V)
89+
USE_MULTIMODAL: $(USE_MULTIMODAL)
9590
AZURE_VISION_ENDPOINT: $(AZURE_VISION_ENDPOINT)
9691
VISION_SECRET_NAME: $(VISION_SECRET_NAME)
97-
AZURE_COMPUTER_VISION_SERVICE: $(AZURE_COMPUTER_VISION_SERVICE)
98-
AZURE_COMPUTER_VISION_RESOURCE_GROUP: $(AZURE_COMPUTER_VISION_RESOURCE_GROUP)
99-
AZURE_COMPUTER_VISION_LOCATION: $(AZURE_COMPUTER_VISION_LOCATION)
100-
AZURE_COMPUTER_VISION_SKU: $(AZURE_COMPUTER_VISION_SKU)
92+
AZURE_VISION_SERVICE: $(AZURE_VISION_SERVICE)
93+
AZURE_VISION_RESOURCE_GROUP: $(AZURE_VISION_RESOURCE_GROUP)
94+
AZURE_VISION_LOCATION: $(AZURE_VISION_LOCATION)
95+
AZURE_VISION_SKU: $(AZURE_VISION_SKU)
10196
ENABLE_LANGUAGE_PICKER: $(ENABLE_LANGUAGE_PICKER)
10297
USE_SPEECH_INPUT_BROWSER: $(USE_SPEECH_INPUT_BROWSER)
10398
USE_SPEECH_OUTPUT_BROWSER: $(USE_SPEECH_OUTPUT_BROWSER)
@@ -126,6 +121,10 @@ steps:
126121
AZURE_CONTAINER_APPS_WORKLOAD_PROFILE: $(AZURE_CONTAINER_APPS_WORKLOAD_PROFILE)
127122
USE_CHAT_HISTORY_BROWSER: $(USE_CHAT_HISTORY_BROWSER)
128123
USE_MEDIA_DESCRIBER_AZURE_CU: $(USE_MEDIA_DESCRIBER_AZURE_CU)
124+
RAG_SEARCH_TEXT_EMBEDDINGS: $(RAG_SEARCH_TEXT_EMBEDDINGS)
125+
RAG_SEARCH_IMAGE_EMBEDDINGS: $(RAG_SEARCH_IMAGE_EMBEDDINGS)
126+
RAG_SEND_TEXT_SOURCES: $(RAG_SEND_TEXT_SOURCES)
127+
RAG_SEND_IMAGE_SOURCES: $(RAG_SEND_IMAGE_SOURCES)
129128
- task: AzureCLI@2
130129
displayName: Deploy Application
131130
inputs:

.github/chatmodes/fixer.chatmode.md

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -26,7 +26,12 @@ You MUST check task output readiness before debugging, testing, or declaring wor
2626
- If watchers seem stuck or output stops updating, stop the tasks and run the "Development" task again.
2727
- To interact with a running application, use the Playwright MCP server. If testing login, you will need to navigate to 'localhost' instead of '127.0.0.1' since that's the URL allowed by the Entra application.
2828

29+
## Running Python scripts
30+
31+
If you are running Python scripts that depend on installed requirements, you must run them using the virtual environment in `.venv`.
32+
2933
## Committing the change
3034

3135
When change is complete, offer to make a new branch, git commit, and pull request.
36+
(DO NOT check out a new branch unless explicitly confirmed - sometimes user is already in a branch)
3237
Make sure the PR follows the PULL_REQUEST_TEMPLATE.md format, with all sections filled out and appropriate checkboxes checked.

.github/copilot-instructions.md

Lines changed: 30 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,33 @@
1+
# Overall code layout
2+
3+
* app: Contains the main application code, including frontend and backend.
4+
* app/backend: Contains the Python backend code, written with Quart framework.
5+
* app/backend/approaches: Contains the different approaches
6+
* app/backend/approaches/approach.py: Base class for all approaches
7+
* app/backend/approaches/retrievethenread.py: Ask approach, just searches and answers
8+
* app/backend/approaches/chatreadretrieveread.py: Chat approach, includes query rewriting step first
9+
* app/backend/approaches/prompts/ask_answer_question.prompty: Prompt used by the Ask approach to answer the question based off sources
10+
* app/backend/approaches/prompts/chat_query_rewrite.prompty: Prompt used to rewrite the query based off search history into a better search query
11+
* app/backend/approaches/prompts/chat_query_rewrite_tools.json: Tools used by the query rewriting prompt
12+
* app/backend/approaches/prompts/chat_answer_question.prompty: Prompt used by the Chat approach to actually answer the question based off sources
13+
* app/backend/app.py: The main entry point for the backend application.
14+
* app/frontend: Contains the React frontend code, built with TypeScript, built with vite.
15+
* app/frontend/src/api: Contains the API client code for communicating with the backend.
16+
* app/frontend/src/components: Contains the React components for the frontend.
17+
* app/frontend/src/locales: Contains the translation files for internationalization.
18+
* app/frontend/src/locales/da/translation.json: Danish translations
19+
* app/frontend/src/locales/en/translation.json: English translations
20+
* app/frontend/src/locales/es/translation.json: Spanish translations
21+
* app/frontend/src/locales/fr/translation.json: French translations
22+
* app/frontend/src/locales/it/translation.json: Italian translations
23+
* app/frontend/src/locales/ja/translation.json: Japanese translations
24+
* app/frontend/src/locales/nl/translation.json: Dutch translations
25+
* app/frontend/src/locales/ptBR/translation.json: Portuguese translations
26+
* app/frontend/src/locales/tr/translation.json: Turkish translations
27+
* app/frontend/src/pages: Contains the main pages of the application
28+
* infra: Contains the Bicep templates for provisioning Azure resources.
29+
* tests: Contains the test code, including e2e tests, app integration tests, and unit tests.
30+
131
# Adding new data
232

333
New files should be added to the `data` folder, and then either run scripts/prepdocs.sh or scripts/prepdocs.ps1 to ingest the data.

.github/workflows/azure-dev.yml

Lines changed: 9 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -37,10 +37,10 @@ jobs:
3737
AZURE_DOCUMENTINTELLIGENCE_RESOURCE_GROUP: ${{ vars.AZURE_DOCUMENTINTELLIGENCE_RESOURCE_GROUP }}
3838
AZURE_DOCUMENTINTELLIGENCE_SKU: ${{ vars.AZURE_DOCUMENTINTELLIGENCE_SKU }}
3939
AZURE_DOCUMENTINTELLIGENCE_LOCATION: ${{ vars.AZURE_DOCUMENTINTELLIGENCE_LOCATION }}
40-
AZURE_COMPUTER_VISION_SERVICE: ${{ vars.AZURE_COMPUTER_VISION_SERVICE }}
41-
AZURE_COMPUTER_VISION_RESOURCE_GROUP: ${{ vars.AZURE_COMPUTER_VISION_RESOURCE_GROUP }}
42-
AZURE_COMPUTER_VISION_LOCATION: ${{ vars.AZURE_COMPUTER_VISION_LOCATION }}
43-
AZURE_COMPUTER_VISION_SKU: ${{ vars.AZURE_COMPUTER_VISION_SKU }}
40+
AZURE_VISION_SERVICE: ${{ vars.AZURE_VISION_SERVICE }}
41+
AZURE_VISION_RESOURCE_GROUP: ${{ vars.AZURE_VISION_RESOURCE_GROUP }}
42+
AZURE_VISION_LOCATION: ${{ vars.AZURE_VISION_LOCATION }}
43+
AZURE_VISION_SKU: ${{ vars.AZURE_VISION_SKU }}
4444
AZURE_SEARCH_INDEX: ${{ vars.AZURE_SEARCH_INDEX }}
4545
AZURE_SEARCH_SERVICE: ${{ vars.AZURE_SEARCH_SERVICE }}
4646
AZURE_SEARCH_SERVICE_RESOURCE_GROUP: ${{ vars.AZURE_SEARCH_SERVICE_RESOURCE_GROUP }}
@@ -67,11 +67,6 @@ jobs:
6767
AZURE_OPENAI_EMB_DEPLOYMENT_CAPACITY: ${{ vars.AZURE_OPENAI_EMB_DEPLOYMENT_CAPACITY }}
6868
AZURE_OPENAI_EMB_DEPLOYMENT_VERSION: ${{ vars.AZURE_OPENAI_EMB_DEPLOYMENT_VERSION }}
6969
AZURE_OPENAI_EMB_DIMENSIONS: ${{ vars.AZURE_OPENAI_EMB_DIMENSIONS }}
70-
AZURE_OPENAI_GPT4V_MODEL: ${{ vars.AZURE_OPENAI_GPT4V_MODEL }}
71-
AZURE_OPENAI_GPT4V_DEPLOYMENT: ${{ vars.AZURE_OPENAI_GPT4V_DEPLOYMENT }}
72-
AZURE_OPENAI_GPT4V_DEPLOYMENT_CAPACITY: ${{ vars.AZURE_OPENAI_GPT4V_DEPLOYMENT_CAPACITY }}
73-
AZURE_OPENAI_GPT4V_DEPLOYMENT_VERSION: ${{ vars.AZURE_OPENAI_GPT4V_DEPLOYMENT_VERSION }}
74-
AZURE_OPENAI_GPT4V_DEPLOYMENT_SKU: ${{ vars.AZURE_OPENAI_GPT4V_DEPLOYMENT_SKU }}
7570
USE_EVAL: ${{ vars.USE_EVAL }}
7671
AZURE_OPENAI_EVAL_MODEL: ${{ vars.AZURE_OPENAI_EVAL_MODEL }}
7772
AZURE_OPENAI_EVAL_MODEL_VERSION: ${{ vars.AZURE_OPENAI_EVAL_MODEL_VERSION }}
@@ -87,7 +82,7 @@ jobs:
8782
AZURE_APPLICATION_INSIGHTS_DASHBOARD: ${{ vars.AZURE_APPLICATION_INSIGHTS_DASHBOARD }}
8883
AZURE_LOG_ANALYTICS: ${{ vars.AZURE_LOG_ANALYTICS }}
8984
USE_VECTORS: ${{ vars.USE_VECTORS }}
90-
USE_GPT4V: ${{ vars.USE_GPT4V }}
85+
USE_MULTIMODAL: ${{ vars.USE_MULTIMODAL }}
9186
AZURE_VISION_ENDPOINT: ${{ vars.AZURE_VISION_ENDPOINT }}
9287
VISION_SECRET_NAME: ${{ vars.VISION_SECRET_NAME }}
9388
ENABLE_LANGUAGE_PICKER: ${{ vars.ENABLE_LANGUAGE_PICKER }}
@@ -116,6 +111,10 @@ jobs:
116111
USE_CHAT_HISTORY_BROWSER: ${{ vars.USE_CHAT_HISTORY_BROWSER }}
117112
USE_MEDIA_DESCRIBER_AZURE_CU: ${{ vars.USE_MEDIA_DESCRIBER_AZURE_CU }}
118113
USE_AI_PROJECT: ${{ vars.USE_AI_PROJECT }}
114+
RAG_SEARCH_TEXT_EMBEDDINGS: ${{ vars.RAG_SEARCH_TEXT_EMBEDDINGS }}
115+
RAG_SEARCH_IMAGE_EMBEDDINGS: ${{ vars.RAG_SEARCH_IMAGE_EMBEDDINGS }}
116+
RAG_SEND_TEXT_SOURCES: ${{ vars.RAG_SEND_TEXT_SOURCES }}
117+
RAG_SEND_IMAGE_SOURCES: ${{ vars.RAG_SEND_IMAGE_SOURCES }}
119118
steps:
120119
- name: Checkout
121120
uses: actions/checkout@v5

.github/workflows/evaluate.yaml

Lines changed: 5 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -35,10 +35,10 @@ jobs:
3535
AZURE_DOCUMENTINTELLIGENCE_RESOURCE_GROUP: ${{ vars.AZURE_DOCUMENTINTELLIGENCE_RESOURCE_GROUP }}
3636
AZURE_DOCUMENTINTELLIGENCE_SKU: ${{ vars.AZURE_DOCUMENTINTELLIGENCE_SKU }}
3737
AZURE_DOCUMENTINTELLIGENCE_LOCATION: ${{ vars.AZURE_DOCUMENTINTELLIGENCE_LOCATION }}
38-
AZURE_COMPUTER_VISION_SERVICE: ${{ vars.AZURE_COMPUTER_VISION_SERVICE }}
39-
AZURE_COMPUTER_VISION_RESOURCE_GROUP: ${{ vars.AZURE_COMPUTER_VISION_RESOURCE_GROUP }}
40-
AZURE_COMPUTER_VISION_LOCATION: ${{ vars.AZURE_COMPUTER_VISION_LOCATION }}
41-
AZURE_COMPUTER_VISION_SKU: ${{ vars.AZURE_COMPUTER_VISION_SKU }}
38+
AZURE_VISION_SERVICE: ${{ vars.AZURE_VISION_SERVICE }}
39+
AZURE_VISION_RESOURCE_GROUP: ${{ vars.AZURE_VISION_RESOURCE_GROUP }}
40+
AZURE_VISION_LOCATION: ${{ vars.AZURE_VISION_LOCATION }}
41+
AZURE_VISION_SKU: ${{ vars.AZURE_VISION_SKU }}
4242
AZURE_SEARCH_INDEX: ${{ vars.AZURE_SEARCH_INDEX }}
4343
AZURE_SEARCH_SERVICE: ${{ vars.AZURE_SEARCH_SERVICE }}
4444
AZURE_SEARCH_SERVICE_RESOURCE_GROUP: ${{ vars.AZURE_SEARCH_SERVICE_RESOURCE_GROUP }}
@@ -62,11 +62,6 @@ jobs:
6262
AZURE_OPENAI_EMB_DEPLOYMENT_CAPACITY: ${{ vars.AZURE_OPENAI_EMB_DEPLOYMENT_CAPACITY }}
6363
AZURE_OPENAI_EMB_DEPLOYMENT_VERSION: ${{ vars.AZURE_OPENAI_EMB_DEPLOYMENT_VERSION }}
6464
AZURE_OPENAI_EMB_DIMENSIONS: ${{ vars.AZURE_OPENAI_EMB_DIMENSIONS }}
65-
AZURE_OPENAI_GPT4V_MODEL: ${{ vars.AZURE_OPENAI_GPT4V_MODEL }}
66-
AZURE_OPENAI_GPT4V_DEPLOYMENT: ${{ vars.AZURE_OPENAI_GPT4V_DEPLOYMENT }}
67-
AZURE_OPENAI_GPT4V_DEPLOYMENT_CAPACITY: ${{ vars.AZURE_OPENAI_GPT4V_DEPLOYMENT_CAPACITY }}
68-
AZURE_OPENAI_GPT4V_DEPLOYMENT_VERSION: ${{ vars.AZURE_OPENAI_GPT4V_DEPLOYMENT_VERSION }}
69-
AZURE_OPENAI_GPT4V_DEPLOYMENT_SKU: ${{ vars.AZURE_OPENAI_GPT4V_DEPLOYMENT_SKU }}
7065
USE_EVAL: ${{ vars.USE_EVAL }}
7166
AZURE_OPENAI_EVAL_MODEL: ${{ vars.AZURE_OPENAI_EVAL_MODEL }}
7267
AZURE_OPENAI_EVAL_MODEL_VERSION: ${{ vars.AZURE_OPENAI_EVAL_MODEL_VERSION }}
@@ -82,7 +77,7 @@ jobs:
8277
AZURE_APPLICATION_INSIGHTS_DASHBOARD: ${{ vars.AZURE_APPLICATION_INSIGHTS_DASHBOARD }}
8378
AZURE_LOG_ANALYTICS: ${{ vars.AZURE_LOG_ANALYTICS }}
8479
USE_VECTORS: ${{ vars.USE_VECTORS }}
85-
USE_GPT4V: ${{ vars.USE_GPT4V }}
80+
USE_MULTIMODAL: ${{ vars.USE_MULTIMODAL }}
8681
AZURE_VISION_ENDPOINT: ${{ vars.AZURE_VISION_ENDPOINT }}
8782
VISION_SECRET_NAME: ${{ vars.VISION_SECRET_NAME }}
8883
ENABLE_LANGUAGE_PICKER: ${{ vars.ENABLE_LANGUAGE_PICKER }}

.github/workflows/python-test.yaml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -64,7 +64,7 @@ jobs:
6464
run: black . --check --verbose
6565
- name: Run Python tests
6666
if: runner.os != 'Windows'
67-
run: pytest -s -vv --cov --cov-report=xml --cov-fail-under=89
67+
run: pytest -s -vv --cov --cov-report=xml --cov-fail-under=90
6868
- name: Check diff coverage
6969
if: runner.os != 'Windows'
7070
run: |

README.md

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -61,7 +61,7 @@ The repo includes sample data so it's ready to try end to end. In this sample ap
6161
- Renders citations and thought process for each answer
6262
- Includes settings directly in the UI to tweak the behavior and experiment with options
6363
- Integrates Azure AI Search for indexing and retrieval of documents, with support for [many document formats](/docs/data_ingestion.md#supported-document-formats) as well as [integrated vectorization](/docs/data_ingestion.md#overview-of-integrated-vectorization)
64-
- Optional usage of [GPT-4 with vision](/docs/gpt4v.md) to reason over image-heavy documents
64+
- Optional usage of [multimodal models](/docs/multimodal.md) to reason over image-heavy documents
6565
- Optional addition of [speech input/output](/docs/deploy_features.md#enabling-speech-inputoutput) for accessibility
6666
- Optional automation of [user login and data access](/docs/login_and_acl.md) via Microsoft Entra
6767
- Performance tracing and monitoring with Application Insights
@@ -92,7 +92,7 @@ However, you can try the [Azure pricing calculator](https://azure.com/e/e3490de2
9292
- Azure AI Search: Basic tier, 1 replica, free level of semantic search. Pricing per hour. [Pricing](https://azure.microsoft.com/pricing/details/search/)
9393
- Azure Blob Storage: Standard tier with ZRS (Zone-redundant storage). Pricing per storage and read operations. [Pricing](https://azure.microsoft.com/pricing/details/storage/blobs/)
9494
- Azure Cosmos DB: Only provisioned if you enabled [chat history with Cosmos DB](docs/deploy_features.md#enabling-persistent-chat-history-with-azure-cosmos-db). Serverless tier. Pricing per request unit and storage. [Pricing](https://azure.microsoft.com/pricing/details/cosmos-db/)
95-
- Azure AI Vision: Only provisioned if you enabled [GPT-4 with vision](docs/gpt4v.md). Pricing per 1K transactions. [Pricing](https://azure.microsoft.com/pricing/details/cognitive-services/computer-vision/)
95+
- Azure AI Vision: Only provisioned if you enabled [multimodal approach](docs/multimodal.md). Pricing per 1K transactions. [Pricing](https://azure.microsoft.com/pricing/details/cognitive-services/computer-vision/)
9696
- Azure AI Content Understanding: Only provisioned if you enabled [media description](docs/deploy_features.md#enabling-media-description-with-azure-content-understanding). Pricing per 1K images. [Pricing](https://azure.microsoft.com/pricing/details/content-understanding/)
9797
- Azure Monitor: Pay-as-you-go tier. Costs based on data ingested. [Pricing](https://azure.microsoft.com/pricing/details/monitor/)
9898

@@ -255,7 +255,7 @@ You can find extensive documentation in the [docs](docs/README.md) folder:
255255
- [Enabling optional features](docs/deploy_features.md)
256256
- [All features](docs/deploy_features.md)
257257
- [Login and access control](docs/login_and_acl.md)
258-
- [GPT-4 Turbo with Vision](docs/gpt4v.md)
258+
- [Multimodal](docs/multimodal.md)
259259
- [Reasoning](docs/reasoning.md)
260260
- [Private endpoints](docs/deploy_private.md)
261261
- [Agentic retrieval](docs/agentic_retrieval.md)

0 commit comments

Comments
 (0)