Skip to content

Commit 52e06c4

Browse files
committed
add initial test
1 parent 82f2cdb commit 52e06c4

File tree

3 files changed

+73
-6
lines changed

3 files changed

+73
-6
lines changed

tests/conftest.py

Lines changed: 1 addition & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -11,7 +11,6 @@
1111
import pytest
1212
import pytest_asyncio
1313
from azure.search.documents.agent.aio import KnowledgeAgentRetrievalClient
14-
from azure.search.documents.agent.models import KnowledgeAgentRetrievalResponse
1514
from azure.search.documents.aio import SearchClient
1615
from azure.search.documents.indexes.aio import SearchIndexClient
1716
from azure.search.documents.indexes.models import (
@@ -61,7 +60,7 @@ async def mock_search(self, *args, **kwargs):
6160

6261

6362
async def mock_retrieve(self, *args, **kwargs):
64-
return KnowledgeAgentRetrievalResponse()
63+
return
6564

6665

6766
@pytest.fixture
@@ -251,7 +250,6 @@ def patch(openai_client):
251250

252251
return patch
253252

254-
255253
@pytest.fixture
256254
def mock_acs_search(monkeypatch):
257255
monkeypatch.setattr(SearchClient, "search", mock_search)

tests/mocks.py

Lines changed: 26 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -10,6 +10,8 @@
1010
VectorQuery,
1111
)
1212
from azure.storage.blob import BlobProperties
13+
from azure.search.documents.agent.models import KnowledgeAgentRetrievalResponse, KnowledgeAgentMessage, KnowledgeAgentMessageTextContent, KnowledgeAgentModelQueryPlanningActivityRecord, KnowledgeAgentSearchActivityRecord, KnowledgeAgentSearchActivityRecordQuery, KnowledgeAgentAzureSearchDocReference
14+
1315

1416
MOCK_EMBEDDING_DIMENSIONS = 1536
1517
MOCK_EMBEDDING_MODEL_NAME = "text-embedding-ada-002"
@@ -207,6 +209,30 @@ def mock_computervision_response():
207209
),
208210
)
209211

212+
def mock_retrieval_response():
213+
return KnowledgeAgentRetrievalResponse(
214+
response=[
215+
KnowledgeAgentMessage(
216+
role="assistant",
217+
content=[KnowledgeAgentMessageTextContent(text=r'[{"ref_id":0,"title":"Benefit_Options-2.pdf","content":"There is a whistleblower policy."}]')],
218+
)
219+
],
220+
activity=[
221+
KnowledgeAgentModelQueryPlanningActivityRecord(id=0, input_tokens=10, output_tokens=20, elapsed_ms=200),
222+
KnowledgeAgentSearchActivityRecord(id=1, target_index="index", query=KnowledgeAgentSearchActivityRecordQuery(search="whistleblower query"),count=10, elapsed_ms=50)
223+
],
224+
references=[
225+
KnowledgeAgentAzureSearchDocReference(
226+
id=0,
227+
activity_source=1,
228+
doc_key="Benefit_Options-2.pdf",
229+
source_data={
230+
"content": "There is a whistleblower policy.",
231+
"sourcepage": "Benefit_Options-2.pdf"
232+
}
233+
)
234+
]
235+
)
210236

211237
class MockAudio:
212238
def __init__(self, audio_data):

tests/test_chatapproach.py

Lines changed: 46 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -13,12 +13,16 @@
1313
MOCK_EMBEDDING_DIMENSIONS,
1414
MOCK_EMBEDDING_MODEL_NAME,
1515
MockAsyncSearchResultsIterator,
16+
mock_retrieval_response
1617
)
1718

1819

1920
async def mock_search(*args, **kwargs):
2021
return MockAsyncSearchResultsIterator(kwargs.get("search_text"), kwargs.get("vector_queries"))
2122

23+
async def mock_retrieval(*args, **kwargs):
24+
return mock_retrieval_response()
25+
2226

2327
@pytest.fixture
2428
def chat_approach():
@@ -27,7 +31,7 @@ def chat_approach():
2731
search_index_name=None,
2832
agent_model=None,
2933
agent_deployment=None,
30-
agent_client=KnowledgeAgentRetrievalClient(endpoint="", agent_name="", credential=AzureKeyCredential("")),
34+
agent_client=None,
3135
auth_helper=None,
3236
openai_client=None,
3337
chatgpt_model="gpt-4o-mini",
@@ -178,7 +182,7 @@ async def test_search_results_filtering_by_scores(
178182
search_index_name=None,
179183
agent_model=None,
180184
agent_deployment=None,
181-
agent_client=KnowledgeAgentRetrievalClient(endpoint="", agent_name="", credential=AzureKeyCredential("")),
185+
agent_client=None,
182186
auth_helper=None,
183187
openai_client=None,
184188
chatgpt_model="gpt-4o-mini",
@@ -221,7 +225,7 @@ async def test_search_results_query_rewriting(monkeypatch):
221225
search_index_name=None,
222226
agent_model=None,
223227
agent_deployment=None,
224-
agent_client=KnowledgeAgentRetrievalClient(endpoint="", agent_name="", credential=AzureKeyCredential("")),
228+
agent_client=None,
225229
auth_helper=None,
226230
openai_client=None,
227231
chatgpt_model="gpt-35-turbo",
@@ -259,3 +263,42 @@ async def validate_qr_and_mock_search(*args, **kwargs):
259263
)
260264
assert len(results) == 1
261265
assert query_rewrites == "generative"
266+
267+
@pytest.mark.asyncio
268+
async def test_agent_retrieval_results(monkeypatch):
269+
chat_approach = ChatReadRetrieveReadApproach(
270+
search_client=None,
271+
search_index_name=None,
272+
agent_model=None,
273+
agent_deployment=None,
274+
agent_client=None,
275+
auth_helper=None,
276+
openai_client=None,
277+
chatgpt_model="gpt-35-turbo",
278+
chatgpt_deployment="chat",
279+
embedding_deployment="embeddings",
280+
embedding_model=MOCK_EMBEDDING_MODEL_NAME,
281+
embedding_dimensions=MOCK_EMBEDDING_DIMENSIONS,
282+
embedding_field="embedding3",
283+
sourcepage_field="",
284+
content_field="",
285+
query_language="en-us",
286+
query_speller="lexicon",
287+
prompt_manager=PromptyManager()
288+
)
289+
290+
agent_client = KnowledgeAgentRetrievalClient(endpoint="", agent_name="", credential=AzureKeyCredential(""))
291+
292+
monkeypatch.setattr(KnowledgeAgentRetrievalClient, "retrieve", mock_retrieval)
293+
294+
_, results = await chat_approach.run_agentic_retrieval(
295+
messages=[],
296+
agent_client=agent_client,
297+
search_index_name=""
298+
)
299+
300+
assert len(results) == 1
301+
assert results[0].id == "Benefit_Options-2.pdf"
302+
assert results[0].content == "There is a whistleblower policy."
303+
assert results[0].sourcepage == "Benefit_Options-2.pdf"
304+
assert results[0].search_agent_query == "whistleblower query"

0 commit comments

Comments
 (0)