Separate agent tuning from model setup

This commit is contained in:
2026-07-07 13:31:20 +08:00
parent dada4aafcd
commit da262f4596
10 changed files with 518 additions and 76 deletions

View File

@@ -59,6 +59,23 @@ class ModelClientService:
return {"ok": False, "message": str(exc), "answer": ""}
return {"ok": True, "message": "模型配置可用", "answer": answer[:500]}
@staticmethod
def debug_model(model: ModelConfig, rag_result: RagResult, overrides: dict[str, Any]) -> dict[str, Any]:
debug_model = _copy_model_with_overrides(model, overrides)
try:
answer = _call_configured_model(debug_model, rag_result, allow_no_hit=True)
except ExternalServiceError as exc:
return {"ok": False, "message": str(exc), "answer": "", "prompt": rag_result.prompt}
return {
"ok": True,
"message": "Agent 调试完成",
"answer": answer[:4000],
"prompt": rag_result.prompt,
"modelName": model.model_name,
"retrieveCount": len(rag_result.chunks),
"knowledgeIds": rag_result.knowledge_ids,
}
def _mock_answer(rag_result: RagResult) -> str:
if not rag_result.is_hit:
@@ -75,6 +92,35 @@ def _mock_answer(rag_result: RagResult) -> str:
)
def _copy_model_with_overrides(model: ModelConfig, overrides: dict[str, Any]) -> ModelConfig:
debug_model = ModelConfig(
provider=model.provider,
display_name=model.display_name,
api_type=model.api_type,
model_name=model.model_name,
base_url=model.base_url,
api_url=model.api_url,
api_key=model.api_key,
auth_type=model.auth_type,
api_version=model.api_version,
temperature=overrides.get("temperature"),
top_p=overrides.get("top_p"),
top_k=overrides.get("top_k"),
presence_penalty=overrides.get("presence_penalty"),
frequency_penalty=overrides.get("frequency_penalty"),
max_token=overrides.get("max_token"),
context_window=model.context_window,
stream_enabled=model.stream_enabled,
response_format=model.response_format,
extra_params=model.extra_params,
remark=model.remark,
timeout_second=model.timeout_second,
enabled=model.enabled,
)
debug_model.id = model.id
return debug_model
def _rough_token_count(text: str) -> int:
return max(1, len(text.strip()) // 2)