feat: PromptRegistry 注册/版本/渲染(jinja2)

This commit is contained in:
lhl
2026-08-09 08:03:17 +08:00
parent 71d38b90bf
commit 59c1ea7abe
3 changed files with 91 additions and 0 deletions
+42
View File
@@ -0,0 +1,42 @@
import pytest
from genesis.inference.prompt_registry import PromptRegistry
from genesis.inference.types import Prompt
def test_register_and_render():
reg = PromptRegistry()
reg.register("writer", "v1", "按规则撰写:{{ chapter }}")
assert reg.get("writer", "v1") == "按规则撰写:{{ chapter }}"
def test_get_with_variables_renders():
reg = PromptRegistry()
reg.register("writer", "v1", "按规则撰写:{{ chapter }}")
assert reg.get("writer", "v1", {"chapter": "帳票設計"}) == "按规则撰写:帳票設計"
def test_get_latest_version():
reg = PromptRegistry()
reg.register("writer", "v1", "t1")
reg.register("writer", "v2", "t2")
assert reg.get("writer") == "t2"
assert reg.list_versions("writer") == ["v1", "v2"]
def test_get_missing_raises_keyerror():
reg = PromptRegistry()
with pytest.raises(KeyError):
reg.get("dne")
def test_get_missing_version_raises_keyerror():
reg = PromptRegistry()
reg.register("writer", "v1", "t1")
with pytest.raises(KeyError):
reg.get("writer", "v9")
def test_render_raw():
reg = PromptRegistry()
assert reg.render("{{ a }} と {{ b }}", {"a": "x", "b": 1}) == "x と 1"