本文介绍了如何在 Java 中使用 Ollama API。这篇文档旨在帮助开发者快速上手并充分利用Ollama的能力。你可以直接在程序中调用 Ollama API,也可以通过 Spring AI 组件调用 Ollama。通过学习本文档,你可以轻松集成 Ollama 到你的项目中。
在 Java 中使用 Ollama API ,请确保你已经准备好了以下环境和工具:
- Java Development Kit (JDK) :安装版本 1.8 或更高版本的 JDK。
- 构建工具:如 Maven 或 Gradle,用于项目依赖管理。
- HTTP 客户端库:选择一个合适的 HTTP 客户端库,如 Apache HttpClient 或 OkHttp。
github上有很多第三方开发的组件,可以很方便地在应用中集成 Ollama,这里以 Asedem 为例,可按以下 3 个步骤(这里使用 maven 做项目管理):
- 在 pom.xml 中增加 ollama 依赖
<repositories>
<repository>
<id>jitpack.io</id>
<url>https://jitpack.io</url>
</repository>
</repositories>
<dependencies>
<dependency>
<groupId>com.github.Asedem</groupId>
<artifactId>OllamaJavaAPI</artifactId>
<version>master-SNAPSHOT</version>
</dependency>
</dependencies>
- 初始化 Ollama
// 默认情况下,它将连接到 localhost:11434
Ollama ollama = Ollama.initDefault();
// 对于自定义值
Ollama ollama = Ollama.init("http://localhost", 11434);
- 使用 Ollama
- 对话
String model = "llama2:latest"; // 指定模型
String prompt = "为什么天空是蓝色的?"; // 提供提示
GenerationResponse response = ollama.generate(new GenerationRequest(model, prompt));
// 打印生成的响应
System.out.println(response.response());
- 列出本地模型
List<Model> models = ollama.listModels(); // 返回 Model 对象的列表
- 显示模型信息
ModelInfo modelInfo = ollama.showInfo("llama2:latest"); // 返回 ModelInfo 对象
- 复制模型
boolean success = ollama.copy("llama2:latest", "llama2-backup"); // 如果复制过程成功返回 true
- 删除模型
boolean success = ollama.delete("llama2-backup"); // 如果删除成功返回 true
Spring AI 是一个专为人工智能工程而设计的应用框架。核心功能如下:
- 跨 AI 提供商的 API 支持:Spring AI 提供了一套可移植的API,支持与多个 AI 服务提供商的聊天、文本到图像和嵌入模型进行交互。
- 同步和流式 API 选项:框架支持同步和流式 API,为开发者提供了灵活的交互方式。
- 模型特定功能访问:允许开发者通过配置参数访问特定模型的功能,提供了更细致的控制。
- 在 pom.xml 中增加 Spring AI 依赖
<dependencies>
<dependency>
<groupId>io.springboot.ai</groupId>
<artifactld>spring-ai-ollama-spring-boot-starter</artifactld>
<version>1.0.3</version>
</dependency>
</dependencies>
- 在 Spring Boot 应用的配置文件中添加 Spring AI 和 Ollama 的配置。例如:
ai:
ollama:
base-url: http://localhost:11434
chat:
options:
model: llama3.1:latest
- 使用 Ollama 进行文字生成或者对话:
首先创建一个 Spring Boot 控制器来调用 Ollama API:
import jakarta.annotation.Resource;
import org.springframework.ai.chat.model.ChatResponse;
import org.springframework.ai.chat.prompt.Prompt;
import org.springframework.ai.ollama.OllamaChatModel;
import org.springframework.ai.ollama.api.OllamaOptions;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestParam;
import org.springframework.web.bind.annotation.RestController;
@RestController
public class OllamaController {
@Resource
private OllamaChatModel ollamaChatModel;
@RequestMapping(value = "/ai/ollama")
public Object ollama(@RequestParam(value = "msg")String msg){
ChatResponse chatResponse=ollamaChatModel.call(new Prompt(msg, OllamaOptions.create()
.withModel("llama3.1:latest")//指定使用哪个大模型
.withTemperature(0.5F)));
System.out.println(chatResponse.getResult().getOutput().getContent());
return chatResponse.getResult().getOutput().getContent();
}
}
随后运行该项目,在浏览器中输入网址 http://localhost:8080/ai/ollama?msg="提示词"
即可,结果如下图:
参考文档