2023-04-11 10:33:43 +02:00
from typing import List
2023-06-09 10:42:37 +02:00
from unittest . mock import patch , Mock
2023-04-11 10:33:43 +02:00
from uuid import UUID
from numpy import loadtxt
import pytest
from haystack . schema import Document
2023-06-21 16:38:45 +02:00
from haystack . nodes import SentenceTransformersRanker , TopPSampler , TransformersDocumentClassifier
2023-04-11 10:33:43 +02:00
@pytest.fixture
def docs_with_true_emb ( test_rootdir ) :
return [
Document (
content = " The capital of Germany is the city state of Berlin. " ,
embedding = loadtxt ( test_rootdir / " samples " / " embeddings " / " embedding_1.txt " ) ,
) ,
Document (
content = " Berlin is the capital and largest city of Germany by both area and population. " ,
embedding = loadtxt ( test_rootdir / " samples " / " embeddings " / " embedding_2.txt " ) ,
) ,
]
@pytest.fixture
def docs_with_ids ( docs ) - > List [ Document ] :
# Should be already sorted
uuids = [
UUID ( " 190a2421-7e48-4a49-a639-35a86e202dfb " ) ,
UUID ( " 20ff1706-cb55-4704-8ae8-a3459774c8dc " ) ,
UUID ( " 5078722f-07ae-412d-8ccb-b77224c4bacb " ) ,
UUID ( " 81d8ca45-fad1-4d1c-8028-d818ef33d755 " ) ,
UUID ( " f985789f-1673-4d8f-8d5f-2b8d3a9e8e23 " ) ,
]
uuids . sort ( )
for doc , uuid in zip ( docs , uuids ) :
doc . id = str ( uuid )
return docs
@pytest.fixture
def ranker_two_logits ( ) :
return SentenceTransformersRanker ( model_name_or_path = " deepset/gbert-base-germandpr-reranking " )
@pytest.fixture
def ranker ( ) :
return SentenceTransformersRanker ( model_name_or_path = " cross-encoder/ms-marco-MiniLM-L-12-v2 " )
@pytest.fixture
def top_p_sampler ( ) :
return TopPSampler ( )
@pytest.fixture
def document_classifier ( ) :
return TransformersDocumentClassifier (
model_name_or_path = " bhadresh-savani/distilbert-base-uncased-emotion " , use_gpu = False , top_k = 2
)
@pytest.fixture
def zero_shot_document_classifier ( ) :
return TransformersDocumentClassifier (
model_name_or_path = " cross-encoder/nli-distilroberta-base " ,
use_gpu = False ,
task = " zero-shot-classification " ,
labels = [ " negative " , " positive " ] ,
)
@pytest.fixture
def batched_document_classifier ( ) :
return TransformersDocumentClassifier (
model_name_or_path = " bhadresh-savani/distilbert-base-uncased-emotion " , use_gpu = False , batch_size = 16
)
@pytest.fixture
def indexing_document_classifier ( ) :
return TransformersDocumentClassifier (
model_name_or_path = " bhadresh-savani/distilbert-base-uncased-emotion " ,
use_gpu = False ,
batch_size = 16 ,
classification_field = " class_field " ,
)
2023-06-09 10:42:37 +02:00
example_serperdev_response = {
" searchParameters " : {
" q " : " Who is the boyfriend of Olivia Wilde? " ,
" gl " : " us " ,
" hl " : " en " ,
" autocorrect " : True ,
" type " : " search " ,
} ,
" organic " : [
{
" title " : " Olivia Wilde embraces Jason Sudeikis amid custody battle, Harry Styles split - Page Six " ,
" link " : " https://pagesix.com/2023/01/29/olivia-wilde-hugs-it-out-with-jason-sudeikis-after-harry-styles-split/ " ,
" snippet " : " Looks like Olivia Wilde and Jason Sudeikis are starting 2023 on good terms. Amid their highly publicized custody battle – and the actress ' ... " ,
" date " : " Jan 29, 2023 " ,
" position " : 1 ,
} ,
{
" title " : " Olivia Wilde Is ' Quietly Dating ' Again Following Harry Styles Split: ' He Makes Her Happy ' " ,
" link " : " https://www.yahoo.com/now/olivia-wilde-quietly-dating-again-183844364.html " ,
" snippet " : " Olivia Wilde is “quietly dating again” following her November 2022 split from Harry Styles, a source exclusively tells Life & Style. " ,
" date " : " Feb 10, 2023 " ,
" position " : 2 ,
} ,
{
" title " : " Olivia Wilde and Harry Styles ' Relationship Timeline: The Way They Were - Us Weekly " ,
" link " : " https://www.usmagazine.com/celebrity-news/pictures/olivia-wilde-and-harry-styles-relationship-timeline/ " ,
" snippet " : " Olivia Wilde started dating Harry Styles after ending her years-long engagement to Jason Sudeikis — see their relationship timeline. " ,
" date " : " Mar 10, 2023 " ,
" imageUrl " : " https://encrypted-tbn0.gstatic.com/images?q=tbn:ANd9GcSgTcalNFvptTbYBiDXX55s8yCGfn6F1qbed9DAN16LvynTr9GayK5SPmY&s " ,
" position " : 3 ,
} ,
{
" title " : " Olivia Wilde Is ' Ready to Date Again ' After Harry Styles Split - Us Weekly " ,
" link " : " https://www.usmagazine.com/celebrity-news/news/olivia-wilde-is-ready-to-date-again-after-harry-styles-split/ " ,
" snippet " : " Ready for love! Olivia Wilde is officially back on the dating scene following her split from her ex-boyfriend, Harry Styles. " ,
" date " : " Mar 1, 2023 " ,
" imageUrl " : " https://encrypted-tbn0.gstatic.com/images?q=tbn:ANd9GcRCRAeRy5sVE631ZctzbzuOF70xkIOHaTvh2K7dYvdiVBwALiKrIjpscok&s " ,
" position " : 4 ,
} ,
{
" title " : " Harry Styles and Olivia Wilde ' s Definitive Relationship Timeline - Harper ' s Bazaar " ,
" link " : " https://www.harpersbazaar.com/celebrity/latest/a35172115/harry-styles-olivia-wilde-relationship-timeline/ " ,
" snippet " : " November 2020: News breaks about Olivia splitting from fiancé Jason Sudeikis. ... In mid-November, news breaks of Olivia Wilde ' s split from Jason ... " ,
" date " : " Feb 23, 2023 " ,
" imageUrl " : " https://encrypted-tbn0.gstatic.com/images?q=tbn:ANd9GcRRqw3fvZOIGHEepxCc7yFAWYsS_v_1H6X-4nxyFJxdfRuFQw_BrI6JVzI&s " ,
" position " : 5 ,
} ,
{
" title " : " Harry Styles and Olivia Wilde ' s Relationship Timeline - People " ,
" link " : " https://people.com/music/harry-styles-olivia-wilde-relationship-timeline/ " ,
" snippet " : " Harry Styles and Olivia Wilde first met on the set of Don ' t Worry Darling and stepped out as a couple in January 2021. Relive all their biggest relationship ... " ,
" position " : 6 ,
} ,
{
" title " : " Jason Sudeikis and Olivia Wilde ' s Relationship Timeline - People " ,
" link " : " https://people.com/movies/jason-sudeikis-olivia-wilde-relationship-timeline/ " ,
" snippet " : " Jason Sudeikis and Olivia Wilde ended their engagement of seven years in 2020. Here ' s a complete timeline of their relationship. " ,
" date " : " Mar 24, 2023 " ,
" imageUrl " : " https://encrypted-tbn0.gstatic.com/images?q=tbn:ANd9GcSleZoXusQyJJe2WMgIuck_cVaJ8AE0_hU2QxsXzYvKANi55UQlv82yAVI&s " ,
" position " : 7 ,
} ,
{
" title " : " Olivia Wilde ' s anger at ex-boyfriend Harry Styles: She resents him and thinks he was using her | Marca " ,
" link " : " https://www.marca.com/en/lifestyle/celebrities/2023/02/23/63f779a4e2704e8d988b4624.html " ,
" snippet " : " The two started dating after Wilde split up with actor Jason Sudeikisin 2020. However, their relationship came to an end last November. " ,
" date " : " Feb 23, 2023 " ,
" imageUrl " : " https://encrypted-tbn0.gstatic.com/images?q=tbn:ANd9GcQBgJF2mSnIWCvPrqUqM4WTI9xPNWPyLvHuune85swpB1yE_G8cy_7KRh0&s " ,
" position " : 8 ,
} ,
{
" title " : " Olivia Wilde ' s dating history: Who has the actress dated? | The US Sun " ,
" link " : " https://www.the-sun.com/entertainment/5221040/olivia-wildes-dating-history/ " ,
" snippet " : " AMERICAN actress Olivia Wilde started dating Harry Styles in January 2021 after breaking off her engagement the year prior. " ,
" date " : " Nov 19, 2022 " ,
" imageUrl " : " https://encrypted-tbn0.gstatic.com/images?q=tbn:ANd9GcTpm8BToVFHJoH6yRggg0fLocLT9mt6lwsnRxFFDNdDGhDydzQiSKZ9__g&s " ,
" position " : 9 ,
} ,
] ,
" relatedSearches " : [
{ " query " : " Harry Styles girlfriends in order " } ,
{ " query " : " Harry Styles and Olivia Wilde engaged " } ,
{ " query " : " Harry Styles and Olivia Wilde wedding " } ,
{ " query " : " Who is Harry Styles married to " } ,
{ " query " : " Jason Sudeikis Olivia Wilde relationship " } ,
{ " query " : " Olivia Wilde and Jason Sudeikis kids " } ,
{ " query " : " Olivia Wilde children " } ,
{ " query " : " Harry Styles and Olivia Wilde age difference " } ,
{ " query " : " Jason Sudeikis Olivia Wilde, Harry Styles " } ,
] ,
}
@pytest.fixture
def mock_web_search ( ) :
with patch ( " haystack.nodes.search_engine.providers.requests " ) as mock_run :
mock_run . request . return_value = Mock ( status_code = 200 , json = lambda : example_serperdev_response )
yield mock_run