xianyu-auto-reply/bargain_demo.py
2025-07-24 14:16:18 +08:00

181 lines
6.3 KiB
Python
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

#!/usr/bin/env python3
"""
议价功能演示脚本
展示AI回复的议价轮数限制功能
"""
import asyncio
import sys
import os
# 添加项目根目录到Python路径
sys.path.insert(0, os.path.dirname(os.path.abspath(__file__)))
from ai_reply_engine import ai_reply_engine
from db_manager import db_manager
def simulate_bargain_conversation():
"""模拟议价对话流程"""
print("🎭 模拟议价对话流程")
print("=" * 50)
# 测试参数
cookie_id = "demo_account_001"
chat_id = "demo_chat_001"
user_id = "customer_001"
item_id = "item_12345"
user_name = "小明"
# 商品信息
item_info = {
'title': 'iPhone 14 Pro 256GB 深空黑色',
'price': 8999,
'desc': '全新未拆封,国行正品,支持全国联保'
}
# 设置AI回复配置模拟
ai_settings = {
'ai_enabled': True,
'model_name': 'qwen-plus',
'api_key': 'demo-key',
'base_url': 'https://dashscope.aliyuncs.com/compatible-mode/v1',
'max_discount_percent': 10, # 最大优惠10%
'max_discount_amount': 500, # 最大优惠500元
'max_bargain_rounds': 3, # 最大议价3轮
'custom_prompts': ''
}
# 保存配置
db_manager.save_ai_reply_settings(cookie_id, ai_settings)
# 清理之前的对话
try:
with db_manager.lock:
cursor = db_manager.conn.cursor()
cursor.execute('DELETE FROM ai_conversations WHERE cookie_id = ? AND chat_id = ?',
(cookie_id, chat_id))
db_manager.conn.commit()
except:
pass
print(f"📱 商品信息:")
print(f" 标题: {item_info['title']}")
print(f" 价格: ¥{item_info['price']}")
print(f" 描述: {item_info['desc']}")
print(f"\n⚙️ 议价设置:")
print(f" 最大议价轮数: {ai_settings['max_bargain_rounds']}")
print(f" 最大优惠百分比: {ai_settings['max_discount_percent']}%")
print(f" 最大优惠金额: ¥{ai_settings['max_discount_amount']}")
# 模拟议价对话
bargain_messages = [
"你好这个iPhone能便宜点吗",
"8500能卖吗",
"8800行不行最后一次了",
"8700真的不能再少了"
]
print(f"\n💬 议价对话模拟:")
print("-" * 30)
for i, message in enumerate(bargain_messages, 1):
print(f"\n{i}轮议价:")
print(f"👤 {user_name}: {message}")
# 检查当前议价次数
current_count = ai_reply_engine.get_bargain_count(chat_id, cookie_id)
max_rounds = ai_settings['max_bargain_rounds']
print(f"📊 当前议价次数: {current_count}/{max_rounds}")
# 模拟意图检测为price
intent = "price"
# 检查是否超出限制
if current_count >= max_rounds:
print(f"🚫 已达到最大议价轮数限制!")
refuse_reply = "抱歉,这个价格已经是最优惠的了,不能再便宜了哦!"
print(f"🤖 AI回复: {refuse_reply}")
# 保存对话记录
ai_reply_engine.save_conversation(chat_id, cookie_id, user_id, item_id, "user", message, intent)
ai_reply_engine.save_conversation(chat_id, cookie_id, user_id, item_id, "assistant", refuse_reply, intent)
print(f"✋ 议价结束,系统拒绝继续议价")
break
else:
# 模拟AI回复因为没有真实API密钥这里手动模拟
if i == 1:
ai_reply = "您好这个价格已经很优惠了最多可以优惠200元8799元怎么样"
elif i == 2:
ai_reply = "8500太低了我们再让一点8699元这已经是很大的优惠了"
elif i == 3:
ai_reply = "好的看您很有诚意8799元成交这真的是最低价了"
else:
ai_reply = "抱歉,这个价格已经是最优惠的了!"
print(f"🤖 AI回复: {ai_reply}")
# 保存对话记录
ai_reply_engine.save_conversation(chat_id, cookie_id, user_id, item_id, "user", message, intent)
ai_reply_engine.save_conversation(chat_id, cookie_id, user_id, item_id, "assistant", ai_reply, intent)
# 显示最终统计
print(f"\n📈 最终统计:")
final_count = ai_reply_engine.get_bargain_count(chat_id, cookie_id)
print(f" 总议价轮数: {final_count}")
print(f" 最大允许轮数: {max_rounds}")
print(f" 是否达到限制: {'' if final_count >= max_rounds else ''}")
def show_bargain_features():
"""展示议价功能特性"""
print(f"\n🎯 议价功能特性说明:")
print("=" * 50)
features = [
"✅ 智能议价轮数统计:自动统计用户的议价次数",
"✅ 灵活轮数限制可配置最大议价轮数1-10轮",
"✅ 优惠金额控制:设置最大优惠百分比和金额",
"✅ 友好拒绝回复:超出限制时礼貌拒绝继续议价",
"✅ 上下文感知AI了解完整的议价历史",
"✅ 个性化策略:根据议价轮数调整回复策略",
"✅ 数据持久化:议价记录永久保存",
"✅ 实时生效:配置修改后立即生效"
]
for feature in features:
print(f" {feature}")
print(f"\n💡 使用建议:")
suggestions = [
"设置合理的最大议价轮数建议3-5轮",
"配合最大优惠百分比和金额使用",
"在AI提示词中强调议价策略",
"定期分析议价数据,优化策略",
"根据商品类型调整议价参数"
]
for suggestion in suggestions:
print(f"{suggestion}")
def main():
"""主函数"""
print("🚀 AI回复议价功能演示")
# 模拟议价对话
simulate_bargain_conversation()
# 展示功能特性
show_bargain_features()
print(f"\n🎉 演示完成!")
print(f"\n📋 下一步:")
print(f" 1. 在Web界面配置真实的AI API密钥")
print(f" 2. 为需要的账号启用AI回复功能")
print(f" 3. 设置合适的议价参数")
print(f" 4. 测试实际的议价效果")
if __name__ == "__main__":
main()