يجعل الوصول إلى الذكاء الاصطناعي أبسط وأكثر كفاءة
简体中文 · اللغة الإنجليزية
Vine هذا المشروع جزء من مشروع Nvwa ، الذي يمثل Nuwa's vine .
في الأساطير الصينية القديمة ، نيفوا هي إلهة الخلق. يقال إنها استخدمت الطين من النهر الأصفر لصياغة البشر في صورتها ، وتنفس الحياة معهم بقواعدها الإلهية.
ومع ذلك ، فإن الأرض الشاسعة في العالم تبطئ ، ونمت Nvwa . ثم سحبت كرمة مجففة من جرف ، وأغمسها في الوحل ، وأمسكت بها على الأرض. أينما كان الطين يرتفع ، نشأ البشر. قبل مضي وقت طويل ، كانت الأرض مليئة بالبشر.
مثلما عززت الكرمة بشكل كبير كفاءة Nvwa في إنشاء البشر ، يهدف مشروع Vine إلى مساعدة المطورين على بناء تطبيقات تفاعل الذكاء الاصطناعي بشكل أكثر كفاءة.
عند إنشاء تطبيقات تفاعل الذكاء الاصطناعي ، نحتاج غالبًا إلى التعامل مع إدخال المستخدم ، وإنشاء المخرجات المقابلة ، ومعالجة النتائج.
بالنسبة للمهام البسيطة ، يمكننا استخدام قوالب سريعة لإنشاء المطالبات المطلوبة. ومع ذلك ، في سيناريوهات أكثر تعقيدًا ، قد نحتاج إلى بناء مطالبات مفصلة بناءً على المدخلات والسياق والمحادثات والمعلومات التي تم استردادها من خلال RAG (الجيل المتمثل في الاسترجاع). بالإضافة إلى ذلك ، قد نحتاج إلى هياكل بيانات معقدة لالتقاط إخراج الذكاء الاصطناعي.
كلما زاد تعقيد العمل ، زاد تنوع سيناريوهات إدخال المستخدم. مع نمو الأعمال التجارية ، نحتاج باستمرار إلى الحفاظ على المطالبات ومنطقها.
على سبيل المثال ، إذا قمنا بضبط بنية الإدخال أو الإخراج لمطالبة ، فلا نحتاج فقط إلى تحديث الكود ذي الصلة ولكن أيضًا على الموجه الذي يصف الهيكل وأي بيانات قليلة المرتبطة به.
نظرًا لأن المطالبات غالبًا ما تكون منفصلة عن الكود ، فمن السهل عليهم أن يصبحوا غير متزامنين. يمكن أن يؤدي تحديث المطالبات إلى أخطاء ، وتصبح إدارة المنطق المعقد أكثر صعوبة ، تمامًا كما هو الحال عندما لا تتطابق الوثائق مع الرمز. هذا هو المكان الذي تنشأ فيه الحاجة إلى إطار عمل AI.
مع أكثر من عقد من الخبرة المعمارية ، أعتقد اعتقادا راسخا أن الكود هو أفضل شكل من أشكال الوثائق. وبالمثل ، عندما يتم تقسيم المهام إلى وحدات ذرية ، يمكن أن يكون الكود أيضًا بمثابة أفضل موجه لسيناريوهات تفاعل الذكاء الاصطناعى المنظم.
يوفر Vine نهجًا يحركه الرمز يساعد على إنشاء مطالبات ومعالجة إدخال المستخدم من خلال التعليمات البرمجية ، مما يقلل بشكل كبير من التناقضات بين المطالبات والرمز. هذا يبسط أيضًا عملية بناء مطالبات.
مع أقل القليل من التعليمات البرمجية الإضافية ، تساعدك Vine على بناء تفاعلات AI بشكل أسرع وإدارة الهندسة المطالبة بشكل أكثر فعالية.
اللغة الإنجليزية: إضافة تبعيات ، يمكن العثور على كرمة من خلال مستودع Maven المركزي.
بالطبع ، يمكنك أيضًا استنساخ الرمز وبناءها بنفسك.
< 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> قم بإنشاء واجهة للوصول إلى الذكاء الاصطناعي ، وإضافة تعليق توضيحي @VineService . معلمة الطريقة هي الجزء المتغير من إدخال المستخدم ، وقيمة الإرجاع هي الإخراج المنظم لمنظمة العفو الدولية.
إذا كان سيناريو العمل أو هيكل الإرجاع أكثر تعقيدًا ، فيمكنك استخدام التعليق التوضيحي المقابل لإضافة وصف.
@ 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 ,
}في المكان الذي تحتاج فيه إلى استدعاء الذكاء الاصطناعي ، حقن الواجهة واتصل بالطريقة المقابلة.
@ 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 تدعم أيضا كوتلين. Vine جزء من مشروع Nvwa ، يتم كتابته بالكامل في Kotlin . ومع ذلك ، نظرًا لأن Kotlin لديها قاعدة مستخدمين أصغر ، فإننا نعيد كتابة Vine في Java عند فصلها عن Nvwa .
تم ترخيص Vine بموجب ترخيص Apache ، الإصدار 2.0. انظر ترخيص نص الترخيص الكامل.