# predict/llm_expert.py
import os

import requests
import json


def get_llm_prescription(disease_name, temp, hum, severity):

    for key in ['http_proxy', 'https_proxy', 'HTTP_PROXY', 'HTTPS_PROXY']:
        os.environ.pop(key, None)

    prompt = f"""
    你是一个资深的农业植保专家。
    当前农户的大棚茄子被视觉模型诊断为：【{disease_name}】，当前病斑面积占比【{severity}%】。
    大棚实时环境数据：温度【{temp}℃】，相对湿度【{hum}%】。

    请根据以上条件，给出一段专业的防治处方。
    要求：
    1. 包含“物理防治”和“精准用药”两个部分。
    2. 结合当前的温湿度指出病害扩散风险。
    3. 语言要精炼，总字数控制在 150 字以内，直接输出建议，不要寒暄。
    """
    api_key = "839007daaac246c487e479a89796bb6a.PA9YNG86vt3qMNtz"
    url = "https://open.bigmodel.cn/api/paas/v4/chat/completions"
    headers = {
        "Content-Type": "application/json",
        "Authorization": f"Bearer {api_key}"
    }
    payload = {
        "model": "glm-4-flash",
        "messages": [
            {"role": "system", "content": "你是一个农业专家智能体。"},
            {"role": "user", "content": prompt}
        ],
        "temperature": 0.3
    }

    try:
        response = requests.post(url, headers=headers, data=json.dumps(payload), timeout=15, proxies={"http":None, "https":None}, verify=False)

        if response.status_code != 200:
            print(f"API 请求失败，状态码: {response.status_code}, 详情: {response.text}")
            raise Exception(f"API Error: {response.status_code}")

        result = response.json()
        return result['choices'][0]['message']['content']

    except Exception as e:
        print(f"大模型调用异常: {e}")

        return "网络异常，请保持通风，推荐喷施百菌清进行基础预防。"