Hugging Face
本站(springdoc.cn)中的内容来源于 spring.io ,原始版权归属于 spring.io。由 springdoc.cn 进行翻译,整理。可供个人学习、研究,未经许可,不得进行任何转载、商用或与之相关的行为。 商标声明:Spring 是 Pivotal Software, Inc. 在美国以及其他国家的商标。 |
Hugging Face 文本生成推理服务(TGI)是专为云端部署大语言模型(LLM)设计的解决方案,通过 API 提供模型访问能力。TGI 通过连续批处理、Token 流式传输和高效内存管理等特性,为文本生成任务提供优化性能。
文本生成推理服务(TGI)要求模型必须兼容其架构特定的优化方案。虽然支持许多主流大语言模型,但并非 Hugging Face Hub 上的所有模型都能通过 TGI 部署。如需部署其他类型模型,建议改用标准的 Hugging Face 推理终端。 |
完整且最新的支持模型及架构列表,请参阅 文本生成推理服务支持模型文档。 |
先决条件
你需要在 Hugging Face 创建推理端点并生成 API 访问 Token。具体操作步骤详见 此处 文档。
Spring AI 项目定义了两个配置属性:
-
spring.ai.huggingface.chat.api-key
:设置为从 Hugging Face 获取的 API 令牌值。 -
spring.ai.huggingface.chat.url
:设置为在 Hugging Face 配置模型时获取的推理端点 URL。
你可以在 此处(推理端点的用户界面)找到你的推理端点 URL。
你可在 application.properties
文件中设置这些配置属性:
spring.ai.huggingface.chat.api-key=<your-huggingface-api-key>
spring.ai.huggingface.chat.url=<your-inference-endpoint-url>
为增强处理敏感信息(如 API 密钥)时的安全性,可使用 Spring 表达式语言(SpEL)引用自定义环境变量:
# In application.yml
spring:
ai:
huggingface:
chat:
api-key: ${HUGGINGFACE_API_KEY}
url: ${HUGGINGFACE_ENDPOINT_URL}
# In your environment or .env file
export HUGGINGFACE_API_KEY=<your-huggingface-api-key>
export HUGGINGFACE_ENDPOINT_URL=<your-inference-endpoint-url>
你还可以在应用程序代码中以编程方式配置这些参数:
// Retrieve API key and endpoint URL from secure sources or environment variables
String apiKey = System.getenv("HUGGINGFACE_API_KEY");
String endpointUrl = System.getenv("HUGGINGFACE_ENDPOINT_URL");
添加仓库和 BOM
Spring AI 组件已发布在 Maven 中央仓库和 Spring Snapshot 仓库。请参阅 Artifact 仓库 章节将这些仓库添加到您的构建系统。
为简化依赖管理,Spring AI 提供 BOM 以确保整个项目使用统一版本的 Spring AI。请参阅 依赖管理 章节将 Spring AI BOM 添加到你的构建系统。
自动配置
Spring AI 自动配置和 Starter 模块的构件名称已发生重大变更。更多信息请参阅 升级说明。 |
Spring AI 为 Hugging Face 聊天客户端提供 Spring Boot 自动配置。要启用该功能,请将以下依赖添加到项目的 Maven pom.xml
文件中:
<dependency>
<groupId>org.springframework.ai</groupId>
<artifactId>spring-ai-starter-model-huggingface</artifactId>
</dependency>
或添加到 Gradle build.gradle
构建文件中:
dependencies {
implementation 'org.springframework.ai:spring-ai-starter-model-huggingface'
}
请参阅 依赖管理 章节将 Spring AI BOM 添加到你的构建文件。 |
聊天属性
聊天自动配置的启用/禁用现在通过顶级属性
此项变更为支持多模型配置。 |
前缀 spring.ai.huggingface
用于配置 Hugging Face 聊天模型实现的属性参数。
属性 |
说明 |
默认值 |
spring.ai.huggingface.chat.api-key |
用于认证推理端点的 API Key |
- |
spring.ai.huggingface.chat.url |
要连接的推理端点 URL |
- |
spring.ai.huggingface.chat.enabled(已删除,不再有效) |
启用 Hugging Face 聊天模型 |
true |
spring.ai.model.chat(已删除,不再有效) |
启用 Hugging Face 聊天模型 |
huggingface |
示例 Controller (自动配置)
创建 新的 Spring Boot 项目,在 pom(或gradle)依赖中添加 spring-ai-starter-model-huggingface
。
在 src/main/resources
目录下添加 application.properties
文件以启用并配置 Hugging Face 聊天模型:
spring.ai.huggingface.chat.api-key=YOUR_API_KEY
spring.ai.huggingface.chat.url=YOUR_INFERENCE_ENDPOINT_URL
将 api-key 和 url 替换为你的 Hugging Face 凭证值。
|
这将创建可注入类的 HuggingfaceChatModel
实现。以下是使用该聊天模型进行文本生成的简单 @Controller
类示例:
@RestController
public class ChatController {
private final HuggingfaceChatModel chatModel;
@Autowired
public ChatController(HuggingfaceChatModel chatModel) {
this.chatModel = chatModel;
}
@GetMapping("/ai/generate")
public Map generate(@RequestParam(value = "message", defaultValue = "Tell me a joke") String message) {
return Map.of("generation", this.chatModel.call(message));
}
}
手动配置
HuggingfaceChatModel 实现 ChatModel
接口,通过 [low-level-api] 连接 Hugging Face 推理端点。
将以下依赖添加到项目的 Maven pom.xml
文件中:
<dependency>
<groupId>org.springframework.ai</groupId>
<artifactId>spring-ai-huggingface</artifactId>
</dependency>
或添加到 Gradle build.gradle
构建文件中:
dependencies {
implementation 'org.springframework.ai:spring-ai-huggingface'
}
请参阅 依赖管理 章节将 Spring AI BOM 添加到你的构建文件。 |
接下来,创建 HuggingfaceChatModel
并用于文本生成:
HuggingfaceChatModel chatModel = new HuggingfaceChatModel(apiKey, url);
ChatResponse response = this.chatModel.call(
new Prompt("Generate the names of 5 famous pirates."));
System.out.println(response.getGeneration().getResult().getOutput().getContent());