Java 開發者必看!用 Quarkus + LangChain4j 實現本地 Ollama 的 AI 深度集成
在探索AI與現代技術棧融合的道路上,搭建一個能在本地高效運行的智能交互應用是個不錯的實踐方向。
本文介紹如何構建 Quarkus 應用程序。該程序會設置 REST 端點,借助 LangChain4j 調用本地 Ollama 模型,用戶調用端點發問題,即可獲取模型響應。
整個部署過程均在本地計算機上完成,無需API密鑰或訂閱服務,是純粹的AI集成技術實踐。僅需幾個簡單步驟,就能讓這套系統順利運行起來,一起開始吧!
1.安裝Ollama
訪問Ollama官網:https://ollama.com/download 。
根據你的操作系統下載相應文件,并像安裝其他應用程序一樣進行安裝。安裝完成后會得到ollama命令行工具,之后就能用簡單命令在本地運行Ollama模型,比如:
ollama run llama3.2:1b
這條命令會運行目前Ollama中最小的模型(約1.3GB)。雖然這個模型表現不算出色,但它體積小,在本地運行速度很快,非常適合我們的使用場景。之后你可以嘗試Ollama提供的所有免費模型,具體可查看https://ollama.com/library。
在終端運行上述命令后,你會看到類似這樣的內容:模型開始下載、運行,并打開一個提示框,在其中可以與大語言模型進行聊天。
圖片
同時,這會在本地主機上暴露一個HTTP API,我們接下來借助Quarkus和langchain4j擴展與之交互。
2.創建簡單的Quarkus項目
訪問code.quarkus.dev,配置以下應用程序:
圖片
你可以按自己的喜好命名項目,添加上述兩個擴展,然后下載項目。接著,在你喜歡的集成開發環境(文章所有示例中都使用IntelliJ)中打開該項目。
現在,在src/main/java目錄下創建一個名為OllamaService的新Java類,并添加以下內容:
package com.tsvetkov;
import dev.langchain4j.service.UserMessage;
import io.quarkiverse.langchain4j.RegisterAiService;
import jakarta.enterprise.context.ApplicationScoped;
@RegisterAiService
@ApplicationScoped
public interface OllamaService {
public String answer(@UserMessage String question);
}
還需要在application.properties文件中明確設置上一步下載的模型:
quarkus.langchain4j.ollama.chat-model.model-id=llama3.2:1b
3.創建REST端點
現在,讓我們創建一個REST端點,用問題調用服務并獲取結果。在src/main/java目錄下創建一個新文件:
package com.tsvetkov;
import jakarta.inject.Inject;
import jakarta.ws.rs.GET;
import jakarta.ws.rs.Path;
import jakarta.ws.rs.Produces;
import jakarta.ws.rs.core.MediaType;
@Path("/ollama")
publicclass OllamaController {
@Inject
OllamaService ollamaService;
@GET
@Produces(MediaType.TEXT_PLAIN)
public String question() {
return ollamaService.answer("How are you?");
}
}
現在,你可以打開終端啟動應用程序:
./gradlew quarkusDev
應該會看到如下輸出:
Quarkus啟動日志
4.從應用程序中調用Ollama模型并返回結果
現在,我們可以調用/ollama端點并獲取結果。這里使用Postman進行測試:
Postman對http://localhost:8080/ollama的GET請求
就這樣,我們從模型得到了答案!
我們甚至還能更進一步,使用提示模板(Prompt Templates)。這些模板可用于引導模型的響應,你可以盡情發揮創意!例如,我們可以讓模型表現得像個海盜。
將OllamaService修改如下:
package com.tsvetkov;
import dev.langchain4j.service.SystemMessage;
import dev.langchain4j.service.UserMessage;
import io.quarkiverse.langchain4j.RegisterAiService;
import jakarta.enterprise.context.ApplicationScoped;
@RegisterAiService
@ApplicationScoped
publicinterface OllamaService {
@SystemMessage("""
Act like a pirate. Speak with pirate lingo, be bold, and add a sense of adventure in your responses.
"""
)
String answer(@UserMessage String question);
}
現在,當我們訪問/ollama端點時,得到的答案如下:
模型模仿海盜給出的答案
5.總結與展望
在 Quarkus 框架中,利用 LangChain4j 實現 Ollama 模型的集成,這一過程簡潔高效。將 Ollama 模型部署在本地,能夠確保數據的自主性與安全性,讓開發者對數據擁有完全的掌控權。
Java 技術近年來發展迅猛,不僅版本迭代帶來諸多新特性,像 Quarkus 這樣的優秀框架更是極大地優化了技術棧的使用體驗。借助 Java 生態,開發者可以輕松進行快速原型開發,探索人工智能和機器學習技術,獲得良好的開發體驗。
這對于新開發者而言,無疑是一個低門檻接觸前沿技術的契機,能夠幫助他們快速上手實踐。同時,也為這些技術在實際企業應用中的落地提供了可行范例,有力推動了人工智能和機器學習技術在企業級項目中的廣泛應用與創新發展。