761 lines
29 KiB
Python
761 lines
29 KiB
Python
|
||
import json
|
||
import openai
|
||
from collections import defaultdict
|
||
|
||
# 商品和目录的数据文件
|
||
products_file = 'products_zh.json'
|
||
categories_file = 'categories_zh.json'
|
||
|
||
# 分隔符
|
||
delimiter = "####"
|
||
# 第二步(抽取商品)系统信息文本
|
||
step_2_system_message_content = f"""
|
||
您将获得一次客户服务对话。最近的用户查询将使用{delimiter}字符进行分隔。
|
||
|
||
输出一个Python对象列表,其中每个对象具有以下格式:
|
||
'category': <包括以下几个类别:Computers and Laptops、martphones and Accessories、elevisions and Home Theater Systems、elevisions and Home Theater Systems、elevisions and Home Theater Systems、'category': <包括以下几个类别:Computers and Laptops、martphones and Accessories、elevisions and Home Theater Systems、elevisions and Home Theater Systems、elevisions and Home Theater Systems、相机和摄像机>,
|
||
或者
|
||
'products': <必须是下面的允许产品列表中找到的产品>
|
||
|
||
类别和产品必须在客户服务查询中找到。
|
||
如果提到了产品,它必须与下面的允许产品列表中的正确类别相关联。
|
||
如果未找到任何产品或类别,请输出一个空列表。
|
||
只列出之前对话的早期部分未提及和讨论的产品和类别。
|
||
|
||
允许的产品:
|
||
|
||
Computers and Laptops类别:
|
||
TechPro Ultrabook
|
||
BlueWave Gaming Laptop
|
||
PowerLite Convertible
|
||
TechPro Desktop
|
||
BlueWave Chromebook
|
||
|
||
Smartphones and Accessories类别:
|
||
SmartX ProPhone
|
||
MobiTech PowerCase
|
||
SmartX MiniPhone
|
||
MobiTech Wireless Charger
|
||
SmartX EarBuds
|
||
|
||
Televisions and Home Theater Systems类别:
|
||
CineView 4K TV
|
||
SoundMax Home Theater
|
||
CineView 8K TV
|
||
SoundMax Soundbar
|
||
CineView OLED TV
|
||
|
||
Gaming Consoles and Accessories类别:
|
||
GameSphere X
|
||
ProGamer Controller
|
||
GameSphere Y
|
||
ProGamer Racing Wheel
|
||
GameSphere VR Headset
|
||
|
||
Audio Equipment类别:
|
||
AudioPhonic Noise-Canceling Headphones
|
||
WaveSound Bluetooth Speaker
|
||
AudioPhonic True Wireless Earbuds
|
||
WaveSound Soundbar
|
||
AudioPhonic Turntable
|
||
|
||
Cameras and Camcorders类别:
|
||
FotoSnap DSLR Camera
|
||
ActionCam 4K
|
||
FotoSnap Mirrorless Camera
|
||
ZoomMaster Camcorder
|
||
FotoSnap Instant Camera
|
||
|
||
只输出对象列表,不包含其他内容。
|
||
"""
|
||
|
||
step_2_system_message = {'role':'system', 'content': step_2_system_message_content}
|
||
|
||
# 第四步(生成用户回答)的系统信息
|
||
step_4_system_message_content = f"""
|
||
你是一家大型电子商店的客户服务助理。
|
||
以友好和乐于助人的语气回答,回答保持简洁明了。
|
||
确保让用户提出相关的后续问题。
|
||
"""
|
||
|
||
step_4_system_message = {'role':'system', 'content': step_4_system_message_content}
|
||
|
||
# 第六步(验证模型回答)的系统信息
|
||
step_6_system_message_content = f"""
|
||
你是一个助手,评估客户服务代理的回答是否足够回答客户的问题,并验证助手从产品信息中引用的所有事实是否正确。
|
||
对话历史、产品信息、用户和客户服务代理的消息将用```进行分隔。
|
||
请用一个字母回答,不带标点符号:
|
||
Y - 如果输出足够回答问题,并且回答正确使用了产品信息
|
||
N - 输出不足够回答问题,或者没有正确使用产品信息
|
||
|
||
只输出一个字母。
|
||
"""
|
||
|
||
step_6_system_message = {'role':'system', 'content': step_6_system_message_content}
|
||
|
||
# 使用 ChatCompletion 接口
|
||
def get_completion_from_messages(messages, model="gpt-3.5-turbo", temperature=0, max_tokens=500):
|
||
response = openai.ChatCompletion.create(
|
||
model=model,
|
||
messages=messages,
|
||
temperature=temperature,
|
||
max_tokens=max_tokens,
|
||
)
|
||
return response.choices[0].message["content"]
|
||
|
||
# 创建目录(如果没有本地目录文件,需要创建一份)
|
||
def create_categories():
|
||
categories_dict = {
|
||
'Billing': [
|
||
'Unsubscribe or upgrade',
|
||
'Add a payment method',
|
||
'Explanation for charge',
|
||
'Dispute a charge'],
|
||
'Technical Support':[
|
||
'General troubleshooting',
|
||
'Device compatibility',
|
||
'Software updates'],
|
||
'Account Management':[
|
||
'Password reset',
|
||
'Update personal information',
|
||
'Close account',
|
||
'Account security'],
|
||
'General Inquiry':[
|
||
'Product information',
|
||
'Pricing',
|
||
'Feedback',
|
||
'Speak to a human']
|
||
}
|
||
|
||
with open(categories_file, 'w') as file:
|
||
json.dump(categories_dict, file)
|
||
|
||
return categories_dict
|
||
|
||
# 获取目录数据
|
||
def get_categories():
|
||
with open(categories_file, 'r') as file:
|
||
categories = json.load(file)
|
||
return categories
|
||
|
||
# 获取商品列表
|
||
def get_product_list():
|
||
"""
|
||
具体原理参见第四节课
|
||
"""
|
||
products = get_products()
|
||
product_list = []
|
||
for product in products.keys():
|
||
product_list.append(product)
|
||
|
||
return product_list
|
||
|
||
# 获取商品和目录
|
||
def get_products_and_category():
|
||
"""
|
||
具体原理参见第五节课
|
||
"""
|
||
products = get_products()
|
||
products_by_category = defaultdict(list)
|
||
for product_name, product_info in products.items():
|
||
category = product_info.get('类别')
|
||
if category:
|
||
products_by_category[category].append(product_info.get('名称'))
|
||
|
||
return dict(products_by_category)
|
||
|
||
# 从商品数据中获取
|
||
def get_products():
|
||
with open(products_file, 'r') as file:
|
||
products = json.load(file)
|
||
return products
|
||
|
||
# 从用户问题中抽取商品和类别
|
||
def find_category_and_product(user_input,products_and_category):
|
||
delimiter = "####"
|
||
system_message = f"""
|
||
您将获得客户服务查询。
|
||
客户服务查询将使用{delimiter}字符分隔。
|
||
输出一个可解析的Python列表,列表每一个元素是一个JSON对象,每个对象具有以下格式:
|
||
'category': <包括以下几个类别:Computers and Laptops,Smartphones and Accessories,Televisions and Home Theater Systems,Gaming Consoles and Accessories,Audio Equipment,Cameras and Camcorders>
|
||
以及
|
||
'products': <必须是下面的允许产品列表中找到的产品列表>
|
||
|
||
其中类别和产品必须在客户服务查询中找到。
|
||
如果提到了产品,则必须将其与允许产品列表中的正确类别关联。
|
||
如果未找到任何产品或类别,则输出一个空列表。
|
||
除了列表外,不要输出其他任何信息!
|
||
|
||
允许的产品以JSON格式提供。
|
||
每个项的键表示类别。
|
||
每个项的值是该类别中的产品列表。
|
||
允许的产品:{products_and_category}
|
||
|
||
"""
|
||
messages = [
|
||
{'role':'system', 'content': system_message},
|
||
{'role':'user', 'content': f"{delimiter}{user_input}{delimiter}"},
|
||
]
|
||
return get_completion_from_messages(messages)
|
||
|
||
# 相比上一个函数,可获取的商品直接在 template 中限定
|
||
def find_category_and_product_only(user_input,products_and_category):
|
||
delimiter = "####"
|
||
system_message = f"""
|
||
您将获得客户服务查询。
|
||
客户服务查询将使用{delimiter}字符作为分隔符。
|
||
请仅输出一个可解析的Python列表,列表每一个元素是一个JSON对象,每个对象具有以下格式:
|
||
'category': <包括以下几个类别:Computers and Laptops、Smartphones and Accessories、Televisions and Home Theater Systems、Gaming Consoles and Accessories、Audio Equipment、Cameras and Camcorders>,
|
||
以及
|
||
'products': <必须是下面的允许产品列表中找到的产品列表>
|
||
|
||
类别和产品必须在客户服务查询中找到。
|
||
如果提到了某个产品,它必须与允许产品列表中的正确类别关联。
|
||
如果未找到任何产品或类别,则输出一个空列表。
|
||
除了列表外,不要输出其他任何信息!
|
||
|
||
允许的产品:
|
||
|
||
Computers and Laptops category:
|
||
TechPro Ultrabook
|
||
BlueWave Gaming Laptop
|
||
PowerLite Convertible
|
||
TechPro Desktop
|
||
BlueWave Chromebook
|
||
|
||
Smartphones and Accessories category:
|
||
SmartX ProPhone
|
||
MobiTech PowerCase
|
||
SmartX MiniPhone
|
||
MobiTech Wireless Charger
|
||
SmartX EarBuds
|
||
|
||
Televisions and Home Theater Systems category:
|
||
CineView 4K TV
|
||
SoundMax Home Theater
|
||
CineView 8K TV
|
||
SoundMax Soundbar
|
||
CineView OLED TV
|
||
|
||
Gaming Consoles and Accessories category:
|
||
GameSphere X
|
||
ProGamer Controller
|
||
GameSphere Y
|
||
ProGamer Racing Wheel
|
||
GameSphere VR Headset
|
||
|
||
Audio Equipment category:
|
||
AudioPhonic Noise-Canceling Headphones
|
||
WaveSound Bluetooth Speaker
|
||
AudioPhonic True Wireless Earbuds
|
||
WaveSound Soundbar
|
||
AudioPhonic Turntable
|
||
|
||
Cameras and Camcorders category:
|
||
FotoSnap DSLR Camera
|
||
ActionCam 4K
|
||
FotoSnap Mirrorless Camera
|
||
ZoomMaster Camcorder
|
||
FotoSnap Instant Camera
|
||
|
||
只输出对象列表,不包含其他内容。
|
||
"""
|
||
messages = [
|
||
{'role':'system', 'content': system_message},
|
||
{'role':'user', 'content': f"{delimiter}{user_input}{delimiter}"},
|
||
]
|
||
return get_completion_from_messages(messages)
|
||
|
||
# 从问题中抽取商品
|
||
def get_products_from_query(user_msg):
|
||
"""
|
||
代码来自于第五节课
|
||
"""
|
||
products_and_category = get_products_and_category()
|
||
delimiter = "####"
|
||
system_message = f"""
|
||
您将获得客户服务查询。
|
||
客户服务查询将使用{delimiter}字符作为分隔符。
|
||
请仅输出一个可解析的Python列表,列表每一个元素是一个JSON对象,每个对象具有以下格式:
|
||
'category': <包括以下几个类别:Computers and Laptops、Smartphones and Accessories、Televisions and Home Theater Systems、Gaming Consoles and Accessories、Audio Equipment、Cameras and Camcorders>,
|
||
以及
|
||
'products': <必须是下面的允许产品列表中找到的产品列表>
|
||
|
||
类别和产品必须在客户服务查询中找到。
|
||
如果提到了某个产品,它必须与允许产品列表中的正确类别关联。
|
||
如果未找到任何产品或类别,则输出一个空列表。
|
||
除了列表外,不要输出其他任何信息!
|
||
|
||
允许的产品以JSON格式提供。
|
||
每个项目的键表示类别。
|
||
每个项目的值是该类别中的产品列表。
|
||
|
||
以下是允许的产品:{products_and_category}
|
||
|
||
"""
|
||
|
||
messages = [
|
||
{'role':'system', 'content': system_message},
|
||
{'role':'user', 'content': f"{delimiter}{user_msg}{delimiter}"},
|
||
]
|
||
category_and_product_response = get_completion_from_messages(messages)
|
||
|
||
return category_and_product_response
|
||
|
||
|
||
# 商品信息的搜索
|
||
def get_product_by_name(name):
|
||
products = get_products()
|
||
return products.get(name, None)
|
||
|
||
def get_products_by_category(category):
|
||
products = get_products()
|
||
return [product for product in products.values() if product["category"] == category]
|
||
|
||
def get_mentioned_product_info(data_list):
|
||
"""
|
||
具体原理参见第五、六节课
|
||
"""
|
||
product_info_l = []
|
||
|
||
if data_list is None:
|
||
return product_info_l
|
||
|
||
for data in data_list:
|
||
try:
|
||
if "products" in data:
|
||
products_list = data["products"]
|
||
for product_name in products_list:
|
||
product = get_product_by_name(product_name)
|
||
if product:
|
||
product_info_l.append(product)
|
||
else:
|
||
print(f"错误: 商品 '{product_name}' 未找到")
|
||
elif "category" in data:
|
||
category_name = data["category"]
|
||
category_products = get_products_by_category(category_name)
|
||
for product in category_products:
|
||
product_info_l.append(product)
|
||
else:
|
||
print("错误:非法的商品格式")
|
||
except Exception as e:
|
||
print(f"Error: {e}")
|
||
|
||
return product_info_l
|
||
|
||
|
||
# 以下函数原理参见第五节课
|
||
def read_string_to_list(input_string):
|
||
if input_string is None:
|
||
return None
|
||
|
||
try:
|
||
input_string = input_string.replace("'", "\"") # Replace single quotes with double quotes for valid JSON
|
||
data = json.loads(input_string)
|
||
return data
|
||
except json.JSONDecodeError:
|
||
print(input_string)
|
||
print("错误:非法的 Json 格式")
|
||
return None
|
||
|
||
def generate_output_string(data_list):
|
||
output_string = ""
|
||
|
||
if data_list is None:
|
||
return output_string
|
||
# print(data_list)
|
||
for data in data_list:
|
||
try:
|
||
if "products" in data:
|
||
# print(data)
|
||
products_list = data["products"]
|
||
for product_name in products_list:
|
||
product = get_product_by_name(product_name)
|
||
if product:
|
||
output_string += json.dumps(product, indent=4) + "\n"
|
||
else:
|
||
print(f"错误: 商品 '{product_name}' 没有找到")
|
||
elif "category" in data:
|
||
category_name = data["category"]
|
||
category_products = get_products_by_category(category_name)
|
||
for product in category_products:
|
||
output_string += json.dumps(product, indent=4) + "\n"
|
||
else:
|
||
print("错误:非法的商品格式")
|
||
except Exception as e:
|
||
print(f"Error: {e}")
|
||
|
||
return output_string
|
||
|
||
# Example usage:
|
||
#product_information_for_user_message_1 = generate_output_string(category_and_product_list)
|
||
#print(product_information_for_user_message_1)
|
||
# 回答用户问题
|
||
def answer_user_msg(user_msg,product_info):
|
||
"""
|
||
代码参见第五节课
|
||
"""
|
||
delimiter = "####"
|
||
system_message = f"""
|
||
您是一家大型电子商店的客户服务助理。\
|
||
请用友好和乐于助人的口吻回答问题,提供简洁明了的答案。\
|
||
确保向用户提出相关的后续问题。
|
||
"""
|
||
# user_msg = f"""
|
||
# tell me about the smartx pro phone and the fotosnap camera, the dslr one. Also what tell me about your tvs"""
|
||
messages = [
|
||
{'role':'system', 'content': system_message},
|
||
{'role':'user', 'content': f"{delimiter}{user_msg}{delimiter}"},
|
||
{'role':'assistant', 'content': f"相关产品信息:\n{product_info}"},
|
||
]
|
||
response = get_completion_from_messages(messages)
|
||
return response
|
||
|
||
# 创建并存入商品数据
|
||
def create_products():
|
||
# product information
|
||
# fun fact: all these products are fake and were generated by a language model
|
||
products = {
|
||
"TechPro Ultrabook": {
|
||
"name": "TechPro Ultrabook",
|
||
"category": "Computers and Laptops",
|
||
"brand": "TechPro",
|
||
"model_number": "TP-UB100",
|
||
"warranty": "1 year",
|
||
"rating": 4.5,
|
||
"features": ["13.3-inch display", "8GB RAM", "256GB SSD", "Intel Core i5 processor"],
|
||
"description": "A sleek and lightweight ultrabook for everyday use.",
|
||
"price": 799.99
|
||
},
|
||
"BlueWave Gaming Laptop": {
|
||
"name": "BlueWave Gaming Laptop",
|
||
"category": "Computers and Laptops",
|
||
"brand": "BlueWave",
|
||
"model_number": "BW-GL200",
|
||
"warranty": "2 years",
|
||
"rating": 4.7,
|
||
"features": ["15.6-inch display", "16GB RAM", "512GB SSD", "NVIDIA GeForce RTX 3060"],
|
||
"description": "A high-performance gaming laptop for an immersive experience.",
|
||
"price": 1199.99
|
||
},
|
||
"PowerLite Convertible": {
|
||
"name": "PowerLite Convertible",
|
||
"category": "Computers and Laptops",
|
||
"brand": "PowerLite",
|
||
"model_number": "PL-CV300",
|
||
"warranty": "1 year",
|
||
"rating": 4.3,
|
||
"features": ["14-inch touchscreen", "8GB RAM", "256GB SSD", "360-degree hinge"],
|
||
"description": "A versatile convertible laptop with a responsive touchscreen.",
|
||
"price": 699.99
|
||
},
|
||
"TechPro Desktop": {
|
||
"name": "TechPro Desktop",
|
||
"category": "Computers and Laptops",
|
||
"brand": "TechPro",
|
||
"model_number": "TP-DT500",
|
||
"warranty": "1 year",
|
||
"rating": 4.4,
|
||
"features": ["Intel Core i7 processor", "16GB RAM", "1TB HDD", "NVIDIA GeForce GTX 1660"],
|
||
"description": "A powerful desktop computer for work and play.",
|
||
"price": 999.99
|
||
},
|
||
"BlueWave Chromebook": {
|
||
"name": "BlueWave Chromebook",
|
||
"category": "Computers and Laptops",
|
||
"brand": "BlueWave",
|
||
"model_number": "BW-CB100",
|
||
"warranty": "1 year",
|
||
"rating": 4.1,
|
||
"features": ["11.6-inch display", "4GB RAM", "32GB eMMC", "Chrome OS"],
|
||
"description": "A compact and affordable Chromebook for everyday tasks.",
|
||
"price": 249.99
|
||
},
|
||
"SmartX ProPhone": {
|
||
"name": "SmartX ProPhone",
|
||
"category": "Smartphones and Accessories",
|
||
"brand": "SmartX",
|
||
"model_number": "SX-PP10",
|
||
"warranty": "1 year",
|
||
"rating": 4.6,
|
||
"features": ["6.1-inch display", "128GB storage", "12MP dual camera", "5G"],
|
||
"description": "A powerful smartphone with advanced camera features.",
|
||
"price": 899.99
|
||
},
|
||
"MobiTech PowerCase": {
|
||
"name": "MobiTech PowerCase",
|
||
"category": "Smartphones and Accessories",
|
||
"brand": "MobiTech",
|
||
"model_number": "MT-PC20",
|
||
"warranty": "1 year",
|
||
"rating": 4.3,
|
||
"features": ["5000mAh battery", "Wireless charging", "Compatible with SmartX ProPhone"],
|
||
"description": "A protective case with built-in battery for extended usage.",
|
||
"price": 59.99
|
||
},
|
||
"SmartX MiniPhone": {
|
||
"name": "SmartX MiniPhone",
|
||
"category": "Smartphones and Accessories",
|
||
"brand": "SmartX",
|
||
"model_number": "SX-MP5",
|
||
"warranty": "1 year",
|
||
"rating": 4.2,
|
||
"features": ["4.7-inch display", "64GB storage", "8MP camera", "4G"],
|
||
"description": "A compact and affordable smartphone for basic tasks.",
|
||
"price": 399.99
|
||
},
|
||
"MobiTech Wireless Charger": {
|
||
"name": "MobiTech Wireless Charger",
|
||
"category": "Smartphones and Accessories",
|
||
"brand": "MobiTech",
|
||
"model_number": "MT-WC10",
|
||
"warranty": "1 year",
|
||
"rating": 4.5,
|
||
"features": ["10W fast charging", "Qi-compatible", "LED indicator", "Compact design"],
|
||
"description": "A convenient wireless charger for a clutter-free workspace.",
|
||
"price": 29.99
|
||
},
|
||
"SmartX EarBuds": {
|
||
"name": "SmartX EarBuds",
|
||
"category": "Smartphones and Accessories",
|
||
"brand": "SmartX",
|
||
"model_number": "SX-EB20",
|
||
"warranty": "1 year",
|
||
"rating": 4.4,
|
||
"features": ["True wireless", "Bluetooth 5.0", "Touch controls", "24-hour battery life"],
|
||
"description": "Experience true wireless freedom with these comfortable earbuds.",
|
||
"price": 99.99
|
||
},
|
||
|
||
"CineView 4K TV": {
|
||
"name": "CineView 4K TV",
|
||
"category": "Televisions and Home Theater Systems",
|
||
"brand": "CineView",
|
||
"model_number": "CV-4K55",
|
||
"warranty": "2 years",
|
||
"rating": 4.8,
|
||
"features": ["55-inch display", "4K resolution", "HDR", "Smart TV"],
|
||
"description": "A stunning 4K TV with vibrant colors and smart features.",
|
||
"price": 599.99
|
||
},
|
||
"SoundMax Home Theater": {
|
||
"name": "SoundMax Home Theater",
|
||
"category": "Televisions and Home Theater Systems",
|
||
"brand": "SoundMax",
|
||
"model_number": "SM-HT100",
|
||
"warranty": "1 year",
|
||
"rating": 4.4,
|
||
"features": ["5.1 channel", "1000W output", "Wireless subwoofer", "Bluetooth"],
|
||
"description": "A powerful home theater system for an immersive audio experience.",
|
||
"price": 399.99
|
||
},
|
||
"CineView 8K TV": {
|
||
"name": "CineView 8K TV",
|
||
"category": "Televisions and Home Theater Systems",
|
||
"brand": "CineView",
|
||
"model_number": "CV-8K65",
|
||
"warranty": "2 years",
|
||
"rating": 4.9,
|
||
"features": ["65-inch display", "8K resolution", "HDR", "Smart TV"],
|
||
"description": "Experience the future of television with this stunning 8K TV.",
|
||
"price": 2999.99
|
||
},
|
||
"SoundMax Soundbar": {
|
||
"name": "SoundMax Soundbar",
|
||
"category": "Televisions and Home Theater Systems",
|
||
"brand": "SoundMax",
|
||
"model_number": "SM-SB50",
|
||
"warranty": "1 year",
|
||
"rating": 4.3,
|
||
"features": ["2.1 channel", "300W output", "Wireless subwoofer", "Bluetooth"],
|
||
"description": "Upgrade your TV's audio with this sleek and powerful soundbar.",
|
||
"price": 199.99
|
||
},
|
||
"CineView OLED TV": {
|
||
"name": "CineView OLED TV",
|
||
"category": "Televisions and Home Theater Systems",
|
||
"brand": "CineView",
|
||
"model_number": "CV-OLED55",
|
||
"warranty": "2 years",
|
||
"rating": 4.7,
|
||
"features": ["55-inch display", "4K resolution", "HDR", "Smart TV"],
|
||
"description": "Experience true blacks and vibrant colors with this OLED TV.",
|
||
"price": 1499.99
|
||
},
|
||
|
||
"GameSphere X": {
|
||
"name": "GameSphere X",
|
||
"category": "Gaming Consoles and Accessories",
|
||
"brand": "GameSphere",
|
||
"model_number": "GS-X",
|
||
"warranty": "1 year",
|
||
"rating": 4.9,
|
||
"features": ["4K gaming", "1TB storage", "Backward compatibility", "Online multiplayer"],
|
||
"description": "A next-generation gaming console for the ultimate gaming experience.",
|
||
"price": 499.99
|
||
},
|
||
"ProGamer Controller": {
|
||
"name": "ProGamer Controller",
|
||
"category": "Gaming Consoles and Accessories",
|
||
"brand": "ProGamer",
|
||
"model_number": "PG-C100",
|
||
"warranty": "1 year",
|
||
"rating": 4.2,
|
||
"features": ["Ergonomic design", "Customizable buttons", "Wireless", "Rechargeable battery"],
|
||
"description": "A high-quality gaming controller for precision and comfort.",
|
||
"price": 59.99
|
||
},
|
||
"GameSphere Y": {
|
||
"name": "GameSphere Y",
|
||
"category": "Gaming Consoles and Accessories",
|
||
"brand": "GameSphere",
|
||
"model_number": "GS-Y",
|
||
"warranty": "1 year",
|
||
"rating": 4.8,
|
||
"features": ["4K gaming", "500GB storage", "Backward compatibility", "Online multiplayer"],
|
||
"description": "A compact gaming console with powerful performance.",
|
||
"price": 399.99
|
||
},
|
||
"ProGamer Racing Wheel": {
|
||
"name": "ProGamer Racing Wheel",
|
||
"category": "Gaming Consoles and Accessories",
|
||
"brand": "ProGamer",
|
||
"model_number": "PG-RW200",
|
||
"warranty": "1 year",
|
||
"rating": 4.5,
|
||
"features": ["Force feedback", "Adjustable pedals", "Paddle shifters", "Compatible with GameSphere X"],
|
||
"description": "Enhance your racing games with this realistic racing wheel.",
|
||
"price": 249.99
|
||
},
|
||
"GameSphere VR Headset": {
|
||
"name": "GameSphere VR Headset",
|
||
"category": "Gaming Consoles and Accessories",
|
||
"brand": "GameSphere",
|
||
"model_number": "GS-VR",
|
||
"warranty": "1 year",
|
||
"rating": 4.6,
|
||
"features": ["Immersive VR experience", "Built-in headphones", "Adjustable headband", "Compatible with GameSphere X"],
|
||
"description": "Step into the world of virtual reality with this comfortable VR headset.",
|
||
"price": 299.99
|
||
},
|
||
|
||
"AudioPhonic Noise-Canceling Headphones": {
|
||
"name": "AudioPhonic Noise-Canceling Headphones",
|
||
"category": "Audio Equipment",
|
||
"brand": "AudioPhonic",
|
||
"model_number": "AP-NC100",
|
||
"warranty": "1 year",
|
||
"rating": 4.6,
|
||
"features": ["Active noise-canceling", "Bluetooth", "20-hour battery life", "Comfortable fit"],
|
||
"description": "Experience immersive sound with these noise-canceling headphones.",
|
||
"price": 199.99
|
||
},
|
||
"WaveSound Bluetooth Speaker": {
|
||
"name": "WaveSound Bluetooth Speaker",
|
||
"category": "Audio Equipment",
|
||
"brand": "WaveSound",
|
||
"model_number": "WS-BS50",
|
||
"warranty": "1 year",
|
||
"rating": 4.5,
|
||
"features": ["Portable", "10-hour battery life", "Water-resistant", "Built-in microphone"],
|
||
"description": "A compact and versatile Bluetooth speaker for music on the go.",
|
||
"price": 49.99
|
||
},
|
||
"AudioPhonic True Wireless Earbuds": {
|
||
"name": "AudioPhonic True Wireless Earbuds",
|
||
"category": "Audio Equipment",
|
||
"brand": "AudioPhonic",
|
||
"model_number": "AP-TW20",
|
||
"warranty": "1 year",
|
||
"rating": 4.4,
|
||
"features": ["True wireless", "Bluetooth 5.0", "Touch controls", "18-hour battery life"],
|
||
"description": "Enjoy music without wires with these comfortable true wireless earbuds.",
|
||
"price": 79.99
|
||
},
|
||
"WaveSound Soundbar": {
|
||
"name": "WaveSound Soundbar",
|
||
"category": "Audio Equipment",
|
||
"brand": "WaveSound",
|
||
"model_number": "WS-SB40",
|
||
"warranty": "1 year",
|
||
"rating": 4.3,
|
||
"features": ["2.0 channel", "80W output", "Bluetooth", "Wall-mountable"],
|
||
"description": "Upgrade your TV's audio with this slim and powerful soundbar.",
|
||
"price": 99.99
|
||
},
|
||
"AudioPhonic Turntable": {
|
||
"name": "AudioPhonic Turntable",
|
||
"category": "Audio Equipment",
|
||
"brand": "AudioPhonic",
|
||
"model_number": "AP-TT10",
|
||
"warranty": "1 year",
|
||
"rating": 4.2,
|
||
"features": ["3-speed", "Built-in speakers", "Bluetooth", "USB recording"],
|
||
"description": "Rediscover your vinyl collection with this modern turntable.",
|
||
"price": 149.99
|
||
},
|
||
|
||
"FotoSnap DSLR Camera": {
|
||
"name": "FotoSnap DSLR Camera",
|
||
"category": "Cameras and Camcorders",
|
||
"brand": "FotoSnap",
|
||
"model_number": "FS-DSLR200",
|
||
"warranty": "1 year",
|
||
"rating": 4.7,
|
||
"features": ["24.2MP sensor", "1080p video", "3-inch LCD", "Interchangeable lenses"],
|
||
"description": "Capture stunning photos and videos with this versatile DSLR camera.",
|
||
"price": 599.99
|
||
},
|
||
"ActionCam 4K": {
|
||
"name": "ActionCam 4K",
|
||
"category": "Cameras and Camcorders",
|
||
"brand": "ActionCam",
|
||
"model_number": "AC-4K",
|
||
"warranty": "1 year",
|
||
"rating": 4.4,
|
||
"features": ["4K video", "Waterproof", "Image stabilization", "Wi-Fi"],
|
||
"description": "Record your adventures with this rugged and compact 4K action camera.",
|
||
"price": 299.99
|
||
},
|
||
"FotoSnap Mirrorless Camera": {
|
||
"name": "FotoSnap Mirrorless Camera",
|
||
"category": "Cameras and Camcorders",
|
||
"brand": "FotoSnap",
|
||
"model_number": "FS-ML100",
|
||
"warranty": "1 year",
|
||
"rating": 4.6,
|
||
"features": ["20.1MP sensor", "4K video", "3-inch touchscreen", "Interchangeable lenses"],
|
||
"description": "A compact and lightweight mirrorless camera with advanced features.",
|
||
"price": 799.99
|
||
},
|
||
"ZoomMaster Camcorder": {
|
||
"name": "ZoomMaster Camcorder",
|
||
"category": "Cameras and Camcorders",
|
||
"brand": "ZoomMaster",
|
||
"model_number": "ZM-CM50",
|
||
"warranty": "1 year",
|
||
"rating": 4.3,
|
||
"features": ["1080p video", "30x optical zoom", "3-inch LCD", "Image stabilization"],
|
||
"description": "Capture life's moments with this easy-to-use camcorder.",
|
||
"price": 249.99
|
||
},
|
||
"FotoSnap Instant Camera": {
|
||
"name": "FotoSnap Instant Camera",
|
||
"category": "Cameras and Camcorders",
|
||
"brand": "FotoSnap",
|
||
"model_number": "FS-IC10",
|
||
"warranty": "1 year",
|
||
"rating": 4.1,
|
||
"features": ["Instant prints", "Built-in flash", "Selfie mirror", "Battery-powered"],
|
||
"description": "Create instant memories with this fun and portable instant camera.",
|
||
"price": 69.99
|
||
}
|
||
}
|
||
|
||
products_file = 'products.json'
|
||
with open(products_file, 'w') as file:
|
||
json.dump(products, file)
|
||
|
||
return products
|