大家好,我是程序员可乐,专注于Spring生态,给大家带来更便捷的开发体验。
wechat 公众号 : 【全栈程序员可乐】
最近可谓是AI的天下,以chatGPT为主导的AI模型在国内遍地开花,如阿里的通义千问、百度的文心一言、清华的智谱AI、Kimi等。同时,他们也提供了第三方接口允许开发者们整合在自己的产品中,但是他们得收费啊~
但是,收费的并不是他们的模型,而是他们的产品,我们并不需要使用他们的产品才能用他们的模型,我们完全可以将他们的模型下载到本地,依然能够达到AI的效果,应该怎么做呢?
Ollama
Ollama可以理解为是一个模型驱动,有了Ollama,我们可以将任何模型放在Ollama中进行调用,下面我们就来演示一下Ollama的具体使用:
- 下载Ollama:ollama.com/
按照指示安装完成之后,我们可以看一下右上角的Models,看看Ollama支持哪些模型:
每个模型都各有千秋,但阿里的qwen2.5更适合中国宝宝体质,所以我们今天选择用qwen2.5来测试。
命令很简单,我们只需要在控制台输入:ollama run qwen2.5
即可(默认为7b)
模型较大,等待模型下载完毕后就可以使用了。(我先去打把王者)
虽然这把输了,但是依然不影响我继续写博客!!!
下载完成之后,我们就可以和AI对话了
Spring AI
我们需要将对话的方式从控制台集成到我们的应用系统中,Spring AI就派上用场了
引入Spring AI:
<dependency>
<groupId>org.springframework.ai</groupId>
<artifactId>spring-ai-ollama-spring-boot-starter</artifactId>
</dependency>
<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>
<repositories>
<repository>
<id>spring-milestones</id>
<name>Spring Milestones</name>
<url>https://repo.spring.io/milestone</url>
<snapshots>
<enabled>false</enabled>
</snapshots>
</repository>
</repositories>
配置文件:
spring.ai.ollama.base-url=http://localhost:11434
spring.ai.ollama.chat.options.model=qwen2.5
spring.ai.ollama.chat.options.temperature=0.7
创建接口:
@RestController
public class ChatController {
private final OllamaChatModel chatModel;
@Autowired
public ChatController(OllamaChatModel chatModel) {
this.chatModel = chatModel;
}
@GetMapping("/ai/generate")
public Map<String,String> generate(@RequestParam(value = "message") String message) {
return Map.of("generation", chatModel.call(message));
}
@GetMapping("/ai/generateStream")
public Flux<ChatResponse> generateStream(@RequestParam(value = "message") String message) {
Prompt prompt = new Prompt(new UserMessage(message));
return chatModel.stream(prompt).map(res -> res.getResult().getOutput().getContent());
}
}
测试效果:
流式传输:
至此,我们可以在本地搭建模型并运用在自己的项目中了,完全不需要第三方的介入,实现AI本地化。
关于AI的具体操作,我会在下一章讲解~~