ทำให้การเข้าถึง AI ง่ายขึ้นและมีประสิทธิภาพมากขึ้น
简体中文·ภาษาอังกฤษ
Vine โครงการนี้เป็นส่วนหนึ่งของโครงการ Nvwa ซึ่งเป็นตัวแทนของ Nuwa's vine
ในเทพนิยายจีนโบราณ NVWA เป็นเทพีแห่งการสร้างสรรค์ ว่ากันว่าเธอใช้โคลนจากแม่น้ำเหลืองเพื่อสร้างมนุษย์ในรูปของเธอหายใจเข้าสู่พวกเขาด้วยพลังอันศักดิ์สิทธิ์ของเธอ
อย่างไรก็ตามดินแดนอันกว้างใหญ่ของโลกกระบวนการช้าลงและ Nvwa ก็เหนื่อยล้า จากนั้นเธอก็ดึงเถาวัลย์แห้งจากหน้าผาจุ่มลงในโคลนแล้วเหวี่ยงมันลงไปบนพื้นดิน ทุกที่ที่โคลนกระแทกมนุษย์ก็ผุดขึ้นมา อีกไม่นานโลกก็เต็มไปด้วยมนุษย์
เช่นเดียวกับที่เถาวัลย์ได้เพิ่มประสิทธิภาพของ Nvwa อย่างมากในการสร้างมนุษย์โครงการ Vine มีจุดมุ่งหมายเพื่อช่วยให้นักพัฒนาสร้างแอปพลิเคชันการโต้ตอบของ AI ได้อย่างมีประสิทธิภาพมากขึ้น
เมื่อสร้างแอปพลิเคชันปฏิสัมพันธ์ AI เรามักจะต้องจัดการอินพุตของผู้ใช้สร้างผลลัพธ์ที่สอดคล้องกันและประมวลผลผลลัพธ์
สำหรับงานง่าย ๆ เราสามารถใช้เทมเพลตพรอมต์เพื่อสร้างพรอมต์ที่จำเป็น อย่างไรก็ตามในสถานการณ์ที่ซับซ้อนมากขึ้นเราอาจต้องสร้างพรอมต์โดยละเอียดตามอินพุตบริบทการสนทนาและข้อมูลที่ดึงมาผ่าน RAG นอกจากนี้เราอาจต้องใช้โครงสร้างข้อมูลที่ซับซ้อนเพื่อจับเอาท์พุทของ AI
ยิ่งธุรกิจมีความซับซ้อนมากเท่าใดสถานการณ์การป้อนข้อมูลของผู้ใช้ก็ยิ่งแตกต่างกันมากขึ้นเท่านั้น เมื่อธุรกิจเติบโตขึ้นเราจำเป็นต้องรักษาพรอมต์และตรรกะการจัดการอย่างต่อเนื่อง
ตัวอย่างเช่นหากเราปรับโครงสร้างอินพุตหรือเอาต์พุตของพรอมต์เราไม่เพียง แต่จำเป็นต้องอัปเดตรหัสที่เกี่ยวข้อง แต่ยังมีพรอมต์ที่อธิบายโครงสร้างและข้อมูลการยิงสองสามครั้งที่เชื่อมโยงกับมัน
เนื่องจากพรอมต์มักจะแยกออกจากรหัสจึงเป็นเรื่องง่ายสำหรับพวกเขาที่จะไม่ซิงค์ การอัปเดตพรอมต์อาจนำไปสู่ข้อผิดพลาดและการจัดการตรรกะที่ซับซ้อนจะยากขึ้นเช่นเดียวกับเมื่อเอกสารไม่ตรงกับรหัส นี่คือที่ที่จำเป็นสำหรับกรอบการทำงานของ AI ที่เกิดขึ้น
ด้วยประสบการณ์ทางสถาปัตยกรรมมานานกว่าทศวรรษฉันเชื่อมั่นว่ารหัสเป็นเอกสารที่ดีที่สุด ในทำนองเดียวกันเมื่องานถูกแบ่งออกเป็นหน่วยอะตอมโค้ดยังสามารถใช้เป็นคำแนะนำที่ดีที่สุดสำหรับสถานการณ์การโต้ตอบ AI ที่มีโครงสร้าง
Vine จัดเตรียมวิธีการที่ขับเคลื่อนด้วยรหัสที่ช่วยสร้างพรอมต์และจัดการการป้อนข้อมูลผู้ใช้ผ่านรหัสลดความคลาดเคลื่อนระหว่างพรอมต์และรหัสอย่างมีนัยสำคัญ นอกจากนี้ยังทำให้กระบวนการสร้างพรอมต์ง่ายขึ้น
ด้วยรหัสพิเศษเล็กน้อยที่สุดเท่าที่จะเป็นไปได้ Vine ช่วยให้คุณสร้างการโต้ตอบ AI ได้เร็วขึ้นและจัดการวิศวกรรมที่รวดเร็วได้อย่างมีประสิทธิภาพมากขึ้น
ภาษาอังกฤษ: เพิ่มการพึ่งพา, เถาวัลย์สามารถพบได้ผ่านที่เก็บ Maven Central
แน่นอนคุณสามารถโคลนรหัสและสร้างด้วยตัวเอง
< 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 >อ้างถึงการใช้งานของ Spring AI เพื่อให้การกำหนดค่าที่เกี่ยวข้องของโมเดลแชทที่เกี่ยวข้องเสร็จสมบูรณ์
ตัวอย่างเช่นการใช้ openai กำหนดค่าผ่าน application.yml :
spring :
ai :
openai :
apiKey : <your-api-key> สร้างอินเทอร์เฟซเพื่อเข้าถึง AI และเพิ่มคำอธิบายประกอบ @VineService พารามิเตอร์วิธีการเป็นส่วนตัวแปรของอินพุตผู้ใช้และค่าส่งคืนเป็นเอาต์พุตที่มีโครงสร้างของ AI
หากสถานการณ์ทางธุรกิจหรือโครงสร้างการส่งคืนมีความซับซ้อนมากขึ้นคุณสามารถใช้คำอธิบายประกอบที่เกี่ยวข้องเพื่อเพิ่มคำอธิบาย
@ 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 ,
}ในสถานที่ที่คุณต้องโทร AI ฉีดอินเทอร์เฟซและเรียกใช้วิธีการที่เกี่ยวข้อง
@ 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...
}
} แนวคิดของ Vine นั้นตรงไปตรงมา ช่วยให้โครงสร้างมีการแจ้งเตือนและสร้างผ่านรหัสจัดการอินพุตของผู้ใช้ในขณะที่หลีกเลี่ยงความจำเป็นในการเขียนพรอมต์ด้วยตนเอง สิ่งนี้จะช่วยลดปัญหาที่แจ้งและรหัสอาจไม่ตรงกัน
TBD
TBD
TBD
TBD
TBD (ยังไม่รวม)
Vine ถูกสร้างขึ้นใน Spring AI ซึ่งใช้ Spring Framework 6 และ Spring Boot 3 ดังนั้นจึงต้องใช้ Java 17 หรือสูงกว่าในการทำงาน
Vine ยังรองรับ Kotlin Vine เป็นส่วนหนึ่งของโครงการ Nvwa เขียนขึ้นทั้งหมดใน Kotlin อย่างไรก็ตามเนื่องจาก Kotlin มีฐานผู้ใช้ที่เล็กกว่าเราจะเขียนเถาวัลย์ใหม่ใน Java เมื่อแยกออกจาก Nvwa
Vine ได้รับใบอนุญาตภายใต้ใบอนุญาต Apache เวอร์ชัน 2.0 ดูใบอนุญาตสำหรับข้อความใบอนุญาตเต็มรูปแบบ