Torna o acesso à IA mais simples e mais eficiente
简体中文 · Inglês
Vine Este projeto faz parte do projeto Nvwa , representando Nuwa's vine .
Na mitologia chinesa antiga, NVWA é a deusa da criação. Dizem que ela usou a lama do rio amarelo para criar humanos à sua imagem, respirando a vida deles com seus poderes divinos.
No entanto, a vasta terra do mundo o processo lenta e Nvwa ficou exausta. Ela então puxou uma videira seca de um penhasco, mergulhou -a na lama e jogou -a no chão. Onde quer que a lama escorregasse, os humanos surgiram. Em pouco tempo, a terra estava cheia de seres humanos.
Assim como a videira aumentou bastante a eficiência da Nvwa na criação de seres humanos, o Projeto Vine visa ajudar os desenvolvedores a criar aplicativos de interação de IA com mais eficiência.
Ao criar aplicativos de interação AI, geralmente precisamos lidar com a entrada do usuário, gerar saídas correspondentes e processar os resultados.
Para tarefas simples, podemos usar modelos rápidos para gerar os avisos necessários. No entanto, em cenários mais complexos, podemos precisar criar instruções detalhadas com base em insumos, contexto, conversas e informações recuperadas através do RAG (geração de recuperação upmentada por recuperação). Além disso, podemos precisar de estruturas de dados complexas para capturar a saída da IA.
Quanto mais complexo o negócio, mais variado os cenários de entrada do usuário se tornam. À medida que os negócios crescem, precisamos manter continuamente as instruções e sua lógica de manuseio.
Por exemplo, se ajustarmos a estrutura de entrada ou saída de um prompt, não precisamos apenas atualizar o código relacionado, mas também o prompt que descreve a estrutura e todos os dados de tiro vinculados a ele.
Como os avisos geralmente são separados do código, é fácil para eles ficarem fora de sincronia. A atualização de avisos pode levar a erros, e o gerenciamento da lógica complexa se torna mais difícil, assim como quando a documentação não corresponde ao código. É aqui que surge a necessidade de uma estrutura de prompt IA.
Com mais de uma década de experiência arquitetônica, acredito firmemente que o código é a melhor forma de documentação. Da mesma forma, quando as tarefas são divididas em unidades atômicas, o código também pode servir como o melhor prompt para cenários estruturados de interação da IA.
O Vine fornece uma abordagem orientada a código que ajuda a gerar prompts e lidar com a entrada do usuário através do código, reduzindo significativamente as discrepâncias entre prompts e código. Isso também simplifica o processo de construção de instruções.
Com o menor código extra possível, o Vine ajuda a criar interações de IA mais rapidamente e gerenciar a engenharia imediata com mais eficiência.
Inglês: Adicionar dependências, a videira pode ser encontrada através do repositório central do MAVEN.
Obviamente, você também pode clonar o código e construí -lo sozinho.
< 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 o uso da Spring AI para concluir a configuração relevante do modelo de bate -papo.
Por exemplo, usando o OpenAI, configure -o através application.yml :
spring :
ai :
openai :
apiKey : <your-api-key> Crie uma interface para acessar a IA e adicione a anotação @VineService . O parâmetro do método é a parte variável da entrada do usuário e o valor de retorno é a saída estruturada da IA.
Se o cenário de negócios ou a estrutura de retorno for mais complexa, você poderá usar a anotação correspondente para adicionar uma descrição.
@ 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 ,
}No local onde você precisa chamar a IA, injete a interface e chame o método correspondente.
@ 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...
}
} O conceito de Vine é direto. Ajuda a estruturar solicitações e gerá -los através do código, manipulando a entrada do usuário, evitando a necessidade de escrever manualmente os prompts. Isso reduz os problemas em que as instruções e o código podem não corresponder.
TBD
TBD
TBD
TBD
TBD (ainda não mesclado)
Vine é construído no Spring AI , que usa Spring Framework 6 e Spring Boot 3, por isso requer Java 17 ou superior para executar.
Vine também suporta Kotlin. Vine faz parte do projeto Nvwa , está escrita inteiramente em Kotlin . No entanto, como Kotlin possui uma base de usuários menor, reescrevemos a videira em Java ao separá -la do Nvwa .
Vine é licenciado sob a licença Apache, versão 2.0. Consulte a licença para o texto completo da licença.