香氛设计AI

1. 目的

利用AI闭环整个产品设计研发环节,根据用户问题提供不同的产品设计。

产品设计包括:

成分建议,香调建议,总得原理,包装设计。

2. 项目流程

数据获取,数据处理,嵌入数据库,微调过的LLM,图片理解,comfyUI SDXL LCM模型, 前后端,vue+d3js+echarts

3. 数据获取

获取xxx网站的基本数据和获取bing中对应香调和成分的图片,特点:使用playwidgth获取香水基本信息,使用目标检测结合插件,保存网页元数据,可以一次爬取,避免重复爬取。

设计表的结构如下:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
CREATE TABLE `Product` (
`id` int(11) NOT NULL AUTO_INCREMENT COMMENT '商品id',
`name` varchar(255) DEFAULT NULL COMMENT '商品名称',
`english` varchar(255) DEFAULT NULL COMMENT '商品英文名称',
`brand` varchar(255) DEFAULT NULL COMMENT '品牌',
`alias` varchar(255) DEFAULT NULL COMMENT '别名',
`specs` varchar(255) DEFAULT NULL COMMENT '规格',
`category` varchar(255) DEFAULT NULL COMMENT '类别',
`price` float DEFAULT NULL COMMENT '价格',
`fragrance_degree` varchar(255) DEFAULT NULL COMMENT '香味浓烈',
`gender` varchar(255) DEFAULT NULL COMMENT '适用性别',
`tone` varchar(255) DEFAULT NULL COMMENT '香调',
`btone` varchar(255) DEFAULT NULL COMMENT '前调',
`mtone` varchar(255) DEFAULT NULL COMMENT '中调',
`atone` varchar(255) DEFAULT NULL COMMENT '后调',
`fragrance` varchar(255) DEFAULT NULL COMMENT '香味',
`scene` varchar(500) DEFAULT NULL COMMENT '场景',
`vision` varchar(1000) DEFAULT NULL COMMENT '香味画面',
`sentiment` varchar(1000) DEFAULT NULL COMMENT '香味情绪',
`feeling` varchar(1000) DEFAULT NULL COMMENT '香味感受',
`distinct_smell` varchar(500) DEFAULT NULL COMMENT '明显的气味',
`url` varchar(255) DEFAULT NULL COMMENT '网页url',
`shop_url` varchar(255) DEFAULT NULL COMMENT 'jd或tmall店铺的链接',
`features` varchar(255) DEFAULT NULL COMMENT '特点',
`introduce` text DEFAULT NULL COMMENT '简介',
`image` varchar(255) DEFAULT NULL COMMENT '商品图片路径',
`mht` varchar(255) DEFAULT NULL COMMENT 'mhtml文件路径',
`create_time` datetime DEFAULT current_timestamp() COMMENT '创建时间',
PRIMARY KEY (`id`),
UNIQUE KEY `name` (`name`)
) ENGINE=InnoDB AUTO_INCREMENT=4556 DEFAULT CHARSET=utf8mb4 COMMENT='香氛商品';

一条具体数据

1
843	潘海利根 玫瑰公爵小姐的望眼欲穿 狐狸  Penhaligon s The Coveted Duchess Rose  2016	Penhaligon s The Coveted Duchess Rose	潘海利根	潘海利根玫瑰公爵小姐的望眼欲穿	75ml	香水	2400	浓香水EDP	女香	花香东方调	柑橘 莓果	玫瑰	麝香木	玫瑰 麝香 木质 柑橘	秋冬季节,喷香之后被问到没脾气、适合富家小姐、适合冒险乐观热情的射手座、浪漫清新的花果园中,平衡冬天的冷。	古堡,茶香。,无极乌龙,月光洒在身上、水果园、角落能闻到的幸福、古灵精怪的撩人感	自信、诱惑、冷感、温柔、撩人、浪漫、幸福,心情好。,平衡冬天的冷	清冷淡雅,清新,浓烈,奶味重,清新、甜美、花香、柔美、诱人、贵、温暖、霸气、美、爽,肥皂水。	玫瑰(37%)木质香(16%)橘子(12%)荔枝(11%)麝香(8%)糖浆(5%)杜松子酒(4%)牛轧糖(3%)焚香(2%)水元素(1%)大米(1%)蜂蜜(0.5%)柠檬(0.2%)月桂花(0.1%)	https://www.nosetime.com/xiangshui/873643-penhaligon-s-the-coveted-duchess-rose.html	https://detail.tmall.hk/hk/item.htm?abbucket=7&id=692242857747&ns=1&spm=a21n57.1.0.0.13d1523c0z34BQ&skuId=5086319790757	纯真烂漫的温柔陷阱,精致美艳摄人心魄。	Penhaligon s于1870年由William Penhaligon创立 并拥有两个传承已久的英国皇家认证 Royal Warrants  分别由爱丁堡公爵于1956年及威尔斯亲王于1988年颁赠 品牌之所以与众不同 大概是店内为顾客提供贴心的香水配对服务 perfume profiling  PENHALIGON S 创办人 William Henry Penhaligon 生于英国 是熟识香料的调香师及理容师 1870 年在伦敦开店 Penhaligon s 除了香水香精 还有沐浴油 爽身粉 刮须膏 香氛乳液等 Penhaligon s 还发表了全球第一套男士梳洗配件 连英国首相邱吉尔 大文豪王尔德都用它 	潘海利根玫瑰公爵小姐的望眼欲穿狐狸PenhaligonsTheCovetedDuchessRose2016.png	潘海利根玫瑰公爵小姐的望眼欲穿狐狸PenhaligonsTheCovetedDuchessRose2016_web.png	2023-11-18 20:18:34

4. 数据预处理

需要对数据中的评论数据使用LLM进行分析,分析香味场景,香味画面,香味情绪,香味感受。使用ChatGPT进行快速处理。

设计的Prompt如下:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
你是一名香水消费者评论分析师,可以根据用户提供的香水产品和评论对评论内容进行分析。现在需要通过提供的评论分析消费者对香味的感受,消费者使用香 水时的情绪,使用香水时可以想象到的画面以及消费者使用时的场景。你要做的就是提取刚刚提到的消费者评论中提到这4个维度的关键词,例如香味感受的词有清新,妩媚,性感,醇厚。香味情绪的词有快乐、幸福、怀旧。香味画面的词包括森林、庙宇、男友的白衬衫,香味使用场景的词有约会,登山,睡前,送礼等。下面是一些示例。
商品:祖玛珑英国梨与小苍兰香水
评论开始,每行是一个用户的评论,当一个用户提及多个商品时,注意分辨用户是否是在说目标商品的特点,如果没有在说,那么就不要提取:
1)相比之下,我更喜欢莱俪-墨恋,莱俪-墨恋的气味更柔和,更好闻。
2)前调,梨味很清新,点一点点酸。 后面就甜甜的,特别像初秋,一点点的温暖。
3)留香其实还蛮久的,喷在脖子很自然
4)我喜欢跑步的时候喷一点,这能让我兴奋
5)小白日记:还是没有很喜欢就是和正常版一样,区别不大,但是五步散还是五步散啊
6)一开始还挺好闻的,闻多了有点腻和晕。
7)感觉像是图书馆里围着围巾的格兰芬多女孩,勇敢阳光且温暖。
评论结束。
输出时注意每个维度用换行符分割,提取的每个词用逗号分割,上面的莱俪-墨恋商品和我们的目标商品祖玛珑英国梨与小苍兰香水不一致,所以描述莱俪-墨恋商品的柔和不应提取,最终输出为:
香味感受:甜甜蜜蜜,一点点酸,清新,甜甜的,腻和晕,很自然, 梨味,蜂蜜味,好闻,阳光
香味情绪:温暖,兴奋
香味画面:初秋, 图书馆里围着围巾的格兰芬多女孩
香味场景: 适合夏天,跑步
现在正式开始。
商品: {{product}}

评论开始:
{{comments}}
评论结束。
输出为:

5. 数据嵌入

上传Json数据,设定要进行向量话的字段,这里设定的字段是n个特点的拼接,当检索问答时,能够返回需要的meta数据,即原始数据对应的json字段

对Qanything进行二次开发,支持json格式,和多种prompt,以及Chatgpt的支持,向量数据库的表结构设计,能够根据保留原始数据的json信息,保存到meta中。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
@property
def fields(self):
fields = [
FieldSchema(name='chunk_id', dtype=DataType.VARCHAR, max_length=64, is_primary=True),
FieldSchema(name='file_id', dtype=DataType.VARCHAR, max_length=64),
FieldSchema(name='file_name', dtype=DataType.VARCHAR, max_length=640),
FieldSchema(name='file_path', dtype=DataType.VARCHAR, max_length=640),
FieldSchema(name='timestamp', dtype=DataType.VARCHAR, max_length=64),
FieldSchema(name='content', dtype=DataType.VARCHAR, max_length=4000),
FieldSchema(name='content_id', dtype=DataType.VARCHAR, max_length=128),
FieldSchema(name='meta_info', dtype=DataType.JSON), # 存储所有meta信息
FieldSchema(name='embedding', dtype=DataType.FLOAT_VECTOR, dim=768),
]
return fields

6. LLM问答

针对不同的需求,使用不同的prompt,下面1个是初始设计的prompt,1个是后续设计的prompt

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
SURVEY_PROMPT= """
We are designing a new scent for a consumer product such as detergents and body lotions. As Lavector's fragrance design AI, given the context and survey requirements, your task is to summarize the optimal scent recommendations as follows:****"Considering the provided context data (refer to {context}) and insights from our market trend analysis, we propose that the ideal scent design for {target audience} should entail {subject}.****First, the top notes of {name of fragrance} will potentially evoke {describe emotion or reactions} and encapsulate various scents such as {list of scents}.****Second, the middle notes will transition into {describe transition} and, finally, the base notes will underline {describe underlying scents}.****The inclusion of {specific ingredients} adds unique tones to the fragrance that {describe effect of the ingredients}.****The generated visual imagery compellingly evokes feelings of {describe imaginative visual impressions}. This scent profile should stimulate a pleasant and memory olfactory experience in the target audience. ."****Ensure all sections marked as {xxx} are adequately filled out with appropriate details.
Reference context:
{context}
---
Survey requirements:
{question}
---
Please reply in English.
"""

DESIGN_PROMPT= """
You're a fragrance design specialist at Lavector, focusing on designing various detergents and body lotions. You're adept at capturing the sensory experience, emotional impact, visual imagery, scent scenes, fragrance characteristics, as well as the target audience of fragrances. Based on the retrieved context and user query, you provide corresponding answers.
Reference context:
{context}
---
User question:
{question}
---
Please reply in English.
"""

7. 效果

初始页面:

设置页面,不同prompt和不同LLM,可以选中不同的模型,DocChat是微调过的Qwen7B模型。

点击yes后开始设计:

支持手动输入答案和预设答案,点击确定后开始设计。

流式回答,调用后端的LLM,异步绘图

前中后调的d3js绘图,前中后调结合LLM的回答和相似商品的前中后调获取。

成分图类似前中后调的逻辑

相似商品展示:

香水设计:

LLM根据香调和成分设计的prompt:

1
2
3
4
You are a tool that generates Stable Diffusion drawing prompts. The drawing prompts should lead to imaginary or artistic images evoked in the minds of consumers when using a product described in a product brief.  Please write a Stable Diffusion drawing prompt for the package design, and then explain your rationale.  The product brief is:{{query}}
output format is:
Prompt: xxx
Explanation: yyy

生成的Prompt调用ComfyUI 绘图

制造这款香水的原材料展示:

生成对应的广告宣称

Prompt:

1
2
3
4
As a seasoned marketing and advertising professional, you excel at crafting 2-3 impactful and succinct ad slogans that perfectly encapsulate the tone and essence of a product, using only the details provided by the customer.
Here are the details of the product:
{{query}}
Hot off the press slogans, answer by English:

香氛设计AI
https://johnson7788.github.io/2024/03/05/%E9%A6%99%E6%B0%9B%E8%AE%BE%E8%AE%A1AI/
作者
Johnson
发布于
2024年3月5日
许可协议