在探索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 生态,开发者可以轻松进行快速原型开发,探索人工智能和机器学习技术,获得良好的开发体验。
这对于新开发者而言,无疑是一个低门槛接触前沿技术的契机,能够帮助他们快速上手实践。同时,也为这些技术在实际企业应用中的落地提供了可行范例,有力推动了人工智能和机器学习技术在企业级项目中的广泛应用与创新发展。