ホームページ >Java >&#&チュートリアル >AI モデルの簡単な統合: AI モデルの構築と評価 (Spring Boot および Hugging Face)
AI 革命が到来しており、それに伴い、テキストを生成し、ビジュアルを作成し、複雑な問題を解決できる強力なモデルのリストが増え続けています。しかし、正直に言って、オプションが多すぎると、どのモデルがプロジェクトに最適であるかを判断するのは困難になる可能性があります。これらのモデルを迅速にテストし、その結果を実際に実行して確認し、どれを実稼働システムに統合するかを決定する方法があったとしたらどうでしょうか?
Hugging Face の推論 API を入力してください。これは、最先端の AI モデルを探索して活用するための近道です。プラグアンドプレイ ソリューションを提供することで、モデルのセットアップ、ホスティング、トレーニングの手間を省きます。新しい機能のブレーンストーミングを行っている場合でも、モデルの機能を評価している場合でも、Hugging Face を使用すると AI の統合がこれまでより簡単になります。
このブログでは、Spring Boot を使用して、AI モデルを簡単にテストおよび評価できる軽量のバックエンド アプリケーションを構築する手順を説明します。期待できることは次のとおりです:
最終的には、さまざまな AI モデルをテストし、プロジェクトのニーズに対する適合性について情報に基づいた意思決定を行うための便利なツールが手に入ります。好奇心と実装の間のギャップを埋める準備ができたら、始めましょう!
Hugging Face が AI 統合にとって大きな変革となる理由は次のとおりです:
次のような Spring Boot アプリケーションである QuickAI を構築します。
まだアカウントをお持ちでない場合は、huggingface.co にアクセスしてアカウントを作成してください。
アカウント設定に移動し、API キーを生成します。このキーにより、Spring Boot アプリケーションが Hugging Face の推論 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 で私を見つけてください。ポートフォリオでは、ここ GitHub で私の他のプロジェクトも調べてください。
ご質問やご提案がございましたら、以下にコメントしてください。喜んで対応させていただきます。
コーディングを楽しんでください! ?
以上がAI モデルの簡単な統合: AI モデルの構築と評価 (Spring Boot および Hugging Face)の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。