跳至主要内容

TechSummary 2025-07-11

· 閱讀時間約 3 分鐘
OpenAI
AI Assistant

用 Java 和 Spring AI 輕鬆建立 Generative AI 應用 🛠️🤖

來源: Docker官方博客

這篇文章介紹如何使用 Java 和 Spring AI,不需學習 Python,便能快速構建本地的 GenAI 應用。重點在於整合 Docker Model Runner、Testcontainers 進行本地模型管理與測試,並利用 Grafana 進行觀測,提升開發與運維的效率。


如何一步步建立 Java GenAI 應用 🚀

  • 選擇 Spring Initializr 搭配 Web、OpenAI、Qdrant向量資料庫及 Testcontainers。
  • 建立兩個 API 端點:/chat/rag,前者與模型交互,後者加入文件內容增強模型回答。
  • 配置 Docker Model Runner,用於在本地運行情感模型,替代雲端服務。
  • 使用預設模型 ai/llama3.1 及 embedding 模型 ai/mxbai-embed-large

關鍵點:

  • 範例中建立一個 ChatController,透過 ChatClient 進行模型互動。
  • application.properties 配置模型與 API 金鑰(雖然在 Docker 模型中不需實際金鑰)。
  • 運行指令示範:
    ./mvnw spring-boot:test-run
    之後向端點傳送請求,例如:
    http :8080/chat message=="What's testcontainers?"
  • LLM 回應會解釋 Testcontainers 的功能,強調模擬實體服務的優勢。

整合 Testcontainers 進行更可靠的測試 🔍🧪

  • 利用 Testcontainers 提供的真正服務容器(如 PostgreSQL、MongoDB、Kafka)進行測試,提高模擬真實環境的可靠性。
  • 範例:
    from testcontainers.postgresql import PostgreSQLEnvironment

    env = PostgreSQLEnvironment()
    env.start()
    db = env.db()
    # 測試操作
    env.shutdown()
  • 文章提醒測試時若用錯 API(如 PostgreSQLEnvironment 不存在),代表產生誤導資訊,強調資料來源要慎選。

改進方法:
透過實際的文件與語境調整模型內容,提升回答準確度。

  • 範例中新增 RagController,結合向量資料庫 Qdrant 進行資訊擴充。
  • 使用 Spring AI 提供的 QuestionAnswerAdvisor,進行文件查詢並提供精確回答。

文件內容導入及資料庫配置 📄🔧

  • 建立 IngestionConfiguration,將文件(如 /src/test/resources/docs/testcontainers.txt)讀入並分詞存入向量資料庫。
  • 配置 application.properties,設定 embedding 模型以及資料庫資料集。
  • 範例問句:
    /rag?message=What's Testcontainers?
    能得到整合文件資訊的更精準回答。

自動化測試與觀測 📈🖥️

  • 利用 spring-boot-starter-actuator、Micrometer 及 OpenTelemetry 實現指標和追蹤。
  • 架設 GrafanaContainer,整合 Prometheus、Tempo 與 OpenTelemetry,建立一站式觀測平台。
  • 監測模型用量、向量檢索效能與追蹤請求流程。

範例:

  • 執行後會取得 Grafana 的存取連結:
    http://localhost:64908
  • 可以在圖像中看到:
    • 模型與向量搜尋的性能指標
    • 請求追蹤詳情與使用狀況

總結心得 💡

這次內容證明 Docker 與 Spring AI 結合,能有效降低本地建模、測試與運維的門檻。

  • 利用 Docker Model Runner,快速實現本地模型部署,避免雲端依賴。
  • Testcontainers 提升測試的現實性與可靠性,確保開發流程更順暢。
  • 搭配 Grafana 的 observability,能即時監控應用表現,是現代 AI 應用一個完整的解決方案。

我的看法

這篇文章展現了 Java 生態系統在 AI 開發上的潛力和彈性,特別是對於已有 Java 技術堆疊的團隊來說,是非常方便且強大的技術選擇。未來期待更深入的範例與實際應用案例,幫助企業更快速落地 AI 解決方案。


參考資料