AI에 더 간단하고 효율적으로 액세스 할 수 있습니다
简体中文 · 영어
Vine 이름을 선택한 이유 이 프로젝트는 Nuwa's vine 대표하는 Nvwa 프로젝트의 일부입니다.
고대 중국 신화에서 NVWA는 창조의 여신입니다. 그녀는 노란 강에서 진흙을 사용하여 그녀의 형상으로 인간을 만들어 신성한 힘으로 생명을 불어 넣었다고합니다.
그러나 세계의 광대 한 땅은 과정이 느려지고 Nvwa 지쳤습니다. 그런 다음 그녀는 절벽에서 말린 포도 나무를 잡아 당겨 진흙에 담그고 땅을 가로 질러 뒤집었다. 진흙이 튀어 나왔을 때마다 인간은 튀어 나왔습니다. 얼마 지나지 않아 지구는 인간으로 가득 차있었습니다.
포도 나무가 Nvwa 의 인간 생성 효율성을 크게 향상시킨 것처럼 Vine Project는 개발자가 AI 상호 작용 애플리케이션을보다 효율적으로 구축 할 수 있도록 도와줍니다.
AI 상호 작용 애플리케이션을 구축 할 때는 종종 사용자 입력을 처리하고 해당 출력을 생성하며 결과를 처리해야합니다.
간단한 작업의 경우 프롬프트 템플릿을 사용하여 필요한 프롬프트를 생성 할 수 있습니다. 그러나보다 복잡한 시나리오에서는 RAG를 통해 검색된 입력, 컨텍스트, 대화 및 정보를 기반으로 상세한 프롬프트를 구축해야 할 수도 있습니다 (검색된 세대). 또한 AI의 출력을 캡처하려면 복잡한 데이터 구조가 필요할 수 있습니다.
비즈니스가 복잡할수록 사용자 입력 시나리오가 더 다양해집니다. 비즈니스가 성장함에 따라 프롬프트와 처리 논리를 지속적으로 유지해야합니다.
예를 들어, 프롬프트의 입력 또는 출력 구조를 조정하면 관련 코드뿐만 아니라 구조와 몇 개의 샷 데이터를 설명하는 프롬프트를 업데이트해야합니다.
프롬프트는 종종 코드와 분리되어 있으므로 동기화가 쉽지 않습니다. 프롬프트를 업데이트하면 오류가 발생할 수 있으며 문서가 코드와 일치하지 않을 때와 같이 복잡한 논리를 관리하는 것이 어려워집니다. AI 프롬프트 프레임 워크가 발생하는 곳입니다.
10 년이 넘는 건축 경험으로, 나는 코드가 가장 좋은 문서 형태라고 굳게 믿고 있습니다. 마찬가지로, 작업이 원자 단위로 분류되면 코드는 구조화 된 AI 상호 작용 시나리오에 가장 적합한 프롬프트 역할을 할 수 있습니다.
Vine은 코드를 통해 프롬프트를 생성하고 사용자 입력을 처리하는 데 도움이되는 코드 중심의 접근 방식을 제공하여 프롬프트와 코드 사이의 불일치를 크게 줄입니다. 이것은 또한 건축 프롬프트 과정을 단순화합니다.
추가 코드가 거의 없으면 Vine은 AI 상호 작용을 더 빨리 구축하고 프롬프트 엔지니어링을보다 효과적으로 관리하는 데 도움이됩니다.
영어 : 종속성 추가, Vine은 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 Framework 6 및 Spring Boot 3을 사용하는 Spring AI 에 제작되므로 Java 17 이상을 실행해야합니다.
Vine 또한 Kotlin을 지원합니다. Vine Nvwa 프로젝트의 일부이며 Kotlin 에 전적으로 작성되었습니다. 그러나 Kotlin 사용자 기반이 더 작기 때문에 Nvwa 에서 분리 할 때 Vine을 Java 로 다시 씁니다.
Vine Apache 라이센스 버전 2.0에 따라 라이센스가 부여됩니다. 정식 라이센스 텍스트는 라이센스를 참조하십시오.