引言
在当今数据驱动的商业环境中,餐饮行业面临着如何有效分析和利用大量运营数据的挑战。本文将介绍一个基于Qwen Agent构建的智能餐饮分析助手,该助手能够通过自然语言交互方式,帮助餐饮管理者分析营收数据、了解消费者行为模式,并提供数据可视化支持,从而辅助商业决策。
项目概述
该餐饮分析助手是一个交互式AI应用,具有以下核心功能:
-
SQL查询执行:将自然语言转换为SQL查询,分析餐饮营收数据
-
用户消费分析:计算不同类型用户(年卡、门票、促销票)的园内人均餐饮消费
-
影响因素分析:通过机器学习模型分析影响餐饮消费的关键因素
-
数据可视化:生成直观的图表,展示数据分析结果
项目基于Python开发,结合了Qwen Agent大模型能力、SQLAlchemy数据库操作、Pandas数据处理和Scikit-learn机器学习等技术。

技术架构
核心组件
-
Qwen Agent:提供自然语言理解和生成能力,是系统的"大脑"
-
自定义工具集:包括SQL执行、消费分析、影响因素分析和图表绘制等工具
-
数据库连接层:使用SQLAlchemy连接MySQL数据库
-
机器学习模型:使用线性回归和决策树分析影响餐饮消费的因素
-
可视化模块:使用Matplotlib生成数据可视化图表
-
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 配置")
应用场景与示例
场景一:分析特定活动期间的消费行为
用户可以通过自然语言询问:"请计算万圣节期间的年卡用户园内人均餐饮消费"
系统会:
-
调用
compute_avg_revenue
工具 -
分析万圣节期间的消费数据
-
构建线性回归模型
-
返回年卡用户的人均消费情况及影响因素
场景二:分析影响餐饮总消费的关键因素
用户可以询问:"分析哪些因素对餐饮服务营收的变大影响较大,诸如大型活动、节假日、票价、促销、天气等"
系统会:
-
调用
analysis_influence_factors
工具 -
获取相关数据
-
构建决策树模型
-
生成决策树可视化图表
-
返回影响因素分析结果和图表
场景三:自定义SQL查询
用户可以通过自然语言描述需求:"查询2023年国庆节期间的每日餐饮收入和入园人数"
系统会:
-
理解用户意图
-
生成对应的SQL查询
-
调用
exc_sql
工具执行查询 -
返回查询结果
技术亮点
-
大模型与专业领域知识结合:将Qwen Agent的自然语言处理能力与餐饮行业专业知识相结合,提供更精准的分析结果
-
多模态交互:支持文本输入、文件上传和图表输出等多种交互方式
-
机器学习模型集成:集成线性回归和决策树等机器学习模型,提供深入的数据分析能力
-
可视化决策支持:通过直观的图表展示分析结果,辅助决策制定
-
模块化设计:采用工具注册机制,便于扩展新功能
未来展望
-
多数据源集成:集成更多数据源,如天气API、社交媒体情感分析等
-
高级预测模型:引入时间序列预测模型,预测未来餐饮消费趋势
-
个性化推荐:基于用户消费行为,提供个性化的餐饮推荐
-
多语言支持:增加多语言支持,服务国际市场
-
移动端应用:开发移动端应用,提供随时随地的数据分析能力
总结
基于Qwen Agent构建的智能餐饮分析助手,通过自然语言交互方式,为餐饮管理者提供了强大的数据分析工具。该系统结合了大模型能力、数据库操作、机器学习和数据可视化等技术,能够帮助用户深入理解消费者行为、分析影响因素,从而制定更科学的经营决策。
随着AI技术的不断发展,我们相信这类智能分析助手将在餐饮行业发挥越来越重要的作用,帮助企业实现数据驱动的精细化运营。