基于Qwen Agent构建智能餐饮分析助手

引言

在当今数据驱动的商业环境中,餐饮行业面临着如何有效分析和利用大量运营数据的挑战。本文将介绍一个基于Qwen Agent构建的智能餐饮分析助手,该助手能够通过自然语言交互方式,帮助餐饮管理者分析营收数据、了解消费者行为模式,并提供数据可视化支持,从而辅助商业决策。

项目概述

该餐饮分析助手是一个交互式AI应用,具有以下核心功能:

  1. SQL查询执行:将自然语言转换为SQL查询,分析餐饮营收数据

  2. 用户消费分析:计算不同类型用户(年卡、门票、促销票)的园内人均餐饮消费

  3. 影响因素分析:通过机器学习模型分析影响餐饮消费的关键因素

  4. 数据可视化:生成直观的图表,展示数据分析结果

项目基于Python开发,结合了Qwen Agent大模型能力、SQLAlchemy数据库操作、Pandas数据处理和Scikit-learn机器学习等技术。

技术架构

核心组件

  1. Qwen Agent:提供自然语言理解和生成能力,是系统的"大脑"

  2. 自定义工具集:包括SQL执行、消费分析、影响因素分析和图表绘制等工具

  3. 数据库连接层:使用SQLAlchemy连接MySQL数据库

  4. 机器学习模型:使用线性回归和决策树分析影响餐饮消费的因素

  5. 可视化模块:使用Matplotlib生成数据可视化图表

  6. Web界面:提供友好的用户交互界面

系统架构图

复制代码
+------------------+     +------------------+     +------------------+
|                  |     |                  |     |                  |
|   用户界面层      |---->|   Qwen Agent     |---->|   自定义工具集    |
|  (WebUI/终端)    |<----|   (大模型服务)    |<----|   (功能实现)     |
|                  |     |                  |     |                  |
+------------------+     +------------------+     +--------+--------+
                                                          |
                                                          v
                                               +----------+---------+
                                               |                    |
                                               |   数据库/数据处理   |
                                               |                    |
                                               +--------------------+

机器学习模型实现

线性回归模型

用于分析不同类型用户对餐饮消费的贡献:

复制代码
def build_lr_model(df):
    # 数据预处理
    date_col = 'date'
    df['date'] = pd.to_datetime(df[date_col])
    reference_date = pd.to_datetime('2023-01-01')
    df['date_diff'] = (df['date'] - reference_date).dt.days
    df = df.drop(['date'], axis=1)
    
    # 特征和目标变量分离
    filtered_cols = df.columns.tolist()
    filtered_cols.remove('total_fb_revenue')
    
    X = df[filtered_cols]
    y = df['total_fb_revenue']
    
    # 特征向量化
    dvec = DictVectorizer(sparse=False)
    train_features = dvec.fit_transform(X.to_dict(orient='records'))
    
    # 创建并训练模型
    model = LinearRegression()
    model.fit(train_features, y)
    return model, dvec

决策树模型

用于分析影响餐饮消费的关键因素:

复制代码
def build_cart_model(df, target):
    # 数据预处理和特征工程
    df_sql = df.copy()
    df_sql['POO outside BJ'] = 100-df_sql['beijing_guest_ratio']
    df_sql['Pass Revisit %'] = df_sql['ap_attendance'] / df_sql['total_attendance'] * 100
    df_sql.rename(columns={'total_attendance':'Att', 'operating_hours':'Park Hrs', 'max_temperature':'Max Temp'}, inplace=True)
    df = df_sql[['date', 'week_days', 'Att', 'Pass Revisit %', 'Max Temp', 'POO outside BJ', 'Park Hrs'] + [target]]
    
    # 日期处理
    df['date'] = pd.to_datetime(df['date'])
    reference_date = pd.to_datetime('2023-01-01')
    df['date_diff'] = (df['date'] - reference_date).dt.days
    df = df.drop(['date'], axis=1)
    
    # 缺失值处理
    df[target].fillna(df[target].mean(), inplace=True)
    
    # 星期几编码
    weekdays_mapping = {
        'Monday': 1, 'Tuesday': 2, 'Wednesday': 3, 'Thursday': 4,
        'Friday': 5, 'Saturday': 6, 'Sunday': 7,
    }
    df['week_days'] = df['week_days'].replace(weekdays_mapping)
    
    # 特征和目标变量分离
    features = [x for x in df.columns if x != target]
    
    # 训练测试集分割
    X_train, X_test, y_train, y_test = train_test_split(df[features], df[target], test_size=0.2, random_state=42)
    
    # 创建并训练模型
    model = DecisionTreeRegressor(random_state=42, max_depth=4)
    model.fit(X_train, y_train)
    
    return model, features

系统交互模式

终端交互模式

支持命令行界面的连续对话:

复制代码
def app_tui():
    """终端交互模式,支持连续对话、文件输入、实时响应"""
    try:
        # 初始化助手
        bot = init_agent_service()
        # 对话历史
        messages = []
        while True:
            try:
                # 获取用户输入
                query = input('user question: ')
                # 获取可选的文件输入
                file = input('file url (press enter if no file): ').strip()
                # 输入验证
                if not query:
                    print('user question cannot be empty!')
                    continue
                # 构建消息
                if not file:
                    messages.append({'role': 'user', 'content': query})
                else:
                    messages.append({'role': 'user', 'content': [{'text': query}, {'file': file}]})
                print("正在处理您的请求...")
                # 运行助手并处理响应
                response = []
                for resp in bot.run(messages):
                    print('bot response:', resp)
                messages.extend(response)
            except Exception as e:
                print(f"处理请求时出错: {str(e)}")
                print("请重试或输入新的问题")
    except Exception as e:
        print(f"启动终端模式失败: {str(e)}")

Web图形界面模式

提供友好的Web交互界面:

复制代码
def app_gui():
    """图形界面模式,提供 Web 图形界面"""
    try:
        print("正在启动 Web 界面...")
        # 初始化助手
        bot = init_agent_service()
        # 配置聊天界面,列举3个典型餐饮分析问题
        chatbot_config = {
            'prompt.suggestions': [
                '请计算万圣节期间的年卡用户园内人均餐饮消费',
                '分析哪些因素对餐饮服务营收的变大影响较大,诸如大型活动、节假日、票价、促销、天气等',
                '分析哪些因素对餐饮平均消费的变大影响较大,诸如大型活动、节假日、票价、促销、天气等'
            ]
        }
        print("Web 界面准备就绪,正在启动服务...")
        # 启动 Web 界面
        WebUI(
            bot,
            chatbot_config=chatbot_config
        ).run()
    except Exception as e:
        print(f"启动 Web 界面失败: {str(e)}")
        print("请检查网络连接和 API Key 配置")

应用场景与示例

场景一:分析特定活动期间的消费行为

用户可以通过自然语言询问:"请计算万圣节期间的年卡用户园内人均餐饮消费"

系统会:

  1. 调用compute_avg_revenue工具

  2. 分析万圣节期间的消费数据

  3. 构建线性回归模型

  4. 返回年卡用户的人均消费情况及影响因素

场景二:分析影响餐饮总消费的关键因素

用户可以询问:"分析哪些因素对餐饮服务营收的变大影响较大,诸如大型活动、节假日、票价、促销、天气等"

系统会:

  1. 调用analysis_influence_factors工具

  2. 获取相关数据

  3. 构建决策树模型

  4. 生成决策树可视化图表

  5. 返回影响因素分析结果和图表

场景三:自定义SQL查询

用户可以通过自然语言描述需求:"查询2023年国庆节期间的每日餐饮收入和入园人数"

系统会:

  1. 理解用户意图

  2. 生成对应的SQL查询

  3. 调用exc_sql工具执行查询

  4. 返回查询结果

技术亮点

  1. 大模型与专业领域知识结合:将Qwen Agent的自然语言处理能力与餐饮行业专业知识相结合,提供更精准的分析结果

  2. 多模态交互:支持文本输入、文件上传和图表输出等多种交互方式

  3. 机器学习模型集成:集成线性回归和决策树等机器学习模型,提供深入的数据分析能力

  4. 可视化决策支持:通过直观的图表展示分析结果,辅助决策制定

  5. 模块化设计:采用工具注册机制,便于扩展新功能

未来展望

  1. 多数据源集成:集成更多数据源,如天气API、社交媒体情感分析等

  2. 高级预测模型:引入时间序列预测模型,预测未来餐饮消费趋势

  3. 个性化推荐:基于用户消费行为,提供个性化的餐饮推荐

  4. 多语言支持:增加多语言支持,服务国际市场

  5. 移动端应用:开发移动端应用,提供随时随地的数据分析能力

总结

基于Qwen Agent构建的智能餐饮分析助手,通过自然语言交互方式,为餐饮管理者提供了强大的数据分析工具。该系统结合了大模型能力、数据库操作、机器学习和数据可视化等技术,能够帮助用户深入理解消费者行为、分析影响因素,从而制定更科学的经营决策。

随着AI技术的不断发展,我们相信这类智能分析助手将在餐饮行业发挥越来越重要的作用,帮助企业实现数据驱动的精细化运营。