一、前言
擁有一個幫你躺著賺錢的助手,聽起來是不是有點心動?依托于京東聯盟廣告平臺,借助AIGC大語言模型出色的理解、推理、規劃能力,我們推出了京粉智能推廣助手機器人,幫助合作伙伴擁有自己的智能助理,為京東聯盟的推客提供更加智能的一站式經營服務。
1、京東聯盟是什么?
《京東聯盟》是聯合廣大媒體合作伙伴幫助京東推廣商品、擴大品牌知名度的合作平臺。 經京東許可的任何個人或公司加入京東聯盟后,獲取相應推廣代碼或鏈接進行推廣,當用戶完成有效購買行為時,京東聯盟會員即可獲得傭金。
2、為什么要做京粉智能推廣助手?
業務上,京粉App是京東聯盟的客戶端產品,有日均百萬的合作媒體和個人推客用戶每在京粉上推廣商品賺取傭金,在推廣助手推出之前,經過聯盟業務近些年的發展,有越來越多的功能和玩法活動加入進來,推客如何選品、推廣、參加活動以及經營數據的分析都分散在各個功能模塊中,用戶學習經營的成本越來越高,問題也越來越多,人力維護成本也會越來越高,如果有一個助手可以幫助推客,隨時解答用戶問題、利用數據分析指導用戶如何進行選品推廣、什么時間該參加什么類型的活動,那么將會有更多的用戶愿意加入進來幫助京東進行推廣。
技術上,隨著大語言模型技術的不斷成熟,助手類應用也更加容易落地,借助AIGC大語言模型出色的理解、推理、規劃能力,使用自然語言的交互形式,充分理解推客的個性化經營訴求,深度結合了廣大推客的實際推廣鏈路,從智能選品、推廣建議、素材生成、經營指導等多方面為推廣者帶來經營升級,解決了傳統被動交互形式中需求差異巨大及獲取信息效率低等問題。
?
?
二、如何做?
京粉智能推廣助手集合了知識問答、素材創作、選品推廣、經營數據分析等一系列功能,幾乎涵蓋了助手類應用的所有應用場景,僅僅依賴通用大模型的能力是不夠的,這里就需要一個強大的智能體(Agent)進行規劃、決策和執行,同時讓智能體擁有記憶和使用工具能力,用戶通過自然語言多輪對話的方式進行交互,重點將從以下三部分來介紹:
?Agent架構:分為兩部分,一部分是通過對模型的訓練提升Agent的核心大模型識別工具的準確性,另一部分要設計一個可擴展并安全可控的Agent架構來填充和擴展業務能力。
?記憶:多輪對話應用中如何組織、存儲和檢索記憶來提升大模型對用戶的理解。
?快捷回復:利用快捷回復做用戶意圖的路徑規劃,實現業務目標。
下面我們對實際應用落地中的一些經驗進行分享和探討。
?
三、實戰1-AI Agent
1、為什么要用Agent?
聯盟場景有很多自有知識、活動、和數據,大部分都有現成的接口來提供這些數據,由于大模型本身對于垂類場景專業知識不足、知識的時效性差、容易出現幻覺等因素,直接使用大模型來和用戶做交互很容易出現問題,需要大模型來理解用戶的意圖并能夠利用聯盟已有的工具才能更準確的回答用戶的問題,但是大模型本身是無法與外部環境進行交互的,所以要用Agent來解決。
2、挑戰
?工具的識別:通過實驗發現,市面上開源大模型對于外部工具使用能力只有Chat GPT-3.5/4以上的準確率才能符合要求,但是成本很高,在企業應用中需要訓練自己的大模型學會如何更準確的識別工具。
?Agent架構:當前Agent仍處于發展的初級階段,從應用場景來看,從智能客服->智能創意->推薦系統->自動駕駛->智能機器人到一個復雜的城市智能規劃系統,所需要感知與交互的環境因素越來越復雜、所要決策的事項也越來越困難,所面對的風險程度和安全級別也差異很大,所以目前沒有一種通用的Agent適合在所有場景使用,每種應用場景都需要根據其特點、成本、效率、風險相結合來設計Agent架構。
3、技術方案
工具識別
大模型識別工具的方式有兩種,一種是用system prompt的方式,這種擴展性較好,但是需要模型具有極強的指令跟隨的能力,一旦出現工具選擇錯誤、或者入參錯誤,都會造成Agent調用工具失敗的情況,我們在開發初期使用該方法,但是prompt的調優過程就好比魔法,時好時壞。第二種方式就是把工具訓練到模型里面去,這種對于工具使用的準確性可以大幅提升,并且用起來也很方便。我們利用了ToolLLM框架提供的數據構建、模型微調和評測框架來增強大模型對工具的使用能力。結果證明用LLama-6B sft的效果已經達到了Chat GPT的水平。
Agent實現
對于Agent實現上,最初的方案是基于langchain的agent來開發實現的,不過在實現的過程中,發現langchain中的很多問題,過度的封裝、異步并發效率低、版本前后不兼容、核心功能難易控制,由于langchain是用python實現的,解釋性語言運行速度慢、并發處理能力較弱,雖然靈活性很高,但也造成了性能低的問題,所以比較適合做實驗或小型應用,但是企業級高并發應用并不合適,所以我們在ReAct范式基礎上,結合京東內部公共組件和自研組件,融入了工具/接口的接入、自定義工具的編排、記憶模塊、vearch向量檢索、prompt引擎、流式回調函數、各模塊的監控、并用golang重寫了Agent主要架構,提升了系統的穩定性和高并發能力,性能上整體提升50%以上。
Agent的核心部門我們主要分了2個階段,初始化階段、迭代執行階段,初始化階段是對環境信息的收集,包括用戶的輸入、歷史記憶加載、工具的接入、prompt接入、模型的接入,流式/非流式回調接入,這部分在langchain中agent啟動階段是比較耗時的,針對每輪用戶的交互,Agent都需要重新初始化,我們采用Agent復用的方式進行預加載,除了用戶的輸入和歷史記憶,其他模塊全部提前加載,提升效率。另一個階段是迭代執行階段,包含4個部分,預處理模塊、規劃、后處理模塊、執行,預處理模塊需要維護一個階段狀態(第幾輪迭代)和數據的拼接處理(用戶的輸入+大模型回復+執行結果)。規劃階段主要是通過大模型推理階段,這里需要預留對工具的解析模塊,因為不同的模型對于工具的輸入是不一樣的。后處理模塊是對模型規劃的結果進行解析,有部分需要注意對模型規劃的結果做區分,結束或調用工具,需要在這里進行流式和非流式的結果存儲和返回,如果需要調用工具,就進入執行模塊,將工具的調用結果送入預處理模塊進行下一輪的迭代,我們在模型的調用和工具的調用中都預設了自定義鉤子,用戶可以根據需求在自定義工具執行的任意階段進行流式輸出。
合理的架構
從企業級應用來看,越智能的架構越合理嗎?這里最重要的問題其實是系統是否足夠安全可靠,智能化是所有企業所追求的,但是要在一個可控的邊界內智能,一個不受控制的智能體是任何企業無法接受的。所以安全邊界來看,應用架構可以分為以下兩種:
完全智能化架構:系統的運行完全依靠Agent自主執行
安全性架構:系統運行依靠提前編寫好的任務流,Agent只做流程的選擇和判斷。
這么多年的經驗告訴我們,如果脫離業務聊架構,就會沒人用,如果完全按照業務來做,總會被推翻重來,所以架構的設計需要貼合業務的同時還要有一些前瞻性。
京粉智能推廣助手的業務主要需求:
功能 | 描述及解決方案 | 依賴 |
知識問答 | 京東聯盟有很多針對推客的使用介紹、規則、常用問題。可以通過外掛知識庫解決 | 知識庫 |
經營分析 | 對于推客經營狀態進行分析,包括收入、客群畫像、推廣建議。可以通過聯盟各種已有工具接口進行數據的接入。 | 推客/用戶畫像/活動等工具接口 |
推廣選品 | ·目標明確的(搜索iphone15 pro max) ·目標模糊的(過年送長輩的禮物) ·無目的 對于推薦的商品,要有推薦理由、同品/相似品多維度對比(傭金、價格、銷量、評論等) 分為簡單任務和復雜任務。復雜任務可以通過特定的任務流實現 | 商品接口/歷史數據/同品相似品數據 |
文案生成 | 對于選好的商品,幫助推客自動化生成推廣文案和分享轉鏈 | 轉鏈工具 |
... |
? |
? |
從功能需求來看,既有簡單任務,又有復雜任務,而且隨著時間的推移,增加的任務會越來越多,同時業務的定制化內容越來越復雜,對Agent的難度會增加很多,為了平衡從業務、安全、成本、效率考慮,最終我們通過自定義任務流與agent自主決策相結合的方式,兼容了動態規劃、自主決策執行任務流與業務的可定制化、可擴展性。
?
4、業務效果
?
四、實戰2- 記憶
對于多輪對話形式的大模型應用來說,上下文信息對于模型理解人類需求有很大的幫助,如果沒有記憶,在多輪對話中,大模型的表現會比較割裂,長期的記憶也會讓模型對用戶的習慣、偏好有更好的認知。
1、挑戰
1.1.由于大模型token的限制,和系統內存的限制,無法將用戶的所有歷史信息進行存儲和加載到模型中。
1.2.如何模擬人類大腦記憶和檢索方式,構建長/短期記憶。
1.3.多輪對話中的垂類領域知識的結構化記憶。
2、技術方案
記憶的構建可以概括為理解、存儲、刪除和檢索的過程,通過以下方式對短期記憶、長期記憶、垂類領域知識進行存儲和檢索。
2.1. 短期記憶的設計比較容易,包括短期滑窗多輪對話的方式和定長時間內的多輪對話都可以作為短期記憶,短期記憶要盡可能的存儲細節信息,但是輪數要盡可能的少。
2.2. 長期記憶:將短期的詳細記憶提取出實體信息,可以通過NER抽取實體信息,也可以通過大模型對緩存進行總結和壓縮,按照記憶片段和時間戳進行向量表征并存入向量庫中。
2.3. 垂類領域知識,比如京東的skuid,是一個數字類型,不代表任何語義信息,在前面的對話中可能會輸出給用戶某個skuid,如果短期記憶已被壓縮成長期記憶,就會導致不包含任何語義信息的數字類型消失,我們可以通過自定義結構化信息存儲的方式將這類信息與長/短時記憶進行融合存儲和檢索,這樣在用戶多輪次對話中就可以通過(“分析上一個商品”)從記憶中獲取結構化的skuid來查找并分析該商品,而不是必須輸入分析上一個商品的“skuid”才能夠識別。
2.4. 檢索時同時檢索短時緩存記憶和向量庫長時記憶檢索(通過vearch實現)以及垂類領域知識,將三部分進行融合后,作為整體的記憶模塊,節省記憶空間。
?
五、實戰3-快捷回復
從線上實踐的數據分析來看,快捷回復功能在整個系統或用戶交互上都是使用率最高的,所有的用戶都存在選擇困難,特別是在一個全新的應用場景中,用戶在首次使用時,用戶都喜歡使用一些給定的功能,所以如何利用好快捷回復的能力,通過快捷回復引導用戶朝著業務目標路徑執行,這個也是比較有意思的點。
快捷回復的三種實現方案
1.通過歷史信息和用戶的當前輸入,利用大模型總結續寫能力,生成一些用戶可能繼續輸入的內容。
2.結合應用的功能預設一些常用問題。
3.重點:可以根據應用的業務目標,來規劃用戶使用路徑圖,使用戶按照快捷回復的路徑最終達成我們需要的業務目標,在實際業務中可以結合1、2點,既有用戶想輸入的,又有我們想讓用戶看到的功能。
比如京粉智能推廣助手的最終業務目標是幫助推客選品并推廣,那么所有的功能點最終都要導向幫助推客生成推廣文案和推廣鏈接并分享。
?
六、總結與展望:
本文主要總結了開發大模型應用的一些實戰經驗,通過對AI Agent + 工具 + memory+快捷回復可以解決通用大模型應用的常見問題。時至今日,京粉智能推廣助手已經服務了近百萬的推客,產生了上億的GMV。當然,在應用的實際開發中還有很多需要優化的地方,我們也在不停的迭代升級中,未來還需要從以下幾個方面持續優化:
1、垂類領域用戶意圖的理解:結合垂類業務的特點,通過自然語言溝通交流的方式,更加精準更快速的識別用戶的意圖,模型上需要大量的真實可靠的業務數據來進行訓練,機制上需要對Agent進行升級,多個更加專業的助理進行協作,例如multi Agent的應用。
2、生成式推薦技術:對現有推薦系統進行技術變革,從召回、排序、重排固有的推薦鏈路演變成直接生成用戶所需的內容或商品。
3、成本效率:大語言模型雖然很強大,但是其應用也帶來巨大的成本和效率上的考驗,如何在垂類領域采用較小的模型實現大模型的效果,如何對模型推理加速,提高計算利用效率,降低機器成本,也是我們長期需要考慮和優化的地方。
?
在這里也歡迎各位在該領域有興趣的有志之士加入或合作,利用技術讓我們的業態更加豐富與有趣。
審核編輯 黃宇
-
AI
+關注
關注
87文章
30896瀏覽量
269087 -
AIGC
+關注
關注
1文章
362瀏覽量
1543 -
大模型
+關注
關注
2文章
2450瀏覽量
2707
發布評論請先 登錄
相關推薦
評論