[{"data":1,"prerenderedAt":-1},["ShallowReactive",2],{"article-openai-compatible-model-comparison-script-zh":3,"article-related-openai-compatible-model-comparison-script-zh":30,"series-tools-0461ca72-072e-40dd-a2b4-0521afd6c7a7":73},{"id":4,"slug":5,"title":6,"content":7,"summary":8,"source":9,"source_url":10,"author":11,"image_url":12,"cover_image":12,"category":13,"language":14,"translated_content":11,"related_article_id":15,"keywords":16,"key_takeaways":22,"views":26,"created_at":27,"published_at":28,"topic_cluster_id":29},"0461ca72-072e-40dd-a2b4-0521afd6c7a7","openai-compatible-model-comparison-script-zh","一套 OpenAI 兼容脚本測出差距","\u003Cp data-speakable=\"summary\">以前我還要手動切環境、改 wrapper、複製 prompt；現在我只換 model ID，就能把兩個模型丟進同一條任務鏈路比出差距。\u003C\u002Fp>\u003Cp>我這幾年最煩的一件事，就是模型評測常常被做成一場自我感動。圖表畫得很漂亮，分數也像那麼回事，結果一落到我自己的任務上，還是看不出到底該換誰。更慘的是，很多團隊嘴上說自己用的是 \u003Ca href=\"\u002Ftag\u002Fopenai\">OpenAI\u003C\u002Fa> 兼容接口，真到實作時卻在手動切環境變數、改一堆 if\u002Felse、重跑一輪又一輪。最後你拿到的不是模型差異，而是流程噪音。這次把我拉回來的，是這篇知乎對比文：\u003Ca href=\"https:\u002F\u002Fzhuanlan.zhihu.com\u002Fp\u002F2062688766238762796\">Kimi K3 與 GLM-5.2 性能實測：2.8 倍價差背後的能力差距有多大\u003C\u002Fa>。我看到它的第一反應不是「誰比較強」，而是「這種比法才對味」。\u003C\u002Fp>\u003Cp>觸發我拆這套方法的核心，是它把 Kimi、GLM 這種模型放到同一個兼容端點思路裡看。你如果用的是 \u003Ca href=\"https:\u002F\u002Fwww.kimi.com\u002F\">Kimi\u003C\u002Fa>、\u003Ca href=\"https:\u002F\u002Fzhipuai.cn\u002F\">智譜 AI\u003C\u002Fa> 這類服務，再搭配 \u003Ca href=\"https:\u002F\u002Fplatform.openai.com\u002Fdocs\u002Fapi-reference\">OpenAI API 規格\u003C\u002Fa> 和 \u003Ca href=\"https:\u002F\u002Fgithub.com\u002Fopenai\u002Fopenai-python\">openai-python\u003C\u002Fa>，其實根本不用把對比做成遷移專案。把 SDK 指到同一個 endpoint，然後在兩個 model ID 上循環，這事本來就該是一次字串替換，而不是一次架構重寫。\u003C\u002Fp>\u003Ch2>把模型對比縮成一個開關\u003C\u002Fh2>\u003Cblockquote>把 SDK 指到同一端點，循環兩個 model ID，你就能在同一條任務上看出模型差異。\u003C\u002Fblockquote>\u003Cp>翻譯一下就是：你不要先為了對比去改業務程式，再補一層適配，再加一堆額外抽象，最後才開始跑。這樣你永遠分不清楚，結果差是因為模型差，還是因為你自己把流程改壞了。最穩的做法，是把模型切換壓到最小，只讓 model ID 變動，其他全部固定。\u003C\u002Fp>\n\u003Cfigure class=\"my-6\">\u003Cimg src=\"https:\u002F\u002Fxxdpdyhzhpamafnrdkyq.supabase.co\u002Fstorage\u002Fv1\u002Fobject\u002Fpublic\u002Fcovers\u002Finline-1784918020667-jwkd.png\" alt=\"一套 OpenAI 兼容脚本測出差距\" class=\"rounded-xl w-full\" loading=\"lazy\" \u002F>\u003C\u002Ffigure>\n\u003Cp>我以前很愛把評測做得很重。每個模型一個分支，每個環境一套設定，最後跑完之後，我自己都不太敢相信數字。後來我才發現，真正有用的對比，長得都很樸素：同一段輸入、同一個 endpoint、同一套 timeout、同一組 sampling 參數，唯一變的就是 model。這個「唯一變數」很無聊，但它很值錢，因為它把噪音砍掉了。\u003C\u002Fp>\u003Cp>實操寫法很簡單：先把你的呼叫入口收斂成一個函數，參數只留 endpoint、\u003Ca href=\"\u002Ftag\u002Fapi\">api\u003C\u002Fa> key、model、prompt 和少量控制項。別讓評測腳本順手承擔「順便修一下業務」的責任。評測腳本只做一件事：記錄模型在你真實任務上的表現。\u003C\u002Fp>\u003Cul>\u003Cli>固定輸入，不要一邊測一邊改 prompt。\u003C\u002Fli>\u003Cli>固定 sampling 參數，尤其是 temperature 和 max_tokens。\u003C\u002Fli>\u003Cli>固定日誌欄位，至少要有 model、latency、usage、error。\u003C\u002Fli>\u003C\u002Ful>\u003Ch2>SDK 要像開關，不要像補丁堆\u003C\u002Fh2>\u003Cp>我最怕看到的，就是為了兼容兩個模型，程式裡長出一堆 if\u002Felse。今天是 Kimi，明天是 GLM，後天又來一個別家，你的呼叫層就開始變成補丁堆。OpenAI 兼容接口真正有價值的地方，就是它應該讓你把切換成本壓到很低，而不是把你拖進新的抽象地獄。\u003C\u002Fp>\u003Cp>也就是說，你應該用同一套 client，靠配置切 model，不靠複製程式碼切邏輯。把 endpoint 指向 \u003Ca href=\"https:\u002F\u002Fapi.ofox.io\u002Fv1\">https:\u002F\u002Fapi.ofox.io\u002Fv1\u003C\u002Fa>，再在 request 裡替換 model ID，這種做法對 \u003Ca href=\"https:\u002F\u002Fplatform.openai.com\u002Fdocs\u002Fapi-reference\">OpenAI API\u003C\u002Fa> 來說本來就很自然。你如果用 Python，直接看 \u003Ca href=\"https:\u002F\u002Fgithub.com\u002Fopenai\u002Fopenai-python\">openai-python\u003C\u002Fa> 的寫法就夠了，別自己發明一套模型適配層，最後適配層比模型還難維護。\u003C\u002Fp>\u003Cp>我之前就遇過這種事。團隊想在同一個摘要任務上比較兩個模型，最開始有人提議各寫一套 wrapper，說這樣每個模型都能「用自己最舒服的方式」接。聽起來很合理，實際上完全毀掉對比意義。後來我硬是把入口統一，大家突然就只能討論輸出品質，而不是 wrapper 差異。這種改法很土，但很有效。\u003C\u002Fp>\u003Cp>實操寫法：把模型名做成配置項，別寫死在程式裡。最簡單就是讀環境變數，例如 MODEL_ID=kimi-k3 或 MODEL_ID=glm-5.2。然後在迴圈裡跑兩個值，輸出到同一個結果檔。你會發現，切換成本低了之後，大家才會願意反覆測，而不是只跑一次就宣布差不多。\u003C\u002Fp>\u003Cul>\u003Cli>endpoint 固定，model 可變。\u003C\u002Fli>\u003Cli>request body 固定，只有 model 欄位不同。\u003C\u002Fli>\u003Cli>結果統一落盤，後面才好做 diff。\u003C\u002Fli>\u003C\u002Ful>\u003Ch2>usage 和延遲，才是你真正要付錢的地方\u003C\u002Fh2>\u003Cp>很多人聊模型評測，只盯著「答對沒答對」。我懂，因為肉眼最容易判斷的就是輸出文本。但如果你做的是生產任務，只看內容對不對遠遠不夠。usage 和延遲才是真正會進帳單、會影響使用者體感的東西。\u003C\u002Fp>\n\u003Cfigure class=\"my-6\">\u003Cimg src=\"https:\u002F\u002Fxxdpdyhzhpamafnrdkyq.supabase.co\u002Fstorage\u002Fv1\u002Fobject\u002Fpublic\u002Fcovers\u002Finline-1784918020361-yhdk.png\" alt=\"一套 OpenAI 兼容脚本測出差距\" class=\"rounded-xl w-full\" loading=\"lazy\" \u002F>\u003C\u002Ffigure>\n\u003Cp>翻成白話就是：A 模型可能少犯一點錯，但 \u003Ca href=\"\u002Ftag\u002Ftoken\">token\u003C\u002Fa> 用得更多、反應也更慢；B 模型可能答案稍微差一點，但整體吞吐更高、成本更低。你最後選誰，不是看誰單次輸出比較討喜，而是看誰在你的約束裡更划算。這也是我覺得那篇對比值得看的地方，它不是只講誰比較聰明，而是把價差、能力、調用成本放在一起看。\u003C\u002Fp>\u003Cp>我以前也被這件事打過臉。我們做過一個分類任務，當時只看輸出正確率，結果選了個看起來很順眼的模型。上線後才發現，它的輸出比較長，重試率也高，最後整條流程成本比另一個模型更難看。那時我才真正理解，便宜不等於省錢，貴也不等於浪費，關鍵是你有沒有把整條鏈路算進去。\u003C\u002Fp>\u003Cp>實操寫法：每次呼叫都把 usage 物件存下來，別只存 content。再記錄端到端延遲，不要只看模型生成時間。最好連重試次數、超時次數也一起記，不然你會把「偶爾卡住」誤判成「平均性能差」。\u003C\u002Fp>\u003Cpre>\u003Ccode>result = client.responses.create(\n    model=model_id,\n    input=prompt,\n)\n\nprint({\n    \"model\": model_id,\n    \"latency_ms\": elapsed_ms,\n    \"input_tokens\": result.usage.input_tokens,\n    \"output_tokens\": result.usage.output_tokens,\n    \"total_tokens\": result.usage.total_tokens,\n    \"text\": result.output_text,\n})\u003C\u002Fcode>\u003C\u002Fpre>\u003Ch2>單次運行不是草率，是最低成本證據\u003C\u002Fh2>\u003Cp>我知道有人會說，單次運行不夠嚴謹，應該多輪、多樣本、做統計顯著性。我不反對，但很多團隊的問題根本不是統計不夠，而是連最小可用證據都沒有。先做單次運行對比，至少能回答一個很現實的問題：在我的真實輸入上，這兩個模型會怎麼表現。\u003C\u002Fp>\u003Cp>也就是說，單次運行不是最後結論，它是篩選器。它能幫你把明顯不合適的模型先踢出去，省得你後面花一堆時間在不值得的候選上。你不需要先把評測系統做成論文，才有資格開始選型。很多時候，先跑十條真實樣本，比先搭兩天框架更有用。\u003C\u002Fp>\u003Cp>我以前就吃過這個虧。為了一個任務，我們先花好幾天搭自動化評測集，結果最後才發現，兩個模型在最基本的指令遵循上就差很大。要是我一開始先跑幾條真實樣本，根本不會把後面的精力浪費在那個候選上。說白了，單次運行的價值不是證明誰贏，而是\u003Ca href=\"\u002Fnews\u002Fprompt-engineering-cheat-sheet-2026-zh\">快速\u003C\u002Fa>排除誰不行。\u003C\u002Fp>\u003Cp>實操寫法：拿你最常見的 5 到 10 條真實輸入，先做一次人工可讀的對比。每條都跑同樣的 prompt、同樣的參數、同樣的 endpoint。不要為了公平去用脫離業務的合成題。你要測的是你的任務，不是論文題。\u003C\u002Fp>\u003Ch2>2.8 倍價差，要先換算成自己的單位成本\u003C\u002Fh2>\u003Cp>標題裡最容易抓眼球的，就是 2.8 倍價差。但我其實不太在意這個數字本身，我在意的是：你有沒有把它換算成自己的單位成本。模型貴 2.8 倍，不代表一定不值；模型便宜很多，也不代表一定更適合。\u003C\u002Fp>\u003Cp>翻成白話就是：把 token 成本、失敗重試成本、人工複核成本和延遲成本一起算。很多團隊只看 API 單價，結果上線後才發現，便宜模型把後面的流程拖慢了，人工補救成本更高。那就不是省錢，是把錢搬到別的地方而已。\u003Ca href=\"https:\u002F\u002Fwww.kimi.com\u002F\">Kimi\u003C\u002Fa>、\u003Ca href=\"https:\u002F\u002Fzhipuai.cn\u002F\">智譜 AI\u003C\u002Fa> 這類已經提供兼容接口的服務，真正該比的不是誰名字更大聲，而是誰更適合你的\u003Ca href=\"\u002Fnews\u002Fxai-july-2026-grok-45-updates-zh\">工作流\u003C\u002Fa>。\u003C\u002Fp>\u003Cp>我自己的做法很土：先把流程拆成生成、校驗、重試、落庫、人工介入五段，然後看每個模型在這些環節裡的綜合成本。這樣你就不會只盯著「每百萬 token 多少錢」，而是會看「我這條鏈路一週到底燒多少錢」。這個角度一換，很多原本吵很兇的選型問題會安靜很多。\u003C\u002Fp>\u003Cp>實操寫法：做一張最簡單的成本表，列四項：輸入 token、輸出 token、平均延遲、失敗率。再把它們映射成你自己的錢，比如每 1000 次調用的總成本。這樣你看的就不是標價，而是整條鏈路的真實花費。\u003C\u002Fp>\u003Cul>\u003Cli>不要只看 API 標價。\u003C\u002Fli>\u003Cli>把重試和人工返工算進去。\u003C\u002Fli>\u003Cli>用你的真實任務算單位成本。\u003C\u002Fli>\u003C\u002Ful>\u003Ch2>真正有用的腳本，應該像工具，不像論文\u003C\u002Fh2>\u003Cp>如果一個對比腳本需要你讀半小時文件、改十個地方、再祈禱環境沒問題，那它基本就失去意義了。我更喜歡那種很硬的東西：輸入一段 prompt，跑兩個 model ID，吐出結構化結果，完事。越少花活，越能重複使用。\u003C\u002Fp>\u003Cp>也就是說，你的腳本應該能被同事直接拿去跑，而不是只有你自己知道怎麼用。最好一條命令就能切模型，一條命令就能導出結果，一條命令就能看 diff。這樣對比才會從偶爾做一次的儀式，變成每次選型都能順手做的動作。\u003C\u002Fp>\u003Cp>我最喜歡的評測腳本都很無聊。沒有花俏 UI，沒有複雜資料庫依賴，甚至沒有多餘抽象層。它們之所以好用，正是因為它們只解決一個問題：讓我快速知道哪個模型更適合這次任務。\u003C\u002Fp>\u003Cp>實操寫法：把腳本拆成三層。第一層負責發請求；第二層負責記錄結果；第三層負責輸出報告。不要讓這三層互相纏在一起。你以後要加新模型，只需要改配置，不需要改執行邏輯。\u003C\u002Fp>\u003Ch2>可抄的模板\u003C\u002Fh2>\u003Cpre>\u003Ccode>#!\u002Fusr\u002Fbin\u002Fenv python3\nimport os\nimport time\nimport json\nfrom openai import OpenAI\n\nENDPOINT = os.getenv(\"OPENAI_BASE_URL\", \"https:\u002F\u002Fapi.ofox.io\u002Fv1\")\nAPI_KEY = os.getenv(\"OPENAI_API_KEY\")\nMODELS = [\n    os.getenv(\"MODEL_A\", \"kimi-k3\"),\n    os.getenv(\"MODEL_B\", \"glm-5.2\"),\n]\nPROMPTS = [\n    \"把這段內容整理成 3 點重點。\",\n    \"請用繁中輸出，並保留原始名詞。\",\n]\nOUT = os.getenv(\"OUT_FILE\", \"model_compare.jsonl\")\n\nclient = OpenAI(api_key=API_KEY, base_url=ENDPOINT)\n\nwith open(OUT, \"a\", encoding=\"utf-8\") as f:\n    for prompt in PROMPTS:\n        for model_id in MODELS:\n            start = time.time()\n            record = {\n                \"endpoint\": ENDPOINT,\n                \"model\": model_id,\n                \"prompt\": prompt,\n            }\n            try:\n                resp = client.responses.create(\n                    model=model_id,\n                    input=prompt,\n                )\n                elapsed_ms = round((time.time() - start) * 1000, 2)\n                usage = getattr(resp, \"usage\", None)\n                record.update({\n                    \"ok\": True,\n                    \"latency_ms\": elapsed_ms,\n                    \"input_tokens\": getattr(usage, \"input_tokens\", None),\n                    \"output_tokens\": getattr(usage, \"output_tokens\", None),\n                    \"total_tokens\": getattr(usage, \"total_tokens\", None),\n                    \"output_text\": getattr(resp, \"output_text\", None),\n                })\n            except Exception as e:\n                elapsed_ms = round((time.time() - start) * 1000, 2)\n                record.update({\n                    \"ok\": False,\n                    \"latency_ms\": elapsed_ms,\n                    \"error\": str(e),\n                })\n            f.write(json.dumps(record, ensure_ascii=False) + \"\\n\")\n            f.flush()\u003C\u002Fcode>\u003C\u002Fpre>\u003Cp>這版我會直接放進 repo，名字就叫 \u003Ccode>model_compare.py\u003C\u002Fcode>。如果你想再往前一步，我會加上 CSV 匯出、固定 seed、以及把每次結果 hash 起來，避免你之後看不出是不是同一份輸入。你也可以再接 \u003Ca href=\"https:\u002F\u002Fpandas.pydata.org\u002F\">pandas\u003C\u002Fa> 做平均延遲、token 均值和失敗率統計，這些都很直白，沒必要搞得像\u003Ca href=\"\u002Fnews\u002F35-chatgpt-research-prompts-better-studies-zh\">研究\u003C\u002Fa>計畫。\u003C\u002Fp>\u003Cp>原始思路來自這篇知乎文章：\u003Ca href=\"https:\u002F\u002Fzhuanlan.zhihu.com\u002Fp\u002F2062688766238762796\">Kimi K3 與 GLM-5.2 性能實測：2.8 倍價差背後的能力差距有多大\u003C\u002Fa>。我這裡做的是把它拆成可執行的方法和可直接複製的腳本；具體模型結論、實測細節和原文表述，請以原作者發布內容為準。\u003C\u002Fp>","把同一個 SDK 指到兼容端點，循環兩個 model ID，就能在你的真實任務上直接比出差距。","zhuanlan.zhihu.com","https:\u002F\u002Fzhuanlan.zhihu.com\u002Fp\u002F2062688766238762796",null,"https:\u002F\u002Fxxdpdyhzhpamafnrdkyq.supabase.co\u002Fstorage\u002Fv1\u002Fobject\u002Fpublic\u002Fcovers\u002Finline-1784918020667-jwkd.png","tools","zh","b52945dd-3e03-466d-ba4a-084791e4a669",[17,18,19,20,21],"OpenAI compatible","model comparison","usage","latency","prompt evaluation",[23,24,25],"把模型切換壓成只改 model ID，才能看出真正差異。","評測時要同時記 usage、延遲、失敗率，別只看答案。","把對比腳本做成工具，不要做成補丁堆或小論文。",0,"2026-07-24T18:33:10.378548+00:00","2026-07-24T18:33:10.364+00:00","c3c88dd2-a940-438a-b359-0e5a24562273",{"tags":31,"relatedLang":32,"relatedPosts":36},[],{"id":15,"slug":33,"title":34,"language":35},"kimi-k3-vs-glm-5-2-one-endpoint-test-en","Kimi K3 vs GLM-5.2: a one-endpoint test","en",[37,43,49,55,61,67],{"id":38,"slug":39,"title":40,"cover_image":41,"image_url":41,"created_at":42,"category":13},"d3a5b328-3573-404b-bd9d-807901e54dd3","gemini-live-camera-turns-seeing-into-help-zh","Gemini Live 用鏡頭把問題變答案","https:\u002F\u002Fxxdpdyhzhpamafnrdkyq.supabase.co\u002Fstorage\u002Fv1\u002Fobject\u002Fpublic\u002Fcovers\u002Finline-1784851388356-f4dz.png","2026-07-24T00:02:41.656237+00:00",{"id":44,"slug":45,"title":46,"cover_image":47,"image_url":47,"created_at":48,"category":13},"fc2bcfb3-7542-4176-9d84-428bcf950649","jianguoyun-gongxiangwenjian-tongbu-you-sheng-zh","共享文件不该像寄快递：坚果云赢在同步","https:\u002F\u002Fxxdpdyhzhpamafnrdkyq.supabase.co\u002Fstorage\u002Fv1\u002Fobject\u002Fpublic\u002Fcovers\u002Finline-1784797382771-17jk.png","2026-07-23T09:02:33.898431+00:00",{"id":50,"slug":51,"title":52,"cover_image":53,"image_url":53,"created_at":54,"category":13},"8ef02ef4-2a57-4db0-8f87-0705cbf6e1ac","three-step-postgresql-c-to-rust-rewrite-zh","三步把 PostgreSQL C 改成 Rust","https:\u002F\u002Fxxdpdyhzhpamafnrdkyq.supabase.co\u002Fstorage\u002Fv1\u002Fobject\u002Fpublic\u002Fcovers\u002Finline-1784709235706-kk7w.png","2026-07-22T08:33:27.759083+00:00",{"id":56,"slug":57,"title":58,"cover_image":59,"image_url":59,"created_at":60,"category":13},"0ef9f5bc-c841-4f67-be97-3bb5fd7ec655","ai-agent-tool-landscape-report-2026-07-zh","AI Agent 工具選型拆成四層","https:\u002F\u002Fxxdpdyhzhpamafnrdkyq.supabase.co\u002Fstorage\u002Fv1\u002Fobject\u002Fpublic\u002Fcovers\u002Finline-1784707461607-2sr0.png","2026-07-22T08:03:27.317173+00:00",{"id":62,"slug":63,"title":64,"cover_image":65,"image_url":65,"created_at":66,"category":13},"f28f3857-506d-4b14-9211-664c7d2f142a","docker-desktop-windows-install-flow-zh","Windows 裝 Docker Desktop 先搞定 WSL","https:\u002F\u002Fxxdpdyhzhpamafnrdkyq.supabase.co\u002Fstorage\u002Fv1\u002Fobject\u002Fpublic\u002Fcovers\u002Finline-1784656979438-lzmx.png","2026-07-21T18:02:36.907589+00:00",{"id":68,"slug":69,"title":70,"cover_image":71,"image_url":71,"created_at":72,"category":13},"3f39f92e-fd44-43f8-a14c-a43e363b0eaa","grok-4-5-cursor-launch-benchmarks-pricing-zh","Grok 4.5 登上 Cursor，$2\u002F$6 開賣","https:\u002F\u002Fxxdpdyhzhpamafnrdkyq.supabase.co\u002Fstorage\u002Fv1\u002Fobject\u002Fpublic\u002Fcovers\u002Finline-1784536377664-m9em.png","2026-07-20T08:32:24.195451+00:00",[74,79,84,89,94,99,104,109,114,119],{"id":75,"slug":76,"title":77,"created_at":78},"855cd52f-6fab-46cc-a7c1-42195e8a0de4","surepath-real-time-mcp-policy-controls-zh","SurePath 推出即時 MCP 政策控管","2026-03-26T07:57:40.77233+00:00",{"id":80,"slug":81,"title":82,"created_at":83},"9b19ab54-edef-4dbd-9ce4-a51e4bae4ebb","mcp-in-2026-the-ai-tool-layer-teams-use-zh","2026 年 MCP：團隊真的在用的 AI 工具層","2026-03-26T08:01:46.589694+00:00",{"id":85,"slug":86,"title":87,"created_at":88},"af9c46c3-7a28-410b-9f04-32b3de30a68c","prompting-in-2026-what-actually-works-zh","2026 提示工程，真正有用的是什麼","2026-03-26T08:08:12.453028+00:00",{"id":90,"slug":91,"title":92,"created_at":93},"05553086-6ed0-4758-81fd-6cab24b575e0","garry-tan-open-sources-claude-code-toolkit-zh","Garry Tan 開源 Claude Code 工具包","2026-03-26T08:26:20.068737+00:00",{"id":95,"slug":96,"title":97,"created_at":98},"042a73a2-18a2-433d-9e8f-9802b9559aac","github-ai-projects-to-watch-in-2026-zh","2026 必看 20 個 GitHub AI 專案","2026-03-26T08:28:09.619964+00:00",{"id":100,"slug":101,"title":102,"created_at":103},"a5f94120-ac0d-4483-9a8b-63590071ac6a","claude-code-vs-cursor-2026-zh","Claude Code 與 Cursor 深度對比：202…","2026-03-26T13:27:14.279193+00:00",{"id":105,"slug":106,"title":107,"created_at":108},"0975afa1-e0c7-4130-a20d-d890eaed995e","practical-github-guide-learning-ml-2026-zh","2026 機器學習入門 GitHub 實用指南","2026-03-27T01:16:49.712576+00:00",{"id":110,"slug":111,"title":112,"created_at":113},"bfdb467a-290f-4a80-b3a9-6f081afb6dff","aiml-2026-student-ai-ml-lab-repo-review-zh","AIML-2026：像課綱的學生實驗 Repo","2026-03-27T01:21:51.467798+00:00",{"id":115,"slug":116,"title":117,"created_at":118},"80cabc3e-09fc-4ff5-8f07-b8d68f5ae545","ai-trending-github-repos-and-research-feeds-zh","AI Trending：把 AI 資源收成一張表","2026-03-27T01:31:35.262183+00:00",{"id":120,"slug":121,"title":122,"created_at":123},"3ce6e6e2-bac5-463e-9f8d-45caabcc61f7","awesome-ai-for-science-research-tools-map-zh","AI 科研工具清單，開始像地圖了","2026-03-27T01:46:50.521945+00:00"]