阿裡也出手了!Spring CloudAlibaba AI問世了

来源:https://www.cnblogs.com/xiezhr/p/18251683
-Advertisement-
Play Games

寫在前面 在之前的文章中我們有介紹過SpringAI這個項目。SpringAI 是Spring 官方社區項目,旨在簡化 Java AI 應用程式開發, 讓 Java 開發者想使用 Spring 開發普通應用一樣開發 AI 應用。 而SpringAI 主要面向的是國外的各種大模型接入,對於國內開發者可 ...


寫在前面

在之前的文章中我們有介紹過SpringAI這個項目。SpringAI 是Spring 官方社區項目,旨在簡化 Java AI 應用程式開發,

讓 Java 開發者想使用 Spring 開發普通應用一樣開發 AI 應用。

SpringAI 主要面向的是國外的各種大模型接入,對於國內開發者可能不太友好。

於是乎,Spring Cloud Alibaba AI 便問世了,Spring Cloud Alibaba AI 以 Spring AI 為基礎,併在此基礎上提供阿裡雲同義系列大模型全面適配,

讓用戶在 5 分鐘內開發基於同義大模型的 Java AI 應用。

一、Spring AI 簡介

可能有些小伙伴已經忘記了SpringAI 是啥?我們這兒再來簡單回顧一下。

Spring AI是一個面向AI工程的應用框架。其目標是將可移植性和模塊化設計等設計原則應用於AI領域的Spring生態系統,

並將POJO作為應用程式的構建塊推廣到AI領域。

轉換為人話來說就是:Spring出了一個AI框架,幫助我們快速調用AI,從而實現各種功能場景。

二、Spring Cloud Alibaba AI 簡介

Spring Cloud Alibaba AISpring AI 為基礎,併在此基礎上,基於 Spring AI 0.8.1 版本 API 完成同義系列大模型的接入

實現阿裡雲同義系列大模型全面適配。

在當前最新版本中,Spring Cloud Alibaba AI 主要完成了幾種常見生成式模型的適配,包括對話、文生圖、文生語音等,

開發者可以使用 Spring Cloud Alibaba AI 開發基於同義的聊天、圖片或語音生成 AI 應用,

框架還提供 OutParserPrompt TemplateStuff 等實用能力。

三、第一個Spring AI應用開發

① 新建maven 項目

註: 在創建項目的時候,jdk版本必須選擇17+

新建maven項目

② 添加依賴

<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>

<dependency>
    <groupId>com.alibaba.cloud</groupId>
    <artifactId>spring-cloud-starter-alibaba-ai</artifactId>
    <version>2023.0.1.0</version>
</dependency>

註: 這裡我們需要配置鏡像源,否則是沒法下載依賴的。會報如下錯誤

spring-ai: 0.8.1 dependency not found

<repositories>
    <repository>
        <id>spring-milestones</id>
        <name>Spring Milestones</name>
        <url>https://repo.spring.io/milestone</url>
        <snapshots>
            <enabled>false</enabled>
        </snapshots>
    </repository>
</repositories>

③ 在 application.yml 配置文件中添加api-key

spring:
  cloud:
    ai:
      tongyi:
        api-key: 你自己申請的api-key

小伙伴如果不知道在哪申請,我把申請鏈接也放這兒了

https://dashscope.console.aliyun.com/apiKey

操作步驟:https://help.aliyun.com/zh/dashscope/developer-reference/activate-dashscope-and-create-an-api-key

④ 新建TongYiController 類,代碼如下

@RestController
@RequestMapping("/ai")
@CrossOrigin
@Slf4j
public class TongYiController {

    @Autowired
    @Qualifier("tongYiSimpleServiceImpl")
    private TongYiService tongYiSimpleService;

    @GetMapping("/example")
    public String completion(@RequestParam(value = "message", defaultValue = "Tell me a joke") String message) {

        return tongYiSimpleService.completion(message);
    }
    
}

⑤ 新建TongYiService 介面,代碼如下

public interface TongYiService {
    String completion(String message);

}

⑥ 新建TongYiSimpleServiceImpl 實現類,代碼如下

@Service
@Slf4j
public  class TongYiSimpleServiceImpl  implements TongYiService {

    private final ChatClient chatClient;

    @Autowired
    public TongYiSimpleServiceImpl(ChatClient chatClient, StreamingChatClient streamingChatClient) {
        this.chatClient = chatClient;
    }

    @Override
    public String completion(String message) {
        Prompt prompt = new Prompt(new UserMessage(message));

        return chatClient.call(prompt).getResult().getOutput().getContent();
    }


}

到這兒我們一個簡單的AI應用已經開發完成了,最終項目結構如下

項目結構

四、運行AI應用

啟動服務,我們只需要在瀏覽器中輸入:http://localhost:8080/ai/example 即可與AI交互。

① 不帶message參數,則message=Tell me a joke,應用隨機返回一個笑話

隨機講一個笑話1

② 我們在瀏覽器中輸入:http://localhost:8080/ai/example?message=對話內容

message帶入

五、前端頁面對話模式

我們只更加在resources/static 路徑下添加一個index.html前端頁面,即可擁有根據美觀的交互體驗。

index.html代碼官方github倉庫中已給出樣例,由於代碼比較長,這裡就不貼代碼了

https://github.com/alibaba/spring-cloud-alibaba/blob/2023.x/spring-cloud-alibaba-examples/ai-example/spring-cloud-ai-example/src/main/resources/static/index.html

添加完靜態頁面之後,我們瀏覽器中輸入:http://localhost:8080/index.html 就可以得到一個美觀的交互界面

美觀交互界面

接下來,我們來實際體驗一下

UI交互

六、其他模型

上面章節中我們只簡單體驗了對話模型,阿裡還有很多其他模型。由於篇幅原因這裡就不一一帶大家一起體驗了。

應用場景:

應用場景

各個模型概述:

模型概述

七、怎麼樣快速接入大模型

各種應用場景阿裡官方GitHub都給出了接入例子

https://github.com/alibaba/spring-cloud-alibaba/tree/2023.x/spring-cloud-alibaba-examples/ai-example/spring-cloud-ai-example

官方樣例

感興趣的小伙伴可以自己到上面github 倉庫看代碼研究

本期內容到這兒就結束了,★,°:.☆( ̄▽ ̄)/$:.°★ 。 希望對您有所幫助

我們下期再見 ヾ(•ω•`)o (●'◡'●)

本文來自博客園,作者:xiezhr,轉載請註明原文鏈接:https://www.cnblogs.com/xiezhr/p/18251683


您的分享是我們最大的動力!

-Advertisement-
Play Games
更多相關文章
  • 最近項目中使用了PowerJob做任務調度模塊,感覺這個框架真香,今天我們就來深入瞭解一下新一代的定時任務框架——PowerJob! 簡介 PowerJob是基於java開發的企業級的分散式任務調度平臺,與xxl-job一樣,基於web頁面實現任務調度配置與記錄,使用簡單,上手快速,其主要功能特性如 ...
  • 百度的,後面再補一個Linux文檔操作手冊,是不是很大膽? 準備工作 1、首先得有兩個軟體Xftp(用來上傳文件到)和XShell(連接伺服器執行命令) 2、Linux上有JDK(怎麼安裝可以轉到Linux安裝JDK流程) 3、項目的JAR包 項目jar包 導jar <build> <plugins ...
  • 本文介紹基於Python中GDAL模塊,實現基於一景柵格影像,對另一景柵格影像的像元數值加以疊加提取的方法。 本文期望實現的需求為:現有一景表示6種不同植被類型的.tif格式柵格數據,以及另一景與前述柵格數據同區域的、表示植被參數的.tif格式柵格數據;我們希望基於前者中的植被類型數據,分別提取6種 ...
  • 首發地址: https://mp.weixin.qq.com/s/w6v3RhqN0hJlWYlqTzGCxA 前言 之前在PC微信逆向) 定位微信瀏覽器打開鏈接的call提過要寫一個保存公眾號歷史文章的工具。這篇文章先寫一個將文章保存成pdf和html的工具,後面再補充一個採集歷史的工具,搭配使用 ...
  • ​記錄下FFmpeg的學習筆記目錄,完整的FFmpeg開發實戰內容詳見《FFmpeg開發實戰:從零基礎到短視頻上線》一書。 下麵是補充的FFmpeg開發筆記內容目錄,主要是對《FFmpeg開發實戰:從零基礎到短視頻上線》一書的進階增補。 第一章 Linux環境編譯FFmpeg FFmpeg開發筆記( ...
  • 目錄條款32:確定你的public繼承塑模出is-a關係(Make sure public inheritance models “is-a”)public繼承的含義設計良好的繼承關係is-a的例外條款33:避免遮掩繼承而來的名稱(Avoid hiding inherited names)作用域的隱 ...
  • Python中有三種比較常見的方法類型,如類方法和靜態方法,實例方法,他們是面向對象編程中重要的概念。 1.類方法 類方法是通過使用裝飾器@classmethod來定義的,他的第一個參數是cls,指向類本身,允許我們在方法中操作類的屬性或調用其他類方法。 類方法的使用:類方法可以通過類名和實例對象來 ...
  • 大家好,我是碼農先森。 之前有朋友讓我分享從 PHP 轉 Go 的經歷,這次它來了。我主要從模仿、進階、應用這三個方面來描述轉 Go 的經歷及心得。模仿是良好的開端,進階是艱難的成長,應用是認知的提升。希望我的經歷對大家能有所啟發。 模仿 著名藝術家畢加索說過「模仿是人類一切學習的開端,然後才是創新 ...
一周排行
    -Advertisement-
    Play Games
  • 前言 推薦一款基於.NET 8、WPF、Prism.DryIoc、MVVM設計模式、Blazor以及MySQL資料庫構建的企業級工作流系統的WPF客戶端框架-AIStudio.Wpf.AClient 6.0。 項目介紹 框架採用了 Prism 框架來實現 MVVM 模式,不僅簡化了 MVVM 的典型 ...
  • 先看一下效果吧: 我們直接通過改造一下原版的TreeView來實現上面這個效果 我們先創建一個普通的TreeView 代碼很簡單: <TreeView> <TreeViewItem Header="人事部"/> <TreeViewItem Header="技術部"> <TreeViewItem He ...
  • 1. 生成式 AI 簡介 https://imp.i384100.net/LXYmq3 2. Python 語言 https://imp.i384100.net/5gmXXo 3. 統計和 R https://youtu.be/ANMuuq502rE?si=hw9GT6JVzMhRvBbF 4. 數 ...
  • 本文為大家介紹下.NET解壓/壓縮zip文件。雖然解壓縮不是啥核心技術,但壓縮性能以及進度處理還是需要關註下,針對使用較多的zip開源組件驗證,給大家提供個技術選型參考 之前在《.NET WebSocket高併發通信阻塞問題 - 唐宋元明清2188 - 博客園 (cnblogs.com)》講過,團隊 ...
  • 之前寫過兩篇關於Roslyn源生成器生成源代碼的用例,今天使用Roslyn的代碼修複器CodeFixProvider實現一個cs文件頭部註釋的功能, 代碼修複器會同時涉及到CodeFixProvider和DiagnosticAnalyzer, 實現FileHeaderAnalyzer 首先我們知道修 ...
  • 在軟體行業,經常會聽到一句話“文不如表,表不如圖”說明瞭圖形在軟體應用中的重要性。同樣在WPF開發中,為了程式美觀或者業務需要,經常會用到各種個樣的圖形。今天以一些簡單的小例子,簡述WPF開發中幾何圖形(Geometry)相關內容,僅供學習分享使用,如有不足之處,還請指正。 ...
  • 在 C# 中使用 RabbitMQ 通過簡訊發送重置後的密碼到用戶的手機號上,你可以按照以下步驟進行 1.安裝 RabbitMQ 客戶端庫 首先,確保你已經安裝了 RabbitMQ 客戶端庫。你可以通過 NuGet 包管理器來安裝: dotnet add package RabbitMQ.Clien ...
  • 1.下載 Protocol Buffers 編譯器(protoc) 前往 Protocol Buffers GitHub Releases 頁面。在 "Assets" 下找到適合您系統的壓縮文件,通常為 protoc-{version}-win32.zip 或 protoc-{version}-wi ...
  • 簡介 在現代微服務架構中,服務發現(Service Discovery)是一項關鍵功能。它允許微服務動態地找到彼此,而無需依賴硬編碼的地址。以前如果你搜 .NET Service Discovery,大概率會搜到一大堆 Eureka,Consul 等的文章。現在微軟為我們帶來了一個官方的包:Micr ...
  • ZY樹洞 前言 ZY樹洞是一個基於.NET Core開發的簡單的評論系統,主要用於大家分享自己心中的感悟、經驗、心得、想法等。 好了,不賣關子了,這個項目其實是上班無聊的時候寫的,為什麼要寫這個項目呢?因為我單純的想吐槽一下工作中的不滿而已。 項目介紹 項目很簡單,主要功能就是提供一個簡單的評論系統 ...