← W2 | 示範 + 實作

LLM 程式操作示範

怎樣用程式呼叫 LLM?

你平常在 ChatGPT / Claude 網頁上打字聊天,背後其實就是一個程式在呼叫 LLM 的 API。我們今天要學的,就是怎樣自己寫程式來呼叫 LLM——跳過聊天介面,直接用 Python 控制 AI 做事。

核心概念很簡單:你送一段文字(prompt)給 API,API 回傳 AI 的回答。就這樣。

最簡單的 LLM 呼叫

# 三行就能呼叫 LLM
from google import genai

client = genai.Client(api_key="你的API_KEY")
response = client.models.generate_content(
    model="gemini-3.5-flash",
    contents="用一句話解釋什麼是心電圖"
)
print(response.text)

就這麼簡單。contents 就是你的 prompt,response.text 就是 AI 的回答。接下來我們把它包進 Streamlit,加上檔案上傳,就變成實用的工具。

單檔 LLM 程式

一個 Python 檔案 + 一個 API Key,就能做出有用的 AI 工具。不需要資料庫,不需要複雜的後端架構,不需要前端框架。今天我們用 Streamlit 做 UI,用 Gemini 3.5 Flash 做 LLM 後端,兩者搭配起來,幾分鐘就能做出一個完整的 AI 應用。

接下來用兩個實際例子示範:讀論文(送 PDF 給 LLM 分析)和讀圖片(送圖片給 LLM 描述),讓你看到 prompt 怎樣決定 AI 的行為。

實作一:讀論文程式

用 Gemini 3.5 Flash 自動分析 PDF 論文,產生結構化摘要。

1

建立專案

建立一個新的專案資料夾,啟動 conda 環境,安裝需要的套件。

$ mkdir gemini-apps
$ cd gemini-apps
$ conda activate bioagent
$ pip install streamlit google-genai
2

設定 API Key

將你的 Gemini API Key 設定為環境變數,讓程式可以讀取。

$ export GEMINI_API_KEY="你的API Key"
3

用 LLM 建立讀論文程式

打開 LLM,給它以下 prompt,讓它幫你生成完整的讀論文應用程式。

幫我寫一個 Streamlit 應用程式 paper_reader.py:

功能:
1. 使用者可以上傳 PDF 論文
2. 用 Gemini 3.5 Flash 分析論文內容
3. 自動產生:論文摘要、研究方法、主要發現、限制與未來方向
4. 顯示結果在漂亮的 Streamlit UI 上

技術要求:
- 使用 google-genai SDK
- Model: gemini-3.5-flash
- API Key 從環境變數 GEMINI_API_KEY 讀取
- 上傳的 PDF 用 Gemini 的 File API 處理
4

啟動並測試

用 Streamlit 啟動應用程式,然後在瀏覽器中測試。

$ streamlit run paper_reader.py
  • 上傳一篇 PDF 論文測試
  • 觀察 Gemini 的分析結果

實作二:讀圖片程式

用 Gemini 3.5 Flash 分析圖片內容,支援多輪對話提問。

1

用 LLM 建立讀圖片程式

打開 LLM,給它以下 prompt,讓它幫你生成圖片分析應用程式。

幫我寫一個 Streamlit 應用程式 image_reader.py:

功能:
1. 使用者可以上傳圖片(JPG, PNG)
2. 用 Gemini 3.5 Flash 分析圖片內容
3. 可以對圖片提問(例如「這張圖裡有什麼?」「請描述這張醫學影像」)
4. 支援多輪對話,可以追問

技術要求:
- 使用 google-genai SDK
- Model: gemini-3.5-flash
- API Key 從環境變數 GEMINI_API_KEY 讀取
- 圖片直接用 PIL 讀取後傳給 Gemini
2

啟動並測試

用 Streamlit 啟動應用程式,在瀏覽器中測試各種圖片分析情境。

$ streamlit run image_reader.py
  • 上傳一張圖片測試
  • 試著對圖片提問
  • 試著上傳一張醫學影像(X-ray、CT scan 等),看 Gemini 的分析能力

觀察重點

注意你給 LLM 的 prompt 如何影響產出的程式品質。prompt 寫得越具體、越結構化,產出的程式就越完整、越好用。試著修改 prompt 的措辭,觀察產出的差異。

比較不同 prompt 寫法產出的程式差異。例如:只寫「幫我做一個讀論文的程式」vs 上面那樣列出完整的功能需求和技術要求,產出的品質會天差地別。

整個應用只有一個 Python 檔案,但功能已經很完整。不需要前後端分離、不需要資料庫、不需要複雜的部署流程。這就是「單檔 LLM 程式」的威力。

Gemini 3.5 Flash 速度快、便宜,非常適合 prototype。回應速度快意味著開發迭代快,價格便宜意味著可以大量測試,不用擔心成本。

這就是「單檔 LLM 程式」的威力:快速驗證想法,不需要複雜架構。從想法到可用的 prototype,可能只需要十分鐘。先做出來、先驗證,再決定要不要投入更多資源開發完整產品。

推到 GitHub

把你的 Gemini Streamlit 應用推上 GitHub,完成本次實作。

1

初始化 Git 並提交

初始化 Git repo,建立 .env 和 .gitignore,確保 API Key 不會被提交。

$ git init
$ echo "GEMINI_API_KEY=你的key" > .env
$ echo ".env" > .gitignore
$ git add paper_reader.py image_reader.py .gitignore
$ git commit -m "Add Gemini Streamlit apps"

IMPORTANT

千萬不要把 API Key commit 到 git!用 .env 檔案存放,並加到 .gitignore。API Key 一旦洩漏,別人就可以用你的額度呼叫 API,造成不必要的費用。