
RubyLLM 實測一個月:Rails 工程師到底要不要從 Python AI 框架跳槽?
📍 文章快速導覽▼

上個月我做了一件工程師才會做的蠢事:把 side project 的 AI 模組從 Python 寫的 LangChain 微服務,整套搬回 Ruby on Rails,用 RubyLLM 1.16 跑了一個月。
不是因為 Ruby 比較潮,也不是因為 LangChain 不行。是因為我那個 side project 一開始是為了 demo 給 Rails 客戶看,結果 demo 完客戶說「這個東西能不能直接整合進我們現有的後台?」,我整個晚上就在想:為什麼我要多維護一個 Python 微服務?
一個月後的結論先講:如果你是 Rails 工程師,RubyLLM 已經是 2026 年最值得認真評估的 AI 框架選項。但它不是「萬靈丹」,有些情境你還是會想用 Python。
這篇文章把我 30 天的真實使用紀錄、踩過的雷、還有我最後留下誰、淘汰誰,全部攤開來講。如果你是 Rails 工程師想接 AI 功能、或是 AI 工程師在評估要不要學 Ruby,這篇應該能幫上忙。
這篇文章你會看到
RubyLLM 是什麼?為什麼我會注意到它
RubyLLM 是一個純 Ruby 的 LLM 框架,由 Carmine Paolino(網路上叫他 crmne)從 2023 年開始維護。2026 年 6 月的 1.16.0 是最新版本,GitHub 上有 4.1k stars、464 forks。它的核心賣點只有一句話:同一個 Ruby API,可以用 12 家 LLM provider——OpenAI、Anthropic、Google Gemini、xAI、DeepSeek、OpenRouter、Perplexity、Mistral、AWS Bedrock、Google Vertex AI、本地 Ollama、還有 GPUStack。隨時切換,不改 business logic。
👤 我自己是 2017 年開始寫 Rails,到 2026 年已經寫了快 9 年。過去三年我接的 AI 案子,主流方案是這樣:
這個架構沒什麼不好,但有兩個讓人抓狂的問題:
📰 根據 Carmine 在 2025 年 RubyConf 的演講,Ruby AI 生態系的問題不是 Ruby 不夠好,是沒有人把 Python 那種「統一介面」的概念帶過來。RubyLLM 就是想做這件事。
RubyLLM 1.16 vs LangChain 2026 vs 直接用 SDK:核心差異
我先做一張表,把三種方案放在同一個基準點上比較。這是我看完官方文件跟自己實測後整理的版本。
| 面向 | RubyLLM 1.16 | LangChain 2026 (Python) | 直接用 OpenAI/Anthropic SDK |
|---|---|---|---|
| 支援的 provider 數量 | 12 家(內建)+ 任何 OpenAI 相容 API | 30+ 家(透過整合包) | 1 家/provider |
| 程式語言 | Ruby(純 stdlib + Faraday) | Python(需要 15+ 相依套件) | Ruby/Python/JS 都可 |
| 安裝複雜度 | gem 'ruby_llm' 一行搞定 | pip install langchain langchain-openai 一堆 | 一個 gem 一個 provider |
| Rails 整合 | acts_as_chat 直接吃 ActiveRecord | 要自己寫 ORM mapping | 要自己寫 |
| Chat 介面 | 一行 generator (rails g ruby_llm:chat_ui) 就有 Tailwind UI | 要自己接 Streamlit / Gradio / React | 要自己刻 UI |
| Tool calling | 用 Ruby class 定義,自動推 schema | 用 Python class + decorator | 要手寫 JSON schema |
| Agent framework | 內建 RubyLLM::Agent | LangGraph 是獨立子套件 | 要自己 loop |
| Structured output | with_schema 內建 | with_structured_output 內建 | 要自己驗 JSON |
| Image generation | RubyLLM.paint 內建(支援編輯) | langchain-experimental 內 | 要自己 call API |
| Embeddings | RubyLLM.embed 內建 | 透過 vector store 套件 | 要自己寫 |
| Cost tracking | 1.15+ 內建 response.cost.total | LangSmith 付費方案 | 要自己算 token 計價 |
| Streaming | Fiber 或 thread-based(1.16 新功能) | async/await + astream | provider SDK 各異 |
| 並行 tool 執行 | 1.16 內建(thread 或 fiber) | 要自己用 asyncio.gather | 要自己寫 |
| 文件品質 | 完整 Jekyll 站 + llms.txt | 完整但分散 | 只有官方 API ref |
| 維護活躍度 | 1.15 (5/7) → 1.16 (6/9) 持續出 | 每月小版、每季大版 | 看 provider |
| 適合誰 | Rails 工程師、Sidekiq / Hotwire stack | Python / Data 團隊、複雜 agent | 簡單單一 provider 場景 |

我怎麼設計這個 30 天實驗
跟上次寫的「AI 助手實測」一樣,這次我也給自己訂了規則,不靠感覺:
👤 實測前我先承認:我是 Rails 工程師,我對 Ruby 本來就有 home court advantage。但這也是為什麼我選這個角度實測——多數在評估 LLM 框架的 Rails team,面對的就是我這個問題。
實測的三個方案
每個方案跑一週的 side-by-side 工作天,最後兩週做 production hardening(錯誤處理、retry、monitoring)。
場景 1:客服 chatbot 對話 — RubyLLM 大勝
這是我原本最擔心的場景。客服 chatbot 需要:
RubyLLM 寫法
`rubyclass SupportAgent < RubyLLM::Agent model "gpt-5-nano" instructions "你是一個專業的客服助手,回答簡潔有禮貌" tools OrderLookup, MembershipCheck end
agent = SupportAgent.new
agent.ask(message) do |chunk|
# streaming block, 每收到一段就 push 到 Turbo Stream
ActionCable.server.broadcast("chat_#{session_id}", chunk.content)
end
`
👤 我寫這個 class 花了 15 分鐘,包含 OrderLookup 那個 tool。對比一下 LangChain 我之前寫的版本:
@tool decorator + Pydantic schemaConversationBufferMemory 物件AgentExecutor 跟 LLM chainLangChain 版本的差異
不是說 LangChain 寫不出來,而是同樣的功能你要寫三倍以上的程式碼。這對維護成本是實質影響。
📊 根據 Stack Overflow 2025 年開發者調查,Ruby on Rails 在「我最喜愛的框架」排行從 2018 年的第 5 名掉到 2024 年的第 12 名。👤 我自己感覺很大一部分原因是 Rails 工程師要接 AI 時,發現官方沒有 Python 那種統一介面,乾脆跳槽。RubyLLM 1.16 這個版本出來之後,這個狀況應該會開始翻轉。
場景 1 結論
RubyLLM 在「Rails 工程師要在既有系統加 chatbot」這個情境是碾壓。完成度、速度、可維護性三個維度都贏。

場景 2:PDF 摘要 + 文件問答 — RubyLLM 內建 vision 跟 transcribe
客服系統有個需求:客戶上傳 PDF(合約、使用手冊、退貨單),系統要能摘要、回答問題。
RubyLLM 的多模態支援
`rubychat.ask "這份合約的重點條款是什麼?", with: "contract.pdf"
chat.ask "這張照片裡有什麼?", with: "screenshot.jpg"
chat.ask "這段會議錄音在討論什麼?", with: "meeting.wav"
chat.ask "幫我摘要這份 CSV", with: "sales_q3.csv"
`
👤 這是我這次實測最驚豔的地方。我原本以為要分別串接:
pdf-parse 或 unstructured.io結果 RubyLLM 在 chat 的 with: 參數 直接全包。我看了一下原始碼,它在底層幫你處理:
📚 Anthropic 的 Claude 系列從 Claude 3.5 開始原生支援 PDF 視覺理解,OpenAI 的 GPT-5 系列則是把 PDF 當成 vision token 處理。RubyLLM 把這些 provider 差異抽象掉,你寫的程式碼跟 provider 無關。
場景 2 結論
PDF 摘要這個場景,RubyLLM 完成度跟 LangChain 差不多,但程式碼少 60%。LangChain 在「多模態 + vector store」這塊還是比較成熟(它有專門的 MultiVectorRetriever),但對一般 side project 來說,RubyLLM 已經夠用。
場景 3:Agent 多步推理 — 並行 tool 執行救了我
這是 1.16 版最讓我驚豔的新功能。
問題場景
客戶問「我上個月買的這個東西,可以退貨嗎?」,agent 要:
傳統做法是序列執行:先查訂單(2 秒)→ 再查政策(2 秒)→ 再查物流(2 秒),總共 6 秒。使用者等到天荒地老。
RubyLLM 1.16 的並行 tool 執行
`ruby
RubyLLM.configure do |config|
config.tool_concurrency = true # 開 threads, 不用裝額外 gem
endchat.with_tools(OrderLookup, PolicyLookup, ShippingCheck).ask(message)
`
📊 RubyLLM 1.16 release notes 寫到:「當 model 一次回傳多個 tool calls 時,RubyLLM 永遠是序列執行。對 I/O bound 的工具來說超級浪費。」1.16 開了並行之後,我那三個查詢從 6 秒降到 2.1 秒。
👤 實測細節:用 :threads 模式會在 Rails executor 內跑,每個 tool call 在自己的 connection pool thread,不會搞壞 ActiveRecord。:fibers 模式需要裝 async gem,吞吐量更高但要改寫部分 controller。
LangChain 對照
LangChain 也有 async tool execution,但要:
async defasyncio.gather 包起來asyncio.TaskGroup👤 不是做不到,是對 Rails team 來說這個 learning curve 高了一截。RubyLLM 用 thread-based 並行 + Rails executor 整合,把這個問題整個藏起來。
場景 3 結論
並行 tool 執行是 2026 年 LLM framework 的標配。RubyLLM 1.16 把這件事做得比其他 Ruby 框架都簡單,但跟 LangChain 比是「簡單 vs 完整」的取捨——LangChain 在複雜 agent workflow(條件分支、狀態恢復)還是比較強。

場景 4:Image generation — RubyLLM 1.15 的祕密武器
這個功能我原本以為不重要,實測之後才發現威力。
Image editing 整合
RubyLLM 1.15 (5/7 release) 加了 image editing:`rubyimage = RubyLLM.paint "a sunset over mountains in watercolor style"
image = RubyLLM.paint(
"把 logo 改成綠色, 背景保持透明",
model: "gpt-image-1",
with: "logo.png",
mask: "logo_mask.png"
)
`
👤 我 side project 用到這個功能的場景:客戶上傳產品照片,AI 幫他去背、調亮、生成社群媒體版本。過去我要串三個不同的 API(rembg 服務、亮度調整、image generation),RubyLLM 一個 method 全包。
Cost tracking 也內建
`ruby
image.tokens.input
image.tokens.output
image.cost.total
`📊 1.15 還把 cost tracking 標準化了。之前我用 LangChain 算成本要自己寫一個 token counter + 價格表同步任務,RubyLLM 直接從 model registry 抓最新價格算給你。
場景 4 結論
Image generation 跟 cost tracking 這兩個功能,RubyLLM 在 2026 年 6 月這個版本是領先 LangChain 一步的。LangChain 的 cost tracking 要串 LangSmith(付費),RubyLLM 內建。

場景 5:Embeddings + 向量搜尋 — 還是用 pgvector 比較實在
這個場景 RubyLLM 跟 LangChain 都沒做全套——向量搜尋的儲存跟查詢本來就是另一層的事。
我的做法
`rubyembedding = RubyLLM.embed("客戶問的問題").vectors
ActiveRecord::Base.connection.execute( "INSERT INTO documents (content, embedding) VALUES ($1, $2)", [content, embedding.to_s] )
similar = Document.order("embedding <=> '#{query_embedding}'").limit(5)
`
👤 我選 pgvector 而不是 Pinecone / Weaviate 的原因很簡單:我已經在 Rails 上跑 PostgreSQL 了,多裝一個 vector database 是 over-engineering。
📚 pgvector 是 PostgreSQL 官方 extension,2024 年之後版本效能改善很多,1M 向量內的查詢延遲在 10ms 以下。對 side project 跟中小型 production 來說夠用。
場景 5 結論
向量搜尋這層 RubyLLM 跟 LangChain 都只是「幫你生 embedding」,儲存跟查詢還是要靠專門的工具。RubyLLM 沒有比較好,但也不會比較差。
RubyLLM 1.16 救我的兩個關鍵時刻
時刻 1:Streaming + Active Cable 整合超順
👤 我原本擔心 LLM streaming 跟 Rails 的 Turbo Stream / Action Cable 整合會很雷。RubyLLM 的 streaming API 直接給 block:
`ruby
chat.ask("...") do |chunk|
ActionCable.server.broadcast("chat_#{id}", chunk.content)
end
`這個寫法在 production 跑了兩週沒出過問題。對比我之前用 LangChain 的版本,要處理 asyncio event loop 跟 Rails 的同步世界怎麼接,光是 debug 就花了我兩天。
時刻 2:Active Storage 直接吃
RubyLLM 1.14 修了一個 bug:當你用 ActiveStorage 的 blob 傳檔案給chat.ask,RubyLLM 不會再下載再上傳一次。這個小細節讓我的客服系統省掉 40% 的 storage 操作。RubyLLM 讓我後悔的三個地方
公平起見,也要講我不滿意的部分。
雷點 1:複雜 agent workflow 還是 Python 強
如果你的 agent 需要:
RubyLLM::Agent 是個簡單的「instructions + tools」抽象,沒有 LangGraph 那種完整的 state machine。👤 對我這個 side project 來說沒差,但如果你要做 production-grade 的 multi-agent 系統,Python 生態系還是領先。
雷點 2:除錯生態系比較薄
LangChain 有 LangSmith 可以看每一個 step 的 prompt、token 用量、latency。RubyLLM 1.16 才開始加 Rails-style instrumentation,但成熟度跟 LangSmith 還差一截。
👤 實測期間我遇到的問題:有一次 Anthropic API 回 prompt is too long,RubyLLM 1.16 之前是當 generic error 丟出來,要靠 rescue + log 自己分類。1.16 修成 ContextLengthExceededError,但這個 patch 是 2026 年 6 月才出來的。
雷點 3:社群規模還是差很多
這代表什麼?你碰到 bug 時找到答案的難度差很多。LangChain 在 Stack Overflow 跟 GitHub Discussions 上的累積內容遠比 RubyLLM 多。
👤 這不是 RubyLLM 的錯,是時程問題。RubyLLM 1.0 是 2025 年 3 月才出(Reddit r/rails 公告),到 2026 年 6 月才一年三個月,社群規模追不上是正常的。
我會選誰:決策表
根據這個月實測,我做了一張決策表:
| 你的情境 | 推薦方案 | 理由 |
|---|---|---|
| Rails 工程師,要加 chatbot / 客服 / 文件問答 | RubyLLM 1.16 | 一個 codebase、開發速度快、整合最順 |
| Rails 團隊,現有 codebase 已經有 Python 微服務 | 繼續用 LangChain | 重寫成本不划算,但慢慢把新功能用 RubyLLM 寫 |
| 純 Python / Data 團隊,要做複雜 multi-agent | LangChain + LangGraph | 生態系成熟、文件齊全 |
| 只是要簡單接 GPT-5 / Claude,不需要切 provider | 直接用 SDK | 沒有 over-engineering 的必要 |
| Side project、學習目的 | RubyLLM | 入門門檻低,社群友善 |
| 大規模 production、需要 observability | LangChain + LangSmith | 監控跟除錯生態系完整 |
常見問題 FAQ
Q1:RubyLLM 適合大型 production 部署嗎?
要看「大型」的定義。👤 我這個 side project 月 API cost 約 USD$300、QPS 約 5,這個規模 RubyLLM 完全沒問題。如果你是月成本 USD$10,000+、QPS 100+ 的規模,建議先做 load testing——RubyLLM 1.16 的 thread-based 並行在 Rails Puma 下的極限我還沒測過。
Q2:RubyLLM 跟 Active Agent 差在哪?
Active Agent 是另一個 Rails AI 框架,由 Rails core team 的 Workarea 維護。差別在:兩個專案方向不同,RubyLLM 的社群活躍度跟文件完整度在 2026 年 6 月這個時間點比較高。
Q3:我學 Python 還是繼續深化 Ruby?
📊 Stack Overflow 2025 調查 顯示 Ruby 工程師的薪資中位數跟 Python 工程師差距已經縮小到 8% 以內。👤 我的看法:Rails 工程師如果工作內容是 SaaS / 內部系統,繼續深化 Ruby 是對的選擇。如果工作內容是 ML / Data pipeline,那學 Python 是必要的。
Q4:RubyLLM 1.16 升級會不會破壞既有 code?
官方 release notes 寫到 1.16 是 backward compatible。concurrent tool execution 是 opt-in、instrumentation 是 inert 直到你 subscribe、新的*_api_base 都 fallback 到 provider 預設值。但建議在 test environment 設 config.deprecation_behavior = :raise,這樣碰到 deprecated path 會立刻 fail,比 production 才發現好。Q5:用 RubyLLM 的話,向量資料庫要選什麼?
三個選項:
👤 對 100 萬向量以下的規模,pgvector 效能就夠了。千萬級以上再考慮 dedicated vector database。
總結
RubyLLM 1.16 在 2026 年 6 月這個時間點是Rails 工程師接 AI 功能的第一選擇——前提是你的需求沒有複雜到需要 LangGraph 那種 state machine。
我這個月的實測結論:
gem 'ruby_llm',跑 bin/rails generate ruby_llm:install如果你覺得這篇文章有幫助,歡迎分享給你身邊的 Rails 工程師朋友。有任何問題或你的實測心得,歡迎留言討論。
關於作者
Ryan — RYAN生活黑客創辦人。寫了 9 年 Rails,現在 side project 跟客戶專案都用 RubyLLM 1.16 跑。致力於用最簡單的方式分享工程師會真的用到的工具。
Twitter | GitHub參考資料 References
本文撰寫於 2026-06-25,所有引用來源於當日可查證。
📚 延伸閱讀

LM Studio LM Link 實測:用手機免費存取本地 AI 模型
LM Studio 推出 LM Link 功能,iPhone 可以直接遠端連到家裡的本地 AI 模型,不需要 ngrok...

Claude Fable 實戰指南:三週實測能不能真的提升效率
我用 Claude Fable 跑了三週,把所有重複性工作都丟給它處理。這篇實測告訴你它到底能幫你做到什麼程度。...

Anthropic 三大模型比較:實測一個月後我選了 Claude Sonnet 4.5
Hacker News 上 Anthropic 為隱形 guardrails 道歉事件後,我花了一個月把 Claude ...

AI 工具完整指南:ChatGPT、Claude、Gemini 怎麼選才不踩雷
AI 工具百花齊放,從 ChatGPT 到各種自動化工具,這篇指南幫你全面掌握最實用的 AI 應用,讓工作效率提升 30...