from Models.Factory import llm
import json
from tenacity import retry,stop_after_attempt,wait_fixed
import re



@retry(stop=stop_after_attempt(3),wait=wait_fixed(2))
def invoke_llm(prompt):
    return llm.invoke(prompt)

def extract_info(query):
    system_prompt = """
    你是一个优秀的信息提取专家，你的任务是从输入文本中获取时间这个参数值。
    返回JSON格式：{"时间":"2026-01"}.
    如果输入文本中没有相关参数，则返回空。
    举例如下：
    输入文本：使用2026年1月份的
    返回结果：{"时间":"2026-01"}
    输入文本：根据我的扫地机器人的使用情况，生成一份使用报告
    返回结果：{}
    """
    data = {}
    human_prompt = f"输入文本：{query},请返回提取的json。"
    prompt = [
        {
            "role":"system",
            "content":system_prompt
        },
        {
            "role":"user",
            "content":human_prompt
        }
    ]
    response = invoke_llm(prompt)
    if response:
        content = response.content
        match = re.search(r'\{.*\}', content)
        # print(f'match:{match}')
        print('----------------------------')
        if match:
            cleaned_json = match.group(0)
            print(f'cleaned_json:{cleaned_json},types:{type(cleaned_json)}')
            data = json.loads(cleaned_json)
        else:
            print("未找到有效的 JSON 数据！")
    return data

