@lucashsu95/ai-forge
v0.2.0
Published
CLI tool to scaffold AI client projects (Python + Node.js)
Readme
⚒️ AI-Forge
█████╗ ██╗ ███████╗ ██████╗ ██████╗ ██████╗ ███████╗
██╔══██╗██║ ██╔════╝██╔═══██╗██╔══██╗██╔════╝ ██╔════╝
███████║██║ █████╗ ██║ ██║██████╔╝██║ ███╗█████╗
██╔══██║██║ ██╔══╝ ██║ ██║██╔══██╗██║ ██║██╔══╝
██║ ██║██║ ██║ ╚██████╔╝██║ ██║╚██████╔╝███████╗
╚═╝ ╚═╝╚═╝ ╚═╝ ╚═════╝ ╚═╝ ╚═╝ ╚═════╝ ╚══════╝鑄造你的 AI Client 基礎設施。 一行指令建好標準化 AI client 專案,直接串接 H200 Gemma4-31B。
🚀 快速安裝
npm (推薦)
npm install -g ai-forgecurl | bash
curl -fsSL https://gitlab.ntubimdbirc.tw/birc-backend/AI-Forge/-/raw/main/install.sh | bash🛠️ 指令集
| 指令 | 說明 | 範例 |
| :--- | :--- | :--- |
| ai-forge init [名稱] | 建立專案;名稱為 . 時寫入目前目錄 | ai-forge init my-ai-app |
| ai-forge init . --yes | 不提問,未指定的選項用預設值 | ai-forge init . --yes --lang python |
| ai-forge init . --force | 覆寫已存在的 SDK / .env.example | ai-forge init . --yes --force |
| ai-forge ask "問題" | 直接問 AI(讀取專案 .env) | ai-forge ask "你好" |
| ai-forge --help | 顯示所有可用指令 | ai-forge --help |
| ai-forge --version | 查看目前版本 | ai-forge --version |
🏁 快速開始
1. 初始化專案
互動式(會問名稱、模型、端點、語言):
ai-forge init my-ai-app給 agent 或 CI 用,寫入目前目錄、不提問。--model、--base-url 可省略,會用預設值:
ai-forge init . --yes --lang python設定選項:
- 專案名稱(
.表示目前目錄;--yes且省略名稱時同樣寫入目前目錄) - 預設模型(
--model,預設Gemma4-31B) - API 端點(
--base-url,預設https://chatapi.ntubimdbirc.tw/v1) - 語言(
--lang python,node,預設兩者皆產出)
2. 專案結構
AI-Forge 會產生 SDK 與環境設定檔。重跑 init 是升級路徑:已有檔案會跳過,只補缺少的 SDK 檔、gitignore 規則、以及 .env 裡缺的 VLLM_* 變數。--force 會覆寫 SDK 與 .env.example,但不會改 .env 既有值。不會產生或改寫 README.md。
my-ai-app/
├── .env.example # 環境變數範本
├── .gitignore # 沒有就建立;已有則 append
└── sdk/
├── python/ # Python SDK (config / transport / client / factory)
│ ├── pyproject.toml
│ ├── src/ai_client/
│ ├── examples/
│ └── tests/
└── node/ # Node.js SDK (config / transport / client / factory)
├── package.json
├── tsconfig.json
└── src/3. 執行與測試
Python:
cd my-ai-app/sdk/python
python3 -m venv .venv && source .venv/bin/activate
pip install -e ".[dotenv]"
ai-ask "用一句話說明什麼是產銷履歷"Node.js:
cd my-ai-app/sdk/node
npm install && npm run build
npm run example直接詢問 (根目錄):
cd my-ai-app
# 請先在 .env 填入 VLLM_API_KEY
ai-forge ask "用一句話說明什麼是產銷履歷"4. prompt
把下面整段貼給 AI agent,讓它用 ai-forge CLI 建制,而不是手刻 client。
用 AI-Forge CLI 在本專案建制標準化 AI client,不要手寫 SDK。
1. 確認已安裝 `ai-forge`(`ai-forge --version`)。沒有就執行:
npm install -g ai-forge
2. 在目標目錄執行(不要提問、寫入目前目錄):
ai-forge init . --yes --lang python
不要加 --model / --base-url,用 CLI 預設即可(Gemma4-31B、https://chatapi.ntubimdbirc.tw/v1)。
只要 Node:`--lang node`;兩種都要:省略 --lang,或 `--lang python,node`。
3. 遵守 CLI 行為:
- 只產生 sdk/、.env.example、.gitignore;已有檔案就 skip,缺的才補。不要用 --force,除非我明確要求覆寫 SDK。
- 不要建立或改寫 README.md
- .env 已存在就不要覆蓋既有值;缺的 VLLM_API_KEY / VLLM_BASE_URL / VLLM_MODEL 才 append
4. 在 .env 填入 VLLM_API_KEY(不要把金鑰寫進 git 或 README)。
5. 建制完成後用 CLI 驗證,不要自己實作 HTTP client:
ai-forge ask "用一句話說明什麼是產銷履歷"🧩 核心設計與 API
簡潔的介面
不論使用哪種語言,你 90% 的時間只需要這兩個步驟:
create_client()/createClient()$\rightarrow$ 從環境變數讀取設定並實例化。client.complete(prompt, max_tokens)$\rightarrow$ 發送請求並獲取回應。
依賴注入 (Dependency Injection)
AI-Forge 採用解耦設計,讓你可以輕鬆替換底層實作:
- 換模型 $\rightarrow$ 傳入新的
AIConfig。 - 換傳輸層 $\rightarrow$ 實作新的
Transport(例如從 HTTP 換成 WebSocket)。 - 做測試 $\rightarrow$ 注入
MockTransport避免消耗 Token。
# Python 範例:注入 MockTransport
from ai_client import AIClient, AIConfig, ChatResponse
config = AIConfig(api_key="sk-...", model="Gemma4-31B")
class MockTransport:
def chat(self, **kwargs):
return ChatResponse(content="這是測試回應")
client = AIClient(config=config, transport=MockTransport())⚙️ 環境配置
請在 .env 檔案中設定以下參數:
| 變數 | 預設值 | 用途 |
| :--- | :--- | :--- |
| VLLM_API_KEY | (必填) | 你的 API 授權金鑰 |
| VLLM_BASE_URL | https://chatapi.ntubimdbirc.tw/v1 | OpenAI 相容端點 |
| VLLM_MODEL | Gemma4-31B | 指定使用的模型名稱 |
🛠️ 開發與貢獻
如果你想修改 AI-Forge 的產生邏輯:
git clone https://gitlab.ntubimdbirc.tw/birc-backend/AI-Forge.git
cd AI-Forge
npm install
node bin/ai-forge.js --help💡 提示:修改 templates/ 目錄下的檔案,將直接影響 init 指令產出的專案內容。
📄 License
MIT
