perf: reduce LLM input tokens by ~50% via prompt deduplication
- Remove JSON appendix from user_prompt (saves ~3000 chars, 85% reduction) - Consolidate identity: remove English system_prompt identity, merge into agent_prompt Chinese identity - Simplify system_prompt output rules: keep only Language Requirement, remove Answer Rules (duplicate with agent_prompt) - Enhance follow-up context: include more divination_derived fields (changing_yaos, fushen, wu_xing, etc.) - Fix bug: lowerName -> lower_name in user_prompt (Pydantic snake_case) - Update tests to reflect new prompt structure
This commit is contained in:
@@ -321,16 +321,27 @@ class AgentScopeRunner:
|
||||
run_input: RunAgentInput,
|
||||
derived_divination: DerivedDivinationData | None,
|
||||
) -> list[Msg]:
|
||||
if derived_divination is not None:
|
||||
user_text = build_divination_user_prompt(derived=derived_divination)
|
||||
else:
|
||||
_, latest_user_text = extract_latest_user_payload(run_input)
|
||||
user_text = latest_user_text
|
||||
|
||||
if derived_divination is not None and context_messages:
|
||||
last = context_messages[-1]
|
||||
if last.role == "user":
|
||||
context_messages[-1] = Msg(
|
||||
name=last.name,
|
||||
role=last.role,
|
||||
content=user_text,
|
||||
)
|
||||
return context_messages
|
||||
|
||||
if context_messages:
|
||||
last = context_messages[-1]
|
||||
if last.role == "user":
|
||||
return context_messages
|
||||
|
||||
_, latest_user_text = extract_latest_user_payload(run_input)
|
||||
if derived_divination is None:
|
||||
user_text = latest_user_text
|
||||
else:
|
||||
user_text = build_divination_user_prompt(derived=derived_divination)
|
||||
user_blocks = [{"type": "text", "text": user_text}]
|
||||
if (
|
||||
user_blocks
|
||||
|
||||
Reference in New Issue
Block a user