spring boot简单运用ollama大模型(windows版本)
1、下载模型(windows为例)
打开官方网站https://ollama.com/download/windows。
打开exe文件,打开命令行工具,直接运行ollama run 要下载的模型(右上角的models能找到你想要的,例子以llama3.1展示,spring ai暂时非全支持,支持模型步骤2列出)
运行完后直接是这样显示
至此,模型就安装完毕。
2、创建spring 项目
1、创建spring boot项目。以maven为例(spring ai 需要jdk17以上的版本)
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 | < properties > < java.version >17</ java.version > < spring-ai.version >1.0.0-M1</ spring-ai.version > </ properties > < dependencies > < dependency > < groupId >org.springframework.ai</ groupId > < artifactId >spring-ai-ollama-spring-boot-starter</ artifactId > </ dependency > < dependency > < groupId >org.springframework.boot</ groupId > < artifactId >spring-boot-starter-test</ artifactId > < scope >test</ scope > </ dependency > </ dependencies > < dependencyManagement > < dependencies > < dependency > < groupId >org.springframework.ai</ groupId > < artifactId >spring-ai-bom</ artifactId > < version >${spring-ai.version}</ version > < type >pom</ type > < scope >import</ scope > </ dependency > </ dependencies > </ dependencyManagement > < build > < plugins > < plugin > < groupId >org.springframework.boot</ groupId > < artifactId >spring-boot-maven-plugin</ artifactId > </ plugin > </ plugins > </ build > < repositories > < repository > < id >spring-milestones</ id > < name >Spring Milestones</ name > < url >https://repo.spring.io/milestone</ url > < snapshots > < enabled >false</ enabled > </ snapshots > </ repository > </ repositories > |
2、修改配置(application.yml)
1 2 3 4 5 6 7 8 9 10 | spring: application: name: demo ai: ollama: base-url: http://localhost:11434 chat: options: model: llama3.1 temperature: 0.7 |
这个里面对应的模型要你下载的,我们是llama3.1,地址是本机的地址, spring ai 支持的模型仅下列
3、创建基于ollima聊天服务
import org.springframework.ai.chat.messages.UserMessage; import org.springframework.ai.chat.model.ChatResponse; import org.springframework.ai.chat.prompt.Prompt; import org.springframework.ai.ollama.OllamaChatModel; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.web.bind.annotation.GetMapping; import org.springframework.web.bind.annotation.RequestParam; import org.springframework.web.bind.annotation.RestController; import reactor.core.publisher.Flux; import java.util.Map; @RestController public class ChatController { private final OllamaChatModel chatModel; @Autowired public ChatController(OllamaChatModel chatModel) { this.chatModel = chatModel; } @GetMapping("/ai/generate") public Map generate(@RequestParam(value = "message", defaultValue = "Tell me a joke") String message) { return Map.of("generation", chatModel.call(message)); } @GetMapping("/ai/generateStream") public Flux<ChatResponse> generateStream(@RequestParam(value = "message", defaultValue = "Tell me a joke") String message) { Prompt prompt = new Prompt(new UserMessage(message)); return chatModel.stream(prompt); } }
4、创建embedding服务
import org.springframework.ai.embedding.EmbeddingModel; import org.springframework.ai.embedding.EmbeddingResponse; import org.springframework.ai.ollama.OllamaEmbeddingModel; import org.springframework.ai.ollama.api.OllamaApi; import org.springframework.ai.ollama.api.OllamaModel; import org.springframework.ai.ollama.api.OllamaOptions; import org.springframework.web.bind.annotation.GetMapping; import org.springframework.web.bind.annotation.RequestParam; import org.springframework.web.bind.annotation.RestController; import java.util.List; import java.util.Map; @RestController public class EmbeddingController { private EmbeddingModel getEmbeddingModel() { var ollamaApi = new OllamaApi(); var embeddingModel = new OllamaEmbeddingModel(ollamaApi, OllamaOptions.builder().withModel(OllamaModel.LLAMA3_1.id()).build()); return embeddingModel; } @GetMapping("/ai/embedding") public Map embed(@RequestParam(value = "message", defaultValue = "Tell me a joke") String message) { var embeddingModel = getEmbeddingModel(); EmbeddingResponse embeddingResponse = embeddingModel.embedForResponse(List.of(message)); System.out.println(embeddingModel.dimensions()); return Map.of("embedding", embeddingResponse); } }
至此,基本的调用ollam服务就完成。
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】凌霞软件回馈社区,博客园 & 1Panel & Halo 联合会员上线
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】博客园社区专享云产品让利特惠,阿里云新客6.5折上折
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· DeepSeek “源神”启动!「GitHub 热点速览」
· 我与微信审核的“相爱相杀”看个人小程序副业
· 微软正式发布.NET 10 Preview 1:开启下一代开发框架新篇章
· C# 集成 DeepSeek 模型实现 AI 私有化(本地部署与 API 调用教程)
· spring官宣接入deepseek,真的太香了~