星期日, 8月 24, 2025

UV 安裝與測試小記


UV 安裝與測試小記


OS: macOS 14.3

uv: 0.8.13


最近規劃後續要多放點時間在程式上, 初步會從 python 來起手

之前看 Colab 上面的練習, 跟python 有關的會使用 uv 來進行環境的安裝, 目前自己在 python 的使用是 python + pip + venv, 所以今天就來安裝 uv 體驗一下


uv 的官網


官網的文件非常齊全, 建議可以多從這邊看與練習

另外我也有參考網路上面的文章以及 youtube 影片


首先我們來安裝 uv

  • 官方建議的方式是 curl -LsSf https://astral.sh/uv/install.sh | sh


我這邊用的是使用 brew 安裝

% brew  install  uv


確認安裝的版本

% uv  --version


uv 0.8.13 (Homebrew 2025-08-21)

另外來處理 zsh 自動完成指令設定


開啟一個新的終端機測試, 就會發現使用 tab 會自動完成


來執行相關指令測試


列出可用的 python 版本

% uv  python  list


cpython-3.14.0rc2-macos-aarch64-none                 <download available>

cpython-3.14.0rc2+freethreaded-macos-aarch64-none    <download available>

cpython-3.13.7-macos-aarch64-none                    <download available>

cpython-3.13.7+freethreaded-macos-aarch64-none       <download available>

cpython-3.12.11-macos-aarch64-none                   /opt/homebrew/bin/python3.12 -> ../Cellar/python@3.12/3.12.11/bin/python3.12

cpython-3.12.11-macos-aarch64-none                   <download available>

cpython-3.11.13-macos-aarch64-none                   <download available>

cpython-3.11.6-macos-aarch64-none                    /usr/local/bin/python3.11 -> ../../../Library/Frameworks/Python.framework/Versions/3.11/bin/python3.11

cpython-3.11.6-macos-aarch64-none                    /usr/local/bin/python3 -> ../../../Library/Frameworks/Python.framework/Versions/3.11/bin/python3

cpython-3.10.18-macos-aarch64-none                   <download available>

cpython-3.9.23-macos-aarch64-none                    <download available>

cpython-3.9.6-macos-aarch64-none                     /usr/bin/python3

cpython-3.8.20-macos-aarch64-none                    <download available>

pypy-3.11.13-macos-aarch64-none                      <download available>

pypy-3.10.16-macos-aarch64-none                      <download available>

pypy-3.9.19-macos-aarch64-none                       <download available>

pypy-3.8.16-macos-aarch64-none                       <download available>

graalpy-3.11.0-macos-aarch64-none                    <download available>

graalpy-3.10.0-macos-aarch64-none                    <download available>

graalpy-3.8.5-macos-aarch64-none                     <download available>


列出已安裝的版本

% uv  python  find                                       


/opt/homebrew/opt/python@3.12/bin/python3.12


  • 比對上方的可用 python 版本, 應該是針對 uv 已經安裝的版本, 版本為 3.12


另外有一個重要的點是 uv 管理的 python 環境不能直接透過 python 指令執行,必須透過 uv 來執行.


這邊我使用跟網路上找到文章一樣的例子


建立一個 python 檔案 show_version.py

內容如下


# 匯入 sys 模組,此模組提供存取由 Python 解譯器使用或維護的變數,以及與解譯器互動的函式

import sys

# 印出 Python 解譯器的版本資訊字串

print(sys.version)


首先觀察

% which  python3


/usr/local/bin/python3


% ls  -l  /usr/local/bin/python3


lrwxr-xr-x  1 root  wheel  70  9 21  2024 /usr/local/bin/python3 -> ../../../Library/Frameworks/Python.framework/Versions/3.11/bin/python3


這個時候可以知道目前 python3 指令其實是對到 3.11 版本


所以如果我們用 python3 指令去執行 show_version.py

輸出如下


% python3  show_version.py 


3.11.6 (v3.11.6:8b6ee5ba3b, Oct  2 2023, 11:18:21) [Clang 13.0.0 (clang-1300.0.29.30)]


剛剛 uv 裝起來預設的 python 版本是 3.12


如果要使用 uv 那個版本的 python 來執行, 要使用 uv run 指令來執行


% uv  run  show_version.py 


3.12.11 (main, Jun  3 2025, 15:41:47) [Clang 16.0.0 (clang-1600.0.26.6)]


另外補充一個詢問 gemini code assist 的資訊

  • uv python find:探索與發現。它會掃描您的整個系統,找出 所有 可用的 Python 解譯器,無論是系統內建的、透過 pyenv 或 asdf 管理的,還是您手動安裝的。

  • uv python list --only-installed:管理與檢視。它 只會 列出透過 uv 指令自己安裝和管理的 Python 解譯器。


使用 uv 執行 python script


建立一個檔案 rich_demo.py 內容如下


# 匯入 time 模組,用於處理時間相關的操作,例如暫停程式執行

import time

# 從 rich.progress 模組匯入 track 函式,這是一個方便的函式,可以輕鬆地為迴圈加上進度條

from rich.progress import track


# 使用 for 迴圈迭代 20 次

# track() 函式會自動包裝可迭代物件 (這裡是 range(20)),並在終端機中顯示一個視覺化的進度條

# description 參數可以設定顯示在進度條前方的文字

for i in track(range(20), description="For example:"):

   # 在迴圈的每一次迭代中,讓程式暫停 0.05 秒

   # 這是為了模擬正在執行的工作,並讓我們能清楚地看到進度條的動畫效果

   time.sleep(0.05)


使用 uv 執行


% uv  run --no-project  rich_demo.py 


Traceback (most recent call last):

  File "/Users/max/Downloads/local_lab/python/rich_demo.py", line 4, in <module>

    from rich.progress import track

ModuleNotFoundError: No module named 'rich'


  • 這邊會失敗的原因是因為我們沒有 rich 這個套件


等等我們會使用 --with 的方式來執行, 執行之前先觀察 暫存目錄


% uv  cache  dir


/Users/max/.cache/uv


% ls  /Users/max/.cache/uv


CACHEDIR.TAG   interpreter-v4 sdists-v9


% uv  run  --with  rich  rich_demo.py


For example: ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ 100% 0:00:01


  • 使用 --with 來暫時的安裝套件 rich 來執行 


再次觀察可以發現 rich 套件於快取目錄內


% find /Users/max/.cache/uv/ -name 'rich'


/Users/max/.cache/uv//wheels-v5/pypi/rich

/Users/max/.cache/uv//archive-v0/4i2npuzGKTAaTSJr7KHgL/lib/python3.12/site-packages/rich

/Users/max/.cache/uv//archive-v0/PSjqC35p_rN0sqABiq9-f/rich


接下來測試 project 相關


使用 uv init 指令建立 project


% uv  init  hello-world


Initialized project `hello-world` at `/Users/max/Downloads/local_lab/python/hello-world`


  • hello-world 是專案名稱


這邊透過 vscode 看會比教直觀



  • main.py - 一個範例的 hello world 檔案

  • .python-version - 確認使用的 python 版本

  • pyproject.toml - 設定專案相關資訊, 主要是有 dependencies 設定可以將套件相依性進行紀錄與處理


我們切換到 hello-world 目錄

% cd  hello-world


main.py 只是列印  hello-world 出來, 我們嘗試使用 uv run 來執行他


% uv  run  main.py


Using CPython 3.12.11 interpreter at: /opt/homebrew/opt/python@3.12/bin/python3.12

Creating virtual environment at: .venv

Hello from hello-world!


  • 這邊可以看到當我們執行 uv run 的時候, uv 會自動建立 .venv 的虛擬環境


再次觀察目錄



  • 這邊會看到有建立 .venv 目錄以及 uv.lock 

  • .venv 是虛擬環境 - 這邊看到的好處是 uv 會自動建立 .venv 

  • uv.lock 功用: uv.lock 檔案是由 uv 這個 Python 套件管理工具所產生的一個鎖定檔案 (lock file)。它的核心功能是記錄您專案所依賴的每一個套件的確切版本號。這不僅包括您在 pyproject.toml 或 requirements.txt 中直接指定的套件,也包括這些套件所依賴的間接套件(也就是所謂的 "sub-dependencies")。


嘗試把剛剛的 rich_demo.py 複製到這個專案


% uv  run  rich_demo.py 


Traceback (most recent call last):

  File "/Users/max/Downloads/local_lab/python/hello-world/rich_demo.py", line 4, in <module>

    from rich.progress import track

ModuleNotFoundError: No module named 'rich'


  • 因為目前沒有 rich 套件, 所以會產生錯誤


與之前執行 python script 不同, 我們使用 uv add 指令來增加套件


% uv  add  rich


Resolved 5 packages in 293ms

Prepared 4 packages in 483ms

Installed 4 packages in 9ms

 + markdown-it-py==4.0.0

 + mdurl==0.1.2

 + pygments==2.19.2

 + rich==14.1.0


這個時候去觀察 .venv 目錄就發現 rich 套件已經被加入到虛擬環境中

% ls  ./.venv/lib/python3.12/site-packages 


__pycache__                    markdown_it                    mdurl-0.1.2.dist-info          rich

_virtualenv.pth                markdown_it_py-4.0.0.dist-info pygments                       rich-14.1.0.dist-info

_virtualenv.py                 mdurl                          pygments-2.19.2.dist-info


再次執行就可以運作

% uv  run  rich_demo.py

                    

For example: ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ 100% 0:00:01


另外同步觀察 pyproject.toml


[project]

name = "hello-world"

version = "0.1.0"

description = "Add your description here"

readme = "README.md"

requires-python = ">=3.12"

dependencies = [

   "rich>=14.1.0",

]

  • 可以觀察到 rich 已經被寫入 dependencies


也可以使用 uv tree 觀察相關資訊


% uv  tree


Resolved 5 packages in 17ms

hello-world v0.1.0

└── rich v14.1.0

    ├── markdown-it-py v4.0.0

    │   └── mdurl v0.1.2

    └── pygments v2.19.2


另外如果針對都會使用到工具指令 可以使用 uv tool install 來安裝到 全域, 讓整個系統可用, uv 會使用獨立的路徑避免衝突



這邊使用 ruff 測試


還沒安裝之前

% ruff

zsh: command not found: ruff


% uv tool install ruff


Resolved 1 package in 773ms

Prepared 1 package in 684ms

Installed 1 package in 13ms

 + ruff==0.12.10

Installed 1 executable: ruff

warning: `/Users/max/.local/bin` is not on your PATH. To use installed tools, run `export PATH="/Users/max/.local/bin:$PATH"` or `uv tool update-shell`.

  • 如同上面提示, 目前 ruff 所以安裝的目錄位置並沒有在路徑變數, 所以可能要使用 export 或是 uv tool update-shell 來更新才能執行


% uv tool update-shell 


Created configuration file: /Users/max/.zshenv

Restart your shell to apply changes


開啟一個新的 shell 測試

% ruff  check


All checks passed!


可以使用 uv tool list 來檢查已經安裝的工具

% uv  tool  list


ruff v0.12.10

- ruff


以上是今天的小測試, 感覺又離 python 前進一步


~ enjoy it



References


星期日, 8月 17, 2025

Browser MCP with Gemini CLI 小記

 


Browser MCP with Gemini CLI 小記


OS: macOS 14.3

gemini-cli: 0.1.21



在 x 上面看到國外朋友發的文章, 使用 Browser MCP 加上 Gemini CLI 進行 Web UI Test


今天來測試 Browser MCP with Gemini CLI

由於 Gemini CLI 更版速度很快, 建議先確認目前 Gemini CLI 是否是最新版本


Gemini CLI 升級或是 MCP 設定的資訊, 可以參考之前的文章


Browser MCP

  • 官網 https://docs.browsermcp.io/welcome

  • 官網介紹 With Browser MCP, you can use MCP to automate your browser so that AI applications can navigate the web, fill out forms, and more.


這次的實作我是在專案目錄內建立 .gemini/settings.json

內容如下


{

  "mcpServers": {

    "browsermcp": {

      "command": "npx",

      "args": ["@browsermcp/mcp@latest"]

    }

  }

}


  • 這邊使用的方式為 npx, 故機器上面要安裝 node.js  (不過 Gemini CLI 也是 node.js 安裝, 應該不會碰到相依性問題)


使用 gemini 指令啟動 Gemin CLI



  • 這個時候可以觀察到有顯示 1 MCP server


可以使用 /mcp 觀察相關功能


Browser MCP 使用 Chrome 瀏覽器, 藉由 Extension 來控制瀏覽器, 這樣真的方面很多應用

所以接下來就來安裝 Browser MCP 的 Chrome Extension, 

網址如下 https://browsermcp.io/install 

點選 Add to Chrome 加入到 Chrome


接下來會出現 歡迎訊息

點選 Get Started - 會引導到官方網站, 可以參考更多訊息



接下來開啟一個 Chrome 視窗或是分頁


點選 Browser MCP 擴充功能

點選 連接

這個時候瀏覽器就會顯示 Browser MP 已開始為這個瀏覽器偵錯




接下來我們回到 Gemini CLI


嘗試對他下指令

請幫我開啟 gdg taipei 網頁



  • 這個時候 Gemini CLI 會進行搜尋來確認 gdg taipei 網頁

  • Browser 會要求存取權限來開啟網頁

Chrome 瀏覽器這邊已經開啟網頁

Gemini CLI 這邊會顯示相關訊息



接下來可以進行相關詢問, 例如 請他列出 8 月份之前已經舉辦的活動


要求存取 COSCUP 活動資訊



  • 這邊還可以觀察到瀏覽器上面還有游標進行點擊動作


詢問 browser mcp 功能


✦ 好的,沒有問題。


  「Browser MCP」是我用來操作網頁的一套工具,它讓我能夠像真人一樣與網站互動。主要支援以下幾種類型的功能:


   1. 瀏覽與導航 (Navigation):

       * 開啟網頁: 我可以根據您提供的網址(URL)開啟任何網站。

       * 上一頁/下一頁: 我可以在瀏覽紀錄中後退或前進。


   2. 頁面互動 (Interaction):

       * 點擊: 我可以點擊頁面上的任何元素,例如按鈕、連結、圖片等。

       * 輸入文字: 我可以在文字輸入框(如搜尋框、表單欄位)中打字。

       * 選取選項: 我可以從下拉式選單中選擇一個或多個項目。

       * 滑鼠懸停: 我可以將滑鼠游標移動到某個元素上,以觸發彈出式選單或提示。


   3. 資訊獲取 (Information Gathering):

       * 畫面快照/截圖: 我可以擷取目前網頁的畫面,讓我「看見」頁面上的內容,就像您剛剛要求我做的那樣。

       * 讀取頁面內容: 我可以分析頁面的結構和文字,以理解其佈局和資訊。

       * 取得開發者資訊: 我可以獲取瀏覽器主控台的紀錄,這在解決網頁問題時很有用。


  簡單來說,透過這些工具,我可以幫您完成大部分在瀏覽器中手動操作才能完成的任務,例如搜尋資訊、填寫表單、在網

  站上導航等等。


真是方便的工具, 如果不使用 Browser MCP 直接把連線斷開就可以



感覺又離 AI 前進一步


~ enjoy it




References


星期三, 8月 06, 2025

Veo 3 on Vertex AI Media Studio 小記

Veo 3 on Vertex AI Media Studio 小記



Veo 3 已經在 7 月底 GA, 

故今天來測試 Veo 3 在 Vertex AI Media Studio 操作


參考官方文件


點選 "在Vertex AI Media Studio 中使用 Veo"

  • 這個時候會被帶入到 GCP Project 然後切換到 Vertex AI Studio

  • 此時請注意畫面上方的 Project 是否是要使用的專案


如果尚未啟用 API 會出現提示

可以點選 同意並繼續 啟用 Vertex AI API 以及 Cloud Storage


在畫面中間會看到四個圖示


分別是

  • 提交文字提示來產生圖片

  • 以不同語音 (包括您的聲音) 合成語音

  • 提交文字提示來生成 30 秒的音樂

  • Submit a text prompt to generate videos Or upload an image for more actions. (提交文字來產生影片)


我們來測試使用文字提示生成影片


右方相關設定, 這邊決定使用哪個模型 / 影片長度 / 解析度 以及其他的選項


輸入提示來產生影片, 例如 "虎斑貓在貓走道上悠閒漫步"



可以挑選喜歡的影片進行下載, 或是重新建立

另外要注意的是

預設是不會建立 GCS 輸出目錄

但是如果建立也指定輸出目錄


每次建立的影片會自動全部儲存到該 GCS Bucket


如果不需要影片記得刪除, 以免浪費錢 :) 


另外也有一種可愛的用法就是上傳圖片來建立動作



感覺離 AI 又更進一步


~ enjoy it



References