Spring AI 1.0.0 M3 釋出

釋出 | Mark Pollack | 2024 年 10 月 8 日 | ...

我們很高興地宣佈 Spring AI 的 1.0.0 M3 版本釋出。

此版本在多個領域帶來了顯著的增強和新功能。

可觀測性

此版本對可觀測性堆疊進行了許多改進,特別是針對聊天模型的流式響應。非常感謝 Thomas Vitale 和 Dariusz Jedrzejczyk 在此領域的幫助!

可觀測性涵蓋了 ChatClient、ChatModel、嵌入模型和向量儲存,使您能夠精細地檢視與 AI 基礎設施的所有接觸點。

在 M2 版本中,我們引入了對 OpenAI、Ollama、Mistral 和 Anthropic 模型的可觀測性支援。現在,我們已將其擴充套件到包括對以下模型的支援:

  • Azure OpenAI
  • Google Vertex AI
  • Transformers (ONNX)
  • MiniMax
  • Moonshot (月之暗面)
  • Baidu QianFan (百度千帆)
  • Zhipu AI (智譜 AI)

感謝 Geng Rong 為中文模型實現可觀測性。

您可以在可觀測性參考文件中找到有關可用指標和跟蹤的更詳細資訊。這裡有一些圖表展示了可能實現的效果。

Grafana Dashboard (Grafana 儀表盤)

Grafana Dashboard

Tracing Dashboard (跟蹤儀表盤)

Tempo Dashboard

Advisor 改進

Spring AI Advisors 是用於攔截和潛在修改 AI 應用程式中聊天完成請求和響應流程的元件。Advisors 還可以選擇透過不呼叫鏈中的下一個 Advisor 來阻止請求。

這個系統中的關鍵角色是 AroundAdvisor,它允許開發人員在此類互動中動態地轉換或利用資訊。

使用 Advisors 的主要優勢包括

  • 封裝重複任務: 將常見的生成式 AI 模式打包成可重用單元。
  • 轉換: 增強傳送到大型語言模型 (LLM) 的資料,並格式化傳送回客戶端的響應。
  • 可移植性: 建立可重用的轉換元件,適用於各種模型和用例。

我們重新審視了 Advisor API 模型,並進行了許多設計更改,提高了其應用於流式請求和響應的能力。您還可以使用 Spring 的 Ordered 介面顯式定義 Advisor 的順序。

根據您使用的 API 區域,可能存在破壞性更改,請參閱文件瞭解更多詳細資訊。

around advisor 的流程如下所示。

Advisor Flow

您可以閱讀 Christian Tzolov 的近期部落格文章 使用 Spring AI Advisors 加速您的 AI 應用程式,瞭解更多詳細資訊。

函式呼叫改進

Spring AI 現在支援透過包含鍵值對的 ToolContext 類向函式回撥傳遞額外的上下文資訊。此功能允許您提供可在函式執行中使用的額外資料。

在此示例中,我們傳遞了 sessionId,以便上下文感知到該值。

String content = chatClient.prompt("What's the weather like in San Francisco, Tokyo, and Paris?")
    .functions("weatherFunctionWithContext")
    .toolContext(Map.of("sessionId", "123"))
    .call()
    .content();

另請注意,您可以在 prompt 方法中傳遞使用者文字,作為使用 user 方法的替代方案。

ToolContext 可透過使用 java.util.BiFunction 獲取。這是 bean 定義:

@Bean
@Description("Get the weather in location")
public BiFunction<WeatherService.Request, ToolContext, WeatherService.Response> weatherFunctionWithContext() {
    return (request, toolContext) -> {
        String sessionId = (String) toolContext.getContext().get("sessionId");

        // use session id as appropriate...
        System.out.println(sessionId);

        return new WeatherService().apply(request);
    };
}

對函式呼叫的細粒度控制

如果您更喜歡自己處理函式呼叫對話,可以設定 proxyToolCalls 選項。

PortableFunctionCallingOptions functionOptions = FunctionCallingOptions.builder()
    .withFunction("weatherFunction")
    .withProxyToolCalls(true)
    .build();

透過 ChatModel 或 ChatClient 呼叫模型並傳遞這些選項,將返回一個 ChatResponse,其中包含 AI 模型函式呼叫對話開始時傳送的第一個訊息。

基於事實的評估

在事實評估領域有一些顯著的創新,出現了一個名為 LLM-AggreFact 的新排行榜。目前在基準測試中領先的模型是由 Bespoke Labs 開發的“bespoke-minicheck”。這個模型引人注目的一部分原因是,與 GPT4o 等所謂的“旗艦”模型相比,它更小巧且執行成本更低。您可以在論文“MiniCheck: Efficient Fact-Checking of LLMs of Grounding Documents”中閱讀更多關於該模型背後的研究。

Spring AI FactCheckingEvaluator 基於這項工作,可以與部署在 Ollama 上的 Bespoke-minicheck 模型一起使用。請參閱文件瞭解更多資訊。感謝 Eddú Meléndez 在此領域的工作。

嵌入模型批次處理

以前,嵌入文件列表需要逐項進行呼叫,效能不高。Spring AI 現在支援將多個文件批次處理,以便在一次模型呼叫中計算多個嵌入。由於嵌入模型有 token 限制,文件會被分組,以確保每個批次不超過嵌入模型的 token 限制。

新的類 TokenCountingBatchingStrategy 考慮了 token 大小,並分配了 10% 的保留緩衝區,因為 token 估算不是精確的科學。您可以自定義實現 BatchingStrategy 介面。

此外,基於 JDBC 的嵌入模型現在可以更容易地自定義執行批次插入時使用的批次大小。

感謝 Soby Chacko 在此領域的工作以及作為 Spring AI 團隊新成員的其他貢獻。

一些模型提供商的特定細節

Azure AI

  • 添加了可觀測性
  • 修復了流式響應
  • 啟用了自定義 HTTP 請求頭
  • 添加了之前缺失的呼叫選項

Vertex AI

  • 添加了可觀測性
  • 添加了將 Google Search 作為工具的支援
  • 實現了重試支援

一般性改進

廣泛的貢獻者進行了大量的重構、bug 修復和文件增強。如果您的 PR 尚未處理,請耐心等待,我們會處理的。感謝:

訂閱 Spring 電子報

訂閱 Spring 電子報以保持聯絡

訂閱

領先一步

VMware 提供培訓和認證,助您快速進步。

瞭解更多

獲取支援

Tanzu Spring 提供 OpenJDK™、Spring 和 Apache Tomcat® 的支援和二進位制檔案,只需一個簡單訂閱。

瞭解更多

即將舉行的活動

檢視 Spring 社群所有即將舉行的活動。

檢視全部