feat(思维导图助手):思维导图助手增加智能整理总结-设置返回参数
parent
8dbfeddfe4
commit
965781213e
|
|
@ -413,7 +413,13 @@ def _estimate_tokens(text: str) -> int:
|
||||||
return max(1, int(ascii_chars / 4) + int(non_ascii_chars * 1.5))
|
return max(1, int(ascii_chars / 4) + int(non_ascii_chars * 1.5))
|
||||||
|
|
||||||
|
|
||||||
def _get_mindmap_context_budget(prompt: str, reserve_output_tokens: int = 4096) -> tuple[int, int]:
|
def _get_mindmap_max_output_tokens() -> int:
|
||||||
|
return int(os.getenv("MINDMAP_LLM_MAX_OUTPUT_TOKENS", "4096"))
|
||||||
|
|
||||||
|
|
||||||
|
def _get_mindmap_context_budget(prompt: str, reserve_output_tokens: Optional[int] = None) -> tuple[int, int]:
|
||||||
|
if reserve_output_tokens is None:
|
||||||
|
reserve_output_tokens = _get_mindmap_max_output_tokens()
|
||||||
max_context_tokens = int(os.getenv("MINDMAP_LLM_MAX_CONTEXT_TOKENS", "32768"))
|
max_context_tokens = int(os.getenv("MINDMAP_LLM_MAX_CONTEXT_TOKENS", "32768"))
|
||||||
prompt_tokens = _estimate_tokens(prompt)
|
prompt_tokens = _estimate_tokens(prompt)
|
||||||
safety_tokens = int(os.getenv("MINDMAP_LLM_SAFETY_TOKENS", "1024"))
|
safety_tokens = int(os.getenv("MINDMAP_LLM_SAFETY_TOKENS", "1024"))
|
||||||
|
|
@ -503,6 +509,7 @@ def _call_mindmap_llm(markdown: str, mode: str = "smart", custom_prompt: Optiona
|
||||||
model = os.getenv("MINDMAP_LLM_MODEL", "gemma-4-26B")
|
model = os.getenv("MINDMAP_LLM_MODEL", "gemma-4-26B")
|
||||||
api_key = os.getenv("MINDMAP_LLM_API_KEY", "")
|
api_key = os.getenv("MINDMAP_LLM_API_KEY", "")
|
||||||
timeout = int(os.getenv("MINDMAP_LLM_TIMEOUT", "180"))
|
timeout = int(os.getenv("MINDMAP_LLM_TIMEOUT", "180"))
|
||||||
|
max_output_tokens = _get_mindmap_max_output_tokens()
|
||||||
|
|
||||||
if not base_url:
|
if not base_url:
|
||||||
raise RuntimeError("未配置智能整理模型服务,请设置 MINDMAP_LLM_BASE_URL")
|
raise RuntimeError("未配置智能整理模型服务,请设置 MINDMAP_LLM_BASE_URL")
|
||||||
|
|
@ -515,8 +522,8 @@ def _call_mindmap_llm(markdown: str, mode: str = "smart", custom_prompt: Optiona
|
||||||
{compact_markdown}
|
{compact_markdown}
|
||||||
"""
|
"""
|
||||||
logger.info(
|
logger.info(
|
||||||
"Mindmap LLM request start task_id={} role={} model={} base_url={} mode={} input_chars={} input_tokens_est={} prompt_chars={}",
|
"Mindmap LLM request start task_id={} role={} model={} base_url={} mode={} input_chars={} input_tokens_est={} prompt_chars={} max_tokens={}",
|
||||||
task_id or "-", request_role, model, base_url, mode, len(compact_markdown), _estimate_tokens(compact_markdown), len(prompt_template)
|
task_id or "-", request_role, model, base_url, mode, len(compact_markdown), _estimate_tokens(compact_markdown), len(prompt_template), max_output_tokens
|
||||||
)
|
)
|
||||||
|
|
||||||
payload = {
|
payload = {
|
||||||
|
|
@ -526,6 +533,7 @@ def _call_mindmap_llm(markdown: str, mode: str = "smart", custom_prompt: Optiona
|
||||||
{"role": "user", "content": prompt},
|
{"role": "user", "content": prompt},
|
||||||
],
|
],
|
||||||
"temperature": float(os.getenv("MINDMAP_LLM_TEMPERATURE", "0.2")),
|
"temperature": float(os.getenv("MINDMAP_LLM_TEMPERATURE", "0.2")),
|
||||||
|
"max_tokens": max_output_tokens,
|
||||||
}
|
}
|
||||||
data = json.dumps(payload, ensure_ascii=False).encode("utf-8")
|
data = json.dumps(payload, ensure_ascii=False).encode("utf-8")
|
||||||
headers = {"Content-Type": "application/json"}
|
headers = {"Content-Type": "application/json"}
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue