Files
qwenpaw/tests/unit/agents/memory/test_embedding_model.py
agent-radar 1a3a4ccde1
Creator App Tests / PR Spam Gate (push) Skipped
Frontend Tests / PR Spam Gate (push) Skipped
NPM Format (website & console) / PR Spam Gate (push) Skipped
Pre-commit Checks / PR Spam Gate (push) Skipped
QwenPaw Creator Plugin Release / check-version (push) Canceled after 0s
QwenPaw Creator Plugin Release / upload-oss (push) Canceled after 0s
Tests / PR Spam Gate (push) Skipped
CodeQL / CodeQL (python) (push) Canceled after 0s
CodeQL / CodeQL (typescript) (push) Canceled after 0s
Creator App Tests / Creator Backend Tests (push) Canceled after 0s
Creator App Tests / Creator UI Build & Tests (push) Canceled after 0s
E2E Smoke Tests / Playwright UI Smoke (push) Canceled after 0s
Frontend Tests / Detect console changes (push) Canceled after 0s
NPM Format (website & console) / website format check (push) Canceled after 0s
NPM Format (website & console) / console format check (push) Canceled after 0s
Pre-commit Checks / Pre-commit (push) Canceled after 0s
QwenPaw Data Plugin Release / check-version (push) Canceled after 0s
Tests / Detect code changes (push) Canceled after 0s
Frontend Tests / Vitest Unit Tests (push) Canceled after 0s
Frontend Tests / Frontend Summary (push) Canceled after 0s
QwenPaw Data Plugin Release / upload-oss (push) Canceled after 0s
Tests / Maintainer Approval (push) Canceled after 0s
Tests / Unit Tests - py3.11 - macos-latest (push) Canceled after 0s
Tests / Unit Tests - py3.11 - ubuntu-latest (push) Canceled after 0s
Tests / Unit Tests - py3.13 - ubuntu-latest (push) Canceled after 0s
Tests / Unit Tests - py3.11 - windows-latest (push) Canceled after 0s
Tests / Contract Tests - py3.11 - macos-latest (push) Canceled after 0s
Tests / Contract Tests - py3.11 - ubuntu-latest (push) Canceled after 0s
Tests / Contract Tests - py3.13 - ubuntu-latest (push) Canceled after 0s
Tests / Contract Tests - py3.11 - windows-latest (push) Canceled after 0s
Tests / Integrated Tests - py3.11 - macos-latest - p0 (push) Canceled after 0s
Tests / Integrated Tests - py3.11 - macos-latest - p1 (push) Canceled after 0s
Tests / Integrated Tests - py3.11 - macos-latest - p2 (push) Canceled after 0s
Tests / Integrated Tests - py3.11 - ubuntu-latest - fallback (push) Canceled after 0s
Tests / Integrated Tests - py3.11 - ubuntu-latest - p0 (push) Canceled after 0s
Tests / Integrated Tests - py3.11 - ubuntu-latest - p1 (push) Canceled after 0s
Tests / Integrated Tests - py3.11 - ubuntu-latest - p2 (push) Canceled after 0s
Tests / Integrated Tests - py3.13 - ubuntu-latest - p0 (push) Canceled after 0s
Tests / Integrated Tests - py3.13 - ubuntu-latest - p1 (push) Canceled after 0s
Tests / Integrated Tests - py3.13 - ubuntu-latest - p2 (push) Canceled after 0s
Tests / Integrated Tests - py3.11 - windows-latest - p0 (push) Canceled after 0s
Tests / Integrated Tests - py3.11 - windows-latest - p1 (push) Canceled after 0s
Tests / Integrated Tests - py3.11 - windows-latest - p2 (push) Canceled after 0s
Tests / Coverage Report (push) Canceled after 0s
Tests / Test Summary (push) Canceled after 0s
源码快照 @ 2026-09-01 (source-only, 剔除非源码素材)
2026-09-01 20:01:50 +08:00

129 lines
3.5 KiB
Python

# -*- coding: utf-8 -*-
"""Tests for AgentScope embedding model construction and probing."""
from types import SimpleNamespace
import pytest
from qwenpaw.agents.memory import embedding_model as module
from qwenpaw.config.config import EmbeddingModelConfig
def _config(**overrides) -> EmbeddingModelConfig:
values = {
"backend": "openai",
"api_key": "test-key",
"base_url": "https://example.com/v1/",
"model_name": "embedding-model",
"dimensions": 3,
"use_dimensions": False,
}
values.update(overrides)
return EmbeddingModelConfig(**values)
def test_create_openai_embedding_model_respects_pass_dimensions() -> None:
model = module.create_embedding_model(
_config(use_dimensions=False),
max_retries=1,
)
assert model.model == "embedding-model"
assert model.dimensions == 3
assert model.pass_dimensions is False
assert model.max_retries == 1
@pytest.mark.asyncio
async def test_probe_accepts_matching_finite_vector(monkeypatch) -> None:
class FakeModel:
async def __call__(self, _inputs):
return SimpleNamespace(embeddings=[[0.1, 0.2, 0.3]])
monkeypatch.setattr(
module,
"create_embedding_model",
lambda *_args, **_kwargs: FakeModel(),
)
model, result = await module.test_embedding_model(_config())
assert model is not None
assert result.success is True
assert result.actual_dimensions == 3
@pytest.mark.asyncio
async def test_probe_rejects_dimension_mismatch(monkeypatch) -> None:
class FakeModel:
async def __call__(self, _inputs):
return SimpleNamespace(embeddings=[[0.1, 0.2]])
monkeypatch.setattr(
module,
"create_embedding_model",
lambda *_args, **_kwargs: FakeModel(),
)
model, result = await module.test_embedding_model(_config())
assert model is None
assert result.success is False
assert result.actual_dimensions == 2
assert "expected 3, got 2" in result.message
@pytest.mark.asyncio
async def test_probe_uses_configured_health_check_timeout(monkeypatch) -> None:
observed = {}
class FakeModel:
async def __call__(self, _inputs):
return SimpleNamespace(embeddings=[[0.1, 0.2, 0.3]])
async def fake_wait_for(awaitable, timeout):
observed["timeout"] = timeout
return await awaitable
monkeypatch.setattr(
module,
"create_embedding_model",
lambda *_args, **_kwargs: FakeModel(),
)
monkeypatch.setattr(module.asyncio, "wait_for", fake_wait_for)
_model, result = await module.test_embedding_model(
_config(health_check_timeout=42),
)
assert result.success is True
assert observed["timeout"] == 42
def test_vector_space_fingerprint_ignores_key_and_cache_settings() -> None:
first = _config(api_key="old", max_cache_size=10)
second = _config(api_key="new", max_cache_size=20)
assert module.embedding_vector_space_fingerprint(
first,
) == module.embedding_vector_space_fingerprint(second)
def test_tested_config_fingerprint_ignores_reme_store_settings() -> None:
first = _config(
enable_cache=True,
max_cache_size=10,
max_input_length=100,
max_batch_size=2,
)
second = _config(
enable_cache=False,
max_cache_size=20,
max_input_length=200,
max_batch_size=4,
)
assert module.embedding_config_fingerprint(
first,
) == module.embedding_config_fingerprint(second)