Membuat mengakses AI lebih sederhana dan lebih efisien
简体中文 · Bahasa Inggris
Vine Proyek ini adalah bagian dari proyek Nvwa , mewakili Nuwa's vine .
Dalam mitologi Cina kuno, NVWA adalah dewi ciptaan. Dikatakan bahwa dia menggunakan lumpur dari Sungai Kuning untuk membuat manusia dalam citranya, menghembuskan kehidupan ke dalamnya dengan kekuatan ilahi -Nya.
Namun, tanah dunia yang luas prosesnya lambat, dan Nvwa menjadi kelelahan. Dia kemudian menarik anggur kering dari tebing, mencelupkannya ke dalam lumpur, dan melemparkannya ke tanah. Di mana pun lumpur berceceran, manusia bermunculan. Tak lama, bumi dipenuhi dengan manusia.
Sama seperti Vine sangat meningkatkan efisiensi Nvwa dalam menciptakan manusia, proyek Vine bertujuan untuk membantu pengembang membangun aplikasi interaksi AI lebih efisien.
Saat membangun aplikasi interaksi AI, kita sering perlu menangani input pengguna, menghasilkan output yang sesuai, dan memproses hasilnya.
Untuk tugas -tugas sederhana, kami dapat menggunakan templat prompt untuk menghasilkan petunjuk yang dibutuhkan. Namun, dalam skenario yang lebih kompleks, kita mungkin perlu membangun petunjuk terperinci berdasarkan input, konteks, percakapan, dan informasi yang diambil melalui RAG (generasi pengambilan-pengambilan). Selain itu, kita mungkin memerlukan struktur data yang kompleks untuk menangkap output AI.
Semakin kompleks bisnis, semakin bervariasi skenario input pengguna. Seiring pertumbuhan bisnis, kita perlu terus mempertahankan petunjuk dan logika penanganan mereka.
Misalnya, jika kami menyesuaikan struktur input atau output dari suatu prompt, kami tidak hanya perlu memperbarui kode terkait tetapi juga prompt yang menjelaskan struktur dan data beberapa tembakan yang terkait dengannya.
Karena petunjuk sering terpisah dari kode, mudah bagi mereka untuk tidak sinkron. Memperbarui petunjuk dapat menyebabkan kesalahan, dan mengelola logika yang kompleks menjadi lebih sulit, seperti ketika dokumentasi tidak cocok dengan kode. Di sinilah kebutuhan akan kerangka kerja cepat AI muncul.
Dengan lebih dari satu dekade pengalaman arsitektur, saya sangat yakin bahwa kode adalah bentuk dokumentasi terbaik. Demikian pula, ketika tugas dipecah menjadi unit atom, kode juga dapat berfungsi sebagai prompt terbaik untuk skenario interaksi AI terstruktur.
Vine memberikan pendekatan berbasis kode yang membantu menghasilkan petunjuk dan menangani input pengguna melalui kode, secara signifikan mengurangi perbedaan antara petunjuk dan kode. Ini juga menyederhanakan proses pembangunan petunjuk.
Dengan kode tambahan sesedikit mungkin, Vine membantu Anda membangun interaksi AI lebih cepat dan mengelola rekayasa cepat secara lebih efektif.
Bahasa Inggris: Tambahkan dependensi, Vine dapat ditemukan melalui repositori pusat Maven.
Tentu saja, Anda juga dapat mengkloning kode dan membangunnya sendiri.
< project >
< dependencyManagement >
< dependencies >
< dependency >
< groupId >work.nvwa</ groupId >
< artifactId >nvwa-vine-bom</ artifactId >
< version >${vine.version}</ version >
< scope >import</ scope >
< type >pom</ type >
</ dependency >
</ dependencies >
</ dependencyManagement >
< dependencies >
< dependency >
< groupId >work.nvwa</ groupId >
< artifactId >nvwa-vine-spring-boot-starter-spring-ai</ artifactId >
</ dependency >
< dependency >
< groupId >org.springframework.ai</ groupId >
< artifactId >spring-ai-openai-spring-boot-starter</ artifactId >
</ dependency >
</ dependencies >
</ project >Lihat penggunaan AI Spring untuk menyelesaikan konfigurasi model obrolan yang relevan.
Misalnya, menggunakan OpenAi, konfigurasikan melalui application.yml :
spring :
ai :
openai :
apiKey : <your-api-key> Buat antarmuka untuk mengakses AI, dan tambahkan anotasi @VineService . Parameter metode adalah bagian variabel dari input pengguna, dan nilai pengembalian adalah output terstruktur dari AI.
Jika skenario bisnis atau struktur pengembalian lebih kompleks, Anda dapat menggunakan anotasi yang sesuai untuk menambahkan deskripsi.
@ VineService
public interface SqlAnalyzeService {
QuerySqlMetadata analyzeSql ( String sql );
}
public record QuerySqlMetadata (
String table ,
String [] select ,
List < QueryCondition > where ,
List < QueryOrderBy > orderBy
) {
}
public record QueryCondition (
String field ,
OperatorType operator ,
String value
) {
}
public record QueryOrderBy (
String field ,
SortOrder order
) {
}
public enum SortOrder {
Descend , Ascend
}
public enum OperatorType {
Equal , NotEqual , GreaterThan , GreaterThanOrEqual , LessThan , LessThanOrEqual , Like , NotLike , IsNull , IsNotNull , IsTrue , IsFalse ,
}Di tempat di mana Anda perlu memanggil AI, menyuntikkan antarmuka dan memanggil metode yang sesuai.
@ Component
public class ChatServiceTest {
private final SqlAnalyzeService sqlAnalyzeService ;
public ChatServiceTest ( SqlAnalyzeService sqlAnalyzeService ) {
this . sqlAnalyzeService = sqlAnalyzeService ;
}
public void businessMethod () {
// needAnalyzeSql is the variable part of user input
// example: "select b,c,a from test_table where a = 1 and b like 'Zhang%' and c <= 3 order by created_time desc"
QuerySqlMetadata sqlMetadata = sqlAnalyzeService . analyzeSql ( needAnalyzeSql );
// use sqlMetadata do something...
}
} Konsep Vine langsung. Ini membantu struktur petunjuk dan menghasilkannya melalui kode, menangani input pengguna sambil menghindari kebutuhan untuk menulis prompt secara manual. Ini mengurangi masalah di mana petunjuk dan kode mungkin tidak cocok.
Tbd
Tbd
Tbd
Tbd
TBD (belum bergabung)
Vine dibangun di atas Spring AI , yang menggunakan Spring Framework 6 dan Spring Boot 3, sehingga membutuhkan Java 17 atau lebih tinggi untuk dijalankan.
Vine juga mendukung Kotlin. Vine adalah bagian dari proyek Nvwa , ditulis sepenuhnya di Kotlin . Namun, karena Kotlin memiliki basis pengguna yang lebih kecil, kami menulis ulang Vine di Java saat memisahkannya dari Nvwa .
Vine dilisensikan di bawah lisensi Apache, versi 2.0. Lihat lisensi untuk teks lisensi lengkap.