Spring AI 系列之二十 - Hugging Face 集成
之前做个几个大模型的应用,都是使用Python语言,后来有一个项目使用了Java,并使用了Spring AI框架。随着Spring AI不断地完善,最近它发布了1.0正式版,意味着它已经能很好的作为企业级生产环境的使用。对于Java开发者来说真是一个福音,其功能已经能满足基于大模型开发企业级应用。借着这次机会,给大家分享一下Spring AI框架。
注意:由于框架不同版本改造会有些使用的不同,因此本次系列中使用基本框架是 Spring AI-1.0.0,JDK版本使用的是19。
代码参考: https://github.com/forever1986/springai-study
目录
- 1 Huggingface
- 2 示例演示
- 2.1 申请access token
- 2.2 部署模型
- 2.3 代码
- 2.4 演示效果
上一章演示了如何通过Ollama部署大模型并使用Spring AI进行访问。这一章将使用另外一个常见的部署方式huggingface。
1 Huggingface
做过大模型或者大模型应用的,应该不会没接触过Hugging Face ,不过很遗憾国内目前不能访问。不过有个镜像网站:https://hf-mirror.com 虽然功能受限,但是对于模型和数据集的下载还是没问题。
开发的朋友有github这个社区,那么做大模型的就有Hugging Face,所以Hugging Face可以理解为是一个大模型社区,上面包括了很多大厂的开源模型以及数据集,可供开发者使用,对于Hugging Face除了模型和数据集之外,其主要提供了以下内容
- 模型和数据集:这个就是上面说的很多厂商的模型以及数据集都会共享到Huggingface上面,这个如同github的代码库。你可以clone模型或者数据集,基于模型继续训练自己的模型放到Huggingface上面,可以使用Huggingface_hub工具,类似git工具一样
- 开发库:Huggingface为大模型开发提供了很多开发库,比如transformers(模型训练库,可以关注本人之前写的《BERT实践》就是使用该库)、peft(模型高效微调库)、Diffusers(扩散模型)等等,
- Space:AI应用空间/体验中心,无需配置环境,点几下就能玩转各种新奇AI应用。
- 社区:集成用户的博客、论文等信息,可以在上面交流心得
- Inference endpoints :这是一个Huggingface与云厂商合作的大模型在线部署,并提供统一API的方式访问,是解决部署各种大模型的云端方案
本章要演示的就是基于Huggingface的Inference endpoints部署并使用Spring AI 进行访问
2 示例演示
代码参考lesson16子模块的huggingface子模块
示例说明:基于Huggingface的Inference endpoints部署并使用Spring AI 进行访问(如果你无法访问Huggingface或者没有国际支付的银行卡,可能只能先看着,不能使用)
2.1 申请access token
1)登录Huggingface官方网站,注册并登录。在右上角的头像点击,有一个Access Tokens
2)创建你的Access Tokens(权限部分可以适当勾选,或者不知道用途先全选)
说明:记得将Access Token拷贝下来
2.2 部署模型
1)选择Inference Endpoints菜单
2)选择一个模型,这里使用qwen2.5-7b-Instruct模型
3)选择部署的厂商服务器
4)等待部署完成后,会得到一个URL,格式如下
https://api.endpoints.huggingface.cloud/v2/endpoint/xxxxx
2.3 代码
1)在lesson16子模块中,新建huggingface子模块,其pom引入如下:
<dependencies><dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-web</artifactId></dependency><dependency><groupId>org.springframework.ai</groupId><artifactId>spring-ai-starter-model-huggingface</artifactId></dependency>
</dependencies>
2)新建application.properties配置文件
## HuggingFace的配置
spring.ai.huggingface.chat.api-key=你的huggingface的Access Token
spring.ai.huggingface.chat.url=https://api.endpoints.huggingface.cloud/v2/endpoint/xxxxx
3)新建HuggingfaceController 演示类
import org.springframework.ai.huggingface.HuggingfaceChatModel;
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;@RestController
public class HuggingfaceController {private final HuggingfaceChatModel chatModel;@Autowiredpublic HuggingfaceController(HuggingfaceChatModel chatModel) {this.chatModel = chatModel;}@GetMapping("/ai/generate")public String generate(@RequestParam(value = "message", defaultValue = "你是谁?") String message) {return this.chatModel.call(message);}}
4)新建启动类:
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;@SpringBootApplication
public class Lesson23HuggingfaceApplication {public static void main(String[] args) {SpringApplication.run(Lesson23HuggingfaceApplication.class, args);}}
2.4 演示效果
http://localhost:8080/ai/generate
结语:本章说明了Hugging Face社区,并通过在其云端部署qwen模型。然后通过Spring AI的客户端进行访问。Hugging Face是一个大模型开发者绕不开的社区,所以要做大模型的朋友,可以多关注该网站。下一章开始,将进入Spring AI中集成非聊天大模型的讲解,比如embedding模型、图像模型等等
Spring AI系列上一章:《Spring AI 系列之十九 - Ollama集成Deepseek》
Spring AI系列下一章:《Spring AI 系列之二十一 - EmbeddingModel》