Делает доступ к ИИ проще и эффективнее
简体中文 · английский
Vine Этот проект является частью проекта Nvwa , представляющего Nuwa's vine .
В древней китайской мифологии NVWA является богиней творения. Говорят, что она использовала грязь из Желтой реки, чтобы создать людей на своем образе, вдыхая жизнь в них своими божественными способностями.
Тем не менее, огромная страна мира, процесс медленно, и Nvwa оставался истощенной. Затем она вытащила высушенную лозу со скалы, погрузила ее в грязь и бросила по земле. Везде, где грязь разбрызгивалась, люди вскочили. Вскоре земля была наполнена людьми.
Подобно тому, как виноградная лоза значительно повысила эффективность Nvwa в создании людей, проект Vine стремится помочь разработчикам более эффективно создавать приложения взаимодействия с ИИ.
При создании приложений взаимодействия ИИ нам часто нужно обрабатывать пользовательские вводы, генерировать соответствующие выходы и обрабатывать результаты.
Для простых задач мы можем использовать шаблоны быстрого приглашения для генерации необходимых подсказок. Тем не менее, в более сложных сценариях нам может потребоваться создать подробные подсказки на основе входов, контекста, разговоров и информации, полученной через RAG (поколение поиска-аугментирования). Кроме того, нам могут понадобиться сложные структуры данных, чтобы захватить выход ИИ.
Чем сложнее бизнес, тем более разнообразными становятся сценарии ввода пользователя. По мере роста бизнеса мы должны постоянно поддерживать подсказки и их логику обработки.
Например, если мы настраиваем входную или выводную структуру подсказки, нам нужно не только обновить соответствующий код, но и подсказку, которая описывает структуру и любые данные, связанные с ним, связанные с ним.
Поскольку подсказки часто отделены от кода, им легко стать вне синхронизации. Обновление подсказок может привести к ошибкам, а управление сложной логикой становится сложнее, так же, как когда документация не соответствует коду. Вот где возникает необходимость в быстрого рамки AI.
С учетом более десяти лет архитектурного опыта, я твердо верю, что код является лучшей формой документации. Точно так же, когда задачи разбиваются на атомные единицы, код также может служить лучшей подсказкой для структурированных сценариев взаимодействия с ИИ.
Vine предоставляет подход, управляемый кодом, который помогает генерировать подсказки и обрабатывать пользовательский ввод через код, значительно снижая расхождения между проведениями и кодом. Это также упрощает процесс строительства подсказок.
С максимально небольшим дополнительным кодом, Vine помогает вам быстрее создавать взаимодействие ИИ и более эффективно управлять быстрым инженером.
Английский: добавить зависимости, лоза можно найти через центральный репозиторий 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 . Параметр метода является переменной частью пользовательского ввода, а возвращаемое значение является структурированным выходом 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 ,
}В месте, где вам нужно вызовать ИИ, введите интерфейс и вызовите соответствующий метод.
@ 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. Смотрите лицензию для полной лицензии.