Qifan Zhang
Add Qwen3 embedding support with last-token pooling
b91a6bd
Raw
History Blame Contribute Delete
1.93 kB
import unittest
from unittest.mock import patch
import pandas as pd
import torch
from utils import pipeline
class FakeEmbeddingModel:
def __init__(self, vectors):
self.vectors = vectors
self.calls = []
def __call__(self, text, pooling='mean'):
self.calls.append((text, pooling))
return torch.tensor(self.vectors[text])
class PipelineFactoryTest(unittest.TestCase):
def test_originality_uses_embedding_factory(self):
model = FakeEmbeddingModel(
{
'prompt': [1.0, 0.0],
'response': [0.0, 1.0],
}
)
df = pd.DataFrame({'prompt': ['prompt'], 'response': ['response']})
with patch.object(pipeline, 'get_embedding_model', return_value=model) as factory:
result = pipeline.p0_originality(df, 'fake-model', 'mean')
factory.assert_called_once_with('fake-model')
self.assertAlmostEqual(result.loc[0, 'originality'], 1.0)
self.assertEqual(model.calls, [('prompt', 'mean'), ('response', 'mean')])
def test_flexibility_uses_embedding_factory(self):
model = FakeEmbeddingModel(
{
'p': [1.0, 0.0],
'a': [1.0, 0.0],
'b': [0.0, 1.0],
}
)
df = pd.DataFrame(
{
'id': [1, 1, 1],
'prompt': ['p', 'p', 'p'],
'response': ['a', 'b', 'a'],
}
)
with patch.object(pipeline, 'get_embedding_model', return_value=model) as factory:
result = pipeline.p1_flexibility(df, 'fake-model', 'cls')
factory.assert_called_once_with('fake-model')
self.assertEqual(len(result), 1)
self.assertAlmostEqual(result.loc[0, 'flexibility'], 2.0)
self.assertEqual(model.calls, [('a', 'cls'), ('b', 'cls'), ('a', 'cls')])
if __name__ == '__main__':
unittest.main()