跳到主要内容

Hugging Face Chat

Deepseek 3.2 中英对照 Hugging Face Hugging Face Chat

Hugging Face Text Generation Inference (TGI) 是一种用于在云端部署大型语言模型 (LLMs) 的专门解决方案,通过 API 使其可被访问。TGI 通过连续批处理、令牌流式传输和高效内存管理等特性,为文本生成任务提供优化的性能。

:::重要
文本生成推理服务要求模型与其架构特定的优化兼容。虽然支持许多流行的LLM,但并非所有Hugging Face Hub上的模型都能使用TGI部署。如需部署其他类型的模型,请考虑改用标准的Hugging Face推理终端。
:::

提示

如需查看完整且最新的支持模型和架构列表,请参阅 Text Generation Inference 支持模型文档

前提条件

您需要在 Hugging Face 上创建一个推理终端并生成一个 API 令牌来访问该终端。更多详细信息请参阅此处

Spring AI 项目定义了两个配置属性:

  1. spring.ai.huggingface.chat.api-key: 设置为从 Hugging Face 获取的 API 令牌的值。

  2. 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");

添加存储库和物料清单

Spring AI构件发布在Maven Central和Spring Snapshot仓库中。请参考构件仓库章节,将这些仓库添加到您的构建系统中。

为了帮助进行依赖管理,Spring AI 提供了一个物料清单(BOM),以确保在整个项目中使用的 Spring AI 版本保持一致。请参考依赖管理部分,将 Spring AI BOM 添加到您的构建系统中。

Auto-configuration

自动配置 {#_auto_configuration}

备注

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.model.chat 的顶级属性来配置聊天自动配置的启用与禁用。

若要启用,设置 spring.ai.model.chat=huggingface(默认已启用)

若要禁用,设置 spring.ai.model.chat=none(或任何与 huggingface 不匹配的值)

此项变更是为了支持配置多个模型。

前缀 spring.ai.huggingface 是用于配置 Hugging Face 聊天模型实现的属性前缀。

属性描述默认值
spring.ai.huggingface.chat.api-key用于验证推理端点的 API 密钥。-
spring.ai.huggingface.chat.url要连接的推理端点 URL-
spring.ai.huggingface.chat.enabled (已移除,不再有效)启用 Hugging Face 聊天模型。true
spring.ai.model.chat启用 Hugging Face 聊天模型。huggingface

示例控制器(自动配置)

创建一个新的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-keyurl 替换为您的 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 推理端点。

spring-ai-huggingface 依赖项添加到项目的 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.getResult().getOutput().getText());