返回 JoyAI-Echo
registry.py
1 """Convenience accessor for PE-set prompt strings.
2
3 Usage::
4
5 from nanobot.prompts import prompts
6
7 text = prompts.text("director.tool.get_story.description")
8 msg = prompts.text("director.callback.merge_shot.completed", work_id=w, final_output=o)
9
10 Missing keys log a warning and return ``default`` (or ``""``). String templates
11 use ``str.format`` placeholders; formatting is applied only when kwargs are given.
12 """
13
14 from __future__ import annotations
15
16 import logging
17
18 from nanobot.prompts.manager import PEManager
19
20 logger = logging.getLogger(__name__)
21
22
23 class _Prompts:
24 def text(self, key: str, default: str | None = None, /, **fmt: object) -> str:
25 value = PEManager.instance().get_string(key)
26 if value is None:
27 if default is not None:
28 value = default
29 else:
30 logger.warning("Missing PE prompt key: %s", key)
31 return ""
32 if fmt:
33 try:
34 return value.format(**fmt)
35 except (KeyError, IndexError, ValueError) as exc:
36 logger.warning("PE prompt format failed for key %s: %s", key, exc)
37 return value
38
39
40 prompts = _Prompts()
41
41 lines PYTHON