Hugging Face Chat
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 上创建一个 Inference Endpoint,并创建一个 API 令牌来访问该端点。 更多详细信息请参见 此处。
Spring AI 项目定义了两个配置属性:
-
spring.ai.huggingface.chat.api-key
:将其设置为从 Hugging Face 获取的 API 令牌的值。 -
spring.ai.huggingface.chat.url
:将其设置为在 Hugging Face 中配置模型时获取的推理端点 URL。
您可以在 Inference Endpoint 的 UI 此处找到您的推理端点 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 自动配置、启动器模块的工件名称发生了重大变化。 有关更多信息,请参阅 升级说明。 |
Spring AI 为 Hugging Face Chat Client 提供了 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 密钥。 |
- |
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
将 |
这将创建一个 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());