File size: 5,494 Bytes
4304c6d
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
import os

import pytest
from api.core.model_runtime.entities.rerank_entities import RerankResult

from core.model_runtime.errors.validate import CredentialsValidateFailedError
from core.model_runtime.model_providers.localai.rerank.rerank import LocalaiRerankModel


def test_validate_credentials_for_chat_model():
    model = LocalaiRerankModel()

    with pytest.raises(CredentialsValidateFailedError):
        model.validate_credentials(
            model='bge-reranker-v2-m3',
            credentials={
                'server_url': 'hahahaha',
                'completion_type': 'completion',
            }
        )

    model.validate_credentials(
        model='bge-reranker-base',
        credentials={
            'server_url': os.environ.get('LOCALAI_SERVER_URL'),
            'completion_type': 'completion',
        }
    )

def test_invoke_rerank_model():
    model = LocalaiRerankModel()

    response = model.invoke(
        model='bge-reranker-base',
        credentials={
            'server_url': os.environ.get('LOCALAI_SERVER_URL')
        },
        query='Organic skincare products for sensitive skin',
        docs=[
            "Eco-friendly kitchenware for modern homes",
            "Biodegradable cleaning supplies for eco-conscious consumers",
            "Organic cotton baby clothes for sensitive skin",
            "Natural organic skincare range for sensitive skin",
            "Tech gadgets for smart homes: 2024 edition",
            "Sustainable gardening tools and compost solutions",
            "Sensitive skin-friendly facial cleansers and toners",
            "Organic food wraps and storage solutions",
            "Yoga mats made from recycled materials"
        ],
        top_n=3,
        score_threshold=0.75,
        user="abc-123"
    )

    assert isinstance(response, RerankResult)
    assert len(response.docs) == 3
import os

import pytest
from api.core.model_runtime.entities.rerank_entities import RerankDocument, RerankResult

from core.model_runtime.errors.validate import CredentialsValidateFailedError
from core.model_runtime.model_providers.localai.rerank.rerank import LocalaiRerankModel


def test_validate_credentials_for_chat_model():
    model = LocalaiRerankModel()

    with pytest.raises(CredentialsValidateFailedError):
        model.validate_credentials(
            model='bge-reranker-v2-m3',
            credentials={
                'server_url': 'hahahaha',
                'completion_type': 'completion',
            }
        )

    model.validate_credentials(
        model='bge-reranker-base',
        credentials={
            'server_url': os.environ.get('LOCALAI_SERVER_URL'),
            'completion_type': 'completion',
        }
    )

def test_invoke_rerank_model():
    model = LocalaiRerankModel()

    response = model.invoke(
        model='bge-reranker-base',
        credentials={
            'server_url': os.environ.get('LOCALAI_SERVER_URL')
        },
        query='Organic skincare products for sensitive skin',
        docs=[
            "Eco-friendly kitchenware for modern homes",
            "Biodegradable cleaning supplies for eco-conscious consumers",
            "Organic cotton baby clothes for sensitive skin",
            "Natural organic skincare range for sensitive skin",
            "Tech gadgets for smart homes: 2024 edition",
            "Sustainable gardening tools and compost solutions",
            "Sensitive skin-friendly facial cleansers and toners",
            "Organic food wraps and storage solutions",
            "Yoga mats made from recycled materials"
        ],
        top_n=3,
        score_threshold=0.75,
        user="abc-123"
    )

    assert isinstance(response, RerankResult)
    assert len(response.docs) == 3

def test__invoke():
    model = LocalaiRerankModel()

    # Test case 1: Empty docs
    result = model._invoke(
        model='bge-reranker-base',
        credentials={
            'server_url': 'https://example.com',
            'api_key': '1234567890'
        },
        query='Organic skincare products for sensitive skin',
        docs=[],
        top_n=3,
        score_threshold=0.75,
        user="abc-123"
    )
    assert isinstance(result, RerankResult)
    assert len(result.docs) == 0

    # Test case 2: Valid invocation
    result = model._invoke(
        model='bge-reranker-base',
        credentials={
            'server_url': 'https://example.com',
            'api_key': '1234567890'
        },
        query='Organic skincare products for sensitive skin',
        docs=[
            "Eco-friendly kitchenware for modern homes",
            "Biodegradable cleaning supplies for eco-conscious consumers",
            "Organic cotton baby clothes for sensitive skin",
            "Natural organic skincare range for sensitive skin",
            "Tech gadgets for smart homes: 2024 edition",
            "Sustainable gardening tools and compost solutions",
            "Sensitive skin-friendly facial cleansers and toners",
            "Organic food wraps and storage solutions",
            "Yoga mats made from recycled materials"
        ],
        top_n=3,
        score_threshold=0.75,
        user="abc-123"
    )
    assert isinstance(result, RerankResult)
    assert len(result.docs) == 3
    assert all(isinstance(doc, RerankDocument) for doc in result.docs)