此版本仍在开发中,尚不被认为是稳定的。对于最新的快照版本,请使用 Spring AI 1.0.1! |
拥抱面部聊天
Hugging Face 文本生成推理 (TGI) 是一种专门的部署解决方案,用于在云中为大型语言模型 (LLM) 提供服务,使其可通过 API 访问。TGI 通过连续批处理、Tokens流和高效内存管理等功能为文本生成任务提供优化的性能。
文本生成推理要求模型与其特定于架构的优化兼容。虽然支持许多流行的 LLM,但并非 Hugging Face Hub 上的所有模型都可以使用 TGI 进行部署。如果需要部署其他类型的模型,请考虑改用标准 Hugging Face 推理终结点。 |
有关受支持模型和架构的完整和最新列表,请参阅文本生成推理支持的模型文档。 |
前提条件
您需要在 Hugging Face 上创建一个推理端点,并创建一个 API Tokens来访问该端点。 更多详细信息可以在这里找到。
Spring AI 项目定义了两个配置属性:
-
spring.ai.huggingface.chat.api-key
:将此值设置为从 Hugging Face 获取的 API Tokens的值。 -
spring.ai.huggingface.chat.url
:将此设置为在 Hugging Face 中预置模型时获取的推理端点 URL。
您可以在推理端点的 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");
添加存储库和 BOM
Spring AI 工件发布在 Maven Central 和 Spring Snapshot 存储库中。 请参阅 Artifact Repositories 部分,将这些存储库添加到您的构建系统中。
为了帮助进行依赖管理,Spring AI 提供了 BOM(物料清单),以确保在整个项目中使用一致的 Spring AI 版本。请参阅依赖项管理部分,将 Spring AI BOM 添加到您的构建系统中。
自动配置
Spring AI 自动配置、入门模块的工件名称发生了重大变化。 有关更多信息,请参阅升级说明。 |
Spring AI 为 Hugging Face Chat 客户端提供 Spring Boot 自动配置。
要启用它,请将以下依赖项添加到项目的 Mavenpom.xml
文件:
<dependency>
<groupId>org.springframework.ai</groupId>
<artifactId>spring-ai-starter-model-huggingface</artifactId>
</dependency>
或 Gradlebuild.gradle
构建文件。
dependencies {
implementation 'org.springframework.ai:spring-ai-starter-model-huggingface'
}
请参阅依赖项管理部分,将 Spring AI BOM 添加到构建文件中。 |
聊天属性
现在,通过前缀为 要启用,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.聊天 |
启用 Hugging Face 聊天模型。 |
HuggingFace |
Samples控制器(自动配置)
创建一个新的 Spring Boot 项目,并将spring-ai-starter-model-huggingface
到你的 pom(或 gradle)依赖项。
添加一个application.properties
文件,在src/main/resources
目录,以启用和配置 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 推理端点。
添加spring-ai-huggingface
对项目 Maven 的依赖pom.xml
文件:
<dependency>
<groupId>org.springframework.ai</groupId>
<artifactId>spring-ai-huggingface</artifactId>
</dependency>
或 Gradlebuild.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());