feat: add agent response depth control
This commit is contained in:
@@ -20,7 +20,7 @@ from app.services.model_stream_service import (
|
||||
_stream_configured_model_async,
|
||||
)
|
||||
from app.services.model_service import ModelClientService, _copy_model_with_overrides, _max_output_tokens
|
||||
from app.services.rag_service import RagResult
|
||||
from app.services.rag_service import PromptService, RagResult
|
||||
|
||||
|
||||
def _database() -> Session:
|
||||
@@ -73,6 +73,7 @@ def test_runtime_config_defaults_to_long_answer_safe_max_tokens():
|
||||
assert result["maxToken"] == 8192
|
||||
assert result["streamEnabled"] == 1
|
||||
assert result["reasoningVisible"] == 0
|
||||
assert result["responseDepth"] == 35
|
||||
assert _max_output_tokens(model) == 8192
|
||||
|
||||
|
||||
@@ -97,6 +98,7 @@ def test_saved_runtime_config_is_persisted_on_enabled_model():
|
||||
maxToken=12000,
|
||||
streamEnabled=0,
|
||||
reasoningVisible=1,
|
||||
responseDepth=20,
|
||||
),
|
||||
db=db,
|
||||
current_admin=admin,
|
||||
@@ -113,7 +115,9 @@ def test_saved_runtime_config_is_persisted_on_enabled_model():
|
||||
assert model.stream_enabled == 0
|
||||
assert result["streamEnabled"] == 0
|
||||
assert result["reasoningVisible"] == 1
|
||||
assert result["responseDepth"] == 20
|
||||
assert db.query(SystemConfig).filter_by(config_key="show_model_reasoning").one().config_value == "true"
|
||||
assert db.query(SystemConfig).filter_by(config_key="agent_response_depth").one().config_value == "20"
|
||||
|
||||
payload = _openai_stream_payload(
|
||||
model,
|
||||
@@ -191,10 +195,24 @@ def test_debug_preview_passes_conversation_history_and_replaces_saved_prompt():
|
||||
kwargs = build_result.await_args.kwargs
|
||||
assert [item.content for item in kwargs["history"]] == ["最开始的问题", "第一次回答"]
|
||||
assert kwargs["prompt_override"] == "调试主提示词"
|
||||
assert kwargs["response_depth"] == 35
|
||||
assert result.messages == rag_result.messages
|
||||
assert result.prompt == "调试提示词渲染结果"
|
||||
|
||||
|
||||
def test_prompt_includes_response_depth_instruction():
|
||||
with _database() as db:
|
||||
db.add(SystemConfig(config_key="agent_response_depth", config_value="20"))
|
||||
db.commit()
|
||||
|
||||
messages = PromptService.build_messages(db, "做功课没反应怎么办?", [])
|
||||
|
||||
system = messages[0]["content"]
|
||||
assert "回答深度:20/100(精简)" in system
|
||||
assert "不展开心理分析" in system
|
||||
assert "回到当下、身体感受和情绪觉察" in system
|
||||
|
||||
|
||||
@pytest.mark.parametrize("reasoning_visible", [True, False])
|
||||
def test_agent_debug_stream_respects_reasoning_visibility(reasoning_visible):
|
||||
async def chunks():
|
||||
|
||||
Reference in New Issue
Block a user