HuggingFace部聊天
拥抱面部文本生成推理(TGI)是一种专门部署的解决方案,用于云端服务大型语言模型(LLM),并通过API使其易于访问。TGI通过连续批处理、Tokens流和高效内存管理等特性,为文本生成任务提供了优化的性能。
| 文本生成推理要求模型兼容其架构特定的优化。虽然支持许多流行的大型语言模型,但并非所有 Hugging Face Hub 上的模型都能通过 TGI 部署。如果你需要部署其他类型的模型,可以考虑使用标准的 Hugging Face Inference Endpoints。 |
| 有关支持模型和架构的完整且最新列表,请参见文本生成推理支持模型文档。 |
前提条件
你需要在Hugging Face上创建一个推理端点,并创建一个APITokens来访问该端点。 更多详情请见此处。
Spring AI 项目定义了两个配置属性:
-
spring.ai.huggingface.chat.api-key:将此设置为从Hugging Face获得的APITokens的值。 -
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");
自动配置
|
春季AI自动配置、起始模块的工件名称发生了重大变化。 更多信息请参阅升级说明。 |
Spring AI 为 Hugging Face 聊天客户端提供了 Spring Boot 自动配置。
要启用它,请在项目的Maven中添加以下依赖pom.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的物料清单添加到你的构建文件中。 |
聊天属性
|
现在,启用和禁用聊天自动配置通过带有前缀的顶层属性进行配置 启用时,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 |
连接推理端点的网址 |
- |
spring.ai.huggingface.chat.enabled(已移除且不再有效) |
启用HuggingFace聊天模式。 |
true |
spring.ai.model.chat |
启用HuggingFace聊天模式。 |
拥抱面 |
采样控制器(自动配置)
创建一个新的 Spring Boot 项目并添加SpringAI-入门模型-HuggingFace对你的POM(或Gradle)依赖。
添加一个application.properties文件,在src/主/资源目录,用于启用和配置HuggingFace聊天模型:
spring.ai.huggingface.chat.api-key=YOUR_API_KEY
spring.ai.huggingface.chat.url=YOUR_INFERENCE_ENDPOINT_URL
替换API密钥和网址用你的拥抱面价值观。 |
这将产生HuggingFace聊天模型你可以把这些实现注入到你的类里。
这里有一个简单的例子@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 实现了聊天模型并使用[低级API]连接Hugging Face推理端点。
添加春艾抱脸对你项目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的物料清单添加到你的构建文件中。 |
接下来,创建一个HuggingFace聊天模型并用于文本生成:
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());