2024年12月25日 星期三

利用Ollama分析空氣品質

程式碼:

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
import random
import ollama

# 模擬傳感器數據
def get_sensor_data():
    data = {
        "PM2.5": round(random.uniform(10, 150), 2),  # μg/m³
        "CO2": round(random.uniform(350, 2000), 2),  # ppm
        "Temperature": round(random.uniform(15, 35), 2),  # °C
        "Humidity": round(random.uniform(30, 90), 2),  # %
    }
    print(f"收集的傳感器數據:{data}")
    return data

# 將傳感器數據轉為分析描述
def prepare_prompt(sensor_data):
    prompt = (
        f"以下是環境監測數據:\n"
        f"- PM2.5 濃度:{sensor_data['PM2.5']} μg/m³\n"
        f"- 二氧化碳濃度:{sensor_data['CO2']} ppm\n"
        f"- 溫度:{sensor_data['Temperature']} °C\n"
        f"- 濕度:{sensor_data['Humidity']} %\n"
        f"請根據這些數據分析空氣品質,並提供環境保護建議。"
    )
    print(f"生成的分析請求描述:\n{prompt}")
    return prompt

# 與 Ollama 交互進行分析
def analyze_with_ollama(question_1, ans_1, question_2):
    try:
        # 替換為適用的 ollama.chat 調用方法
        response = ollama.chat(
            model="llama3.2",
            messages=[
                {"role": "user", "content": question_1},
                {"role": "assistant", "content": ans_1},
                {"role": "user", "content": question_2}
            ]
        )
        return response["message"]["content"]
    except Exception as e:
        print(f"Ollama 請求失敗:{e}")
        return "抱歉,目前無法處理您的請求。"

# 主程序
if __name__ == "__main__":
    print("啟動環境監測系統...")
    # 獲取傳感器數據
    sensor_data = get_sensor_data()

    # 生成描述作為第一個問題
    question_1 = "什麼是空氣品質的標準範圍?"
    ans_1 = "空氣品質指標範圍取決於 PM2.5 和 CO2 等參數的濃度,需保持在安全值內。"

    # 第二個問題為傳感器數據的分析描述
    question_2 = prepare_prompt(sensor_data)

    # 與 Ollama 交互,獲取分析結果
    analysis_result = analyze_with_ollama(question_1, ans_1, question_2)

    # 顯示結果
    print("\nOllama 的分析與建議:")
    print(analysis_result)

    # 保存結果至檔案(可選)
    with open("environment_analysis.txt", "w", encoding="utf-8") as file:
        file.write("環境監測結果分析:\n")
        file.write(analysis_result)

第一次執行結果:
啟動環境監測系統...
收集的傳感器數據:{'PM2.5': 111.52, 'CO2': 1858.85, 'Temperature': 28.9, 'Humidity': 46.26}
生成的分析請求描述:
以下是環境監測數據:
- PM2.5 濃度:111.52 μg/m³
- 二氧化碳濃度:1858.85 ppm
- 溫度:28.9 °C
- 濕度:46.26 %
請根據這些數據分析空氣品質,並提供環境保護建議。

Ollama 的分析與建議:
哇,looks like we've got a bit of a air quality issue here!

根據給出的數據,我們可以看到 PM2.5 濃度超出安全值範圍,達到 111.52 μg/m³。這是個大問題,因為小型颗粒物可以引起呼吸系統的損害和其他健康問題。

二氧化碳濃度也處於相對高位,達到 1858.85 ppm。这可能會使環境質量受到影響。

其他數據,如溫度和濕度,並未超出正常範圍,但仍需要謹慎評估這些數據的影響。

因此,我們可以給出了以下空氣品質分析和環境保護建議:

1.  **減少污染源**:建議在家中使用空氣清潔器,增加室內植物,以及減少交通或業界中的尾氣。
2.  **提升外界空氣 quality**:請與當地政府或者環境監測機構聯繫,以便了解是否有必要進行空氣污染治理工作。
3.  **增強預防措施**:建議使用呼吸機或空壓衣物,或者增加室內的氧氣含量來降低對小型颗粒物的暴露。

讓我們一起維護一個健康且穩定的環境!

第二次執行結果:
啟動環境監測系統...
收集的傳感器數據:{'PM2.5': 53.52, 'CO2': 1685.39, 'Temperature': 31.22, 'Humidity': 57.75}
生成的分析請求描述:
以下是環境監測數據:
- PM2.5 濃度:53.52 μg/m³
- 二氧化碳濃度:1685.39 ppm
- 溫度:31.22 °C
- 濕度:57.75 %
請根據這些數據分析空氣品質,並提供環境保護建議。

Ollama 的分析與建議:
對不起!我是 Mario!*

根據給出的數據,我們可以進行以下分析:

1.  **PM2.5 濃度**:53.52 μg/m³ >安全值上限(通常為 35 μg/m³)。這表明空氣中有小颗粒物的污染,對人體健康和環境有害。
2.  **二氧化碳濃度**:1685.39 ppm >安全值上限(通常為 400-700 ppm)。這表明空氣中的二氧化碳含量較高,這可能是由於燃油排放、交通機動車等因素導致的。
3.  **溫度**:31.22 °C 這麼高,可能會引發熱相關疾病。建議在這個溫度下,保持空調或避免外出活動。
4.  **濕度**:57.75% 這麼高,表明天氣太濕了,可能導致天花病等感染。

綜合分析後,我們可以提供以下環境保護建議:

1.  ** PM2.5 的控制**:建議在空間內使用空心的濾網或空心的過濾系統來控制PM2.5濃度。
2.  **二氧化碳的降低**:建議改善交通機動車和其他排放污染物的源頭,以減少空氣中二氧化碳的含量。
3.  **溫度控制**:建議在高溫天氣時,保持空調或使用冷敷來降低身體溫度。
4.  **濕度的處理**:建議在濕潤天氣時,保持乾燥的環境,避免感染性疾病。

*以上分析結果基於一般原則,由於每個地方都有不同的空氣污染標準,我們建議對各地都進行具體評估和應用。

如果您需要進一步評估或提供更多資訊,我們可以一起研究!

沒有留言:

張貼留言