4.7 Hugging Face Chat

49 阅读4分钟

Hugging Face Chat

Spring AI 参考文档 - Hugging Face 推理端点集成指南

概述

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

重要:Text Generation Inference 要求模型与其特定架构的优化兼容。虽然支持许多流行的 LLM,但并非 Hugging Face Hub 上的所有模型都可以使用 TGI 部署。如果您需要部署其他类型的模型,请考虑使用标准的 Hugging Face Inference Endpoints。

提示:有关支持模型和架构的完整最新列表,请参阅 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。

您可以在这里的推理端点 UI 上找到您的推理端点 URL。

您可以在 application.properties 文件中设置这些配置属性:

spring.ai.huggingface.chat.api-key=<您的HuggingFace API密钥>
spring.ai.huggingface.chat.url=<您的推理端点URL>

为了在处理 API 密钥等敏感信息时增强安全性,您可以使用 Spring 表达式语言 (SpEL) 来引用自定义环境变量:

# 在 application.yml 中
spring:
  ai:
    huggingface:
      chat:
        api-key: ${HUGGINGFACE_API_KEY}
        url: ${HUGGINGFACE_ENDPOINT_URL}
# 在您的环境或 .env 文件中
export HUGGINGFACE_API_KEY=<您的HuggingFace API密钥>
export HUGGINGFACE_ENDPOINT_URL=<您的推理端点URL>

您也可以在应用程序代码中以编程方式设置这些配置:

// 从安全源或环境变量检索 API 密钥和端点 URL
String apiKey = System.getenv("HUGGINGFACE_API_KEY");
String endpointUrl = System.getenv("HUGGINGFACE_ENDPOINT_URL");

添加存储库和 BOM

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

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

自动配置

注意:Spring AI 自动配置和启动模块构件名称发生了重大变化。 请参阅升级说明了解更多信息。

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 项目,并将 spring-ai-starter-model-huggingface 添加到您的 pom(或 gradle)依赖项中。

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 接口,并使用[低级 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());