人工智能革命已经到来,随之而来的是不断增长的强大模型列表,这些模型可以生成文本、创建视觉效果并解决复杂问题。但让我们面对现实吧:有如此多的选择,找出最适合您的项目的模型可能会让人不知所措。如果有一种方法可以快速测试这些模型,查看它们的实际结果,并决定将哪个模型集成到您的生产系统中,会怎么样?
进入Hugging Face 的推理 API——探索和利用最先进的人工智能模型的捷径。它通过提供即插即用的解决方案,消除了设置、托管或训练模型的麻烦。无论您是在集思广益新功能还是评估模型的功能,Hugging Face 都能让 AI 集成变得比以往更简单。
在本博客中,我将引导您使用 Spring Boot 构建一个轻量级后端应用程序,让您可以轻松测试和评估 AI 模型。以下是您可以期待的:
最后,您将拥有一个方便的工具来测试不同的人工智能模型,并就它们是否适合您的项目需求做出明智的决定。如果您准备好弥合好奇心和实施之间的差距,那就开始吧!
这就是为什么 Hugging Face 能够改变 AI 集成的游戏规则:
我们将构建 QuickAI,一个 Spring Boot 应用程序:
前往huggingface.co 并创建一个帐户(如果您还没有帐户)。
导航至您的帐户设置并生成 API 密钥。此密钥将允许您的 Spring Boot 应用程序与 Hugging Face 的 Inference API 进行交互。
查看拥抱脸部模型中心,找到适合您需求的模型。在本教程中,我们将使用:
使用 Spring Initializr 设置具有以下依赖项的项目:
将您的 Hugging Face API 密钥和模型 URL 添加到 application.properties 文件:
huggingface.text.api.url=https://api-inference.huggingface.co/models/your-text-model huggingface.api.key=your-api-key-here huggingface.image.api.url=https://api-inference.huggingface.co/models/your-image-model
让我们深入研究代码并构建文本和图像生成服务。请继续关注!
@Service public class LLMService { private final WebClient webClient; private static final Logger logger = LoggerFactory.getLogger(LLMService.class); // Constructor to initialize WebClient with Hugging Face API URL and API key public LLMService(@Value("${huggingface.text.api.url}") String apiUrl, @Value("${huggingface.api.key}") String apiKey) { this.webClient = WebClient.builder() .baseUrl(apiUrl) // Set the base URL for the API .defaultHeader("Authorization", "Bearer " + apiKey) // Add API key to the header .build(); } // Method to generate text using Hugging Face's Inference API public Mono<String> generateText(String prompt) { // Validate the input prompt if (prompt == null || prompt.trim().isEmpty()) { return Mono.error(new IllegalArgumentException("Prompt must not be null or empty")); } // Create the request body with the prompt Map<String, String> body = Collections.singletonMap("inputs", prompt); // Make a POST request to the Hugging Face API return webClient.post() .bodyValue(body) .retrieve() .bodyToMono(String.class) .doOnSuccess(response -> logger.info("Response received: {}", response)) // Log successful responses .doOnError(error -> logger.error("Error during API call", error)) // Log errors .retryWhen(Retry.backoff(3, Duration.ofMillis(500))) // Retry on failure with exponential backoff .timeout(Duration.ofSeconds(5)) // Set a timeout for the API call .onErrorResume(error -> Mono.just("Fallback response due to error: " + error.getMessage())); // Provide a fallback response on error } }
@Service public class ImageGenerationService { private static final Logger logger = LoggerFactory.getLogger(ImageGenerationService.class); private final WebClient webClient; public ImageGenerationService(@Value("${huggingface.image.api.url}") String apiUrl, @Value("${huggingface.api.key}") String apiKey) { this.webClient = WebClient.builder() .baseUrl(apiUrl) .defaultHeader("Authorization", "Bearer " + apiKey) .build(); } public Mono<byte[]> generateImage(String prompt) { if (prompt == null || prompt.trim().isEmpty()) { return Mono.error(new IllegalArgumentException("Prompt must not be null or empty")); } Map<String, String> body = Collections.singletonMap("inputs", prompt); return webClient.post() .bodyValue(body) .retrieve() .bodyToMono(byte[].class) / Convert the response to a Mono<byte[]> (image bytes) .timeout(Duration.ofSeconds(10)) // Timeout after 10 seconds .retryWhen(Retry.backoff(3, Duration.ofMillis(500))) // Retry logic .doOnSuccess(response -> logger.info("Image generated successfully for prompt: {}", prompt)) .doOnError(error -> logger.error("Error generating image for prompt: {}", prompt, error)) .onErrorResume(WebClientResponseException.class, ex -> { logger.error("HTTP error during image generation: {}", ex.getMessage(), ex); return Mono.error(new RuntimeException("Error generating image: " + ex.getMessage())); }) .onErrorResume(TimeoutException.class, ex -> { logger.error("Timeout while generating image for prompt: {}", prompt); return Mono.error(new RuntimeException("Request timed out")); }); } }
准备好潜水了吗?查看 QuickAI GitHub 存储库以查看完整代码并继续操作。如果您觉得有用,请给它⭐。
想要进一步推进这个项目吗?
想要合作或有任何建议可以在 LinkedIn 上找到我,Portfolio 也可以在 GitHub 上查看我的其他项目。
有问题或建议,请在下面发表评论,我很乐意解决。
快乐编码! ?
以上是轻松集成 AI 模型:构建和评估 AI 模型(Spring Boot 和 Hugging Face)的详细内容。更多信息请关注PHP中文网其他相关文章!