AI在线 AI在线

Java 开发者必看!用 Quarkus + LangChain4j 实现本地 Ollama 的 AI 深度集成

在探索AI与现代技术栈融合的道路上,搭建一个能在本地高效运行的智能交互应用是个不错的实践方向。 本文介绍如何构建 Quarkus 应用程序。 该程序会设置 REST 端点,借助 LangChain4j 调用本地 Ollama 模型,用户调用端点发问题,即可获取模型响应。

在探索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启动日志Quarkus启动日志

4.从应用程序中调用Ollama模型并返回结果

现在,我们可以调用/ollama端点并获取结果。这里使用Postman进行测试:

Postman对http://localhost:8080/ollama的GET请求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 生态,开发者可以轻松进行快速原型开发,探索人工智能和机器学习技术,获得良好的开发体验。

这对于新开发者而言,无疑是一个低门槛接触前沿技术的契机,能够帮助他们快速上手实践。同时,也为这些技术在实际企业应用中的落地提供了可行范例,有力推动了人工智能和机器学习技术在企业级项目中的广泛应用与创新发展。

相关资讯

DeepSeek Coder 来啦!2025 最出圈的几款 AI 辅助开发工具

Hello,大家好,我是 Sunday。 2025 啦,伴随着 DeepSeek 火爆,一些全新的 AI 辅助编程工具也开始出现啦,今天咱们就一起来看看! DeepSeek-Coder图片作为 2025 最出圈的 AI 工具 DeepSeek 也迎来了他自己的 AI 辅助编程工具。
3/3/2025 12:05:00 AM
程序员Sunday

实战:Dify智能体+Java=自动化运营服务!

我们在运营某个圈子的时候,可能每天都要将这个圈子的“热门新闻”发送到朋友圈或聊天群里,但依靠传统的实现手段非常耗时耗力,我们通常要先收集热门新闻,再组装要新闻内容,再根据内容设计海报等。 那怎么才能简化并高效的完成以上工作呢? 答案是我们可以借助 AI 工具:Dify Java 服务来实现热点新闻自动生成功能,最终生成效果如下:实现思路具体实现步骤如下:在 dify 中创建 Agent 应用。
5/23/2025 12:01:00 AM
磊哥

Windsurf创始人:我们对Java工程师做了很多优化和适配

自从 OpenAI 以 30 亿美元收购 Windsurf,这家公司一夜之间成了行业焦点。 我非常喜欢看 Windsurf 创始人 Varun Mohan 的访谈。 他年纪不大,但对于公司经营和产品方向,总能给出一些新鲜、实际的思考,而且讲得很坦诚,没有废话。
6/3/2025 4:36:03 PM
阿颖
  • 1