MCPcopy Create free account
hub / github.com/OpenRaiser/PaperFlow / _direct_answer

Function _direct_answer

deployments/desktop/shared/agents.py:4426–4470  ·  view source on GitHub ↗
(question: str, response_language: str = "zh")

Source from the content-addressed store, hash-verified

4424 "title": citation.get("title") or citation.get("node_id") or "未命名来源",
4425 "meta": " · ".join(meta_parts) if meta_parts else "参考文献",
4426 "snippet": citation.get("excerpt") or "",
4427 "excerpt": citation.get("excerpt") or "",
4428 "source_type": source_type,
4429 "source_id": source_id,
4430 "anchor": citation.get("anchor"),
4431 "metadata": metadata,
4432 "url": metadata.get("url") or metadata.get("abs_url") or metadata.get("pdf_url") or "",
4433 }
4434
4435
4436def _direct_answer(question: str, response_language: str = "zh") -> Dict[str, Any]:
4437 started = time.time()
4438 language = _normalize_response_language(response_language)
4439 llm = build_llm_provider()
4440 llm_error = None
4441 response = None
4442 if getattr(llm, "name", "") == "mock":
4443 text = (
4444 "This question does not require the local Wiki. No usable LLM is configured, "
4445 "so the offline desktop app cannot generate a general answer right now. "
4446 "Use @ to select papers or switch to a Wiki scope for local-paper answers."
4447 if language == "en"
4448 else "这个问题不需要调用本地 Wiki。当前未配置可用 LLM,因此离线版无法生成通用回答;如需基于本地论文回答,请用 @ 选择论文或切换到 Wiki 范围。"
4449 )
4450 else:
4451 try:
4452 response = llm.generate(
4453 question,
4454 system=_direct_answer_prompt(language),
4455 temperature=0.0,
4456 max_tokens=_direct_answer_max_tokens(),
4457 )
4458 text = response.text
4459 except Exception as exc:
4460 llm_error = str(exc)
4461 text = (
4462 f"This was routed as a general question and does not need local Wiki citations, "
4463 f"but the current LLM call failed: {llm_error}"
4464 if language == "en"
4465 else f"这个问题被判定为通用问题,不需要引用本地 Wiki;但当前 LLM 调用失败:{llm_error}"
4466 )
4467 return {
4468 "text": text,
4469 "citations": [],
4470 "sources": [],
4471 "elapsed_ms": int((time.time() - started) * 1000),
4472 "response_language": language,
4473 "token_usage": {

Callers 1

wiki_askFunction · 0.85

Calls 5

build_llm_providerFunction · 0.90
_direct_answer_promptFunction · 0.85
generateMethod · 0.45

Tested by

no test coverage detected