自拍偷在线精品自拍偷,亚洲欧美中文日韩v在线观看不卡

Spring AI 再更新:如何借助全局參數(shù)實(shí)現(xiàn)智能數(shù)據(jù)庫操作與個(gè)性化待辦管理

人工智能
在本文中,我們深入探討了如何利用 Spring AI 的新功能,特別是全局參數(shù)和增強(qiáng)函數(shù)調(diào)用能力,來構(gòu)建一個(gè)智能化的個(gè)人助理系統(tǒng)。

引言

好的,今天我們繼續(xù)聊一下Spring AI的相關(guān)內(nèi)容。在10月的時(shí)候,我使用Spring AI搭建了一個(gè)簡(jiǎn)易版的個(gè)人助理系統(tǒng),整體來說效果還是非常不錯(cuò)的。通過這次嘗試,我對(duì)業(yè)務(wù)系統(tǒng)與AI結(jié)合的探索有了更為明確的理解和實(shí)踐。雖然目前功能上還相對(duì)簡(jiǎn)單,整體系統(tǒng)也缺乏較多可操作的交互方式,特別是在數(shù)據(jù)庫操作方面,功能較為基礎(chǔ),目前主要實(shí)現(xiàn)了一個(gè)簡(jiǎn)單的查詢功能。

但就在10月末,Spring AI迎來了一個(gè)重要的更新,更新后不僅增強(qiáng)了函數(shù)調(diào)用的能力,還引入了全局參數(shù)的概念。這兩個(gè)新特性為系統(tǒng)的擴(kuò)展性和可玩性帶來了極大的提升,開啟了更多可能性。

圖片圖片

那么,今天我們就利用這個(gè)全局參數(shù)的特性,來實(shí)現(xiàn)一個(gè)數(shù)據(jù)庫插件。具體來說,我們將實(shí)現(xiàn)一個(gè)完整的增刪改查(CRUD)操作。對(duì)于目前的智能體系統(tǒng)來說,數(shù)據(jù)庫操作已經(jīng)是一個(gè)至關(guān)重要的功能,尤其是在業(yè)務(wù)系統(tǒng)中,智能體能夠與數(shù)據(jù)庫進(jìn)行交互,不僅提升了系統(tǒng)的靈活性和智能化程度,也大大增強(qiáng)了業(yè)務(wù)處理的效率。因此,我們今天的目標(biāo)就是通過Spring AI的強(qiáng)大功能,實(shí)現(xiàn)一套基礎(chǔ)的數(shù)據(jù)庫操作框架,完成增、刪、改、查四個(gè)功能模塊。

需要特別注意的是,這里我們僅僅是通過一個(gè)簡(jiǎn)單的使用案例來進(jìn)行分析和講解,當(dāng)然,這并不代表只能局限于此,實(shí)際上對(duì)于大部分業(yè)務(wù)場(chǎng)景來說,這樣的數(shù)據(jù)庫操作已經(jīng)足夠滿足需求,并且可以根據(jù)具體的業(yè)務(wù)需求進(jìn)一步擴(kuò)展和優(yōu)化功能。

如果有小伙伴還不太清楚如何使用Spring AI搭建自己的智能體系統(tǒng),或者對(duì)于Spring AI的基本功能還不太了解,歡迎查看我們之前分享的相關(guān)文章,了解更多相關(guān)內(nèi)容:https://www.cnblogs.com/guoxiaoyu/p/18453559

個(gè)人助理大優(yōu)化

首先,讓我們來看一下我們計(jì)劃實(shí)現(xiàn)的個(gè)人助理功能。目前,我們已經(jīng)實(shí)現(xiàn)了旅游攻略查詢和天氣查詢功能。今天,我們將在此基礎(chǔ)上新增一個(gè)“個(gè)人待辦”功能。由于數(shù)據(jù)庫模塊較為龐大且復(fù)雜,針對(duì)這個(gè)部分我們將單獨(dú)進(jìn)行詳細(xì)講解。以下是該功能的大致實(shí)現(xiàn)效果及相關(guān)流程示意圖:

圖片圖片

效果演示

首先,讓我們來看看經(jīng)過半天調(diào)整后的效果演示。經(jīng)過一段時(shí)間的優(yōu)化和調(diào)試,最終呈現(xiàn)的效果基本符合我的預(yù)期。

這里只演示了下待辦的增刪改查,并沒有演示天氣查詢和旅游攻略,可以看上一章節(jié)的演示。

圖片圖片

開始優(yōu)化

提示詞

當(dāng)然,我們的優(yōu)化工作從入口部分開始,首先,提示詞的設(shè)計(jì)是不可或缺的。回顧上一章節(jié),由于當(dāng)時(shí)功能較少,我們并沒有對(duì)提示詞做過多的修飾,因此整體的交互和模型的響應(yīng)相對(duì)簡(jiǎn)單。然而,隨著本次新增功能的增多,模型的回答可能會(huì)變得較為雜亂無序。

因此,為了確保模型的輸出能夠更精準(zhǔn)、有序,我們?cè)诒敬蝺?yōu)化中提前準(zhǔn)備并生成了詳細(xì)的提示詞。

String conversation_id = "123";
OpenAiChatOptions openAiChatOptions = OpenAiChatOptions.builder()
        .withModel("hunyuan-pro").withTemperature(0.5)
        .build();
String systemPrompt = """
        - Role: 個(gè)人助理小助手
        - Background: 用戶需要一個(gè)多功能的AI助手,可以提供實(shí)時(shí)的天氣信息、詳盡的旅游攻略以及幫助記錄待辦事項(xiàng)。
        - Profile: 你是一個(gè)專業(yè)的旅行天氣小助手,具備強(qiáng)大的信息檢索能力和數(shù)據(jù)處理能力,能夠?yàn)橛脩籼峁┚_的天氣信息、詳盡的旅游攻略,并幫助管理日常待辦事項(xiàng)。
        - Skills: 你擁有強(qiáng)大的網(wǎng)絡(luò)搜索能力、數(shù)據(jù)處理能力以及用戶交互能力,能夠快速準(zhǔn)確地為用戶提供所需信息。
        - Goals: 提供準(zhǔn)確的天氣信息,制定包含航班、酒店、火車信息的詳盡旅游攻略,并幫助用戶記錄和管理待辦事項(xiàng)。
        - Constrains: 提供的信息必須準(zhǔn)確無誤,旅游攻略應(yīng)詳盡實(shí)用,待辦事項(xiàng)管理應(yīng)簡(jiǎn)潔高效。
        - OutputFormat: 友好的對(duì)話式回復(fù),包含必要的詳細(xì)信息和格式化的數(shù)據(jù)。
        - Workflow:
          1. 接收用戶的天氣查詢請(qǐng)求,并提供準(zhǔn)確的天氣信息。
          2. 根據(jù)用戶的旅游目的地,搜索并提供包括航班、酒店、火車在內(nèi)的旅游攻略。
          3. 接收用戶的待辦事項(xiàng),并提供簡(jiǎn)潔的記錄和提醒服務(wù)。
        """;
ChatMemory chatMemory1 = messageChatMemoryAdvisor.getChatMemory();
String content = this.myChatClientWithSystem
        .prompt()
        .system(systemPrompt)
        .user(userInput)
        .options(openAiChatOptions)
        .advisors(messageChatMemoryAdvisor,myLoggerAdvisor,promptChatKnowledageAdvisor,promptChatDateAdvisor)
        .advisors(advisor -> advisor.param("chat_memory_conversation_id", conversation_id)
                .param("chat_memory_response_size", 100))
        .functions("CurrentWeather","TravelPlanning","toDoListFunctionWithContext")
        .toolContext(Map.of("sessionId", conversation_id, "userMemory", chatMemory1,"client",chatClient))
        .call()
        .content();

log.info("content: {}", content);
ChatDataPO chatDataPO = ChatDataPO.builder().code("text").data(ChildData.builder().text(content).build()).build();
return chatDataPO;

好的,剛才我們新增了一些參數(shù),我現(xiàn)在來詳細(xì)解釋一下每個(gè)參數(shù)的作用和使用場(chǎng)景:

  • advisor.param:這是用于單獨(dú)修改我們默認(rèn)增強(qiáng)器(增強(qiáng)型顧問)的參數(shù)。它與上面提到的 Advisor 類相關(guān)聯(lián),允許用戶在不修改核心代碼的情況下,自定義和調(diào)整增強(qiáng)器的行為和配置。
  • toolContent:這個(gè)參數(shù)是我們?cè)谛略龊瘮?shù)回調(diào)功能時(shí)引入的全局參數(shù),主要用于處理回調(diào)時(shí)的各種工具內(nèi)容。在函數(shù)調(diào)用中,toolContent 可以傳遞不同的工具數(shù)據(jù),確保回調(diào)過程的正確執(zhí)行。
  • sessionId:這個(gè)參數(shù)用于標(biāo)識(shí)每個(gè)獨(dú)立的會(huì)話,它幫助我們控制每個(gè)用戶的會(huì)話狀態(tài)。通過給每個(gè)會(huì)話分配一個(gè)唯一的 sessionId,我們可以確保每個(gè)函數(shù)調(diào)用是針對(duì)特定用戶的,而非共享的全局?jǐn)?shù)據(jù)。例如,我們的待辦事項(xiàng)是個(gè)人化的,只有對(duì)應(yīng)用戶可以看到和操作自己的待辦列表。這里為了演示的方便,我們將 sessionId 設(shè)置為固定值,并未接入登錄接口,實(shí)際應(yīng)用中應(yīng)根據(jù)用戶身份動(dòng)態(tài)生成。
  • userMemory:此參數(shù)用于傳遞用戶的歷史上下文,使得回調(diào)函數(shù)能夠使用到之前的對(duì)話或操作記錄。例如,在待辦事項(xiàng)管理中,我們可能需要根據(jù)歷史數(shù)據(jù)判斷某個(gè)任務(wù)是否已經(jīng)完成。
  • chatClient:該參數(shù)將待辦函數(shù)與一個(gè)大模型連接,借助大模型生成SQL查詢或其他復(fù)雜操作。chatClient 負(fù)責(zé)與大模型進(jìn)行交互,生成所需的SQL,而外層的思考模型則專注于調(diào)用接口并處理業(yè)務(wù)邏輯。

好的,再次提醒一下,如果有些小伙伴之前沒有接觸過智能體的相關(guān)內(nèi)容,建議你們先去瀏覽一下我之前的第一篇文章,了解一下基礎(chǔ)知識(shí),補(bǔ)充相關(guān)的背景信息,這樣對(duì)接下來的內(nèi)容會(huì)更加容易理解。

那么,接下來我們繼續(xù)探討與待辦事項(xiàng)相關(guān)的內(nèi)容。

數(shù)據(jù)表

個(gè)人待辦事項(xiàng)的目的非常明確,主要是針對(duì)待辦事項(xiàng)表進(jìn)行增、刪、改、查等基本操作。為了保證系統(tǒng)的高效性與簡(jiǎn)潔性,我們?cè)谠O(shè)計(jì)數(shù)據(jù)庫時(shí),所需的數(shù)據(jù)字段也非常簡(jiǎn)潔直觀。這是我們的建表語句:

create table todo_info(
  id int(11) auto_increment primary key,
  todo_info varchar(1000) not null,
  todo_Date date not null,
  done boolean not null default false
)

在生成完這個(gè)建表語句之后,一定要妥善保存,以便后續(xù)給大模型提供參考。

函數(shù)回調(diào)

首先,我們需要明確待辦函數(shù)的回調(diào)必須能夠支持四種基本操作:增刪改查,。此外,回調(diào)函數(shù)還需要具備生成SQL語句的能力,并能執(zhí)行這些SQL語句,以便與數(shù)據(jù)庫進(jìn)行交互。只有在這些操作順利完成之后,我們才能將最終的結(jié)果數(shù)據(jù)返回給外層的思考模型,以供進(jìn)一步的處理和分析。

基于這些要求,我們現(xiàn)在可以開始具體操作,逐步實(shí)現(xiàn)所需功能。

圖片圖片

好的,我們一步一步來。

待辦函數(shù)

根據(jù)上述信息,我們需要設(shè)計(jì)一個(gè)函數(shù),該函數(shù)需要包含一個(gè)入?yún)⒑鸵粋€(gè)回參。入?yún)⒌闹饕饔檬莻鬟f一個(gè)標(biāo)識(shí)符,用于唯一標(biāo)識(shí)某一操作,而回參則是一個(gè)字符串類型的返回值,用于向調(diào)用方反饋相應(yīng)的結(jié)果或狀態(tài)信息。

public class ToDoListInfoService implements BiFunction<ToDoListInfoService.ToDoRequest, ToolContext, ToDoListInfoService.ToDoResponse> {

    private JdbcTemplate jdbcTemplate;

    public ToDoListInfoService(JdbcTemplate jdbcTemplate) {
        this.jdbcTemplate = jdbcTemplate;
    }

    @JsonClassDescription("crud:c 代表增加;r:代表查詢,u:代表更新,d:代表刪除")
    public record ToDoRequest(String crud) {}
    public record ToDoResponse(String message) {}
    @Override
    public ToDoResponse apply(ToDoListInfoService.ToDoRequest request, ToolContext toolContext) {}
}

可以觀察到,在這里我們使用的是 BiFunction 接口,而不是之前使用的 Function 接口,因?yàn)槲覀冃枰褂肨oolContext。

?

需要特別注意的是,盡管在這里我們使用了 JsonClassDescription,但它的主要目的是為了提高代碼的可讀性和可維護(hù)性,方便開發(fā)人員理解和查看結(jié)構(gòu)。實(shí)際上,大模型并不會(huì)依賴于 JsonClassDescription 來判斷或解析傳遞的具體參數(shù)。

圖片圖片

Bean裝配

由于我們?cè)谶@里使用了 JdbcTemplate 進(jìn)行數(shù)據(jù)庫操作,這就需要在項(xiàng)目中引入相應(yīng)的 Maven 依賴。

<dependency>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-starter-jdbc</artifactId>
</dependency>

我這里仍然選擇使用 Bean 裝配的方式,主要是因?yàn)樗軌蛱峁└叩撵`活性與可維護(hù)性。此外,維護(hù)好入?yún)⒌亩x和配置,也能夠在后續(xù)的開發(fā)中為大模型提供有效的參考和支持。

@Bean
public FunctionCallback toDoListFunctionWithContext(JdbcTemplate jdbcTemplate) {

    return FunctionCallbackWrapper.builder(new ToDoListInfoService(jdbcTemplate))
            .withName("toDoListFunctionWithContext") // (1) function name
            .withDescription("添加待辦,crud:c 代表增加;r:代表查詢,u:代表更新,d:代表刪除") // (2) function description
            .build();
}

接下來,我們將著手實(shí)現(xiàn)函數(shù)內(nèi)部的具體方法。

上下文信息

默認(rèn)提供的 MessageChatMemoryAdvisor 類并不支持直接獲取歷史聊天記錄。因此,我們需要自定義一個(gè)類來實(shí)現(xiàn)這一功能。為了方便使用,下面的代碼將集成該功能并暴露一個(gè)接口供調(diào)用。

@Slf4j
public class MyMessageChatMemoryAdvisor extends MessageChatMemoryAdvisor {

    private ChatMemory chatMemory;

    public MyMessageChatMemoryAdvisor(ChatMemory chatMemory) {
        super(chatMemory);
        this.chatMemory = chatMemory;
    }

    public MyMessageChatMemoryAdvisor(ChatMemory chatMemory, String defaultConversationId, int chatHistoryWindowSize) {
        super(chatMemory, defaultConversationId, chatHistoryWindowSize);
        this.chatMemory = chatMemory;
    }

    public MyMessageChatMemoryAdvisor(ChatMemory chatMemory, String defaultConversationId, int chatHistoryWindowSize, int order) {
        super(chatMemory, defaultConversationId, chatHistoryWindowSize, order);
        this.chatMemory = chatMemory;
    }

    public ChatMemory getChatMemory() {
        return chatMemory;
    }
}

為了能夠順利訪問歷史聊天記錄,我們專門編寫了一個(gè)方法,該方法會(huì)將歷史上下文對(duì)象返回。通過這種方式,我們可以在后續(xù)的操作中方便地獲取到完整的聊天信息,從而實(shí)現(xiàn)對(duì)歷史對(duì)話內(nèi)容的正常訪問和處理。

數(shù)據(jù)庫操作

接下來,我們將進(jìn)行數(shù)據(jù)庫操作,但在此過程中,必須依賴大模型的幫助來生成SQL語句。原因在于,外層的大模型具備強(qiáng)大的能力,可以準(zhǔn)確地分析并理解需求,從而判斷出具體的操作類型是增、刪、改還是查。接下來,我們將詳細(xì)介紹如何實(shí)現(xiàn)這一過程。

public ToDoResponse apply(ToDoListInfoService.ToDoRequest request, ToolContext toolContext) {
        String tableinfo = """
                - Role: SQL語句生成專家
                - Background: 用戶需要根據(jù)特定的表結(jié)構(gòu)和參數(shù)信息生成精準(zhǔn)的MySQL查詢或修改語句,以實(shí)現(xiàn)數(shù)據(jù)庫操作的自動(dòng)化和效率化。
                - Profile: 你是一位經(jīng)驗(yàn)豐富的數(shù)據(jù)庫管理員和SQL專家,精通MySQL數(shù)據(jù)庫的各種查詢和修改語句,能夠根據(jù)用戶提供的表結(jié)構(gòu)和參數(shù)信息快速生成正確的SQL語句。
                - Skills: 你具備深厚的數(shù)據(jù)庫理論知識(shí)和豐富的實(shí)踐經(jīng)驗(yàn),能夠理解復(fù)雜的表結(jié)構(gòu),準(zhǔn)確把握用戶需求,并據(jù)此生成高效、準(zhǔn)確的SQL語句。
                - Goals: 根據(jù)用戶提供的表結(jié)構(gòu)和參數(shù)信息,生成可以直接執(zhí)行的MySQL查詢或修改語句,確保語句的正確性和執(zhí)行的成功率。
                - Constrains: 生成的SQL語句必須符合MySQL的語法規(guī)則,能夠直接在MySQL數(shù)據(jù)庫中執(zhí)行,且不包含任何額外的信息或提示。
                - OutputFormat: 純SQL文本語句,格式規(guī)范,無多余信息。禁止使用markdown格式。
                - Workflow:
                  1. 分析用戶提供的表結(jié)構(gòu)信息和參數(shù)信息。
                  2. 根據(jù)分析結(jié)果,確定需要執(zhí)行的數(shù)據(jù)庫操作類型(查詢、插入、更新或刪除)。
                  3. 結(jié)合操作類型和用戶提供的信息,生成符合MySQL語法的SQL語句。
                 -example:
                  q.幫我創(chuàng)建一個(gè)待辦:明天9點(diǎn)提醒我讀書。今天日期是2024-11-07 20:20:11
                  a:INSERT INTO todo_info (todo_info, todo_date) VALUES ('明天8點(diǎn)讀書', '2024-11-08 08:00:00');
                 - tableinfo:
                     create table todo_info(
                     id int(11) auto_increment primary key,
                     todo_info varchar(1000) not null,
                     todo_Date date not null,
                     done boolean not null default false
                     )
                """;
        String crud = request.crud;
        ChatMemory chatMemory = (ChatMemory)toolContext.getContext().get("userMemory");
        String conversation_id = (String)toolContext.getContext().get("sessionId");
        ChatClient client = (ChatClient)toolContext.getContext().get("client");
        List<Message> messages = chatMemory.get(conversation_id, 1);
        var userqa =  messages.get(0).getContent();
        String jsonString = "執(zhí)行成功";
        String content = client.prompt()
                .system(tableinfo)
                .user("請(qǐng)根據(jù)當(dāng)前問題生成相應(yīng)SQL文本即可,禁止生成SQL以外的內(nèi)容:"+userqa+",今天日期是:"+ DateUtil.now())
                .call().content();
        try {
            if (crud.equals("r")) {
                jsonString = "查詢到待辦內(nèi)容如下:" + JSONObject.toJSONString(jdbcTemplate.queryForList(content));
            } else {
                jdbcTemplate.execute(content);
            }
        }catch (Exception e){
            log.info("ToDoListInfoService:{}", e.getMessage());
            jsonString = "執(zhí)行失敗了";
        }
        log.info("ToDoListInfoService:{}", content);
        return new ToDoResponse(jsonString);

這段代碼的實(shí)現(xiàn)完全依賴于通過全局參數(shù)傳遞過來的信息,以便更好地處理歷史上下文的問題。傳統(tǒng)的回調(diào)函數(shù)方法在處理多輪對(duì)話的歷史上下文時(shí)存在很大的局限性,無法有效地追蹤會(huì)話中的上下文,因此難以解決這類問題。在這種情況下,我們通過全局參數(shù)傳遞的方式,能夠跨越多次交互,確保在每個(gè)步驟中都能訪問到最新的上下文信息。

讓我們簡(jiǎn)單解釋一下這段代碼的流程:

  • 獲取當(dāng)前會(huì)話中的用戶提問:我們從當(dāng)前會(huì)話中獲取最近一次用戶提出的問題,確保我們不會(huì)誤取到其他會(huì)話的上下文。
  • 將問題提交給大模型生成SQL:我們將用戶的提問傳遞給大模型,利用其能力幫助我們生成適當(dāng)?shù)腟QL查詢語句。
  • 判斷是否為查詢請(qǐng)求:我們檢查生成的SQL語句是否屬于查詢操作。如果是查詢,則執(zhí)行查詢并將查詢結(jié)果返回給用戶。
  • 其他操作的處理:如果不是查詢請(qǐng)求,則說明用戶發(fā)出的指令可能是更新或執(zhí)行類的操作,在這種情況下,我們返回一個(gè)"執(zhí)行成功"的響應(yīng)。

可以看到,提示詞中的 tableinfo 是我硬編碼寫死的。實(shí)際上,我們完全可以將其設(shè)計(jì)成一個(gè)可傳入的參數(shù),這樣不僅提升了插件的靈活性和可復(fù)用性,而且使得該插件不再僅僅局限于待辦事項(xiàng)的使用場(chǎng)景,而能夠作為一個(gè)通用的數(shù)據(jù)庫操作插件,適應(yīng)不同的需求和應(yīng)用場(chǎng)景。

為了能夠在演示過程中展示效果,目前我將某些部分做了臨時(shí)的硬編碼處理。這只是為了給大家提供一個(gè)初步的思路和參考框架,后續(xù)我會(huì)逐步完善這些功能。

接下來,讓我們一起來看看調(diào)試過程中得到的效果。以下是我在調(diào)試時(shí)的截圖:

圖片圖片

接下來,我們將檢查數(shù)據(jù)庫是否已經(jīng)成功存儲(chǔ)并正常更新了數(shù)據(jù)。

圖片圖片

接下來,我將展示查詢的實(shí)際效果,同時(shí)生成的 SQL 語句也相當(dāng)優(yōu)秀,能夠高效地滿足查詢需求。

圖片圖片

可以看到,此處已成功將數(shù)據(jù)或結(jié)果正常返回給前端,系統(tǒng)運(yùn)行狀態(tài)良好。

圖片圖片

總結(jié)

在本文中,我們深入探討了如何利用 Spring AI 的新功能,特別是全局參數(shù)和增強(qiáng)函數(shù)調(diào)用能力,來構(gòu)建一個(gè)智能化的個(gè)人助理系統(tǒng)。通過這個(gè)系統(tǒng),我們實(shí)現(xiàn)了基礎(chǔ)的增、刪、改、查(CRUD)功能,特別聚焦在數(shù)據(jù)庫交互與待辦事項(xiàng)管理上。我們展示了如何將 Spring AI 集成到實(shí)際業(yè)務(wù)流程中,通過模型生成 SQL 查詢語句,提升數(shù)據(jù)庫操作的自動(dòng)化程度和靈活性。

首先,我們介紹了 Spring AI 在功能更新后如何簡(jiǎn)化和擴(kuò)展業(yè)務(wù)邏輯處理,特別是在處理多輪對(duì)話、用戶歷史數(shù)據(jù)以及復(fù)雜數(shù)據(jù)庫操作時(shí)的優(yōu)勢(shì)。通過全局參數(shù),系統(tǒng)能夠更精準(zhǔn)地捕捉用戶需求,并在數(shù)據(jù)庫層面執(zhí)行相關(guān)操作,真正實(shí)現(xiàn)了智能化的交互和自動(dòng)化的業(yè)務(wù)流程。

我們還設(shè)計(jì)了一個(gè)待辦事項(xiàng)管理功能,其中通過精心設(shè)計(jì)的提示詞和模型優(yōu)化,使得待辦功能的增刪改查操作更加高效與準(zhǔn)確。

總結(jié)來說,這次基于 Spring AI 的系統(tǒng)優(yōu)化,不僅為我們提供了一個(gè)強(qiáng)大的智能助手框架,也為實(shí)際業(yè)務(wù)中的智能化系統(tǒng)提供了可借鑒的方案。未來,我們可以基于此進(jìn)一步擴(kuò)展功能,打造更加智能化和個(gè)性化的業(yè)務(wù)解決方案。

責(zé)任編輯:武曉燕 來源: 靈墨AI探索室
相關(guān)推薦

2020-06-28 07:00:00

推薦系統(tǒng)智能商務(wù)服務(wù)平臺(tái)

2021-02-20 10:34:45

人工智能個(gè)性化服務(wù)AI

2010-04-30 17:07:03

組策略部署

2025-03-19 08:36:55

2011-01-20 10:19:21

PowerShell個(gè)性化

2023-03-21 12:46:30

智慧城市人工智能大數(shù)據(jù)

2024-07-02 09:41:11

2023-10-26 12:39:40

2025-02-04 11:18:49

Spring安全應(yīng)用

2012-03-28 14:58:37

手機(jī)推送移動(dòng)應(yīng)用

2022-11-01 07:19:45

推薦系統(tǒng)非個(gè)性化

2018-05-14 12:48:04

大數(shù)據(jù)銷售企業(yè)

2014-02-10 09:21:25

大數(shù)據(jù)

2018-09-07 18:51:24

APP算法應(yīng)用

2009-07-13 15:33:24

桌面虛擬化虛擬化IT

2024-08-15 13:22:17

2016-04-08 11:39:49

用戶畫像個(gè)性化推薦標(biāo)簽

2023-10-17 08:42:13

ChatGPT定制指令

2011-07-28 17:02:59

MYSQL數(shù)據(jù)庫跨表更新數(shù)據(jù)并合
點(diǎn)贊
收藏

51CTO技術(shù)棧公眾號(hào)