当前位置: 首页 > news >正文

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》

http://www.dtcms.com/a/292973.html

相关文章:

  • 轩辕杯2025 Pwn baby_heap WP(house_of_apple2)
  • FFMPEG 解码流程 硬解码
  • 从零构建实时通信引擎:Freeswitch源码编译与深度优化指南
  • netty的编解码器,以及内置的编解码器
  • Linux系统权限全面解析:掌握你的数字王国钥匙
  • Python 链接各种中间件[Mysql\redis\mssql\tdengine]
  • 数据结构01:链表
  • FashionAI / 智尚衣橱 / TryFit / 智能时尚搭配平台
  • 面试150 N皇后Ⅱ
  • Docker环境搭建RabbitMq集群详解
  • 【CAN】2.帧格式
  • ReasonFlux:基于思维模板与分层强化学习的高效推理新范式
  • Python接口自动化实战 ( 第一阶段) - 封装接口请求类和异常处理
  • Ubuntu 虚拟机配置 与Windows互传文件
  • react19相关问题和解答
  • 【技术新闻】OpenAI发布GPT-5,AI编程助手迎来革命性突破
  • React集成百度【BMap Draw】教程(001):实现距离测量和面积测量
  • dubbo源码分析之请求调用异步化原理
  • Pandas核心数据结构详解
  • 第3章通用的服务可用性治理手段——3.2 重试
  • Kotlin 作用域函数 let 的实现原理
  • 大疆视觉算法面试30问全景精解
  • 基于Java+MySQL实现(Web)文件共享管理系统(仿照百度文库)
  • Java自动拆箱机制
  • 云祺容灾备份系统阿里云对象存储备份与恢复实操手册
  • List<UserInfo> list = new ArrayList<>();为什么要这样创建数组?
  • 智能文本抽取在法院卷宗管理应用剖析
  • 力扣-139.单词拆分
  • Qt 网络编程如何采用Http进行通信
  • 碳化硅缺陷分类与原因