基於AI實現阿里雲的智慧財務管家

新鈦雲服已累計為您分享844篇技術乾貨
為了解決傳統賬單處理中人工查詢效率低下、響應速度慢及易出錯等問題,同時順應AI技術發展趨勢,提升服務智慧化水平。隨著業務規模擴大和賬單資料複雜度增加,人工處理已難以滿足高效管理需求。我們想到透過AI技術,製作一個賬單機器人,自動化完成賬單查詢與分析,節省人力成本,讓使用者快速獲取準確資訊,提升滿意度。
流程圖
上圖為基於阿里雲百鍊實現賬單機器人的完整流程。具體步驟如下:
  1. 使用者透過私聊或者@飛書機器人的方式提出賬單相關的問題。
  2. 計算巢AppFlow透過飛書接收訊息事件觸發連線流,將問題傳遞給大模型服務平臺百鍊。
  3. 大模型服務平臺百鍊利用其強大的AI能力生成相應的查詢SQL語句。
  4. 生成的SQL語句被髮送到函式計算(FC)服務,由FC 執行SQL查詢,從SLS中獲取所需的賬單資料。
  5. 百鍊平臺根據返回的賬單資料生成最終的答案。
  6. 答案透過計算巢 AppFlow 返回給飛書機器人。
  7. 最後,飛書機器人將答案呈現給使用者。

注意:關於為什麼從SLS裡獲取賬單資料,請見新版成本管家視覺化賬單報表實踐阿里雲多賬號財務管理最佳實踐

FC函式計算
點選https://fcnext.console.aliyun.com/cn-shanghai/functions此連結,在右側選單欄中選擇“函式”,在函式介面上點選“建立函式”按鈕。
選擇“事件函式”,在基本設定裡填寫“函式名稱”。在函式程式碼中,選擇“內建執行時/Python/Python3.12”執行環境,程式碼上傳方式暫時選擇“使用示例程式碼”中的“Hello,world!示例”。高階配置裡的請求處理程式變更為“index.main”,“時區”選擇“Asia/Shanghai 北京時間”,“函式角色”選擇“AliyunFcDefaultRole”,“允許訪問 VPC”選擇“否”,“允許函式預設網絡卡訪問公網”選擇“是”,“日誌功能”選擇啟用,其他配置保持預設就行。完成上述配置後點擊“建立按鈕”。
1、百鍊中只支援北京、杭州、上海、深圳地域的函式計算,故在建立函式時只能選擇這些地域。
2、賬單資料儲存在華北6(烏蘭察布)地域中,函式計算無法透過內網查詢,所以函式計算必須要開公網。
3、開啟日誌功能,便於排查報錯。
點選剛建立的函式,進行下一步配置。
選單欄中選擇“程式碼”,將下面的程式碼填寫到index.py裡(注意需要修改程式碼裡的配置!)。完成後點選右上方的▷按鈕。
from aliyun.log import LogClientfrom aliyun.log import *import logging,json,refrom datetime import datetimelogger = logging.getLogger()defdatetime_to_timestamp(date_string, date_format="%Y-%m-%d %H:%M:%S"):    dt = datetime.strptime(date_string, date_format)returnint(dt.timestamp())defquery_bill_logs(json_data):    accessKeyId = ""#填寫accessKeyId    accessKey = ""#填寫accessKey     endpoint = "cn-wulanchabu.log.aliyuncs.com"#填寫賬單資料所在的endpoint    project = "bill-analysis-xxxx"#填寫賬單資料所在的project    logstore = "aliyun_bill"#填寫賬單資料所在的logstore    client = LogClient(endpoint, accessKeyId, accessKey)    query = json_data["query"]# from_time和to_time表示查詢日誌的時間範圍,UNIX時間戳格式。    from_time = datetime_to_timestamp(json_data["from_time"])    to_time = datetime_to_timestamp(json_data["to_time"])# query引數用於設定查詢語句;line引數用於控制返回日誌條數,line取值為3。    request = GetLogsRequest(project, logstore, from_time, to_time, '', query=query, line=3, offset=0, reverse=False)    response = client.get_logs(request)# 查詢結果。    log_res_list=[]for log in response.get_logs():        log_res = log.contents.items()        log_res_list.append(dict(log_res))return log_res_listdefmain(event,context):    data = event.decode('utf-8')    logger.info("收到的資料:{}".format(data))    data=json.loads(data)["sql"]match = re.search(r'\{.*?\}', data,re.DOTALL)ifmatch:        json_res = json.loads(match.group(0))# 查詢日誌        log_res=str(query_bill_logs(json_res))        log_res = json.dumps(log_res, ensure_ascii=False, indent=4)        logger.info("查詢到的資料:{}".format(log_res))return log_reselse:        logger.info("未匹配到json")return"無法匹配到SQL"
在TERMINAL中執行下面的語句,透過控制檯Web IDE終端安裝依賴。完成後點選“部署程式碼”按鈕,完成該函式的部署。
pip install -U aliyun-log-python-sdk -t .
部署完成後,需要測試一下,驗證是否可以正常查詢。在選單欄中點選“測試”,填寫測試名稱和傳參(傳參可以參考下面的程式碼),完成後點選“測試”按鈕。
{"sql""{\"from_time\":\"2025-01-01 00:00:00\",\"to_time\":\"2025-02-01 00:00:00\",\"query\":\"*|select round(coalesce(sum(PretaxAmount),0),3) from splititem_bill_transform\"}"}
如下圖所示,即為執行成功。
大模型服務平臺百鍊
知識庫
大模型缺乏私有知識,根據使用者輸入從外部資訊源檢索相關資訊,然後將檢索到的內容整合到使用者輸入中,從而幫助大模型生成更準確的回答。將賬單相關資料引入專有知識庫後,大模型就能準確回答賬單方面的問題。
點選https://bailian.console.aliyun.com/?tab=app#/data-center此連結,
在左側選單欄中選擇“應用資料”,選擇“非結構化資料”,點選類目管理旁的“+”。
填寫“目錄名稱”,完成後點選“確定”按鈕。
選擇剛建立的類目,點選右上角的“匯入資料”按鈕。
匯入方式選擇“本地上傳”,將下面的檔案《分賬賬單欄位.xlsx》傳入到百鍊中,完成後點選確認。
《分賬賬單欄位.xlsx》為分賬賬單各個欄位的名稱及解釋,便於百鍊生成SQL語句。
欄位名稱
欄位型別
示例值
說明
__time__
INTEGER
1739721600
賬單時間,Unix 時間戳,以秒為單位
instanceconfig
STRING
地域:華東2(上海)
例項詳細配置
internetip
STRING
139.122.22.22
公網IP地址
pretaxamount
DOUBLE
0.01
應付金額,獲取賬單金額,一般就是指這個應付金額,保留2位小數
subscriptiontype
STRING
PayAsYouGo
消費型別:Subscription:預付費;PayAsYouGo:後付費。
billingitem
STRING
ECS整機備份數量
計費項
pretaxgrossamount
DOUBLE
0.033
原始金額
usage
DOUBLE
1.0
使用量
splitbillingcycle
STRING
2025-02
分賬月
producttype
STRING
hbrpost
產品型別
paymentamount
DOUBLE
0.0
現金支付(透過賬戶餘額或線上支付渠道直接支付的金額,信控使用者包含使用退款賬本支付的金額)
listprice
DOUBLE
0.033333
單價
splitbillingdate
STRING
2025-02-17
賬期
zone
STRING
cn-shanghai-g
可用區
usageunit
STRING
使用量單位
tag
STRING
key:environment value:prod; key:costcenter value:11111
標籤
splitaccountname
STRING
[email protected]
分拆項所屬賬號名稱
splititemid
STRING
xxx-oss
分拆項ID
item
STRING
SubscriptionOrder
賬單型別。包括:     SubscriptionOrder:預付費訂單。     PayAsYouGoBill:後付費賬單。     Refund:退款。     Adjustment:調賬。
__source__
STRING
splititem_bill
分賬賬單
deductedbyprepaidcard
DOUBLE
0.0
儲值卡抵扣
commoditycode
STRING
rds
商品 Code
ownerid
STRING
1888888883
子賬號 AccountID(多賬號代付場景)
adjustamount
DOUBLE
0.0
信用額度退款抵扣。
billingdate
STRING
2025-02-23
賬單日期,格式 YYYY-MM-DD
deductedbycoupons
DOUBLE
0.0
優惠券優惠金額
instanceid
STRING
rm-xxxxxxxx
例項 ID
serviceperiod
DOUBLE
1.0
服務時長,單位:秒
splitaccountid
STRING
122
分拆項所屬賬號 AccountID
billingtype
STRING
其它
計費方式
region
STRING
華東2(上海)
地域
intranetip
STRING
172.168.0.200
內網 IP
productcode
STRING
rds
產品程式碼
outstandingamount
DOUBLE
302.5
未結清金額
instancespec
STRING
mysql.x2.medium.2c
例項規格
splitcommoditycode
STRING
snapshot
分拆項商品 Code
serviceperiodunit
STRING
服務時長單位
splititemname
STRING
test
分拆項名稱
nickname
STRING
test
例項暱稱、例項名稱
productname
STRING
雲資料庫 RDS
產品名稱
currency
STRING
CNY
幣種:CNY、 USD、 JPY
invoicediscount
DOUBLE
247.5
優惠金額
productdetail
STRING
關係型資料庫RDS(包月)
產品明細
resourcegroup
STRING
xxx Group
資源組
deductedbycashcoupons
DOUBLE
0.0
代金券抵扣
splitproductdetail
STRING
雲伺服器ECS-快照
分拆項產品明細名稱
listpriceunit
STRING
元/臺
單價單位
costunit
STRING
未分配
財務單元
biztype
STRING
trusteeship
業務型別
cashamount
DOUBLE
0.0
現金支付(不包含信用額度退款抵扣)
deductedbyresourcepackage
DOUBLE
0.0
資源包抵扣
資料匯入完成後,如下圖所示:
在左側選單欄中選擇“知識庫”,點選右上角的“+ 建立知識庫”。
填寫“知識庫名稱”,資料型別選擇“非結構化資料”,其他配置保持預設,完成後點選“下一步”按鈕。
選擇資料選擇“選擇類目”,類目選擇剛建立的類目“阿里雲賬單機器人”,完成後點選“下一步”按鈕。
其他配置保持預設,完成後點選“匯入完成”按鈕。
知識庫建立完成後,如下圖所示:
樣例庫
樣例庫功能作為百鍊的FewShot能力,通過錄入使用者輸入(Query)和期望的模型回覆(Answer)作為樣例資訊源,在模型呼叫時根據使用者輸入,檢索召回相關樣例資訊,以此作為輸出參考,從而提高大模型的回答準確性,適用於問答等場景。
在左側選單欄中選擇“元件管理”,在元件管理介面的頂部選單中選擇“樣例庫”,點選“樣例庫管理”旁的“+”。
填寫“樣例庫名稱”,匯入方式選擇“手動輸入”,將下表資料填入到“樣例示例”,完成後點選“確定”按鈕。
樣例庫配置完成後,如下圖所示:
應用
大模型具備強大的語言能力,但仍有一定的侷限性,例如難以處理私有領域問題、獲取最新資訊、遵循固定流程,以及自動規劃複雜專案。為此,阿里雲百鍊推出了三種大模型應用:智慧體、工作流與智慧體編排,增加了知識庫檢索、網際網路搜尋、工作流設計及智慧體協作等功能,顯著擴充套件了大模型的應用範圍。下表說明三種大模型應用的簡介及示例場景。
生成SQL
點選https://bailian.console.aliyun.com/?tab=app#/app-center此連結,
在左側選單欄中選擇“應用管理”,在應用管理介面的右上角點選“+ 新增應用”按鈕。
選擇“智慧體應用”,點選“立即建立 ↗”按鈕。
選擇“通義千問-Max”,提示詞填“需要從使用者的問題中梳理出要查詢哪些資訊,輸出要查詢資料的SQL。如果無法生成要查詢的SQL則回覆“抱歉,您的問題暫時無法回覆,請聯絡工程師””,選擇剛建立的知識庫和樣例庫。完成後在右側輸入問題“查詢2月阿里雲花費金額”,點擊發送按鈕,查看回答是否如下圖所示。若與下圖答覆一致,則點選右上角的“釋出”按鈕。
釋出完成後,會在剛建立的智慧體應右上角顯示“已釋出”。注意:未釋出會導致下面的流程出現問題!
查詢賬單
在應用管理介面的右上角點選“+ 新增應用”。
選擇“工作流應用”,點選“建立任務型工作流 ↗”按鈕。
按下圖所示進行配置,引用上文建立的FC函式查詢賬單資料,結合使用者的問題和查到的賬單資料,透過大模型組織答案。
完成配置後,點選“測試”按鈕,輸入query:“查詢1月阿里雲花費金額”,sql:“{"from_time":"2025-01-01 00:00:00","to_time":"2025-02-01 00:00:00","query":"*|select round(coalesce(sum(PretaxAmount),0),3) from splititem_bill_transform"}”。完成後點選“執行”按鈕。
若結果如下圖所示,則說明配置成功。
更改應用名稱,點選右上角的“釋出”按鈕。
釋出完成後如下圖所示:
賬單機器人
在應用管理介面的右上角點選“+ 新增應用”。
選擇“智慧體編排應用”,點選“建立智慧體編排應用↗”按鈕。
按下圖所示進行配置,將剛建立的兩個應用串聯起來,先根據使用者的問題生成查詢SQL,再執行SQL獲取賬單資料,最終根據使用者的問題組織答案。
注意:查詢賬單工作流配置,要輸入兩個變數,一個是使用者的問題,一個是智慧體應用輸出的SQL。
完成後點選“測試”按鈕,輸入query:“查詢2月阿里雲花費金額”,點選“執行”按鈕。
若執行結果如下圖所示,則說明執行成功。成功後點擊“釋出”按鈕。
釋出完成後如下圖所示:
KPI-Key
點選https://bailian.console.aliyun.com/?tab=app#/api-key此連結,在左側選單欄中選擇“API-Key”,點選API Key管理介面右上角的“建立我的API-KEY”按鈕。
選擇應用所在的歸屬業務空間,完成後點選“確定”按鈕。
API-Key建立完成後,如下圖所示:
飛書應用
點選https://open.feishu.cn/app此連結,在企業自建應用介面,點選“建立企業自建應用”按鈕。
填寫應用名稱和應用描述,完成後點選“建立”按鈕。
在左側選單欄中選擇“新增應用能力”,找到機器人,點選“+新增”按鈕。
在左側選單欄中選擇“事件與回撥”,選擇“加密策略”,複製Encrypt Key和Verification Token,用於下文配置計算巢AppFlow。
在左側選單欄中選擇“事件與回撥”,在事件配置介面,訂閱方式選擇“將事件傳送至 開發者伺服器”,填寫請求地址(這個請求地址在下文計算巢AppFlow配置中),完成後點選“儲存”按鈕。點選“新增事件”按鈕,新增“使用者進入與機器人的會話”、“接收訊息”、“機器人自定義選單事件”這三個事件。
在回撥配置介面,像事件配置一樣,配置訂閱方式,並新增“卡片回傳互動”回撥。
計算巢AppFlow配置完成後會得到IP白名單,將這些IP配置到飛書應用的IP白名單中。
計算巢AppFlow
計算巢AppFlow透過介面化快速編排的方式,組合多個聯結器的觸發事件和執行動作,從而連線多個應用系統,實現業務流程自動化。使用計算巢AppFlow對接飛書和百鍊,無需使用者寫程式碼實現,而且計算巢AppFlow是免費的。
點選
https://appflow.console.aliyun.com/vendor/cnhangzhou/flowTemplate/manage
此連結,在左側選單欄中選擇“模板中心”,找到“飛書自建應用 X 阿里雲百鍊”。
點選“立即使用”按鈕。
點選“新增新憑證”建立飛書自建應用機器人憑證。
填寫“憑證名稱”、“App ID”、“App Secret”、“AES Key”、“token”,這些在飛書應用中可以找到。底下的“IP白名單”新增到飛書應用白名單中。完成後點選“確定”按鈕。
點選“新增新憑證”建立阿里雲百鍊憑證。
填寫“憑證名稱”和“API-KEY”(請見上文建立API-Key)。完成後點選“確定”按鈕,再點選“下一步”按鈕。
填寫“應用Id”(名為“賬單機器人”的百鍊智慧體編排應用Id ),完成後點選“下一步”按鈕。
填寫“連線流名稱”和“連線流描述”,完成後點選“下一步”按鈕。
這個WebhookUrl地址,即為上文飛書應用配置事件與回撥的請求地址。點選“釋出”按鈕。
飛 書
在飛書App左側選單欄中選擇“工作臺”,點選右上角“⚙設定”。
在我的工作臺中,點選右上角的“新增應用”按鈕,將剛建立的“阿里雲賬單機器人”新增進來。
點選進入阿里雲賬單機器人。
傳送“查詢1月阿里雲花費金額”,若機器人回答如下圖所示,說明配置成功了。
小 結
至此,阿里雲賬單機器人配置完成。此外,藉助AI技術的智慧分析能力,機器人可進一步挖掘賬單資料價值,最佳化資源配置,助力企業降本增效,適應數字化轉型需求。

如有相關問題,請在文章後面給小編留言,小編安排作者第一時間和您聯絡,為您答疑解惑。

    推薦閱讀   

    推薦影片    

相關文章