Separate agent tuning from model setup
This commit is contained in:
@@ -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)
|
||||
|
||||
|
||||
Reference in New Issue
Block a user