Rend l'accès à l'IA plus simple et plus efficace
简体中文 · Anglais
Vine Ce projet fait partie du projet Nvwa , représentant Nuwa's vine .
Dans la mythologie chinoise ancienne, NVWA est la déesse de la création. On dit qu'elle a utilisé la boue du fleuve jaune pour fabriquer des humains à son image, leur respirant la vie avec ses pouvoirs divins.
Cependant, la vaste terre du monde le ralentissement du processus et Nvwa se sont épuisées. Elle a ensuite tiré une vigne séchée d'une falaise, l'a plongée dans la boue et l'a jetée à travers le sol. Partout où la boue éclaboussa, les humains ont jailli. Avant longtemps, la terre était remplie d'êtres humains.
Tout comme la vigne a considérablement augmenté l'efficacité de Nvwa dans la création d'humains, le projet Vine vise à aider les développeurs à créer des applications d'interaction IA plus efficacement.
Lors de la création d'applications d'interaction AI, nous devons souvent gérer l'entrée des utilisateurs, générer des sorties correspondantes et traiter les résultats.
Pour les tâches simples, nous pouvons utiliser des modèles d'invite pour générer les invites nécessaires. Cependant, dans des scénarios plus complexes, nous devrons peut-être construire des invites détaillées en fonction des entrées, du contexte, des conversations et des informations récupérées via RAG (génération de récupération). De plus, nous pourrions avoir besoin de structures de données complexes pour capturer la sortie de l'IA.
Plus l'entreprise est complexe, plus les scénarios d'entrée utilisateur deviennent variés. À mesure que l'entreprise se développe, nous devons continuellement maintenir les invites et leur logique de manutention.
Par exemple, si nous ajustez la structure d'entrée ou de sortie d'une invite, nous devons non seulement mettre à jour le code connexe mais également l'invite qui décrit la structure et les données de quelques coups qui y sont liées.
Étant donné que les invites sont souvent distinctes du code, il est facile pour eux de se synchroniser. La mise à jour des invites peut entraîner des erreurs et la gestion de la logique complexe devient plus difficile, tout comme lorsque la documentation ne correspond pas au code. C'est là que survient le besoin d'un cadre rapide d'IA.
Avec plus d'une décennie d'expérience architecturale, je crois fermement que le code est la meilleure forme de documentation. De même, lorsque les tâches sont décomposées en unités atomiques, le code peut également servir de meilleure invite pour les scénarios d'interaction AI structurés.
Vine fournit une approche axée sur le code qui aide à générer des invites et à gérer la saisie de l'utilisateur via le code, réduisant considérablement les écarts entre les invites et le code. Cela simplifie également le processus de construction d'invites.
Avec le moins de code supplémentaire possible, Vine vous aide à créer des interactions AI plus rapidement et à gérer l'ingénierie rapide plus efficacement.
Anglais: Ajouter des dépendances, la vigne peut être trouvée via le référentiel central Maven.
Bien sûr, vous pouvez également cloner le code et le construire vous-même.
< 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 >Reportez-vous à l'utilisation de Spring IA pour terminer la configuration pertinente du modèle de chat.
Par exemple, à l'aide d'Openai, configurez-le via application.yml :
spring :
ai :
openai :
apiKey : <your-api-key> Créez une interface pour accéder à l'IA et ajoutez l'annotation @VineService . Le paramètre de méthode est la partie variable de l'entrée utilisateur, et la valeur de retour est la sortie structurée de l'IA.
Si le scénario commercial ou la structure de retour est plus complexe, vous pouvez utiliser l'annotation correspondante pour ajouter une description.
@ 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 ,
}À l'endroit où vous devez appeler AI, injecter l'interface et appeler la méthode correspondante.
@ 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...
}
} Le concept de Vine est simple. Il aide à structurer les invites et à les générer via le code, en gérant la saisie des utilisateurs tout en évitant la nécessité d'écrire manuellement les invites. Cela réduit les problèmes où les invites et le code peuvent ne pas correspondre.
TBD
TBD
TBD
TBD
TBD (pas encore fusionné)
Vine est construite sur Spring AI , qui utilise Spring Framework 6 et Spring Boot 3, donc il nécessite Java 17 ou plus pour fonctionner.
Vine soutient également Kotlin. Vine fait partie du projet Nvwa , est entièrement écrit à Kotlin . Cependant, comme Kotlin a une base d'utilisateurs plus petite, nous réécrivons Vine en Java lors de la séparation de Nvwa .
Vine est sous licence Apache, version 2.0. Voir la licence pour le texte complet de licence.