Text Generation
PEFT
Chinese
English
preference-learning
qlora
agent
personalization
association-engine
Instructions to use feiertu/hermes-association-engine with libraries, inference providers, notebooks, and local apps. Follow these links to get started.
- Libraries
- PEFT
How to use feiertu/hermes-association-engine with PEFT:
Task type is invalid.
- Notebooks
- Google Colab
- Kaggle
| """测试 record_detail.""" | |
| import uuid | |
| import pytest | |
| from hermes_core.embedder import Embedder | |
| from hermes_core.recorder import record_detail | |
| pytestmark = pytest.mark.requires_embedder | |
| def embedder(): | |
| return Embedder() | |
| def _uid(): | |
| """生成唯一 user_id,确保测试隔离。""" | |
| return f"u_{uuid.uuid4().hex[:8]}" | |
| def test_record_first_entry(embedder): | |
| result = record_detail( | |
| user_id=_uid(), scope_desc="后端API开发", | |
| dimensions=[{"key": "language", "value": "TypeScript", "context": "默认语言"}], | |
| embedder=embedder, | |
| ) | |
| assert result["status"] == "recorded" | |
| assert result["dimension_count"] == 1 | |
| assert result["id"].startswith("rec_") | |
| def test_record_dimension_increment_enforced(embedder): | |
| """同 scope 内,维度数必须递增。""" | |
| uid = _uid() | |
| # 第一条: 2 维 | |
| result1 = record_detail( | |
| user_id=uid, scope_desc="后端开发", | |
| dimensions=[ | |
| {"key": "language", "value": "TypeScript", "context": ""}, | |
| {"key": "framework", "value": "Express", "context": ""}, | |
| ], | |
| embedder=embedder, | |
| ) | |
| assert result1["status"] == "recorded" | |
| # 第二条: 1 维 → 应拒绝 | |
| result2 = record_detail( | |
| user_id=uid, scope_desc="后端开发", | |
| dimensions=[{"key": "language", "value": "Python", "context": ""}], | |
| embedder=embedder, | |
| ) | |
| assert result2["status"] == "rejected" | |
| assert "dimension" in result2["reason"].lower() | |
| def test_record_same_conversation_relaxes_constraint(embedder): | |
| """同一次对话内维度约束松弛。""" | |
| uid = _uid() | |
| conv_id = "conv_test_123" | |
| result1 = record_detail( | |
| user_id=uid, scope_desc="后端开发", | |
| dimensions=[ | |
| {"key": "language", "value": "TypeScript", "context": ""}, | |
| {"key": "framework", "value": "Express", "context": ""}, | |
| ], | |
| conversation_id=conv_id, embedder=embedder, | |
| ) | |
| assert result1["status"] == "recorded" | |
| result2 = record_detail( | |
| user_id=uid, scope_desc="后端开发", | |
| dimensions=[{"key": "db", "value": "PostgreSQL", "context": ""}], | |
| conversation_id=conv_id, embedder=embedder, | |
| ) | |
| assert result2["status"] == "recorded" # 同对话,约束松弛 | |
| def test_record_upsert_increments_occurrences(embedder): | |
| """相同 scope+dimensions 应 upsert 并增加 occurrences。""" | |
| uid = _uid() | |
| dims = [{"key": "language", "value": "Go", "context": ""}] | |
| result1 = record_detail( | |
| user_id=uid, scope_desc="系统编程", | |
| dimensions=dims, embedder=embedder, | |
| ) | |
| rid = result1["id"] | |
| result2 = record_detail( | |
| user_id=uid, scope_desc="系统编程", | |
| dimensions=dims, embedder=embedder, | |
| ) | |
| # 同 dimensions 匹配到同一条记录,upsert | |
| assert result2["id"] == rid | |