Autor: Liu Jun
Spring AI es un proyecto comunitario oficial de Spring, cuyo objetivo es simplificar el desarrollo de aplicaciones Java AI y permitir a los desarrolladores de Java desarrollar aplicaciones AI como si usaran Spring para desarrollar aplicaciones normales.
Spring Cloud Alibaba AI se basa en Spring AI y, sobre esta base, proporciona una adaptación integral de los modelos grandes de la serie Alibaba Cloud Tongyi, lo que permite a los usuarios desarrollar aplicaciones Java AI basadas en modelos grandes de Tongyi en 5 minutos.
La demostración de Spring AI x Tongyi Qianwen se lanzó en sca.aliyun.com
Introducción a la IA de primavera
Según el sitio web oficial de Spring AI, el proyecto está inspirado en proyectos famosos de Python como LangChain y LlamaIndex, pero Spring AI no es una copia directa de estos proyectos. Spring AI cree que la próxima ola de aplicaciones de IA generativa no solo estará disponible para los desarrolladores de Python, sino que también será ampliamente utilizada en muchos lenguajes de programación.
En esencia, Spring AI proporciona abstracciones como base para desarrollar aplicaciones Java AI, proporcionando las siguientes capacidades:
- Proporciona múltiples capacidades de acoplamiento de servicios de modelos grandes, incluidos la mayoría de los servicios de modelos grandes convencionales de la industria;
- Admite plantillas flexibles de avisos y capacidades de análisis de resultados de modelos;
- Apoyar capacidades de IA generativa multimodal, como diálogo, imágenes vicencianas, discurso vicenciano, etc.;
- Proporciona una API común y portátil para acceder a varios servicios de modelos y servicios de incrustación, admite llamadas sincrónicas y de transmisión y también admite el paso de parámetros personalizados de modelos específicos;
- Componentes básicos que admiten capacidades RAG, incluidos DocumentLoader, TextSpillter, EmobeddingClient, VectorStore, etc.;
- Admite AI Spring Boot Starter para realizar el ensamblaje automático de la configuración.
Introducción a Spring Cloud Alibaba AI
Spring Cloud Alibaba AI actualmente completa el acceso a la serie Tongyi de modelos grandes basados en la versión API Spring AI 0.8.1 [ 1] . Tongyi Access se basa en Alibaba Cloud Lingji Model Service [ 2] Lingji Model Service se basa en el concepto de "Modelo como servicio (MaaS)" y se centra en modelos en varios campos de la IA. servicios que incluyen inferencia de modelos, ajuste de modelos y capacitación a través de API estandarizadas.
En la última versión, Spring Cloud Alibaba AI ha completado principalmente la adaptación de varios modelos generativos comunes, incluido el diálogo, imágenes vicencianas, discurso vicenciano, etc. Los desarrolladores pueden usar Spring Cloud Alibaba AI para desarrollar chat, imágenes o discursos generales basados en significado. aplicaciones de IA de generación, el marco también proporciona capacidades prácticas como OutParser, Prompt Template y Stuff.
Los siguientes son ejemplos de desarrollo de aplicaciones de IA de Spring Cloud Alibaba proporcionados oficialmente actualmente, que se pueden ver visitando sca.aliyun.com .
- Aplicación de conversación por chat
- Aplicación del diagrama de Vincent.
- Aplicación de voz de Vicente
- Análisis de salida del modelo OutputParser (implementando el mapeo de String a POJO automático)
- Usar plantilla de aviso
- Permitir que el modelo de IA acceda a datos externos (Prompt Stuff)
Experimente el primer desarrollo de aplicaciones Spring AI
Este proyecto demuestra cómo usar spring-cloud-starter-alibaba-ai para completar una aplicación de IA de chat en línea. Se utiliza el servicio modelo subyacente proporcionado por Tongyi Qianwen. El código fuente de muestra completo se puede ver aquí [ 3] .
Desarrollar aplicaciones de conversación por chat.
- Agregue la dependencia Spring Cloud Alibaba de la versión 2023.0.1.0 al proyecto pom.xml:
<dependencyManagement>
<dependencies>
<dependency>
<groupId>com.alibaba.cloud</groupId>
<artifactId>spring-cloud-alibaba-dependencies</artifactId>
<version>2023.0.1.0</version>
<type>pom</type>
<scope>import</scope>
</dependency>
</dependencies>
</dependencyManagement>
<dependencies>
<dependency>
<groupId>com.alibaba.cloud</groupId>
<artifactId>spring-cloud-starter-alibaba-ai</artifactId>
</dependency>
</dependencies>
- Agregue la siguiente configuración al archivo de configuración application.yml:
spring:
cloud:
ai:
tongyi:
chat:
options:
# Replace the following key with a valid API-KEY.
api-key: sk-a3d73b1709bf4a178c28ed7c8b3b5axx
- Escriba una clase de implementación de servicio de chat y Spring AI inyectará automáticamente ChatClient y StreamingChatClient protegerá los detalles de interacción del modelo general subyacente.
@Service
public class TongYiSimpleServiceImpl extends AbstractTongYiServiceImpl {
private final ChatClient chatClient;
private final StreamingChatClient streamingChatClient;
@Autowired
public TongYiSimpleServiceImpl(ChatClient chatClient, StreamingChatClient streamingChatClient) {
this.chatClient = chatClient;
this.streamingChatClient = streamingChatClient;
}
}
- Proporcionar una implementación de lógica de chat específica
@Service
public class TongYiSimpleServiceImpl extends AbstractTongYiServiceImpl {
// ......
@Override
public String completion(String message) {
Prompt prompt = new Prompt(new UserMessage(message));
return chatClient.call(prompt).getResult().getOutput().getContent();
}
@Override
public Map<String, String> streamCompletion(String message) {
StringBuilder fullContent = new StringBuilder();
streamingChatClient.stream(new Prompt(message))
.flatMap(chatResponse -> Flux.fromIterable(chatResponse.getResults()))
.map(content -> content.getOutput().getContent())
.doOnNext(fullContent::append)
.last()
.map(lastContent -> Map.of(message, fullContent.toString()))
.block();
log.info(fullContent.toString());
return Map.of(message, fullContent.toString());
}
}
- Escriba la clase de entrada de Spring e inicie la aplicación.
@SpringBootApplication
public class TongYiApplication {
public static void main(String[] args) {
SpringApplication.run(TongYiApplication.class);
}
}
En este punto, se ha completado el desarrollo de la aplicación AI de chat más simple, ¡que es exactamente lo mismo que los pasos normales de desarrollo de la aplicación Spring Boot!
Verificar el efecto de la aplicación
Después de iniciar la aplicación, puede verificar el efecto de la aplicación de las dos maneras siguientes.
método uno
Ingrese en la barra de direcciones del navegador: http://localhost:8080/ai/example
Devuelve la siguiente respuesta:
{
"Tell me a joke": "Sure, here's a classic one for you:\n\nWhy was the math book sad?\n\nBecause it had too many problems.\n\nI hope that made you smile! If you're looking for more, just let me know."
}
Método 2
Ingrese al directorio resources/static, use un navegador para abrir el archivo index.html, ingrese la pregunta y obtenga la respuesta de salida (asegúrese de que la clave API sea válida):
Solicite la CLAVE API de Tongyi
Para que el ejemplo pueda acceder al modelo grande de Tongyi normalmente, debe activar el servicio del modelo DashScope Lingji en Alibaba Cloud , solicitar una API-KEY válida y actualizarla al archivo de configuración de la aplicación. Para conocer los pasos de operación específicos, consulte los siguientes documentos:
https://help.aliyun.com/zh/dashscope/developer-reference/activate-dashscope-and-create-an-api-key
plan futuro
La versión actual de Spring Cloud Alibaba AI completa principalmente la adaptación de varios modelos generativos comunes, incluido el diálogo, los gráficos vicencianos, el discurso vicenciano, etc. En la próxima versión, continuaremos completando más adaptaciones como VectorStore, Embedding y ETL Pipeline, y simplificaremos más escenarios de desarrollo de aplicaciones de IA como RAG.
Continúe prestando atención a https://sca.aliyun.com para conocer los últimos desarrollos. También puede escanear el código QR a continuación a través de DingTalk para unirse al grupo comunitario de DingTalk. (Número de grupo: 64485010179 )
Enlaces relacionados:
[1] Primavera AI 0.8.1
https://docs.spring.io/spring-ai/reference/0.8-SNAPSHOT/index.html
[2] Servicio modelo Lingji
https://help.aliyun.com/zh/dashscope/
[3] Código fuente de muestra completo
Decidí renunciar al software industrial de código abierto. Eventos importantes: se lanzó OGG 1.0, Huawei contribuyó con todo el código fuente y se lanzó oficialmente Ubuntu 24.04. El equipo de la Fundación Google Python fue despedido por la "montaña de código de mierda" . ". Se lanzó oficialmente Fedora Linux 40. Una conocida compañía de juegos lanzó Nuevas regulaciones: los obsequios de boda de los empleados no deben exceder los 100.000 yuanes. China Unicom lanza la primera versión china Llama3 8B del mundo del modelo de código abierto. Pinduoduo es sentenciado a compensar 5 millones de yuanes por competencia desleal. Método de entrada en la nube nacional: solo Huawei no tiene problemas de seguridad para cargar datos en la nube.