LLM:企业AI应用实例(1)-数据分析和经营周报

适用于LLM初学者。学习调用常规的大语言模型,并进行简单的数据分析和经营周报输出。

为了方便初学者学习,使用的到的数据已放在阿里云盘,链接如下:

LLM数据分析(1) https://www.alipan.com/s/8MLaeEQCPDd 点击链接保存,或者复制本段内容,打开「阿里云盘」APP ,无需下载极速在线查看,视频原画倍速播放。

1 前言

随着大模型的应用越来越广,笔者作为数据分析师,开始尝试LLM与业务的结合。经过尝试,结论如下:

优点:

1. 能节省部分重复劳动

2. LLM在代码生成方面十分方便。一些代码的细节遗忘时,通过提问可快速回忆。

缺点:

1. 幻觉高:数据分析场景下,使大模型直接做数据处理(如加减乘除),犯错概率很高(最好在送入数据的时候,就将计算做好,大模型只进行取值,如直接计算好每天的同比环比,而不是让大模型直接计算;或者通过调用agent的方式处理数据加减)。

2. 逻辑弱:尽管在提示词中说明分析方法,大模型也很难遵照常见的数据分析方法进行分析(大家可以尝试一下)。

3. 不稳定:简单的提示词工程无法保证模型的稳定输出,如百分号的使用,小数位数的保留等等。

2 代码

2.0 模型准备

本文使用阿里的qwen,通过访问官网,可注册并使用qwen。

如何快速入门灵积模型服务_模型服务灵积(DashScope)-阿里云帮助中心 (aliyun.com)

通过官网获得api-key。

其它模型选项:

Moonshot-kimi:https://platform.moonshot.cn/console/info

Deepseek:https://platform.deepseek.com/usage

2.1 准备环境和数据

背景:你是一家酒店的数据分析师,你需要根据酒店的经营数据进行分析,判断经营状况是否健康,并给出建设性的建议。通过以下代码,你通过大模型来自动实现了简单的分析,帮助你节省了一部分的工作。

import os
os.environ['DASHSCOPE_API_KEY']='sk-80000000000000000000000'
from dashscope import Generation
from http import HTTPStatus
import pandas as pd

# 读取Excel文件
df_main = pd.read_excel('data.xlsx', sheet_name='main')
df_detail = pd.read_excel('data.xlsx', sheet_name='detail')

def data_filter(df, hotel_id, year, week):
    filtered_df = df[(df['hotel_id'] == hotel_id) &
                     (df['year'] == year) &
                     (df['week'] == week)]
    return filtered_df

2.2 定义大模型配置和提示词

注意,提示词的要点如下:

1. 说明背景和上下文(CONTEXT)。帮助大模型理解上下文和更好的输出。

2. 送入数据,和字段的解释。帮助大模型理数据含义。

3. 说明需要注意的点(ATTENTION)。这里需要按照场景不断调试,根据bad case调整。

4. 给点 few-shoot,给一些示例(EXAMPLE)。大模型的输出会参考few-shoot的格式和内容。

def llm_request(prompt='你现在作为一名数据分析专家...'):
    response = Generation.call(
        model='qwen-max',
        prompt=prompt,
        stream=False,
        top_p=0.1,
        temperature = 0.1
    )
    return response
    
def get_prompt(data_comment_main, mdf_main, data_comment_detail, mdf_detail, time):
    prompt = f'''
    # CONTEXT #
    你是一家酒店的数据分析师,你需要根据酒店的经营数据进行分析,判断经营状况是否健康,并给出建设性的建议。
    数据共有两张表,分别是 data_main 和 data_detail 。
    data_main 是某家酒店每周的经营概况,包括营业收入、营业收入目标值、营业收入完成度、出租率和平均房价。如果分析营收情况,请使用这张表。
    data_detail 是这家酒店上述指标的详情情况。可以通过其中的字段 factor 进行细致的分析。如,data_main中的adr可以使用data_detail的factor维度进行拆解,查看客源角度下的详细情况。分析factor各个维度下的情况时,请优先选择变动巨大的factor进行分析。变动小的可以忽略不说。
    
    data_main 的字段含义如下:
    {data_comment_main}
    data_main 的数据内容如下:
    {mdf_main}
    data_detail 的字段含义如下:
    {data_comment_detail}
    data_detail 的数据内容如下:
    {mdf_detail}   


    # ATTENTION #
    1. 数据中的week,即时间单位周,是以一年的开始为起点,1、2、3、4直到年末,一般有53周。
    2. 如果本周是2024年的第n周,则上周是2024年的第n-1周。
    3. 出租率=酒店已经出售的房间数/可以正常出售的房间数。而间夜量就是酒店已经出售的房间数,一般来说酒店可以正常出售的房间数保持稳定,所有间夜量的变动和出租率的变动呈现紧密的正向关系。
    4. 如果缺失了部分数据导致你无法分析,请跳过。
    5. 不允许输出 分数,如 2/3 
    6. 不允许输出 .png 或.jpg 
    
    
    # EXAMPLE 1#
    主人好,小爱为您播报上周简报:
    
    【过去一周经营复盘】
    本周营业收入为13200元,较上周增加700元。营收入完成度达到114.06%,表现优秀。出租率为97.2%,较上周下降约7个百分点。平均房价为213.6元,较上周下降17.9元。
    出租率变动的主要原因有:双床类日均间夜量为18.1,较上周下降了5.2,对出租率产生较大影响。
    平均房价变动的主要原因有:时租平均房价较上周下降了42.3元,虽然其日均间夜量不高,但其大额的降幅仍一定程度上拉低了平均房价。酒店直销平均房价较上周下降了24.2元,对平均房价下降的影响较大。
    
    【未来一周经营预警】
    未来一周的平均在手预定为21,较上周减少8,请注意。
    
    【管理复盘】
    产品(硬件):过去一周本酒店有2间维修房。
    产品(软件):本店全渠道网评分4.2,位于竞争圈第2名。
    
    总结,对于2024年第四周的经营表现,酒店管理层应关注出租率下滑问题,尤其是个人会员和时租客源的间夜量下降以及双床类房型的需求减弱。同时,针对个人会员、时租客源和酒店直销的平均房价下降现象,需深入研究市场动态和客户需求变化,适时调整定价策略以提升收益。尽管本周营业收入完成度优秀,但需持续关注出租率与平均房价的波动,确保酒店长期稳定运营。此外,未来在手预定的下滑可能导致下周的收益偏低,请提前做好营销策略,抓住市场走势。最后,请根据产品的软硬件情况,及时改进产品和优化服务,确保收益的稳定增长。
    
    # EXAMPLE 2#
    主人好,小爱为您播报上周简报:
    
    【过去一周经营复盘】
    本周营业收入为26400万元,较上周减少1800元。营收完成度为90.6%,表现一般。出租率为43.1%,较上周下降约3个百分点。平均房价为72.6元,较上周上升2.0元。
    出租率变动的主要原因有:高价值日均间夜量为6.87,较上周下降了3.2,对出租率产生明显负向影响。周中周末角度:周末日均间夜量为9.2,较上周下降了6.2,对出租率产生较大压力。
    平均房价变动的主要原因有:周末平均房价为68.8元,较上周上升了4.2元,对整体平均房价产生一定拉动。新客平均房价较上周上升了2.3元,也起到了推动作用
    
    【未来一周经营预警】
    未来一周的平均在手预定为21,较上周增加5,请注意。
    
    【管理复盘】
    产品(硬件):过去一周本酒店有0间维修房。
    产品(软件):本店全渠道网评分4.0,位于竞争圈第6名。
    
    总结,对于2024年第三周的经营表现,酒店管理层应重点关注出租率的下滑,特别是高价值客户日均间夜的减少。同时,注意周中周末的营销策略,维持稳定的间夜量。酒店应继续关注市场动态和客户需求变化,针对出租率下滑问题,考虑优化营销策略,提升客房销售效率;同时,针对平均房价上升的趋势,可适当调整定价策略,以进一步提升收益。尽管本周营收完成度良好,但需持续监控出租率与平均房价的波动,确保酒店长期稳定运营。此外,鉴于未来一周在手预定有所增加,酒店应做好接待准备,把握住这一积极趋势。最后,继续保持良好的服务品质,巩固全渠道网评分优势,助力酒店收益稳定增长。
    
    
    # OBJECTIVE # 
    现在请你根据数据,给出{time}的本周简报。
     '''
    return prompt

2.3 送入数据含义

data_comment_main = f'''
`hotel_id` : '酒店ID; 每家酒店的唯一标识符,通常由一串数字组成',
`year` : '年份; 每条记录的发生的年',
`week` : '周数; 每条记录的发生的周,指一年开始至结束,一般有53周',
`revenue` : 营业收入,酒店营业总收入,单位是元',
`revenue_target` : '营业收入目标值; 是集团设定的营业收入目标',
`revenue_pct` : '营业收入完成度,也简称为 营收完成度; 营业收入完成度=营业收入/营业收入目标值',
`revenue_add` : 营业收入较上周变动值;revenue_add=本周的revenue-上周的revenue,是本周营业收入较上周变动的营收收入金额,单位是元',
`occ` : '出租率; 出租率=酒店已经出售的房间数/可以正常出售的房间数,是已经出售的房间数占所有可以正常出售的房间数的比例',
`occ_add` : '出租率较上周变动值; occ_add=本周的occ-上周的occ,是本周occ较上周变动的值',
`adr` : '平均房价; 平均房价=总营收/已售间夜(已售间夜为酒店已经出售的房间数),是一种衡量平均每个间夜收入的指标',
`adr_add` : '平均房价较上周变动值; adr_add=本周的adr-上周的adr,是本周adr较上周变动的值',
`otb` : 未来一周在手预定;未来一周的在手预定的数量',
`otb-add` : 未来一周在手预定较上周的变化值;是本周的未来一周的在手预定的数量相较上周的变化值;',
`room_repaired` : '维修房数量; 待维修的房间的数量',
`review` : '全渠道网评分; 本周全渠道网评分的值',
`review_rank` : '全渠道网评分排名; 本周全渠道网评分的排名',
'''

data_comment_detail = f'''
`hotel_id` : '酒店ID; 每家酒店的唯一标识符,通常由一串数字组成',
`year` : '年份; 每条记录的发生的年',
`week` : '周数; 每条记录的发生的周,指一年开始至结束,一般有53周',
`dimension` : 维度;包括 customer(客源角度)、room_class(房型角度)、source(销售渠道角度)、valuetpye(客户价值角度)、weekday(周中周末角度)',
`factor` : '因素;是维度下的子项; 如customer(客源角度)包括的因素有非会员、个人会员、其他、企业会员、时租、中介',
`croomday_pday` : '本周各因素的日均间夜;是本周的平均每日间夜量',
`adr` : '平均房价; 平均房价=总营收/已售间夜(已售间夜为酒店已经出售的房间数),是一种衡量平均每个间夜收入的指标',
`croomday_pday_add` : '本周各因素的日均间夜较上周变动值;是本周各因素下的日均间夜量较上周变动的值',
`adr_add` : '平均房价较上周变动值; adr_add=本周的adr-上周的adr,是本周adr较上周变动的值',
'''

time = f'''
   2024年第4周
    '''

main = data_filter(df_main,10000032, 2024, 4).to_markdown(index=False)
detail = data_filter(df_detail,10000032, 2024, 4).to_markdown(index=False)

2.4 运行

answer = llm_request(get_prompt(data_comment_main, main, data_comment_detail, detail, time))
print(answer.output.text)

结果如下:

3 总结

目前,大模型的效果尚不稳定(如让大模型做小数点保留位数的处理、%的使用等),使用需要谨慎。在使用过程中,需要花费一定时间配置数据和字段的解释,并尝试运行后,观察模型的输出,并一点一点解决一些bad case。

本篇要点在于如何设计提示词并保证模型输出的效果,欢迎尝试和提问。

  • 23
    点赞
  • 12
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

lzc1009840152

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值