import logging
from openjiuwen_deepsearch.algorithm.prompts.template import apply_system_prompt
from openjiuwen_deepsearch.common.status_code import StatusCode
from openjiuwen_deepsearch.utils.common_utils.llm_utils import ainvoke_llm_with_stats
from openjiuwen_deepsearch.utils.constants_utils.node_constants import AgentLlmName
from openjiuwen_deepsearch.utils.constants_utils.session_contextvars import llm_context
from openjiuwen_deepsearch.utils.log_utils.log_manager import LogManager
logger = logging.getLogger(__name__)
async def query_interpreter(current_inputs: dict) -> dict:
"""
Generate questions for user input for deep query interpretation
Args:
current_inputs: dict includes language and query
Returns:
str: generated questions
"""
logger.info(f"Begin query interpretation operation.")
prompt = apply_system_prompt("generate_questions", current_inputs)
try:
llm = llm_context.get().get(current_inputs.get("llm_model_name"))
response = await ainvoke_llm_with_stats(llm, prompt, llm_type="basic",
agent_name=AgentLlmName.GENERATE_QUESTIONS.value, need_stream_out=True)
if not LogManager.is_sensitive():
logger.debug("[query_interpreter] algorithm output: %s.", response.get("content"))
else:
logger.debug("[query_interpreter] get algorithm output.")
return dict(result=response.get("content"))
except Exception as e:
err_msg = (f"[{StatusCode.INTERPRETATION_GENERATE_ERROR.code}]"
f"{StatusCode.INTERPRETATION_GENERATE_ERROR.errmsg}: {e}")
if LogManager.is_sensitive():
logger.error(f"[{StatusCode.INTERPRETATION_GENERATE_ERROR.code}]"
f"{StatusCode.INTERPRETATION_GENERATE_ERROR.errmsg}")
else:
logger.error(err_msg)
return dict(exception_info=err_msg)