欢迎来到尧图网

客户服务 关于我们

您的位置:首页 > 财经 > 产业 > 基于 AI 实现阿里云的智能财务管家

基于 AI 实现阿里云的智能财务管家

2025/5/23 5:22:46 来源:https://blog.csdn.net/NewTyun/article/details/148143003  浏览:    关键词:基于 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()def datetime_to_timestamp(date_string, date_format="%Y-%m-%d %H:%M:%S"):    dt = datetime.strptime(date_string, date_format)    return int(dt.timestamp())def query_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_listdef main(event,context):    data = event.decode('utf-8')    logger.info("收到的数据:{}".format(data))    data=json.loads(data)["sql"]    match = re.search(r'\{.*?\}', data,re.DOTALL)    if match:        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_res    else:        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

12@test.com

分拆项所属账号名称

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技术的智能分析能力,机器人可进一步挖掘账单数据价值,优化资源配置,助力企业降本增效,适应数字化转型需求。

如有相关问题,请在文章后面给小编留言,小编安排作者第一时间和您联系,为您答疑解惑。

    推荐阅读   

图片

图片

图片

    推荐视频    

版权声明:

本网仅为发布的内容提供存储空间,不对发表、转载的内容提供任何形式的保证。凡本网注明“来源:XXX网络”的作品,均转载自其它媒体,著作权归作者所有,商业转载请联系作者获得授权,非商业转载请注明出处。

我们尊重并感谢每一位作者,均已注明文章来源和作者。如因作品内容、版权或其它问题,请及时与我们联系,联系邮箱:809451989@qq.com,投稿邮箱:809451989@qq.com

热搜词