著者: リウ・ジュン
Spring AI は Spring の公式コミュニティ プロジェクトであり、Java AI アプリケーションの開発を簡素化し、Java 開発者が Spring を使用して通常のアプリケーションを開発するのと同じように AI アプリケーションを開発できるようにすることを目的としています。
Spring Cloud Alibaba AI は Spring AI に基づいており、これに基づいて Alibaba Cloud Tongyi シリーズの大規模モデルの包括的な適応を提供し、ユーザーは Tongyi 大規模モデルに基づく Java AI アプリケーションを 5 分で開発できます。
Spring AI x Tongyi Qianwen のデモが sca.aliyun.comで開始されました
Spring AI の概要
Spring AI 公式 Web サイトによると、このプロジェクトは LangChain や LlamaIndex などの有名な Python プロジェクトからインスピレーションを得ていますが、Spring AI はこれらのプロジェクトの直接コピーではありません。 Spring AI は、Generative AI アプリケーションの次の波は Python 開発者だけでなく、多くのプログラミング言語で広く使用されるようになると考えています。
Spring AI はその中核として、Java AI アプリケーション開発の基礎として抽象化を提供し、次の機能を提供します。
- 業界で最も主流の大規模モデル サービスを含む、複数の大規模モデル サービスのドッキング機能を提供します。
- 柔軟なプロンプト テンプレートとモデル出力解析出力解析機能をサポートします。
- 対話、Vincentian 写真、Vincentian 音声などのマルチモーダル生成 AI 機能をサポートします。
- さまざまなモデル サービスおよび埋め込みサービスにアクセスするための共通でポータブルな API を提供し、同期呼び出しとストリーミング呼び出しをサポートし、特定のモデルのカスタマイズされたパラメーターの受け渡しもサポートします。
- RAG 機能をサポートする基本コンポーネント (DocumentLoader、TextSpillter、EmobeddingClient、VectorStore など)。
- AI Spring Boot Starter をサポートし、構成の自動アセンブリを実現します。
Spring Cloud Alibaba AI の概要
Spring Cloud Alibaba AI は現在、 Spring AI 0.8.1 [ 1]バージョン API に基づいてTongyi シリーズの大規模モデルへのアクセスを完了しています。 Tongyi Access は、Alibaba Cloud Lingji モデル サービス[ 2]をベースとしており、「Model-as-a-Service (MaaS)」の概念に基づいており、AI のさまざまな分野のモデルに焦点を当てています。標準化された API を介したモデル推論、モデルの微調整、トレーニングなどのサービス。
最新バージョンでは、Spring Cloud Alibaba AI は主に、対話、Vincentian 画像、Vincentian 音声などを含むいくつかの一般的な生成モデルの適応を完了しました。開発者は Spring Cloud Alibaba AI を使用して、一般的な意味ベースのチャット、画像、または音声を開発できます。このフレームワークは、OutParser、Prompt Template、Stuff などの実用的な機能も提供します。
以下は、現在公式に提供されている Spring Cloud Alibaba AI アプリケーションの開発例であり、 sca.aliyun.comにアクセスして参照できます。
- チャット会話アプリ
- ヴィンセント図アプリケーション
- ヴィンセント音声アプリケーション
- モデル出力解析 OutputParser (文字列から自動 POJO へのマッピングを実装)
- プロンプトテンプレートを使用する
- AIモデルに外部データにアクセスさせる(Prompt Stuff)
初めての Spring AI アプリケーション開発を体験する
このプロジェクトでは、Spring-cloud-starter-alibaba-ai を使用してオンライン チャット AI アプリケーションを完成させる方法を示します。Tongyi Qianwen が提供する基盤となるモデル サービスが使用されます。完全なサンプル ソース コードは、ここで参照できます[ 3]。
チャット会話アプリケーションの開発
- 2023.0.1.0 バージョンの Spring Cloud Alibaba 依存関係をプロジェクト 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>
- 次の設定を application.yml 設定ファイルに追加します。
spring:
cloud:
ai:
tongyi:
chat:
options:
# Replace the following key with a valid API-KEY.
api-key: sk-a3d73b1709bf4a178c28ed7c8b3b5axx
- チャット サービス実装クラスを作成すると、Spring AI が ChatClient と StreamingChatClient を自動的に挿入し、基礎となる一般モデルのインタラクションの詳細を保護します。
@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;
}
}
- 特定のチャット ロジックの実装を提供する
@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());
}
}
- Spring エントリ クラスを作成してアプリケーションを開始する
@SpringBootApplication
public class TongYiApplication {
public static void main(String[] args) {
SpringApplication.run(TongYiApplication.class);
}
}
この時点で、最も単純なチャット AI アプリケーションの開発が完了しました。これは、通常の Spring Boot アプリケーションの開発手順とまったく同じです。
塗布効果の検証
アプリ起動後、以下の 2 つの方法でアプリの効果を確認できます。
方法 1
ブラウザのアドレスバーに「http://localhost:8080/ai/example」と入力します。
次の応答を返します。
{
"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."
}
方法 2
resource/static ディレクトリに入り、ブラウザを使用してindex.html ファイルを開き、質問を入力して出力応答を取得します (API キーが有効であることを確認してください)。
Tongyi API-KEY を申請する
この例で Tongyi ラージ モデルに正常にアクセスできるようにするには、 Alibaba Cloud でDashScope Lingji モデル サービスをアクティブ化し、有効な API-KEY を申請して、それをアプリケーション構成ファイルに更新する必要があります。具体的な操作手順については、次のドキュメントを参照してください。
https://help.aliyun.com/zh/dashscope/developer-reference/activate-dashscope-and-create-an-api-key
これからの計画
Spring Cloud Alibaba AI の現在のバージョンでは、主に、対話、ヴィンセント グラフ、ヴィンセント スピーチなど、いくつかの一般的な生成モデルの適応が完了しています。次のバージョンでは、引き続き VectorStore、埋め込み、ETL パイプラインなどのさらなる適応を完了し、RAG などのさらに多くの AI アプリケーション開発シナリオを簡素化する予定です。
最新の動向については、引き続きhttps://sca.aliyun.comにご注目ください。 DingTalk を通じて以下の QR コードをスキャンして、コミュニティ DingTalk グループに参加することもできます。 (グループ番号: 64485010179 )
関連リンク:
[1] Spring AI 0.8.1
https://docs.spring.io/spring-ai/reference/0.8-SNAPSHOT/index.html
【2】Lingjiモデルサービス
https://help.aliyun.com/zh/dashscope/
[3] 完全なサンプルソースコード
私はオープンソースの産業用ソフトウェアを諦めることにしました - OGG 1.0 がリリースされ、Huawei がすべてのソース コードを提供しました。Google Python Foundation チームは「コード クソ マウンテン」によって解雇されました 。 Fedora Linux 40が正式リリース。有名ゲーム会社がリリース 新規定:従業員の結婚祝儀は10万元を超えてはならない。チャイナユニコム、世界初のオープンソースモデルLlama3 8B中国語版をリリース。Pinduoduoに賠償判決国内のクラウド入力方式に500万元の罰金- クラウドデータアップロードのセキュリティ問題がないのはファーウェイだけ