2026年3月16日 星期一

[水井USR] 用Gemini實作文蛤智慧養殖雲端AI專家系統

本篇文章採用Gemini AI協作,並以gemini-2.5-flash為模型。





範例一、定義水質參數

 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
import os
from google import genai

# 1. 初始化設定
api_key = os.environ.get("GOOGLE_API_KEY")
if not api_key:
    raise ValueError("請先設定 GOOGLE_API_KEY 環境變數")

client = genai.Client(api_key=api_key)

# 2. 定義水質參數 (可從感測器動態傳入)
temp = 31
do_level = 3.5
location = "A1 文蛤池"

# 3. 建立具有養殖專業語氣的 Prompt
prompt = f"""
你是一位專業的水產養殖專家。根據以下監測數據提供改善建議:
- 池塘編號:{location}
- 當前水溫:{temp}°C
- 溶氧量 (DO):{do_level} mg/L

請用繁體中文回答,包含:
1. 現況分析(水溫與溶氧是否正常)。
2. 具體操作建議(如:水車啟動數量、換水、停餌建議)。
3. 語氣要親切且專業。
"""

# 4. 呼叫 Gemini 2.5 Flash 模型
response = client.models.generate_content(
    model="gemini-2.5-flash",
    contents=prompt
)

# 5. 輸出結果
print("-" * 30)
print(f"【{location} 監測報告】")
print(response.text)
print("-" * 30)

執行結果:
【A1 文蛤池 監測報告】
您好,根據您提供的A1文蛤池監測數據,水溫31°C和溶氧量(DO) 3.5 mg/L,這確實是一個需要立即關注的緊急情況。讓我為您分析並提供具體操作建議。

---

### **1. 現況分析 (水溫與溶氧是否正常)**

*   **水溫 (31°C):** 對於文蛤而言,31°C的水溫已經**偏高,且接近文蛤能承受的上限**。文蛤最適合生長的水溫約在20-28°C之間。高溫會加速文蛤的新陳代謝,增加其耗氧量,同時也會降低水中溶氧的飽和度(水中能溶解的氧氣量變少)。長期處於高溫環境,會嚴重影響文蛤的攝食、生長,並使其免疫力下降,容易受病害侵襲,甚至導致熱緊迫死亡。

*   **溶氧量 (DO) (3.5 mg/L):** 3.5 mg/L的溶氧量對於水產養殖來說,已經是**嚴重偏低,屬於警戒範圍**。一般而言,養殖水體的溶氧量應維持在5 mg/L以上為佳。當溶氧量低於4 mg/L時,養殖生物就會開始感到緊迫;低於3 mg/L則可能導致厭食、生長停滯甚至死亡。目前文蛤正處於缺氧的危險邊緣,加上高水溫的雙重壓力,情況確實不容樂觀。

**綜合來看,A1文蛤池目前正處於一個高水溫且低溶氧的緊迫環境,文蛤的健康狀況和存活率面臨極大挑戰,必須迅速採取行動。**

---

### **2. 具體操作建議**

面對這樣的緊急情況,我們需要立即採取多項措施來改善水質環境,降低文蛤的緊迫。

*   **水車啟動數量:**
    *   **建議:** **請立即啟動池中所有可用的水車(或增氧設備),並確保24小時不間斷運轉。**
    *   **原因:** 這是提升水體溶氧最直接且有效的方式。所有水車全開可以最大程度地增加水體與空氣的接觸面積,加速氧氣溶入水中,同時也能擾動水體,將底層的厭氧區向上翻動,避免產生硫化氫等有害物質。

*   **換水:**
    *   **建議:** **立即進行大量換水,建議更換池水量的1/3至1/2。** 換水時務必注意,引入的新水需確認水質良好,且水溫盡量不要與池水溫差過大(理想情況是新水溫度稍低或與原水接近)。
    *   **原因:** 大量換水有多重好處:
        *   引入更低溫、溶氧量更高的新鮮水,可以有效降低池水溫度和提升溶氧。
        *   稀釋水中有害代謝物(如氨氮、亞硝酸鹽)的濃度。
        *   帶走過多的有機質,減少細菌分解有機物時的耗氧量。

*   **停餌建議:**
    *   **建議:** **請立即停止投餵任何餌料,直到池水狀況(水溫降至28°C以下,溶氧量恢復至5 mg/L以上)明顯改善且穩定後,再考慮少量恢復投餵。**
    *   **原因:**
        *   在高溫低氧環境下,文蛤的攝食能力和消化功能會大幅下降,此時投餵的餌料不僅無法被有效利用,反而會沉積在池底,增加池底有機質的負荷。
        *   這些未被食用的餌料會迅速分解,進一步消耗水體中的氧氣,使溶氧情況雪上加霜。
        *   文蛤處於緊迫狀態時,需要將能量用於應對環境壓力而非消化食物。

---

### **3. 其他注意事項**

*   **持續監測:** 採取上述措施後,請務必密切且頻繁地監測池水的水溫和溶氧量,特別是清晨時段,因為此時溶氧量通常最低。
*   **水質管理:** 檢查進水口的水質,確保引進的水源沒有污染。若有條件,可以考慮使用水質改良劑(如沸石粉、EM菌等)來分解有機物,改善水質。
*   **遮蔭措施:** 如果池塘可以進行部分遮蔭,將有助於降低水溫,尤其是在日間太陽直射時。

---

希望這些緊急建議能幫助您迅速改善文蛤池的狀況,降低損失。請務必迅速採取行動,並隨時監測,祝您一切順利!如有任何疑問或需要進一步協助,請隨時提出。

範例二、結合水池的照片來進行判斷

 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
import os
from google import genai
from PIL import Image

# 1. 初始化設定
api_key = os.environ.get("GOOGLE_API_KEY")
if not api_key:
    raise ValueError("請先設定 GOOGLE_API_KEY 環境變數")

client = genai.Client(api_key=api_key)

def analyze_clam_pond(image_path, temp, ph, do, salinity):
    """
    整合文蛤養殖標準與 AI 影像辨識的診斷系統
    """
    # A. 基礎數值邏輯判定 (文蛤專用標準)
    alerts = []
    if temp > 30: alerts.append(f"⚠️ 水溫過高 ({temp}°C):注意底泥發酵與溶氧快速消耗。")
    if ph < 7.8: alerts.append(f"⚠️ pH 值偏低 ({ph}):水質趨酸,可能影響文蛤外殼發育。")
    if do < 4.0: alerts.append(f"⚠️ 溶氧不足 ({do} mg/L):低於文蛤安全門檻,請務必開啟水車。")
    if not (15 <= salinity <= 25): alerts.append(f"⚠️ 鹽度異常 ({salinity} psu):注意文蛤開口或滲透壓壓力。")
    
    status_summary = "\n".join(alerts) if alerts else "✅ 基礎水質數據皆在標準範圍內。"

    # B. 準備 AI 診斷 Prompt
    # 這裡我們把數值判定結果也餵給 AI,讓它參考
    prompt = f"""
    你是一位專業的文蛤養殖專家。請分析附件中的池塘照片,並結合以下監測數據給出專業建議:

    【當前監測數據】
    - 水溫:{temp}°C
    - pH值:{ph}
    - 溶氧量:{do} mg/L
    - 鹽度:{salinity} psu

    【初步數值警示】
    {status_summary}

    【AI 任務】
    1. 觀察照片中的「水色」:判斷藻類種類(如矽藻、綠藻或藍藻)與濃度。
    2. 觀察「水面情況」:是否有過多泡沫、油膜或倒藻跡象。
    3. 綜合診斷:結合高溫 ({temp}°C) 與溶氧 ({do} mg/L) 的現況,給出具體的「水車操作」與「水質改良」建議。
    4. 請用繁體中文回答,語氣要精簡且對農民有實質幫助。
    """

    # C. 執行多模態分析
    try:
        img = Image.open(image_path)
        response = client.models.generate_content(
            model="gemini-2.5-flash",
            contents=[prompt, img]
        )
        
        return response.text
    except Exception as e:
        return f"分析失敗:{e}"

# --- 實際執行範例 ---
# 假設你的照片檔案名為 'pond.jpg'
# 測試數據:水溫31, pH 7.6, 溶氧 3.5, 鹽度 20
result = analyze_clam_pond("BOYDpic1.webp", temp=31, ph=7.6, do=3.5, salinity=20)

print("="*50)
print("🐚 文蛤養殖智慧診斷報告")
print("="*50)
print(result)
print("="*50)

執行結果:
==================================================
🐚 文蛤養殖智慧診斷報告
==================================================
農民您好,

根據池塘照片與監測數據,目前情況相當緊急,必須立即採取行動。

### 1. 水色判斷與藻類分析:

*   水色: 照片顯示水色呈現濃郁的「翠綠色」,且透明度低。
*   藻類種類與濃度: 高度判斷為 綠藻(Green Algae) 大量繁殖,甚至可能伴隨 藍綠藻(Blue-green Algae) 的發生。藻類濃度極高,已形成藻華(Algal Bloom)。

### 2. 水面情況觀察:

*   水面:整體水面呈現濃綠色,部分區域可見深淺不一的團塊或條狀分佈,這可能是藻類大量繁殖後局部集結,或是已有少量藻類開始老化、沉降的初期跡象。
*   泡沫/油膜: 照片中未見明顯大量泡沫或油膜,但濃密的藻類層本身就容易阻礙氣體交換。
*   倒藻跡象: 雖未見大規模「倒藻」後的灰白色水體或濃烈腥臭味,但水色的不均勻性及高溫低溶氧的環境,預示著倒藻風險極高。一旦倒藻,溶氧將會急速耗盡,造成災難性後果。

### 3. 綜合診斷與專業建議:

目前的文蛤池面臨 嚴重溶氧不足高溫壓力藻相失衡 及 水質酸化 的多重危機。文蛤在溶氧3.5 mg/L的環境下已處於極度緊迫狀態,若不立即改善,將有大量死亡風險。

【水車操作建議】

*   全天候運轉: 務必 全天候不間斷開啟所有水車。特別是夜間至清晨,藻類停止光合作用,反而會大量消耗氧氣,此時水車更是維繫文蛤生命的關鍵。
*   增加水車數量/功率: 若現有水車數量或功率不足,應立即考慮增加,確保水體有足夠的攪動與溶氧供給。
*   調整水車位置: 確保水車能有效帶動底層水體,避免底部缺氧。

【水質改良建議】

1. 緊急增氧與降溫:
    *   強力增氧: 除了水車,若有條件,可輔以吹氣式增氧機,將空氣打入水底,提升溶氧。
    *   適度換水: 在確保進水水質良好的前提下,逐步、少量地進行換水,每次換水量約1/4至1/3,以稀釋過濃藻類及降低水溫,並帶走部分有害物質。換水時注意水流速度,避免驚擾文蛤。
2.  藻相控制與穩定水色:
    *   施用益生菌: 立即施用高效能的 水產專用益生菌(如光合細菌、EM菌)。益生菌能分解水體中的有機物,減少藻類所需的養分,抑制有害藻類的過度生長,並穩定水色。每3-5天施用一次,持續觀察。
    *   切勿直接施用殺藻劑: 在目前低溶氧且藻類過多的情況下,使用殺藻劑會導致藻類大量死亡,進一步消耗水體溶氧,加速文蛤死亡。
3.  pH 值調控與底泥改善:
    *   提升pH值: 立即施用 碳酸鈣(CaCO3)或沸石粉,提升水體鹼度,穩定pH值,有利於文蛤外殼發育。請分次、少量施用,避免pH值劇烈波動。
    *   底泥改良: 高溫導致底泥發酵加速,釋放有害氣體。除了益生菌,可配合施用 **底質改良劑(如沸石粉、腐植酸鈉)**,以分解底部有機質,改善底泥環境,減少有毒物質釋放。
4.  密切監測:
    *   高頻率監測: 每日至少早晚各監測一次水溫、pH值、溶氧量,記錄數據並觀察文蛤活動狀況。
    *   定期巡查: 觀察水面是否有異常泡沫、油膜或藻類漂浮物,以及文蛤是否有上爬、開口等異常行為。

**總結:**

目前情況危急,請農民務必 立即開啟水車,並著手進行水質改良措施。以「增氧」為首要任務,同時兼顧「藻相管理」與「pH及底泥改善」。密切監測,任何異常都應迅速處理。

2026年3月15日 星期日

[水井USR] 用Gemini實作水井USR智慧養殖雲端AI專家系統

 範例一:簡易提問

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
import os
from google import genai

api_key = os.environ.get("GOOGLE_API_KEY")

if not api_key:
    raise ValueError("請先設定 GEMINI_API_KEY 環境變數")

client = genai.Client(api_key=api_key)


# Prompt text
prompt = '''水溫31°C 溶氧3.5 mg/L 養殖建議需要打開水車, 請用繁中文回答'''

# Generate text
response = client.models.generate_content(
    model="gemini-2.5-flash",
    contents=prompt
)

# Print the output
print(response.text)

執行結果:
針對水溫31°C且溶氧僅有3.5 mg/L的情況,強烈建議您**立即打開水車 (或所有可用的增氧設備)**。

**原因如下:**

1.  **溶氧量過低:**
    *   正常健康的養殖水體,溶氧量應維持在**5 mg/L以上**,理想狀態是6 mg/L以上。
    *   3.5 mg/L 對大多數養殖生物來說已是「缺氧」或「嚴重低氧」狀態。
    *   在這個水平下,養殖生物會感到嚴重緊迫,影響其生理機能。

2.  **高水溫加劇問題:**
    *   水溫31°C屬於高溫,會導致:
        *   **水體溶氧能力下降:** 溫水本身能溶解的氧氣量就比冷水少。
        *   **養殖生物耗氧量增加:** 高溫會加速魚蝦等水生動物的新陳代謝,使其對氧氣的需求量大幅增加。
    *   因此,3.5 mg/L在高水溫下,其危害程度遠比在低水溫下更為嚴重。

**可能導致的後果:**

*   養殖生物產生嚴重緊迫、活動力下降。
*   食慾不振,生長遲緩。
*   免疫力下降,容易感染疾病。
*   出現「浮頭」現象 (魚蝦浮到水面呼吸)。
*   嚴重時將導致**大量死亡**,造成重大經濟損失。

**建議處理措施:**

1.  **立即啟動所有可用的水車或增氧設備**,以迅速增加水體溶氧量,並促進水體循環。
2.  **密切觀察**養殖生物的反應,並**持續監測**溶氧數據,直到溶氧量回升至安全水平 (例如5 mg/L以上)。
3.  如果現有的水車不足以應付,可能需要考慮**增加增氧設備的數量或提升其效率**。
4.  同時,檢查是否有**過度投餵、水質惡化(有機物過多)或藻類大量繁殖(夜間耗氧)**等加劇缺氧問題的因素,並加以處理。

總之,水溫31°C、溶氧3.5 mg/L是非常危險的組合,必須**立即採取增氧措施**。

範例二、以專家方式提問

 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
import os
from google import genai

api_key = os.environ.get("GOOGLE_API_KEY")

if not api_key:
    raise ValueError("請先設定 GEMINI_API_KEY 環境變數")

client = genai.Client(api_key=api_key)


# Prompt text
prompt = '''你是一位台灣水產養殖專家,專長文蛤養殖管理。

文蛤養殖水質建議範圍:
水溫:20–30°C
溶氧:≥4 mg/L
pH:7.5–8.5
鹽度:15–30 ppt

目前養殖池感測資料:
水溫:31°C
溶氧:3.5 mg/L
pH:7.8
鹽度:28 ppt

請分析目前養殖狀況並提供:
1. 水質是否異常
2. 可能風險
3. 建議管理措施

請用繁體中文回答'''

# Generate text
response = client.models.generate_content(
    model="gemini-2.5-flash",
    contents=prompt
)

# Print the output
print(response.text)

執行結果:
您好,我是台灣的水產養殖專家,專長文蛤養殖管理。根據您提供的文蛤養殖水質建議範圍與目前的感測數據,以下是我的分析與建議:

---

### **1. 水質是否異常**

根據您提供的資料,目前養殖池的水質有以下異常狀況:

*   **水溫:異常 (偏高)**
    *   建議範圍:20–30°C
    *   目前數據:31°C
    *   分析:目前水溫已超過建議上限,屬於偏高。
*   **溶氧:異常 (偏低)**
    *   建議範圍:≥4 mg/L
    *   目前數據:3.5 mg/L
    *   分析:目前溶氧量低於建議下限,屬於不足。
*   **pH:正常**
    *   建議範圍:7.5–8.5
    *   目前數據:7.8
    *   分析:pH值在建議範圍內,狀況良好。
*   **鹽度:正常**
    *   建議範圍:15–30 ppt
    *   目前數據:28 ppt
    *   分析:鹽度在建議範圍內,狀況良好。

**總結:** 目前養殖池主要問題是 **水溫過高** 且 **溶氧不足**。

---

### **2. 可能風險**

水溫過高與溶氧不足是文蛤養殖中非常危險的組合,可能導致以下嚴重風險:

*   **生理壓力與攝食受阻:**
    *   高水溫會加速文蛤的新陳代謝,使其消耗更多能量,處於生理緊迫狀態。
    *   低溶氧會導致文蛤呼吸困難,降低活動力與攝食效率,長期會影響其生長與肥滿度,甚至閉殼不活動。
*   **免疫力下降與疾病爆發:**
    *   文蛤長期處於高溫低氧的緊迫環境,其免疫系統會受到抑制,對病原體的抵抗力下降,增加感染疾病的風險。
*   **育成率降低與急性死亡:**
    *   嚴重的低溶氧會直接導致文蛤窒息死亡。高水溫同時會降低水體溶氧能力,使得文蛤更容易因缺氧而死亡,可能導致文蛤大量浮頭或死亡,育成率大幅下降。
*   **藻相不穩定與水質惡化:**
    *   高水溫也可能導致養殖池中藻類種類變化,一些有害藻類(如藍綠藻)在高溫下容易繁殖,進一步影響水質和文蛤健康。
    *   文蛤因緊迫而攝食率下降,水中有機物無法有效被利用,可能導致水質進一步惡化,形成惡性循環。

---

### **3. 建議管理措施**

面對目前水溫偏高與溶氧不足的狀況,應立即採取以下管理措施:

1.  **立即改善溶氧狀況:**
    *   **啟動水車或增氧設備:** 應立即全天候開啟水車、葉輪式增氧機或鼓風機,以最大功率運轉,迅速增加水體溶氧量,直到溶氧恢復到至少 4 mg/L 以上。
    *   **適度換水:** 若有充足且水溫較低、溶氧較高的水源,可考慮逐步換入新鮮海水。建議在夜間或清晨時段進行換水,每次換水量不宜過大 (例如 1/3~1/4 池水),並注意新舊水溫差不宜超過 2°C,避免造成文蛤更大的緊迫。
    *   **減少有機負荷:** 檢查池中是否有過多的殘餌、死亡藻類或死亡生物,應及時清除,以減少水中有機物的分解耗氧。

2.  **執行降溫措施:**
    *   **增加水深:** 若可行,適度提高養殖池水深(例如增加 10-20 公分),較深的水體有助於穩定水溫,減緩升溫速度。
    *   **遮陽措施:** 若為較小的養殖池,可考慮在池面上架設遮陽網或帆布,減少陽光直射,有助於降低水溫。
    *   **換水降溫:** 如前所述,若新水源水溫較低,換水也能起到一定的降溫效果。

3.  **密切監測與調整:**
    *   **加強水質監測頻率:** 在此異常期間,每日至少早、中、晚各測量一次水溫和溶氧,密切追蹤改善效果。
    *   **觀察文蛤活動狀況:** 隨時觀察文蛤的行為,例如是否有開殼攝食、是否有閉殼不活動、是否有浮頭(雖然文蛤不浮頭,但活動力會顯著下降)或異常死亡的情形。
    *   **評估養殖密度:** 若高溫低氧狀況持續且難以改善,應評估目前養殖密度是否過高。未來在放養前,需更精確評估環境承載力,適度降低放養密度,以提高抗逆境能力。

4.  **改善池底環境:**
    *   健康的底泥對於文蛤生長至關重要。可以考慮施用有益微生物製劑(如光合菌、硝化菌),幫助分解底泥有機物,穩定水質並減少底泥耗氧。

這些措施應同時進行,並持續觀察文蛤的反應和水質變化,以確保養殖狀況能夠迅速恢復穩定。高溫和低溶氧是導致文蛤養殖失敗的常見原因,務必嚴陣以待。

範例三、給予文蛤最佳養殖條件的提示詞

 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
import os
from google import genai

api_key = os.environ.get("GOOGLE_API_KEY")

if not api_key:
    raise ValueError("請先設定 GEMINI_API_KEY 環境變數")

client = genai.Client(api_key=api_key)


# Prompt text
prompt = '''你是一個智慧養殖 AI 助手,負責分析文蛤養殖池的水質資料。

文蛤最佳養殖條件:
水溫:20–30°C
溶氧:≥4 mg/L
pH:7.5–8.5
鹽度:15–30 ppt

目前感測資料:
水溫:31°C
溶氧:3.5 mg/L
pH:7.1
鹽度:12 ppt

請完成以下任務:
1. 判斷水質是否正常
2. 評估缺氧風險
3. 提供三項管理建議
4. 回覆需簡潔並適合養殖戶閱讀

請用繁體中文回答'''

# Generate text
response = client.models.generate_content(
    model="gemini-2.5-flash",
    contents=prompt
)

# Print the output
print(response.text)

執行結果:
養殖戶您好,根據您提供的文蛤養殖池水質資料,分析結果如下:

1.  **水質狀況判斷:**
    目前水質狀況異常,所有指標皆偏離文蛤最佳養殖條件。
    *   **水溫:** 31°C (偏高,最佳為 20-30°C)
    *   **溶氧:** 3.5 mg/L (偏低,最佳為 ≥4 mg/L)
    *   **pH:** 7.1 (偏低,最佳為 7.5-8.5)
    *   **鹽度:** 12 ppt (偏低,最佳為 15-30 ppt)

2.  **缺氧風險評估:**
    溶氧量已低於最佳範圍(3.5 mg/L < 4 mg/L),文蛤存在明顯缺氧風險,請務必留意。

3.  **三項管理建議:**
    *   **立即增氧:** 啟動增氧設備,快速提升溶氧量至安全範圍,減緩文蛤緊迫。
    *   **調整鹽度與pH:** 評估引進較高鹽度且水質良好的水源進行換水;同時可考慮適量施用生石灰或碳酸鈣,逐步提升池水pH值。
    *   **高溫降溫:** 在高溫時段,可考慮增加水深或設置遮陽網,幫助降低水溫,減少文蛤熱緊迫。

範例四:

 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
import os
from google import genai

api_key = os.environ.get("GOOGLE_API_KEY")

if not api_key:
    raise ValueError("請先設定 GEMINI_API_KEY 環境變數")

client = genai.Client(api_key=api_key)


# Prompt text
prompt = '''你是一個智慧養殖 AI 助手,負責分析文蛤養殖池的水質資料。

文蛤最佳養殖條件:
水溫:20–30°C
溶氧:≥4 mg/L
pH:7.5–8.5
鹽度:15–30 ppt

過去6小時水質變化:

時間    溫度   溶氧
10:00   29    5.0
12:00   30    4.2
14:00   31    3.5

請完成以下任務:
1. 判斷水質是否正常
2. 評估缺氧風險
3. 提供三項管理建議
4. 回覆需簡潔並適合養殖戶閱讀

請用繁體中文回答'''

# Generate text
response = client.models.generate_content(
    model="gemini-2.5-flash",
    contents=prompt
)

# Print the output
print(response.text)

執行結果:
養殖戶您好,根據您提供的文蛤養殖池水質數據,分析與建議如下:

1.  **水質狀況判斷:**
    *   **水質已偏離正常。** 截至14:00,水溫已達31°C,超出文蛤最佳養殖溫度上限(30°C);同時,溶氧量為3.5 mg/L,已低於最佳標準(≥4 mg/L)。

2.  **缺氧風險評估:**
    *   **缺氧風險高。** 溶氧量在短短4小時內從5.0 mg/L迅速下降至3.5 mg/L,且目前已處於缺氧邊緣。持續高溫會進一步降低水中溶氧能力,若不立即處理,將嚴重影響文蛤健康。

3.  **管理建議:**
    *   **立即增氧:** 請立即啟動水車或增氧設備,全力增加池水溶氧量,目標盡快恢復到4 mg/L以上。
    *   **降溫處理:** 考慮採取遮陽措施或適量換入較涼的水體,以降低池水溫度,緩解高溫對文蛤的壓力並有助於提高溶氧。
    *   **密切監測:** 建議每1-2小時再次測量溶氧和溫度,並觀察文蛤活動狀況。若有pH和鹽度測試條件,也請一併監測,以掌握全面水質狀況。

請務必立即採取行動,確保文蛤健康。

[水井USR] 用本地端實作水井USR智慧養殖AI專家系統

 採用Ollama搭配llama3模型。


範例一、初體驗
程式碼:
 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
import requests

url = "http://localhost:11434/api/generate"

data = {
    "model": "llama3",
    "prompt": "水溫31°C 溶氧3.5 mg/L 養殖建議需要打開水車, 請用繁中文回答",
    "stream": False
}

response = requests.post(url, json=data)

print(response.json()["response"])

執行結果:
🌊

根據你的提供的水質資料,水溫為 31°C,溶氧為 3.5 mg/L。這個情況下,我們可以結合養殖魚類的基本需求,進行建議。

通常來說,養殖魚類需要維持適宜的水質環境,以確保其健康和生存。以下是一些魚類需要的基本水質標準:

* 水溫:15°C ~ 30°C(不同物種的溫度需求可能會有所差異)
* 溶氧:5 mg/L ~ 10 mg/L(不同的養殖魚類對於溶氧的需求也不同)

在你的情況下,水溫高於 30°C,已經超出一般養殖魚類的適宜溫度範圍。這可能會導致魚類受到熱傷害或增加疾病的風險。

另外,溶氧僅有 3.5 mg/L,這也可能對養殖魚類造成負面影響。在水質檢測中,溶氧不足是魚類死亡的主要原因之一。

因此,在這個情況下,我們建議你打開水車,進行水循環和加強空氣饋送,以提高水溫和增加溶氧的水平。這可以幫助養殖魚類維持健康的環境,並減少疾病的風險。

請注意,這只是一個簡單的建議,你還是需要根據實際情況和養殖魚類的特點進行調整和監控,以確保魚類的健康和生存。

範例二、以專家方式提問

 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
import requests

url = "http://localhost:11434/api/generate"
prompt = '''
你是一位台灣水產養殖專家,專長文蛤養殖管理。

文蛤養殖水質建議範圍:
水溫:20–30°C
溶氧:≥4 mg/L
pH:7.5–8.5
鹽度:15–30 ppt

目前養殖池感測資料:
水溫:31°C
溶氧:3.5 mg/L
pH:7.8
鹽度:28 ppt

請分析目前養殖狀況並提供:
1. 水質是否異常
2. 可能風險
3. 建議管理措施

請用繁體中文回答
'''

data = {
    "model": "llama3",
    "prompt": prompt,
    "stream": False
}

response = requests.post(url, json=data)

print(response.json()["response"])

執行結果:
根據現有的養殖池感測資料,文蛤養殖水質如下:

* 水溫:31°C,超過recommended範圍(20–30°C),這可能對文蛤的生長和健康產生負面影響。
* 溶氧:3.5 mg/L,低於recommended範圍(≥4 mg/L),這可能導致文蛤缺乏足夠的氧氣,從而影響其生長和存活率。
* pH:7.8,接近recommended範圍(7.5–8.5),但仍需要監測,以免 pH 突然變化。
* 鹽度:28 ppt,超過recommended範圍(15–30 ppt),這可能對文蛤的生長和健康產生負面影響。

因此,我們可以結論:

1. 水質異常,因為水溫、溶氧和鹽度都超出了recommended範圍。
2. 可能風險包括文蛤的生長和健康受到影響,可能導致存活率下降或死亡。
3. 建議管理措施如下:
* 增加空氣氧氣的混入,以提高溶氧濃度(≥4 mg/L)。
* 監測水溫,並考慮對養殖池的冷卻措施,以將水溫控制在recommended範圍(20–30°C)內。
* 減少鹽度,透過調整養殖池的鹽分濃度或添加淡水,以降低鹽度(15–30 ppt)。
* 定期監測養殖池中的其他指標,如濁度、PH 等,並採取適當措施來維持良好的養殖環境。

總之,需要立即對養殖池進行調整和監測,以避免文蛤的生長和健康受到負面影響。

範例三、給予文蛤最佳養殖條件的提示詞

 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
import requests

url = "http://localhost:11434/api/generate"
prompt = '''
你是一個智慧養殖 AI 助手,負責分析文蛤養殖池的水質資料。

文蛤最佳養殖條件:
水溫:20–30°C
溶氧:≥4 mg/L
pH:7.5–8.5
鹽度:15–30 ppt

目前感測資料:
水溫:31°C
溶氧:3.5 mg/L
pH:7.1
鹽度:12 ppt

請完成以下任務:
1. 判斷水質是否正常
2. 評估缺氧風險
3. 提供三項管理建議
4. 回覆需簡潔並適合養殖戶閱讀

請用繁體中文回答
'''

data = {
    "model": "llama3",
    "prompt": prompt,
    "stream": False
}

response = requests.post(url, json=data)

print(response.json()["response"])

執行結果:
Based on the current sensor data, I'll provide my analysis and recommendations as follows:

**1. 水質是否正常?**

根據文蛤最佳養殖條件,水溫高於31°C超出標準值(20-30°C),鹽度也低於15 ppt(12 ppt)。這些數據表明水質並不正常。

**2. 缺氧風險評估**

溶氧水平為3.5 mg/L,低於文蛤最佳養殖條件(≥4 mg/L),因此存在缺氧風險。高溫和低鹽度可能增加缺氧風險。

**3. 三項管理建議**

1. **降溫**:立即調整水溫至20-30°C,以減少缺氧風險。
2. **增氧**:增加溶氧水平以提高養殖池中的氧氣含量。
3. **鹽度調整**:增加鹽度至15-30 ppt,以滿足文蛤的需求。

**總結**

文蛤養殖池的水質不正常,存在缺氧風險。需要立即采取措施降溫、增氧和調整鹽度以改善水質,並減少對養殖戶的影響。

範例四、加入歷史資料

 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
import requests

url = "http://localhost:11434/api/generate"
prompt = '''
你是一個智慧養殖 AI 助手,負責分析文蛤養殖池的水質資料。

文蛤最佳養殖條件:
水溫:20–30°C
溶氧:≥4 mg/L
pH:7.5–8.5
鹽度:15–30 ppt

過去6小時水質變化:

時間    溫度   溶氧
10:00   29    5.0
12:00   30    4.2
14:00   31    3.5

請完成以下任務:
1. 判斷水質是否正常
2. 評估缺氧風險
3. 提供三項管理建議
4. 回覆需簡潔並適合養殖戶閱讀

請用繁體中文回答
'''

data = {
    "model": "llama3",
    "prompt": prompt,
    "stream": False
}

response = requests.post(url, json=data)

print(response.json()["response"])

執行結果:
Based on the water quality data, I'll provide my analysis and recommendations as follows:

**1.判斷水質是否正常**
水溫在 20–30°C 之間,達到文蛤最佳養殖條件;溶氧較低,4.2 mg/L 和 3.5 mg/L 是相對較低的數據,但仍在可接受範圍內(≥4 mg/L)。pH 值也在 7.5–8.5 之間。總的來說,水質大致正常,但溶氧值較低可能需要注意。

**2.評估缺氧風險**
根據數據,溶氧值下降明顯,從 5.0 mg/L 減少到 3.5 mg/L。在這種情況下,文蛤可能會發生缺氧的問題,因此需要注意監控水質和進行適當的調整。

**3.提供三項管理建議**

1. **監控溶氧值**:需要隨時監控溶氧值,確保其不再下降。
2. **增加養殖池流量**:增加養殖池流量可以幫助增加溶氧值和改善水質。
3. **增加 dissolved oxygen  (DO) 增強措施**:考慮使用 DO 增強措施,如增加磨灘設備或增加 aeration 設備,來提高溶氧值。

總的來說,水質大致正常,但需要注意監控和進行適當的調整,以避免文蛤養殖池中的缺氧問題。

2026年2月19日 星期四

[Django 6.0] 把尚虎雲生產端佈署到Render平台

1.下載尚虎雲生產端的軟體

載點:https://github.com/shanghuyun-team/Shanghuyun-Production-side/releases

2.解開後的目錄


3.增加render.yaml
 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
databases:
  - name: Shanghuyundb          # 資料庫服務名稱(可自訂)
    plan: free              # free / starter 等,免費版夠用
    databaseName: Shanghuyun    # 資料庫名稱
    user: Shanghuyun            # 使用者名稱(Render 會自動產生密碼)

services:
  - type: web
    name: Shanghuyun-Production-Side           # Web Service 名稱
    env: python             # Python 環境
    plan: free              # 免費方案
    region: singapore       # 建議選離台灣近的(如 singapore 或 oregon),跟資料庫同區域避免延遲
    buildCommand: pip install -r requirements.txt && python manage.py collectstatic --noinput
    startCommand: gunicorn core.wsgi:application --bind 0.0.0.0:$PORT
    # 如果你的專案資料夾是 Shanghuyun-Production-Side/core(內層),startCommand 改成:gunicorn Shanghuyun-Production-Side.wsgi:application ...

    envVars:
      - key: PYTHON_VERSION
        value: 3.14.1           # 或你的 Python 版本
      - key: SECRET_KEY
        generateValue: true   # Render 自動產生安全的 SECRET_KEY
      - key: DEBUG
        value: "False"
      - key: DATABASE_URL
        fromDatabase:
          name: mysitedb      # 對應上面的資料庫 name
          property: connectionString  # 自動注入 postgresql://... 格式
      - key: ALLOWED_HOSTS
        value: "*"            # 測試用,之後改成你的域名

4.在Github建Rep
Shanghuyun-Production-side

5.把軟體上傳到Github
  • 如果還沒 repo:
git init
git add .
git commit -m "Initial commit"
  • 建立 GitHub repo(private 或 public 都行)
  • push:
git remote add origin https://github.com/你的帳號/你的專案.git
git branch -M main
git push -u origin main

6. 建立新的藍圖

https://dashboard.render.com/blueprints




7.在Start Command中填入:
gunicorn core.wsgi:application --bind 0.0.0.0:$PORT

按下佈署鍵

8.佈署完成後,按下連結打開

2026年2月18日 星期三

[Django 6.0] 佈署Django到Render平台

1. 安裝虛擬環境工具
pip install virtualenvwrapper-win


2.建立虛擬環境

mkvirtualenv django_env

執行後畫面


環境都存在哪裡?

預設位置:

C:\Users\你的帳號\Envs


3.熟悉虛擬環境的指令

python --version → 確認是乾淨環境

deactivate → 離開

lsvirtualenv 或 workon → 看到 testenv 了嗎?

workon testenv → 再切回去


4.安裝Django

pip install django


5.製作安裝套件的文件requirements.txt

pip freeze > requirements.txt


6.初始化mysite Django 專案

django-admin startproject mysite


7.更換工作目錄
cd mysite

8.執行本地端網站
python manage.py runserver


9.打開瀏覽器
http://127.0.0.1:8000/

10.建立一個新應用程式

python manage.py startapp myapp


11.添加應用程式,mysite/mysite/settings.py
  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
 69
 70
 71
 72
 73
 74
 75
 76
 77
 78
 79
 80
 81
 82
 83
 84
 85
 86
 87
 88
 89
 90
 91
 92
 93
 94
 95
 96
 97
 98
 99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
"""
Django settings for mysite project.

Generated by 'django-admin startproject' using Django 6.0.2.

For more information on this file, see
https://docs.djangoproject.com/en/6.0/topics/settings/

For the full list of settings and their values, see
https://docs.djangoproject.com/en/6.0/ref/settings/
"""

from pathlib import Path

# Build paths inside the project like this: BASE_DIR / 'subdir'.
BASE_DIR = Path(__file__).resolve().parent.parent


# Quick-start development settings - unsuitable for production
# See https://docs.djangoproject.com/en/6.0/howto/deployment/checklist/

# SECURITY WARNING: keep the secret key used in production secret!
SECRET_KEY = 'django-insecure-!mi(werx6fq32e)h4we%q(d5k=(=coxpx^ux9z!#pqv=*-il13'

# SECURITY WARNING: don't run with debug turned on in production!
DEBUG = True

ALLOWED_HOSTS = []


# Application definition

INSTALLED_APPS = [
    'django.contrib.admin',
    'django.contrib.auth',
    'django.contrib.contenttypes',
    'django.contrib.sessions',
    'django.contrib.messages',
    'django.contrib.staticfiles',
    'myapp',
]

MIDDLEWARE = [
    'django.middleware.security.SecurityMiddleware',
    'django.contrib.sessions.middleware.SessionMiddleware',
    'django.middleware.common.CommonMiddleware',
    'django.middleware.csrf.CsrfViewMiddleware',
    'django.contrib.auth.middleware.AuthenticationMiddleware',
    'django.contrib.messages.middleware.MessageMiddleware',
    'django.middleware.clickjacking.XFrameOptionsMiddleware',
]

ROOT_URLCONF = 'mysite.urls'

TEMPLATES = [
    {
        'BACKEND': 'django.template.backends.django.DjangoTemplates',
        'DIRS': ['templates'],
        'APP_DIRS': True,
        'OPTIONS': {
            'context_processors': [
                'django.template.context_processors.request',
                'django.contrib.auth.context_processors.auth',
                'django.contrib.messages.context_processors.messages',
            ],
        },
    },
]

WSGI_APPLICATION = 'mysite.wsgi.application'


# Database
# https://docs.djangoproject.com/en/6.0/ref/settings/#databases

DATABASES = {
    'default': {
        'ENGINE': 'django.db.backends.sqlite3',
        'NAME': BASE_DIR / 'db.sqlite3',
    }
}


# Password validation
# https://docs.djangoproject.com/en/6.0/ref/settings/#auth-password-validators

AUTH_PASSWORD_VALIDATORS = [
    {
        'NAME': 'django.contrib.auth.password_validation.UserAttributeSimilarityValidator',
    },
    {
        'NAME': 'django.contrib.auth.password_validation.MinimumLengthValidator',
    },
    {
        'NAME': 'django.contrib.auth.password_validation.CommonPasswordValidator',
    },
    {
        'NAME': 'django.contrib.auth.password_validation.NumericPasswordValidator',
    },
]


# Internationalization
# https://docs.djangoproject.com/en/6.0/topics/i18n/

LANGUAGE_CODE = 'en-us'

TIME_ZONE = 'UTC'

USE_I18N = True

USE_TZ = True


# Static files (CSS, JavaScript, Images)
# https://docs.djangoproject.com/en/6.0/howto/static-files/

STATIC_URL = 'static/'

12.建立網頁 mysite/templates/index.html 

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
<!doctype html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta http-equiv="X-UA-Compatible" content="IE=edge" />
    <meta name="viewport" content="width=device-width, initial-scale=1.0" />

    <title>Hello Django on Render!</title>

    <link rel="stylesheet"
          href="https://stackpath.bootstrapcdn.com/bootstrap/4.5.0/css/bootstrap.min.css"
          integrity="sha384-9aIt2nRpC12Uk9gS9baDl411NQApFmC26EwAOH8WgZl5MYYxFfc+NcPb1dKGj7Sk"
          crossorigin="anonymous">
</head>
<body>
<main class="container">
    <div class="row text-center justify-content-center">
        <div class="col">
            <h1 class="display-4">Hello World!</h1>
        </div>
    </div>
</main>
</body>
</html>


13.建立一個簡單的視圖,mysite/myapp/views.py

1
2
3
4
5
from django.shortcuts import render


def index(request):
    return render(request, 'index.html', {})

14.設定路徑,mysite/mysite/uels.py

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
"""
URL configuration for mysite project.

The `urlpatterns` list routes URLs to views. For more information please see:
    https://docs.djangoproject.com/en/6.0/topics/http/urls/
Examples:
Function views
    1. Add an import:  from my_app import views
    2. Add a URL to urlpatterns:  path('', views.home, name='home')
Class-based views
    1. Add an import:  from other_app.views import Home
    2. Add a URL to urlpatterns:  path('', Home.as_view(), name='home')
Including another URLconf
    1. Import the include() function: from django.urls import include, path
    2. Add a URL to urlpatterns:  path('blog/', include('blog.urls'))
"""
from django.contrib import admin
from django.urls import path
from myapp import views

urlpatterns = [
    path('admin/', admin.site.urls),
    path('', views.index, name='index'),
]

15.重新啟動網站
python manage.py runserver

16.用render.yaml部署,放在mysite目錄下,和manage.py在同一個目錄。

 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
databases:
  - name: mysitedb          # 資料庫服務名稱(可自訂)
    plan: free              # free / starter 等,免費版夠用
    databaseName: mysite    # 資料庫名稱
    user: mysite            # 使用者名稱(Render 會自動產生密碼)

services:
  - type: web
    name: mysite            # Web Service 名稱
    env: python             # Python 環境
    plan: free              # 免費方案
    region: singapore       # 建議選離台灣近的(如 singapore 或 oregon),跟資料庫同區域避免延遲
    buildCommand: pip install -r requirements.txt && python manage.py collectstatic --noinput
    startCommand: gunicorn mysite.wsgi:application --bind 0.0.0.0:$PORT
    # 如果你的專案資料夾是 mysite/mysite(內層),startCommand 改成:gunicorn mysite.wsgi:application ...

    envVars:
      - key: PYTHON_VERSION
        value: 3.14.1           # 或你的 Python 版本
      - key: SECRET_KEY
        generateValue: true   # Render 自動產生安全的 SECRET_KEY
      - key: DEBUG
        value: "False"
      - key: DATABASE_URL
        fromDatabase:
          name: mysitedb      # 對應上面的資料庫 name
          property: connectionString  # 自動注入 postgresql://... 格式
      - key: ALLOWED_HOSTS
        value: "*"            # 測試用,之後改成你的域名

17.先把專案推到 GitHub
  • 如果還沒 repo:
git init
git add .
git commit -m "Initial commit"
  • 建立 GitHub repo(private 或 public 都行)
  • push:
git remote add origin https://github.com/你的帳號/你的專案.git
git branch -M main
git push -u origin main

18.建立新的藍圖
https://dashboard.render.com/blueprints


19.選擇包含您的藍圖的儲存庫,然後按一下「連線」。


20.命名後,按下部署鍵

21.部署過程,顯示:ModuleNotFoundError: No module named 'app'
在 Render Dashboard 修正 Start Command 登入 https://dashboard.render.com → 選你的 Web Service(mysite) 點 Settings(或 Edit) 找到 Start Command 欄位 改成:gunicorn mysite.wsgi:application

22.再度部署,部署成功後,瀏覽器訪問時,收到 400 Bad Request
127.0.0.1 - - [18/Feb/2026:08:20:57 +0000] "HEAD / HTTP/1.1" 400 143 ... 127.0.0.1 - - [18/Feb/2026:08:21:01 +0000] "GET / HTTP/1.1" 400 143 ...
這不是 Gunicorn 或 port 綁定問題,而是 Django 的安全檢查 觸發:你的 ALLOWED_HOSTS 設定沒包含 Render 給的域名(這裡是 mysite-1-p20l.onrender.com)。
Django 在 production 模式(DEBUG=False)下,會嚴格驗證 Host header。如果 Host 不匹配 ALLOWED_HOSTS,就直接回 400 Bad Request(不會給詳細錯誤頁面)。

23.修改mysite/mysite/setting.py
ALLOWED_HOSTS = [
    'mysite-1-p20l.onrender.com',   # 你的實際 Render URL(從 log 抄)
    '.onrender.com',                 # 萬用(wildcard),涵蓋所有子域名,測試超方便
    'localhost',                     # 本地開發用,可選
    '127.0.0.1',
]

24.重新把修改後的程式,上傳到Github
git add mysite/settings.py
git commit -m "Fix ALLOWED_HOSTS for Render deployment"
git push origin main

25.自動重新部署
Render 會自動偵測 push → 自動 redeploy(如果開了 auto-deploy)
也可以用手動 redeploy(如果等不及)
去 Render Dashboard → 你的服務(mysite-1-p20l)→ Manual Deploy → Deploy latest commit

26.開啟網站