Autor: Liu Jun
Spring AI ist ein offizielles Community-Projekt von Spring, dessen Ziel es ist, die Entwicklung von Java-KI-Anwendungen zu vereinfachen und es Java-Entwicklern zu ermöglichen, KI-Anwendungen zu entwickeln, genau wie Spring zur Entwicklung gewöhnlicher Anwendungen zu verwenden.
Spring Cloud Alibaba AI basiert auf Spring AI und bietet auf dieser Basis eine umfassende Anpassung der großen Modelle der Alibaba Cloud Tongyi-Serie, sodass Benutzer in 5 Minuten Java-KI-Anwendungen basierend auf den großen Tongyi-Modellen entwickeln können.
Die Demo von Spring AI x Tongyi Qianwen wurde auf sca.aliyun.com gestartet
Einführung in Spring AI
Laut der offiziellen Website von Spring AI ist das Projekt von berühmten Python-Projekten wie LangChain und LlamaIndex inspiriert, Spring AI ist jedoch keine direkte Kopie dieser Projekte. Spring AI geht davon aus, dass die nächste Welle generativer KI-Anwendungen nicht nur Python-Entwicklern zur Verfügung stehen, sondern auch in vielen Programmiersprachen weit verbreitet sein wird.
Im Kern stellt Spring AI Abstraktionen als Grundlage für die Entwicklung von Java AI-Anwendungen bereit und bietet die folgenden Funktionen:
- Bietet mehrere Docking-Funktionen für große Modelldienste, einschließlich der meisten gängigen Großmodelldienste der Branche;
- Unterstützt flexibles Parsen von Eingabeaufforderungsvorlagen und Modellausgaben; Ausgabeparsing-Funktionen;
- Unterstützung multimodaler generativer KI-Funktionen wie Dialoge, vinzentinische Bilder, vinzentinische Sprache usw.;
- Bietet eine gemeinsame und portable API für den Zugriff auf verschiedene Modelldienste und Einbettungsdienste, unterstützt synchrone und Streaming-Aufrufe und unterstützt auch die Übergabe benutzerdefinierter Parameter bestimmter Modelle;
- Grundlegende Komponenten, die RAG-Funktionen unterstützen, einschließlich DocumentLoader, TextSpillter, EmobeddingClient, VectorStore usw.;
- Unterstützen Sie AI Spring Boot Starter, um die automatische Konfigurationsassemblierung zu realisieren.
Einführung in Spring Cloud Alibaba AI
Spring Cloud Alibaba AI vervollständigt derzeit den Zugriff auf die Tongyi-Serie großer Modelle basierend auf der Spring AI 0.8.1 [ 1] -Versions-API. Tongyi Access basiert auf dem Alibaba Cloud Lingji Model Service [ 2] , der auf dem Konzept „Model-as-a-Service (MaaS)“ basiert und sich auf Modelle in verschiedenen Bereichen der KI konzentriert Dienstleistungen einschließlich Modellinferenz, Modellfeinabstimmung und Schulung über standardisierte APIs.
In der neuesten Version hat Spring Cloud Alibaba AI hauptsächlich die Anpassung mehrerer gängiger generativer Modelle abgeschlossen, darunter Dialoge, vinzentinische Bilder, vinzentinische Sprache usw. Entwickler können Spring Cloud Alibaba AI verwenden, um allgemeine bedeutungsbasierte Chats, Bilder oder Sprache zu entwickeln Neben KI-Anwendungen der neuesten Generation bietet das Framework auch praktische Funktionen wie OutParser, Prompt Template und Stuff.
Im Folgenden finden Sie die derzeit offiziell bereitgestellten Entwicklungsbeispiele für Spring Cloud Alibaba AI-Anwendungen, die unter sca.aliyun.com eingesehen werden können .
- Chat-Konversationsanwendung
- Vincent-Diagrammanwendung
- Vincent Voice-Anwendung
- Parsen der Modellausgabe OutputParser (Implementierung der Zuordnung von String zu automatischem POJO)
- Verwenden Sie eine Eingabeaufforderungsvorlage
- Lassen Sie das KI-Modell auf externe Daten zugreifen (Prompt Stuff)
Erleben Sie die erste Spring AI-Anwendungsentwicklung
Dieses Projekt zeigt, wie man mit spring-cloud-starter-alibaba-ai eine Online-Chat-KI-Anwendung fertigstellt. Der zugrunde liegende Modelldienst wird von Tongyi Qianwen verwendet. Der vollständige Beispielquellcode kann hier eingesehen werden [ 3] .
Entwickeln Sie Chat-Konversationsanwendungen
- Fügen Sie die Spring Cloud Alibaba-Abhängigkeit der Version 2023.0.1.0 zum Projekt pom.xml hinzu:
<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>
- Fügen Sie der Konfigurationsdatei application.yml die folgende Konfiguration hinzu:
spring:
cloud:
ai:
tongyi:
chat:
options:
# Replace the following key with a valid API-KEY.
api-key: sk-a3d73b1709bf4a178c28ed7c8b3b5axx
- Schreiben Sie eine Chat-Service-Implementierungsklasse, und Spring AI fügt automatisch ChatClient ein und StreamingChatClient schützt die Interaktionsdetails des zugrunde liegenden allgemeinen Modells.
@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;
}
}
- Stellen Sie eine spezifische Implementierung der Chat-Logik bereit
@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());
}
}
- Schreiben Sie die Spring-Einstiegsklasse und starten Sie die Anwendung
@SpringBootApplication
public class TongYiApplication {
public static void main(String[] args) {
SpringApplication.run(TongYiApplication.class);
}
}
Zu diesem Zeitpunkt ist die einfachste Chat-KI-Anwendungsentwicklung abgeschlossen, die genau den normalen Entwicklungsschritten für Spring Boot-Anwendungen entspricht!
Überprüfen Sie den Anwendungseffekt
Nach dem Starten der Anwendung können Sie den Anwendungseffekt auf zwei Arten überprüfen.
Methode eins
Geben Sie in die Adressleiste des Browsers ein: http://localhost:8080/ai/example
Gibt die folgende Antwort zurück:
{
"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."
}
Methode 2
Geben Sie das Verzeichnis resources/static ein, öffnen Sie mit einem Browser die Datei index.html, geben Sie die Frage ein und erhalten Sie die Ausgabeantwort (stellen Sie sicher, dass der API-Schlüssel gültig ist):
Beantragen Sie den Tongyi API-KEY
Damit das Beispiel normal auf das Tongyi-Großmodell zugreifen kann, müssen Sie den DashScope Lingji-Modelldienst in Alibaba Cloud aktivieren , einen gültigen API-KEY beantragen und ihn in der Anwendungskonfigurationsdatei aktualisieren. Spezifische Bedienschritte finden Sie in den folgenden Dokumenten:
https://help.aliyun.com/zh/dashscope/developer-reference/activate-dashscope-and-create-an-api-key
Zukunftsplan
Die aktuelle Version von Spring Cloud Alibaba AI vervollständigt hauptsächlich die Anpassung mehrerer gängiger generativer Modelle, darunter Dialog, vinzentinisches Diagramm, vinzentinische Sprache usw. In der nächsten Version werden wir weitere Anpassungen wie VectorStore, Embedding und ETL Pipeline durchführen und weitere KI-Anwendungsentwicklungsszenarien wie RAG vereinfachen.
Bitte achten Sie weiterhin auf https://sca.aliyun.com, um sich über die neuesten Entwicklungen zu informieren. Sie können auch gerne den untenstehenden QR-Code über DingTalk scannen, um der Community-DingTalk-Gruppe beizutreten. (Gruppennummer: 64485010179 )
Verwandte Links:
[1] Frühlings-KI 0.8.1
https://docs.spring.io/spring-ai/reference/0.8-SNAPSHOT/index.html
[2] Lingji-Modellservice
https://help.aliyun.com/zh/dashscope/
[3] Vollständiger Beispielquellcode
Ich beschloss , auf Open-Source -Industriesoftware zu verzichten – OGG 1.0 wurde veröffentlicht, das Team von Ubuntu 24.04 LTS wurde offiziell entlassen ". Fedora Linux 40 wurde offiziell veröffentlicht. Ein bekanntes Spieleunternehmen veröffentlichte neue Vorschriften: Hochzeitsgeschenke von Mitarbeitern dürfen 100.000 Yuan nicht überschreiten. China Unicom veröffentlicht die weltweit erste chinesische Llama3 8B-Version des Open-Source-Modells. Pinduoduo wird zur Entschädigung verurteilt 5 Millionen Yuan für unlauteren Wettbewerb. Inländische Cloud-Eingabemethode – nur Huawei hat keine Sicherheitsprobleme beim Hochladen von Cloud-Daten