Pada tahun 2023, teknologi AI telah menjadi topik hangat dan telah memberi impak yang besar kepada pelbagai industri, terutamanya dalam bidang pengaturcaraan. Orang ramai semakin menyedari kepentingan teknologi AI, dan komuniti Spring tidak terkecuali.
Dengan kemajuan berterusan teknologi GenAI (General Artificial Intelligence), ia menjadi penting dan mendesak untuk memudahkan penciptaan aplikasi yang didayakan AI. Dengan latar belakang ini, "Spring AI" muncul, bertujuan untuk memudahkan proses membangunkan aplikasi berfungsi AI, menjadikannya mudah dan intuitif serta mengelakkan kerumitan yang tidak perlu. Melalui "Spring AI", pembangun boleh membina aplikasi dengan lebih mudah dengan fungsi AI, menjadikannya lebih mudah untuk digunakan dan dikendalikan. Ini bukan sahaja membantu meningkatkan kecekapan pembangunan, tetapi juga mempercepatkan popularisasi dan aplikasi teknologi AI. Ringkasnya, "Spring AI" membawa kemungkinan baharu kepada pembangunan aplikasi AI, menyediakan pembangun dengan alatan dan rangka kerja yang lebih mudah dan lebih intuitif.
Artikel ini akan memperkenalkan secara ringkas rangka kerja Spring AI dan beberapa petua kejuruteraan untuk menggunakan rangka kerja tersebut. Pembangun boleh menggunakan petua ini untuk menyusun maklumat segera dengan lebih baik dan menggunakan sepenuhnya keupayaan Spring AI.
Spring AI dicipta dan ditulis oleh M K Pavan Kumar
Spring AI ialah projek yang direka untuk memudahkan pembangunan aplikasi AI, diilhamkan oleh projek Python LangChain dan LlamaIndex. Walau bagaimanapun, Spring AI bukanlah salinan mudah. Idea terasnya ialah membuka aplikasi AI generatif kepada pengguna pelbagai bahasa pengaturcaraan, bukan hanya peminat bahasa Python. Ini bermakna pembangun boleh membina aplikasi AI menggunakan bahasa yang mereka kenali tanpa perlu mempelajari bahasa Python. Dengan Spring AI, pembangun boleh menggunakan kuasa AI dengan lebih mudah untuk menyelesaikan pelbagai masalah, tanpa mengira bahasa pengaturcaraan yang mereka gunakan. Ini akan memudahkan pembangunan aplikasi AI yang lebih luas dan menyediakan pembangun dengan lebih fleksibiliti dan pilihan.
Matlamat teras Spring AI adalah untuk menyediakan blok binaan asas untuk membina aplikasi dipacu AI. Blok binaan ini sangat fleksibel dan komponen boleh ditukar dengan mudah tanpa sebarang pengubahsuaian pada kod. Satu contoh ialah Spring AI memperkenalkan komponen yang dipanggil antara muka ChatClient, yang serasi dengan teknologi OpenAI dan Azure OpenAI. Ini membolehkan pembangun bertukar antara penyedia perkhidmatan AI yang berbeza tanpa mengubah kod, menjadikan pembangunan dan penyepaduan lebih mudah.
Pada terasnya, Spring AI menyediakan blok binaan yang boleh dipercayai untuk membangunkan aplikasi berasaskan kecerdasan buatan. Keanjalan modul ini membolehkan pertukaran komponen yang lancar tanpa memerlukan pengubahsuaian yang meluas pada pengekodan. Satu contoh ialah pengenalan Spring AI bagi antara muka ChatClient, yang serasi dengan OpenAI dan Azure OpenAI, membolehkan pembangun bercakap dengan mudah dengan kedua-dua platform. Keserasian ini membolehkan pembangun memilih platform yang sesuai berdasarkan keperluan sebenar tanpa perlu menulis semula kod. Dengan Spring AI, pembangun boleh membina aplikasi dipacu AI dengan lebih cekap.
Spring AI melangkaui blok binaan asas dan menumpukan pada penyediaan penyelesaian yang lebih maju. Contohnya, ia boleh menyokong senario biasa seperti "soal jawab tentang dokumen sendiri" atau "sembang interaktif menggunakan dokumen". Apabila keperluan aplikasi berkembang, Spring AI merancang untuk bekerjasama rapat dengan komponen lain ekosistem Spring seperti Spring Integration, Spring Batch dan Spring Data untuk memenuhi keperluan perniagaan yang lebih kompleks.
Mula-mula jana projek Spring Boot dalam IDE dan simpan kandungan berikut dalam fail application.properties:
spring.ai.openai.api-key=<YOUR\_OPENAI\_API\_KEY>
Tulis pengawal bernama OpenAIController.java di bawah:
package com.vas.springai.controller;import org.springframework.ai.client.AiClient;import org.springframework.web.bind.annotation.RequestMapping;import org.springframework.web.bind.annotation.RestController;@RestController@RequestMapping("/api/v1")public class OpenAIController {private final AiClient aiClient;public OpenAIController(AiClient aiClient) {this.aiClient = aiClient;}}
Kelas gesaan ialah pemegang berstruktur bagi jujukan objek mesej, dan setiap mesej mewakili sebahagian daripada gesaan. Mesej ini mempunyai peranan dan tujuan yang berbeza dalam gesaan, dan kandungannya berbeza-beza. Termasuk soalan pengguna, respons yang dijana AI, butiran kontekstual yang berkaitan dan banyak lagi. Persediaan ini memudahkan interaksi manusia-komputer yang kompleks dan canggih kerana gesaan terdiri daripada berbilang mesej dengan fungsi tertentu.
@GetMapping("/completion")public String completion(@RequestParam(value = "message") String message){return this.aiClient.generate(message);}
Walau bagaimanapun, kaedah jana aiClient bukan sahaja menerima teks biasa sebagai parameter, ia juga boleh menerima objek kelas Prompt sebagai parameter, seperti yang ditunjukkan di bawah. Sekarang, kaedah ini mengembalikan contoh jenis AiResponse, bukan teks mudah.
@GetMapping("/completion")public AiResponse completion(@RequestParam(value = "message") String message){ PromptTemplate promptTemplate = new PromptTemplate("translate the given english sentence sentence into french {query}"); Prompt prompt = promptTemplate.create(Map.of("query", message)); return this.aiClient.generate(prompt);}
Selain itu, kelas Prompt juga menyediakan pembina terlampau beban yang boleh menerima jujukan tika jenis Mesej dengan peranan dan niat yang berbeza sebagai parameter. Ini boleh mengatur dan mengurus maklumat segera dengan lebih baik dan memudahkan pemprosesan dan penggunaan seterusnya. Di bawah ialah contoh kod yang menunjukkan cara menggunakan pembina yang terlebih beban ini untuk menggabungkan segala-galanya.
package com.vas.springai.controller;import org.springframework.ai.client.AiClient;import org.springframework.ai.client.Generation;import org.springframework.ai.prompt.Prompt;import org.springframework.ai.prompt.PromptTemplate;import org.springframework.ai.prompt.SystemPromptTemplate;import org.springframework.ai.prompt.messages.Message;import org.springframework.web.bind.annotation.GetMapping;import org.springframework.web.bind.annotation.RequestMapping;import org.springframework.web.bind.annotation.RequestParam;import org.springframework.web.bind.annotation.RestController;import java.util.List;import java.util.Map;@RestController@RequestMapping("/api/v1")public class OpenAIController {private final AiClient aiClient;public OpenAIController(AiClient aiClient) {this.aiClient = aiClient;}@GetMapping("/completion")public List<Generation> completion(@RequestParam(value = "message") String message) {String systemPrompt = """You are a helpful AI assistant that helps people translate given text from english to french.Your name is TranslateProYou should reply to the user's request with your name and also in the style of a professional.""";SystemPromptTemplate systemPromptTemplate = new SystemPromptTemplate(systemPrompt);Message systemMessage = systemPromptTemplate.createMessage();PromptTemplate promptTemplate = new PromptTemplate("translate the given english sentence sentence into french {query}");Message userMessage = promptTemplate.createMessage(Map.of("query", message));Prompt prompt = new Prompt(List.of(systemMessage, userMessage));return this.aiClient.generate(prompt).getGenerations();}}
Aplikasi boleh diuji menggunakan mana-mana alat terbuka yang terdapat di pasaran, seperti posmen, insomnia, Httpie dan banyak lagi.
Gambar
Atas ialah kandungan terperinci Paradigma pengaturcaraan baharu, apabila Spring Boot bertemu OpenAI. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!