Hace que el acceso a la IA sea más simple y eficiente
简体中文 · Inglés
Vine Este proyecto es parte del proyecto Nvwa , que representa Nuwa's vine .
En la antigua mitología china, NVWA es la diosa de la creación. Se dice que usó el barro del río amarillo para elaborar a los humanos a su imagen, respaldando la vida en ellos con sus poderes divinos.
Sin embargo, la vasta tierra del mundo es lento, y Nvwa se agotó. Luego sacó una vid seca de un acantilado, la sumergió en el barro y la arrojó por el suelo. Dondequiera que el barro salpicara, los humanos surgieron. En poco tiempo, la tierra estaba llena de seres humanos.
Al igual que la vid aumentó enormemente la eficiencia de Nvwa en la creación de humanos, el proyecto Vine tiene como objetivo ayudar a los desarrolladores a construir aplicaciones de interacción de IA de manera más eficiente.
Al construir aplicaciones de interacción de IA, a menudo necesitamos manejar la entrada del usuario, generar salidas correspondientes y procesar los resultados.
Para tareas simples, podemos usar plantillas de inmediato para generar las indicaciones necesarias. Sin embargo, en escenarios más complejos, es posible que necesitemos generar indicaciones detalladas basadas en entradas, contexto, conversaciones e información recuperada a través de RAG (generación de recuperación acuática). Además, podríamos necesitar estructuras de datos complejas para capturar la salida de la IA.
Cuanto más complejo sea el negocio, más variados se vuelven los escenarios de entrada del usuario. A medida que el negocio crece, necesitamos mantener continuamente las indicaciones y su lógica de manejo.
Por ejemplo, si ajustamos la estructura de entrada o salida de un mensaje, no solo necesitamos actualizar el código relacionado sino también el aviso que describe la estructura y cualquier datos de pocos disparos vinculados a él.
Dado que las indicaciones a menudo están separadas del código, es fácil para ellos quedarse sin sincronización. La actualización de las indicaciones puede conducir a errores, y la gestión de la lógica compleja se vuelve más difícil, al igual que cuando la documentación no coincide con el código. Aquí es donde surge la necesidad de un marco inmediato de IA.
Con más de una década de experiencia arquitectónica, creo firmemente que el código es la mejor forma de documentación. Del mismo modo, cuando las tareas se dividen en unidades atómicas, el código también puede servir como el mejor aviso para escenarios de interacción AI estructurados.
Vine proporciona un enfoque basado en código que ayuda a generar indicaciones y manejar la entrada del usuario a través del código, reduciendo significativamente las discrepancias entre las indicaciones y el código. Esto también simplifica el proceso de la construcción de indicaciones.
Con el menor código adicional posible, Vine lo ayuda a construir interacciones de IA más rápido y administrar la ingeniería rápida de manera más efectiva.
Inglés: Agregar dependencias, Vine se puede encontrar a través del repositorio central de Maven.
Por supuesto, también puede clonar el código y construirlo usted mismo.
< 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 >Consulte el uso de Spring AI para completar la configuración relevante del modelo de chat.
Por ejemplo, usando OpenAI, configúrelo a través de application.yml :
spring :
ai :
openai :
apiKey : <your-api-key> Cree una interfaz para acceder a AI y agregue la anotación @VineService . El parámetro del método es la parte variable de la entrada del usuario, y el valor de retorno es la salida estructurada de AI.
Si el escenario comercial o la estructura de retorno es más compleja, puede usar la anotación correspondiente para agregar una descripción.
@ 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 ,
}En el lugar donde necesita llamar a la IA, inyecte la interfaz y llame al método correspondiente.
@ 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...
}
} El concepto de Vine es sencillo. Ayuda a estructurar las indicaciones y generarlas a través del código, manejando la entrada del usuario mientras evita la necesidad de escribir de forma manual. Esto reduce los problemas en los que las indicaciones y el código pueden no coincidir.
TBD
TBD
TBD
TBD
TBD (aún no fusionado)
Vine se basa en Spring AI , que utiliza Spring Framework 6 y Spring Boot 3, por lo que requiere Java 17 o más para funcionar.
Vine también es compatible con Kotlin. Vine es parte del proyecto Nvwa , está escrito completamente en Kotlin . Sin embargo, dado que Kotlin tiene una base de usuarios más pequeña, reescribimos Vine en Java al separarla de Nvwa .
Vine tiene licencia bajo la licencia Apache, versión 2.0. Vea la licencia para el texto completo de la licencia.