元素中。技术规格: \{fact_sheet_chair\} | 提取产品尺寸信息并组织成表格 |
````python
prompt = f"""
您的任务是帮助营销团队基于技术说明书创建一个产品的零售网站描述。
根据```标记的技术说明书中提供的信息,编写一个产品描述。
该描述面向家具零售商,因此应具有技术性质,并侧重于产品的材料构造。
在描述末尾,包括技术规格中每个7个字符的产品ID。
在描述之后,包括一个表格,提供产品的尺寸。表格应该有两列。第一列包括尺寸的名称。第二列只包括英寸的测量值。
给表格命名为“产品尺寸”。
将所有内容格式化为 Markdown 格式。将描述放在
元素中。
技术规格:```{fact_sheet_chair}```
"""
response = get_completion(prompt)
print(response)
````
[在 Colab 查看输出结果](https://colab.research.google.com/drive/1m1QqQd2UUG_4VM4l1rEftKoWoCnxb7U0?usp=sharing)
## **Lesson 3. 文本概括**
LLM 文本摘要功能的优势可以为你节省时间、提高效率,以及精准获取信息。
### **单一文本概括**
任务:商品评论总结
```python
prod_review = """
这个熊猫公仔是我给女儿的生日礼物,她很喜欢,去哪都带着。
公仔很软,超级可爱,面部表情也很和善。但是相比于价钱来说,
它有点小,我感觉在别的地方用同样的价钱能买到更大的。
快递比预期提前了一天到货,所以在送给女儿之前,我自己玩了会。
"""
```
**限制输出文本长度**
````python
prompt = f"""
您的任务是从电子商务网站上生成一个产品评论的简短摘要。
请概括三个反引号之间的评论,最多30个字。
评论: ```{prod_review}```
"""
response = get_completion(prompt)
print(response)
````
注:模型在计算和判断文本长度时依赖于分词器,统计字符时并不精确。
**设置侧重点**
````python
prompt = f"""
您的任务是从电子商务网站上生成一个产品评论的简短摘要。
请概括三个反引号之间的评论,最多30个词汇,并且侧重在产品价格和质量上。
评论: ```{prod_review}```
"""
response = get_completion(prompt)
print(response)
````
**关键信息提取**
````
在 Prompt 中设置侧重点 ,可以让摘要更聚焦,然而结果中也会保留其他信息。如果只想提取某些信息,并过滤掉其他所有信息,可以要求 LLM 进行文本提取(Extract) 而非概括( Summarize )。
prompt = f"""
您的任务是从电子商务网站上的产品评论中提取相关信息。
请从以下三个反引号之间的评论中提取产品运输的信息,最多30个词汇。
评论: ```{prod_review}```
"""
response = get_completion(prompt)
print(response)
````
[在 Colab 查看输出结果](https://colab.research.google.com/drive/1m1QqQd2UUG_4VM4l1rEftKoWoCnxb7U0?usp=sharing)
### **多条文本概括**
将多条用户评价集合在一个列表中,并利用 `for` 循环和文本概括提示词,将评价概括至小于 20 个词以下,并按顺序打印。
````python
review_1 = prod_review
# 一盏落地灯的评论
review_2 = """
我需要一盏漂亮的卧室灯,这款灯不仅具备额外的储物功能,价格也并不算太高。
收货速度非常快,仅用了两天的时间就送到了。
不过,在运输过程中,灯的拉线出了问题,幸好,公司很乐意寄送了一根全新的灯线。
新的灯线也很快就送到手了,只用了几天的时间。
装配非常容易。然而,之后我发现有一个零件丢失了,于是我联系了客服,他们迅速地给我寄来了缺失的零件!
对我来说,这是一家非常关心客户和产品的优秀公司。
"""
# 一把电动牙刷的评论
review_3 = """
我的牙科卫生员推荐了电动牙刷,所以我就买了这款。
到目前为止,电池续航表现相当不错。
初次充电后,我在第一周一直将充电器插着,为的是对电池进行条件养护。
过去的3周里,我每天早晚都使用它刷牙,但电池依然维持着原来的充电状态。
不过,牙刷头太小了。我见过比这个牙刷头还大的婴儿牙刷。
我希望牙刷头更大一些,带有不同长度的刷毛,
这样可以更好地清洁牙齿间的空隙,但这款牙刷做不到。
总的来说,如果你能以50美元左右的价格购买到这款牙刷,那是一个不错的交易。
制造商的替换刷头相当昂贵,但你可以购买价格更为合理的通用刷头。
这款牙刷让我感觉就像每天都去了一次牙医,我的牙齿感觉非常干净!
"""
# 一台搅拌机的评论
review_4 = """
在11月份期间,这个17件套装还在季节性促销中,售价约为49美元,打了五折左右。
可是由于某种原因(我们可以称之为价格上涨),到了12月的第二周,所有的价格都上涨了,
同样的套装价格涨到了70-89美元不等。而11件套装的价格也从之前的29美元上涨了约10美元。
看起来还算不错,但是如果你仔细看底座,刀片锁定的部分看起来没有前几年版本的那么漂亮。
然而,我打算非常小心地使用它
(例如,我会先在搅拌机中研磨豆类、冰块、大米等坚硬的食物,然后再将它们研磨成所需的粒度,
接着切换到打蛋器刀片以获得更细的面粉,如果我需要制作更细腻/少果肉的食物)。
在制作冰沙时,我会将要使用的水果和蔬菜切成细小块并冷冻
(如果使用菠菜,我会先轻微煮熟菠菜,然后冷冻,直到使用时准备食用。
如果要制作冰糕,我会使用一个小到中号的食物加工器),这样你就可以避免添加过多的冰块。
大约一年后,电机开始发出奇怪的声音。我打电话给客户服务,但保修期已经过期了,
所以我只好购买了另一台。值得注意的是,这类产品的整体质量在过去几年里有所下降
,所以他们在一定程度上依靠品牌认知和消费者忠诚来维持销售。在大约两天内,我收到了新的搅拌机。
"""
reviews = [review_1, review_2, review_3, review_4]
for i in range(len(reviews)):
prompt = f"""
你的任务是从电子商务网站上的产品评论中提取相关信息。
请对三个反引号之间的评论文本进行概括,最多20个词汇。
评论文本: ```{reviews[i]}```
"""
response = get_completion(prompt)
print(f"评论{i+1}: ", response, "\\n")
````
[在 Colab 查看输出结果](https://colab.research.google.com/drive/1m1QqQd2UUG_4VM4l1rEftKoWoCnxb7U0?usp=sharing)
## **Lesson 4.推断**
### **一、情感推断**
商品评论
```python
lamp_review = """
我需要一盏漂亮的卧室灯,这款灯具有额外的储物功能,价格也不算太高。\\
我很快就收到了它。在运输过程中,我们的灯绳断了,但是公司很乐意寄送了一个新的。\\
几天后就收到了。这款灯很容易组装。我发现少了一个零件,于是联系了他们的客服,他们很快就给我寄来了缺失的零件!\\
在我看来,Lumina 是一家非常关心顾客和产品的优秀公司!
"""
```
判断商品评论的情感 prompt
````python
prompt = f"""
以下用引号分隔的产品评论的情感是什么?
用一个单词回答:「正面」或「负面」。
评论文本: ```{lamp_review}```
"""
response = get_completion(prompt)
print(response)
````
识别情感类型 prompt
````python
# 大型语言模型非常擅长从一段文本中提取特定的东西。
prompt = f"""
识别以下评论的作者表达的情感。包含不超过五个项目。将答案格式化为以逗号分隔的单词列表。
评论文本: ```{lamp_review}```
"""
response = get_completion(prompt)
print(response)
````
识别愤怒 prompt
````python
prompt = f"""
以下评论的作者是否表达了愤怒?评论用三个反引号分隔。给出是或否的答案。
评论文本: ```{lamp_review}```
"""
response = get_completion(prompt)
print(response)
````
[在 Colab 查看输出结果](https://colab.research.google.com/drive/1m1QqQd2UUG_4VM4l1rEftKoWoCnxb7U0?usp=sharing)
### **二、信息提取**
商品信息提取
````python
prompt = f"""
从评论文本中识别以下项目:
- 评论者购买的物品
- 制造该物品的公司
评论文本用三个反引号分隔。将你的响应格式化为以 “物品” 和 “品牌” 为键的 JSON 对象。
如果信息不存在,请使用 “未知” 作为值。
让你的回应尽可能简短。
评论文本: ```{lamp_review}```
"""
response = get_completion(prompt)
print(response)
````
综合情感推断和信息提取
````python
prompt = f"""
从评论中识别以下内容:
- 情绪(正面/负面)
- 评论者是否感到生气?(是/否)
- 评论者购买的物品
- 制造该物品的公司
评论用三个反引号分隔。将回答转换为 JSON 对象,以 “情感倾向”、“是否生气”、“物品类型” 和 “品牌” 作为key。
如果信息不存在,请使用 “未知” 作为值。
回答应尽可能简短。
将 “是否生气” 值转换为布尔值。
评论文本: ```{lamp_review}```
"""
response = get_completion(prompt)
print(response)
````
[在 Colab 查看输出结果](https://colab.research.google.com/drive/1m1QqQd2UUG_4VM4l1rEftKoWoCnxb7U0?usp=sharing)
### **三、主题推断**
判断一段文本的主旨,它涉及了哪些主题。
```python
story = """
在政府最近进行的一项调查中,要求公共部门的员工对他们所在部门的满意度进行评分。
调查结果显示,NASA 是最受欢迎的部门,满意度为 95%。
一位 NASA 员工 John Smith 对这一发现发表了评论,他表示:
“我对 NASA 排名第一并不感到惊讶。这是一个与了不起的人们和令人难以置信的机会共事的好地方。我为成为这样一个创新组织的一员感到自豪。”
NASA 的管理团队也对这一结果表示欢迎,主管 Tom Johnson 表示:
“我们很高兴听到我们的员工对 NASA 的工作感到满意。
我们拥有一支才华横溢、忠诚敬业的团队,他们为实现我们的目标不懈努力,看到他们的辛勤工作得到回报是太棒了。”
调查还显示,社会保障管理局的满意度最低,只有 45%的员工表示他们对工作满意。
政府承诺解决调查中员工提出的问题,并努力提高所有部门的工作满意度。
"""
```
推断讨论主题 prompt
````python
prompt = f"""
确定以下给定文本中讨论的五个主题。
每个主题用1-2个词概括。
请输出一个可解析的Python列表,每个元素是一个字符串,展示了一个主题。
文本: ```{story}```
"""
response = get_completion(prompt)
print(response)
````
为特定主题制作新闻提醒
假设有一个新闻网站,我们感兴趣的主题:美国航空航天局、当地政府、工程、员工满意度、联邦政府等。判断一篇文章,是否包含这些主题。
````python
prompt = f"""
判断主题列表中的每一项是否是给定文本中的一个话题,
以列表的形式给出答案,每个元素是一个Json对象,键为对应主题,值为 0 或 1。
主题列表:美国航空航天局、当地政府、工程、员工满意度、联邦政府
给定文本: ```{story}```
"""
response = get_completion(prompt)
print(response)
````
可以在此基础上制定新闻提醒:
```python
result_lst = eval(response)
topic_dict = {list(i.keys())[0] : list(i.values())[0] for i in result_lst}
print(topic_dict)
if topic_dict['美国航空航天局'] == 1:
print("提醒: 关于美国航空航天局的新消息")
```
[在 Colab 查看输出结果](https://colab.research.google.com/drive/1m1QqQd2UUG_4VM4l1rEftKoWoCnxb7U0?usp=sharing)
## **Lesson 5.文本转换**
### **一、文本翻译**
相比于传统统计机器翻译系统,大语言模型翻译更加流畅自然,还原度更高。通过在大规模高质量平行语料上进行 Fine-Tune,大语言模型可以深入学习不同语言间的词汇、语法、语义等层面的对应关系,模拟双语者的转换思维,进行意义传递的精准转换,而非简单的逐词替换。
````python
prompt = f"""
请将以下文本翻译成中文、葡萄牙语、拉丁语,分别展示成正式与非正式两种语气:
```Would you like to order a pillow?```
"""
response = get_completion(prompt)
print(response)
````
### **二、语气与写作风格调整**
````python
prompt = f"""
将以下文本翻译成商务信函的格式:
```小老弟,我小羊,上回你说咱部门要采购的显示器是多少寸来着?```
"""
response = get_completion(prompt)
print(response)
````
### **三、文件格式转换**
大模型可以轻松实现 JSON 到 HTML、XML、Markdown 等格式的相互转化,掌握这一转换技巧可更高效地处理结构化数据。
```python
# 假设有一个 JSON 数据,包含餐厅员工的姓名和邮箱。现在将这个 JSON 转换为 HTML 表格格式,以便在网页中展示
data_json = { "resturant employees" :[
{"name":"Shyam", "email":"shyamjaiswal@gmail.com"},
{"name":"Bob", "email":"bob32@gmail.com"},
{"name":"Jai", "email":"jai87@gmail.com"}
]}
prompt = f"""
将以下Python字典从JSON转换为HTML表格,保留表格标题和列名:{data_json}
"""
response = get_completion(prompt)
print(response)
```
[在 Colab 查看输出结果](https://colab.research.google.com/drive/1m1QqQd2UUG_4VM4l1rEftKoWoCnxb7U0?usp=sharing)
### **四、拼写及语法纠正**
假设一篇文章的部分句子存在错误。可以遍历每个句子,要求模型进行检查,如果句子正确就输出“未发现错误”,如果有错误就输出修改后的正确版本。
````python
text = [
"The girl with the black and white puppies have a ball.", # The girl has a ball.
"Yolanda has her notebook.", # ok
"Its going to be a long day. Does the car need it’s oil changed?", # Homonyms
"Their goes my freedom. There going to bring they’re suitcases.", # Homonyms
"Your going to need you’re notebook.", # Homonyms
"That medicine effects my ability to sleep. Have you heard of the butterfly affect?", # Homonyms
"This phrase is to cherck chatGPT for spelling abilitty" # spelling
]
for i in range(len(text)):
time.sleep(20)
prompt = f"""请校对并更正以下文本,注意纠正文本保持原始语种,无需输出原始文本。
如果您没有发现任何错误,请说“未发现错误”。
例如:
输入:I are happy.
输出:I am happy.
```{text[i]}```"""
response = get_completion(prompt)
print(i, response)
````
[在 Colab 查看输出结果](https://colab.research.google.com/drive/1m1QqQd2UUG_4VM4l1rEftKoWoCnxb7U0?usp=sharing)
### **五、综合样例**
同时对一段文本进行翻译、拼写纠正、语气调整和格式转换等操作。
````python
prompt = f"""
针对以下三个反引号之间的英文评论文本,
首先进行拼写及语法纠错,
然后将其转化成中文,
再将其转化成优质淘宝评论的风格,从各种角度出发,分别说明产品的优点与缺点,并进行总结。
润色一下描述,使评论更具有吸引力。
输出结果格式为:
【优点】xxx
【缺点】xxx
【总结】xxx
注意,只需填写xxx部分,并分段输出。
将结果输出成Markdown格式。
```{text}```
"""
response = get_completion(prompt)
display(Markdown(response))
````
[在 Colab 查看输出结果](https://colab.research.google.com/drive/1m1QqQd2UUG_4VM4l1rEftKoWoCnxb7U0?usp=sharing)
## **Lesson 6.文本扩展**
文本扩展可以输入简短文本,生成更加丰富的长文。
### **一、定制客户邮件**
将根据客户评价和情感倾向生成回复邮件。
````python
sentiment = "消极的"
# 一个产品的评价
review = f"""
他们在11月份的季节性销售期间以约49美元的价格出售17件套装,折扣约为一半。\\
但由于某些原因(可能是价格欺诈),到了12月第二周,同样的套装价格全都涨到了70美元到89美元不等。\\
11件套装的价格也上涨了大约10美元左右。\\
虽然外观看起来还可以,但基座上锁定刀片的部分看起来不如几年前的早期版本那么好。\\
不过我打算非常温柔地使用它,例如,我会先在搅拌机中将像豆子、冰、米饭等硬物研磨,然后再制成所需的份量,\\
切换到打蛋器制作更细的面粉,或者在制作冰沙时先使用交叉切割刀片,然后使用平面刀片制作更细/不粘的效果。\\
制作冰沙时,特别提示:\\
将水果和蔬菜切碎并冷冻(如果使用菠菜,则轻轻煮软菠菜,然后冷冻直到使用;\\
如果制作果酱,则使用小到中号的食品处理器),这样可以避免在制作冰沙时添加太多冰块。\\
大约一年后,电机发出奇怪的噪音,我打电话给客服,但保修已经过期了,所以我不得不再买一个。\\
总的来说,这些产品的总体质量已经下降,因此它们依靠品牌认可和消费者忠诚度来维持销售。\\
货物在两天内到达。
"""
prompt = f"""
你是一位客户服务的AI助手,任务是给一位重要客户发送邮件回复。
根据客户通过```分隔的评价,生成回复以感谢客户的评价。
使用评价中的具体细节,用简明而专业的语气写信。
以“AI客户代理”签署电子邮件。
客户评论:
```{review}```
评论情感:{sentiment}
"""
response = get_completion(prompt)
print(response)
````
[在 Colab 查看输出结果](https://colab.research.google.com/drive/1m1QqQd2UUG_4VM4l1rEftKoWoCnxb7U0?usp=sharing)
### **二、温度系数**
大语言模型中的 “温度”(temperature) 参数可以控制生成文本的随机性和多样性。temperature 的值越大,语言模型输出的多样性越大;temperature 的值越小,输出越倾向高概率的文本。
举个例子,在某一上下文中,语言模型可能认为“比萨”是接下来最可能的词,其次是“寿司”和“塔可”。若 temperature 为 0,则每次都会生成“比萨”;而当 temperature 越接近 1 时,生成结果是“寿司”或“塔可”的可能性越大,使文本更加多样。
如果需要可预测、可靠的输出,则将 temperature 设置为 0;如果需要更具创意的文本,可适当提高 temperature。
````python
# temperature=0.7
prompt = f"""
你是一名客户服务的AI助手。
你的任务是给一位重要的客户发送邮件回复。
根据通过“```”分隔的客户电子邮件生成回复,以感谢客户的评价。
如果情感是积极的或中性的,感谢他们的评价。
如果情感是消极的,道歉并建议他们联系客户服务。
请确保使用评论中的具体细节。
以简明和专业的语气写信。
以“AI客户代理”的名义签署电子邮件。
客户评价:```{review}```
评论情感:{sentiment}
"""
response = get_completion(prompt, temperature=0.7)
print(response)
````
[在 Colab 查看输出结果](https://colab.research.google.com/drive/1m1QqQd2UUG_4VM4l1rEftKoWoCnxb7U0?usp=sharing)
## **Lesson 7.聊天机器人**
### **一、给定身份**
在 ChatGPT 网页界面中,消息分为用户消息和助手消息。但在构建聊天机器人时,在发送了系统消息之后,您的角色可以仅作为用户 (user) ;也可以在用户和助手 (assistant) 之间交替来提供对话上下文。
```python
import openai
def get_completion_from_messages(messages, model="gpt-3.5-turbo", temperature=0):
response = openai.ChatCompletion.create(
model=model,
messages=messages,
temperature=temperature, # 控制模型输出的随机程度
)
# print(str(response.choices[0].message))
return response.choices[0].message["content"]
messages = [
{'role':'system', 'content':'你是个友好的聊天机器人。'},
{'role':'user', 'content':'Hi, 我是Isa。'} ]
response = get_completion_from_messages(messages, temperature=1)
print(response)
```
### **二、构建上下文**
每次与语言模型的交互都互相独立,这意味着要提供所有相关的消息,以便模型在当前对话中进行引用。如果想让模型引用或 “记住” 对话的早期部分,则必须在输入中提供对话历史,也就是上下文 (context) 。
```python
messages = [
{'role':'system', 'content':'你是个友好的聊天机器人。'},
{'role':'user', 'content':'Hi, 我是Isa'},
{'role':'assistant', 'content': "Hi Isa! 很高兴认识你。今天有什么可以帮到你的吗?"},
{'role':'user', 'content':'是的,你可以提醒我, 我的名字是什么?'} ]
response = get_completion_from_messages(messages, temperature=1)
print(response)
```
### **三、订餐机器人**
机器人会自动收集用户信息,并接收来自比萨饼店的订单。
collect_messages() 函数收集用户消息,从用户界面中收集 Prompt ,然后将其附加到一个名为上下文( `context` )的列表中,并在每次调用模型时使用该上下文。模型的回答也会添加到上下文中,上下文逐渐变长。这样模型就知道下一步要做什么。
```python
def collect_messages(_):
prompt = inp.value_input
inp.value = ''
context.append({'role':'user', 'content':f"{prompt}"})
response = get_completion_from_messages(context)
context.append({'role':'assistant', 'content':f"{response}"})
panels.append(
pn.Row('User:', pn.pane.Markdown(prompt, width=600)))
panels.append(
pn.Row('Assistant:', pn.pane.Markdown(response, width=600, style={'background-color': '#F6F6F6'})))
return pn.Column(*panels)
```
现在,我们将设置并运行这个 UI 来显示订单机器人。初始的上下文包含了包含菜单的系统消息,在每次调用时都会使用。此后随着对话进行,上下文也会不断增长。需要用 pip 安装 panelCopy 库(用于可视化界面)。
```python
import panel as pn # GUI
pn.extension()
panels = [] # collect display
context = [{'role':'system', 'content':"""
你是订餐机器人,为披萨餐厅自动收集订单信息。
你要首先问候顾客。然后等待用户回复收集订单信息。收集完信息需确认顾客是否还需要添加其他内容。
最后需要询问是否自取或外送,如果是外送,你要询问地址。
最后告诉顾客订单总金额,并送上祝福。
请确保明确所有选项、附加项和尺寸,以便从菜单中识别出该项唯一的内容。
你的回应应该以简短、非常随意和友好的风格呈现。
菜单包括:
菜品:
意式辣香肠披萨(大、中、小) 12.95、10.00、7.00
芝士披萨(大、中、小) 10.95、9.25、6.50
茄子披萨(大、中、小) 11.95、9.75、6.75
薯条(大、小) 4.50、3.50
希腊沙拉 7.25
配料:
奶酪 2.00
蘑菇 1.50
香肠 3.00
加拿大熏肉 3.50
AI酱 1.50
辣椒 1.00
饮料:
可乐(大、中、小) 3.00、2.00、1.00
雪碧(大、中、小) 3.00、2.00、1.00
瓶装水 5.00
"""} ] # accumulate messages
inp = pn.widgets.TextInput(value="Hi", placeholder='Enter text here…')
button_conversation = pn.widgets.Button(name="Chat!")
interactive_conversation = pn.bind(collect_messages, button_conversation)
dashboard = pn.Column(
inp,
pn.Row(button_conversation),
pn.panel(interactive_conversation, loading_indicator=True, height=300),
)
```
运行如上代码可以得到一个点餐机器人
**创建 JSON 摘要**
接下来要求模型创建一个 JSON 摘要,发送给订单系统。(此处也可以定义为用户消息,不一定是系统消息)
请注意,这里使用了一个较低的温度,因为对于这些类型的任务,我们希望输出相对可预测。
```python
messages = context.copy()
messages.append(
{'role':'system', 'content':
'''创建上一个食品订单的 json 摘要。\\
逐项列出每件商品的价格,字段应该是 1) 披萨,包括大小 2) 配料列表 3) 饮料列表,包括大小 4) 配菜列表包括大小 5) 总价
你应该给我返回一个可解析的Json对象,包括上述字段'''},
)
response = get_completion_from_messages(messages, temperature=0)
print(response)
{
"披萨": {
"意式辣香肠披萨": {
"大": 12.95,
"中": 10.00,
"小": 7.00
},
"芝士披萨": {
"大": 10.95,
"中": 9.25,
"小": 6.50
},
"茄子披萨": {
"大": 11.95,
"中": 9.75,
"小": 6.75
}
},
"配料": {
"奶酪": 2.00,
"蘑菇": 1.50,
"香肠": 3.00,
"加拿大熏肉": 3.50,
"AI酱": 1.50,
"辣椒": 1.00
},
"饮料": {
"可乐": {
"大": 3.00,
"中": 2.00,
"小": 1.00
},
"雪碧": {
"大": 3.00,
"中": 2.00,
"小": 1.00
},
"瓶装水": 5.00
}
}
```
---
### **总结**
Prompt 的两个核心原则:
- 编写清晰具体的指令;
- 给模型一些思考时间。
我们还学习了迭代式 Prompt 开发的方法,逐步找到适合的 Prompt;另外,课程还讨论了大型语言模型的许多功能,包括摘要、推断、转换和扩展。
### **Ref**
- [ChatGPT Prompt Engineering for Developers](https://learn.deeplearning.ai/chatgpt-prompt-eng/lesson/1/introduction)
- [中文翻译][面向开发者的LLM入门教程](https://datawhalechina.github.io/prompt-engineering-for-developers/#/)
---
# 00 的 2023 年(AI)作品集
- URL: https://tophci.com/posts/240103-2023-ai-portfolio
- Date: 2024/01/03
- Tags: 2023, AI, portfolio
2023 年的关键词无疑是 AI。这一波生成式 AI 的浪潮,让人觉得事情又变得好玩了,于是 00 也开始恢复更新和内容创作。
回顾这一年,每天被各种新闻冲击,看论文看 github,试用目不暇接的新产品,觉得好多事情被改写,好多知识需要学习,而新的创作流和习惯还在摸索。整理了一下 2023 年的作品,给 2024 加油~
### 图零学院知识星球
4 月份开始运营关于生成式 AI 的知识星球,累计发布内容 350+篇,日常更新 AI 最新资讯。最近准备做一次大的改版升级,改名为「AI 创作工作流-图零学院」,不再以最新资讯为主,而会关注 AI 工作流,总结内容创作者日常会使用的高频工作流,比如收集资料、多语言翻译、数据整理、图文编辑、短视频生产、批量生成等等,目标是为创作者提供更实用的价值。

### 给创作者的提示词手册
4 月份制作了一个提示词手册,用比较可视化的方式整理了提示词 prompt 的使用方法,也包括工具的推荐。如果需要获取这本手册,可以在[公众号「设计极客 00」中查看历史文章](https://mp.weixin.qq.com/mp/appmsgalbum?__biz=MzAxNDE2NzAxOQ==&action=getalbum&album_id=3016740700740354053#wechat_redirect)。
这个手册总结的提示词方法,放在今天也基本可用,最近准备进行一轮大的更新。

### 《深入人心》
00 的第一本个人专著《[深入人心——数字产品设计的底层逻辑](https://book.douban.com/subject/36459345/)》在 7 月由机械工业出版社出版上市。

在新书发布会上做了一次分享:数字产品设计的心理学秘密。

### 20 天攻克 AI 绘画 系列课程
2023 年投入心力最多、耗时最长的作品就是《20 天攻克 AI 绘画课》这门以 Stable Diffusion 为基础的 AI 绘画课了。准备了 2 个多月,在 10 月份上线,课程总共 20 节课 ,系统教你上手 Stable Diffusion。有免费的试听课,感兴趣的朋友可以看看。



### 图零学院网站
[图零学院 |创作者的 AI 加油站](http://www.xueyuan.ai)
在 AI 大潮来临时,00 萌生了想重新读一次大学的想法,于是有了图零学院的构想,并且斥巨资(bushi)买下 xueyuan.ai 这个域名,开始研究怎么重新建一个网站,准备了一段时间以后,现在第 1.0 版本已经上线,欢迎大家访问。今年会继续更新,提供更多实用的 AI 资讯、工具和教程。
### 2023 生成式 AI 回顾地图和应用榜单
11 月~ 12 月,图零学院和 AIGCxChina 联合发布了几个总结性工作,帮助大家更好地回顾生成式 AI 的发展,以及用上最前沿的工具:
1. ChatGPT 一周年生成式 AI 大事件时间线地图

00 整理了 2023 年生成式 AI 领域的重大事件时间线,分为头条、产品(文本/图片/视频/代码/开源/其他)、模型、算力、政策五大部分,都集中在一张地图中,方便查阅。
获取大图:在公众号「设计极客 00」回复:2023,即可获得查看高清大图的链接。
2. 火花私享课:[2023 年生成式 AI 回顾和总结](https://www.xueyuan.ai/blog/2023-genai-map)
[figma](https://www.figma.com/proto/IqE5XUoHct6UIusTD5Q3SJ/%5B00%5D2023%E7%94%9F%E6%88%90%E5%BC%8FAI%E5%9B%9E%E9%A1%BE%E5%92%8C%E8%BF%9B%E5%B1%95?page-id=1449%3A4287&type=design&node-id=1449-4289&viewport=80%2C319%2C0.06&t=mQcL5HeWFXPnrBjM-1&scaling=scale-down&mode=design)
视频回放可以在我的视频号「设计极客 00」中查看。
另外两个工作是整理这一年最受欢迎的 AI 应用,分为中文和英文两个榜单。
3. [2023 年生成式 AI 应用推荐-中国](https://www.xueyuan.ai/blog/2023-ai-apps-zh)
[https://www.figma.com/proto/G96Pt0Qeoss48VtXA8ycsd/2023-Gen-AI-Maps-by-00%40xueyuan.ai?page-id=3202%3A2139&type=design&node-id=3229-2443&viewport=174%2C362%2C0.34&t=NQyE619N53PxQ2jm-1&scaling=scale-down&mode=design](https://www.figma.com/proto/G96Pt0Qeoss48VtXA8ycsd/2023-Gen-AI-Maps-by-00%40xueyuan.ai?page-id=3202%3A2139&type=design&node-id=3229-2443&viewport=174%2C362%2C0.34&t=NQyE619N53PxQ2jm-1&scaling=scale-down&mode=design)
4. [2023 年生成式 AI 应用推荐-全球](https://www.xueyuan.ai/blog/2023-ai-apps-en)
[https://www.figma.com/proto/G96Pt0Qeoss48VtXA8ycsd/2023-Gen-AI-Maps-by-00%40xueyuan.ai?page-id=3202%3A2139&type=design&node-id=3355-171&viewport=174%2C362%2C0.34&t=NQyE619N53PxQ2jm-1&scaling=scale-down&mode=design](https://www.figma.com/proto/G96Pt0Qeoss48VtXA8ycsd/2023-Gen-AI-Maps-by-00%40xueyuan.ai?page-id=3202%3A2139&type=design&node-id=3355-171&viewport=174%2C362%2C0.34&t=NQyE619N53PxQ2jm-1&scaling=scale-down&mode=design)
### AI 生成的概念视频 Demo
第一个全 AI 生成的视频《Predator》,野生动物纪录片风格

第二个 AI 视频《New Vega City》,火星科幻大片风格

### ComfyUI 工作流
[ComfyUI](https://github.com/comfyanonymous/ComfyUI) 是 2023 年我使用最多的工具,它是 node-based 的 AI 绘画工作流界面,比 Stable Diffusion 更灵活,消耗内存更少,是低显存的利器。我在 [liblib 上面分享的工作流](https://www.liblib.art/userpage/bb14cfd74d494567a3c2ce5e7b312e50) 已经有接近 1000 次下载,[欢迎关注](https://www.liblib.art/userpage/bb14cfd74d494567a3c2ce5e7b312e50)。

### 未来一年的创作方向
经过一年的学习摸索,2024 年 00 会更加聚焦价值,以作品为导向,把重点放在这几个创作的方向:
- AI 工作流:帮助 AI 重度用户优化日常工作流,提高创作效率
- AI 工具和技术的科普:帮助更多女生成为 AI 受益者和创作者
- AI 技术和数据的可视化:用技术和设计的力量,挖掘数据的价值,并且通过可视化方式传播给更多的人。
---
欢迎在以下平台关注图零学院和 00
- 视频号:设计极客 00
- 小红书:[00](https://www.xiaohongshu.com/user/profile/58d135c950c4b459eca90554)
- 抖音:[00 的 AI 加油站](https://www.douyin.com/user/MS4wLjABAAAA3TkjKEGMdiupR4FQV_zxJ4kTPW4dZ4cI8MFA_2QkEmc)
---
# 何为良好生活
- URL: https://tophci.com/posts/240101-what-is-good-life
- Date: 2024/01/01
- Tags: 零反思
一种个人的欲望、能力与现实情境相匹配的生活。
一起迎接新一年的良好生活吧!
元旦快乐 ♪٩(´ω`)و♪

---
# 2023年终AI工具热榜🔥27个入门必备神器
- URL: https://tophci.com/posts/231221-2023-ai-tools
- Date: 2023/12/21
- Tags: 2023, AI, ChatGPT, AI 应用
2023 年生成式 AI 大爆发,00 爆肝盘点了这一年全球最热门的 AI 工具,帮大家精心挑选了 27 个热度最高的 AI 应用,包括 AIGC 的 9 个主要领域。
在讲座时被大家问爆了,这个 AI 工具集赶紧收藏起来,今天就开始学!

1️⃣ 对话类 AI 神器:除了 ChatGPT,还有好多值得尝试的 AI chatbot
2️⃣ 助手类 AI 工具:Notion AI 是打工人、学生、自媒体的好帮手。革命性搜索引擎 perplexity 已经成为日常必备。
3️⃣ 图像 AI 神器: Midjourney 火爆全网。AI 入门怎么学?从文本生成图像开始吧!
4️⃣ 视频 AI 神器:这两个月最火爆的文本生成视频 AI 应用 Runway 和 Pika,你试用了吗?
5️⃣ 内容创作 AI 软件:AI 写作已经很成熟了,高效撰写文章,提升写作水平。
6️⃣ 代码生成:女生也能快速成为编程高手!谁说女生不适合写代码?
7️⃣ PPT AI 工具:PPT 和演示文稿自动生成,打工人反内卷必备神器。
8️⃣ 网站生成 AI 工具:没有设计师也能快速做一个自己的网站!
9️⃣ 自动化低代码 AI 神器:AI 时代,一定要多让机器帮我们干活!
AI 真的无处不在了。 2023 年,记住这 27 个火爆全网的 AI 应用,让你的生活工作更轻松。
---
# 一图总结 2023 生成式 AI 里程碑大事件时间线
- URL: https://tophci.com/posts/231129-genai-2023-map
- Date: 2023/11/29
- Tags: 2023, AI, ChatGPT, 可视化
2022.11.30,OpenAI 宣布正式推出 ChatGPT。 365 天过去,斗转星移,我们一起见证了生成式 AI 的寒武纪大爆发。
这一年来,国内外的生成式 AI 、大模型和产品以令人眼花缭乱的速度更新迭代,新的创业浪潮风起云涌,大家登记 waitlist 的速度都赶不上产品推陈出新的频率。国内更是开始了百模大战,不少国产大模型陆续宣布性能赶超 GPT3.5。大浪淘沙后,也有不少企业宣告解散,知名大模型项目「套壳」开源项目屡见不鲜。
回顾 ChatGPT 发布的这一年,都有哪些大事件,你会用哪些关键词总结?
00 整理了 2023 年生成式 AI 领域的重大事件时间线,分为头条、产品(文本/图片/视频/代码/开源/其他)、模型、算力、政策五大部分,都集中在一张地图中,方便查阅。

> 注:因个人能力、精力有限,难免挂一漏万,本次绘制的地图只提供一个概览,是一个历史切片,各种疏漏敬请谅解。
获取大图:在公众号「设计极客 00」回复 2023,即可获得查看高清大图的链接。
### 生成式文本
ChatGPT 自 2022 年 11 月 30 日上线以来,一直引领着生成式 AI 的发展。
- 2023 年 1 月底 2 月初,ChatGPT 成为互联网史上最快获得 1 亿用户的产品。
- 2 月,ChatGPT plus 版本上线。
- 3 月 15 日,GPT4 炸裂发布,正式宣告生成式 AI 大爆发的开始,无数人开始研究如何能注册和使用上这个用数十亿美元打造出来的大杀器。
- 4 月,ChatGPT 开放了插件,原本简单的基于历史数据的对话,一下有了全新的能力和可能性,开发者多少对如此简单的接入感到兴奋和害怕。
- OpenAI 还在 5 月和 8 月分别推出了 ChatGPT 的 iOS 和 Android 应用,并在 11 月向所有用户开放移动应用的语音对话能力。
- 7 月,OpenAI 开放了 GPT4 API 、强大的代码解释器,并允许用户自定义指令
- 8 月,ChatGPT 企业版上线,3.5 turbo 模型支持微调
- 9 月,ChatGPT 集成新的语音和图像能力,联网浏览功能也恢复了,多模态能力进一步增强
- 10 月,继续是多模态能力,沉寂已久的 DALL·E 更新到第三代,GPT4V 接口也发布了
- 11 月,OpenAI 高层戏剧化政变,Sam Altman 几进几出,全球观众不眠不休追剧
除了 ChatGPT, 对话式 AI 产品也诞生了几个实力强大的竞争者。
关系微妙的好基友 Bing Chat 紧随 ChatGPT,在 2 月就占得先机,原本几乎没有什么市场份额的 Bing 搜索引擎重获新生。在「普惠」这件事情上,没有人比微软做得更快更好,不但云服务全线铺开,而且 Copilot 在 11 月已经深度集成到 Windows 生态中。
另一方面,挑战者 Anthropic 的 Claude 在 3 月紧随 GPT4 上线,并率先在 5 月份支持长达 100k 的上下文。7 月 Claude2 发布,到 11 月,Claude2.1 已经支持 200k 的上下文,并开放了数据调用能力。
Google 在生成式 AI 的浪潮中,多少给人一种「起了个大早,赶了个晚集」的感觉。最早提出 transformer 架构,在大模型技术储备上让人望其项背,但因为搜索引擎牵一发动全身,Google 在 3 月仓促推出 Bard,一时差评如潮。随着 PaLM 和新版搜索引擎的改进,以及 Duet AI 、新一代 Gemini 模型的推出,Google 在几个月内完成了生成式 AI 生态的完整布局,不得不让人感叹家底雄厚。
在其他应用领域,产品和创新就更加不胜枚举了。现在回头看 Poe 套壳应用的巨大成功,不知道 OpenAI 董事会的 Quora(孵化了 Poe) 创始人 Adam D'Angelo 到底扮演了什么角色,这让故事蒙上了阴谋论的迷雾。Notion AI 也是最早集成 AI 能力的产品之一,在场景化的应用中树立了标杆。
最后(也是最重要的)一件事,是 4 月 LLaMA 的史诗级泄露,大模型进化树全新开源分支一骑绝尘。 GPT 和 LLaMA 这一对 iOS 和 Android,联手开启了生成式 AI 的寒武纪大爆发的开关。
### 生成式图像
文生图领域同样迎来了突飞猛进的一年。生成式图像的生态可以划分为三大阵营:
**开源工具**:以 Stable Diffusion 为代表,这一类好比安卓系统,生态丰富而且活跃,既有完全开源的 Stable Diffusion,也包括很多基于 SD 做了二次封装的文生图工具比如 Dreamstudio、[leonardo.ai](http://leonardo.ai)、[dreamlike.art](https://dreamlike.art/create)、playground ai 等等。 Stable Diffusion 2.0 并不成功,4 月 SDXL beta 版本发布,让大家重新对文生图能力充满了期待,7 月 SDXL 正式上线,目前还处在降低算力要求的推广融合阶段。随着 civitai(C 站)和 WebUI 、ComfyUI 的普及,还有 Meta 在基础模型和算法方面的持续贡献,开源工具会继续推动生成式图像生态的繁荣和创新。
**闭源工具**:以 Midjourney 为代表,可以类比苹果手机,生态封闭但用户体验较好,还包括 DALL·E3、Bing Image Creator、文心一格等。Midjourney 在 2023 年成为“小团队-大产品”的代言人。 3 月 V5 上线, 5 月 5.1 版本,6 月 5.2 版本,每一个版本都让人惊叹 Midjourney 的画质如此出色,甚至怀疑跟 Stable Diffusion 还是不是同源技术。
**设计工具 2.0**:以 Adobe Firefly 为代表,是在原有的设计工具中集成 AI 辅助的功能,还包括 Canva AI、Microsoft Designer、Framer AI 等等。Firefly 可以说是成也专业,败也专业。直接集成在 Adobe Creative 尤其是 Photoshop 中,能完败绝大多数的文生图应用,但是也会相对局限在专业设计师和创意人群中。11 月,图像 AI 生成领域迎来了实时绘制的浪潮,KREA 和 Clipdrop 相继上线实时绘制功能,相信这对设计工具 2.0 会是一次重大突破,专业画手被冲击的部分又有了新的价值展现!
对了,00 也做了一门 20 节课的 《[20 天攻克 AI 绘画课](http://mp.weixin.qq.com/s?__biz=MzAxNDE2NzAxOQ==&mid=2667164391&idx=1&sn=7e39e831eb41cf454536693be4cc4bf3&chksm=809a6c63b7ede575bba6ad1209ef866e14f317f0fec11a424c4779b38b8da91eafc624160870&scene=21#wechat_redirect)》,系统教你上手 Stable Diffusion,感兴趣的朋友可以看看。
### 生成式视频
2023 年是 Generative video 的元年。在大家还在摸索文生图的时候,文本生成视频的快速进化让人眼花缭乱。
进入下半年,由 Runway ML 引领的生成式视频领域车速猛增,先是 Gen-2 上线,生成式视频开启卷王模式,Pika,LumaAI,Morph Studio,Moonvalley,PlaiDay,Mootion 等一众文生视频应用百花齐放。
11 月,竞争进入白热化阶段,Gen-2 受 Pika 等刺激完成了大更新,视频质量有了跃迁。Pika1.0 在可控性方面又有了极大提升。文生视频也迎来更大 的开源玩家:Meta 发布 Emu,Stability AI 发布 Stable video diffusion,学术界同时在争相发布降低生成成本的研究。明年,生成式视频一定会迎来大爆发,图像创意工作者的创作流程将会被改变。
### 生成式代码
生成式代码是高端玩家的竞技场。主要也有三股力量:
- 代码平台:以 Github Copilot 为代表,还包括模型社区 Hugging Face 发布的 StarCoder。因为坐拥海量的源代码和模型,解放生产力是优先的场景。
- 大模型和开源生态:很多综合大模型都会有专门的代码生成模块,这也许会成为评估模型能力的重要指标。Meta 2023 年一头扎进开源搞建设,大有成为 AI 安卓之势。
- 商业养蛊:Salefore 和幻方发布了自己的代码生成模型,CodeGen2 在 5 月发布,DeepSeek 11 月上线。有钱人往往也有远见,先用资源垒出壁垒,让别人在日后难以竞争,是为商业养蛊~
对了,请不要忽略 5 月份新的 AI/ML 编程语言 Mojo 的发布,期待明年会有更精彩的生态演绎。
### 开源应用
2023 年什么最火?ChatGPT。2023 年哪里最热闹?GitHub 😄 (抱抱脸稍微不服气)
- 2 月,文生图领域拯救 Stable Diffusion 的 ControlNet 在 上线,作者还开发了 Fooocus(取代难用的 A1111 WebUI,不是)
- 3 月,2022 年已经发布的的 Langchain 一下踩中了风口,成为生成式 AI 第一开源股(不是)。半年后逐渐取代 SD WebUI 的 ComfyUI 悄悄 init 了
- 4 月,AutoGPT 大红大紫,带动了 Agent 概念极速发展
- 6 月, DragGan 引发了可控文生图的热潮
- 7 月, AnimateDiff 开始推动文生视频的发展
- 11 月, LCM 带来低显存福音,1 秒出图不是梦,3060 生成视频不是梦
Github 的热闹,还是得每天刷新热门项目的 star 数才能感受到,请大家移步本地图的 Github 地址,star 一下支持原创 🫣
英文版地图:https://github.com/kidult00/genai-2023-map
中文版地图:https://github.com/kidult00/genai-2023-map/blob/main/zh_version.md
### 模型
大模型这一块,相信各种商业分析、创业社区、大中小厂官网,已经日常轰炸大家许久了。这里就不念 PPT 了,大家可以在月历中查阅。
### 算力
算力领域的故事比较单薄,英伟达强者恒强, 宣扬 AI 的「iPhone 时刻」到来并表示 all in 生成式 AI。11 月,英伟达发布 H200 芯片,地球最强没跑了,尤其在训练场景,试图进一步拉大产品性能及产业链上下游的优势。
位于第二梯队的 Google 研发出为机器学习定制的专用芯片 TPU,5 月已经发布第五代。追赶者 AMD 也在 6 月推出了 MI300X AI 芯片,反响一般。深感算力不够用的大厂纷纷开始准备自研芯片,包括微软、 Meta、亚马逊、华为等。
### 政策
关于监管,关于数据安全,关于版权,关于隐私,关于 AGI,可以说 gov 都是慢半拍。 7 月份公布的《生成式
人工智能服务管理暂行办法》备受关注。欧盟受在大模型竞争中全面落后,不过发布了全球第一部人工智能法案。
---
2023 年绝对是历史性的一年,人类走出 COVID-19 的阴霾,迎来了生产力的革新(爆头冲击)。
对从业者来说,这是一惊一乍的一年。对创业者来说,这是不眠不休的一年。对创作者来说,这是眼界大开的一年。对普通人来说,这是历史车轮加速的一年。
想一想又有点不对,AI 一天,人间已一年。
祝愿大家在 2024 年少一点疲于奔命,多一些笃定,多一分创作。
---
# 浅尝 OpenAI 最新福利 Assistants API
- URL: https://tophci.com/posts/231107-try-assistants-api
- Date: 2023/11/07
- Tags: OpenAI, AI, ChatGPT, API
OpenAI 今天在开发者大会上发布了 Assistants API,现在可以自定义 AI 助手了。
之前使用 ChatGPT 基本靠提示词,联网功能、 DalleE3 画图功能、代码解析器不能一起工作,需要切换各种模式,相当受限。现在有了 Assistants 助理,可以一下子整合指令、模型、工具(包括各种 API)和私有知识库(文件)来完成对话。毫无疑问,功能更丰富也更灵活了,大大突破了提示词的局限。
### 什么是助手 API?
一些新的概念整理如下:

| 对象 | 释义 |
| --------- | ---------------------------------------------------------------------------------------------- |
| Assistant | 使用 OpenAI 模型和调用工具的专用 AI |
| Thread | 助理与用户之间的对话会话 |
| Message | 由助理或用户创建的消息,包括文本、图像和其他文件。消息存储为线程中的列表。 |
| Run | 在线程中调用助手。助手根据配置和线程的消息,调用模型和工具来执行任务。生成的消息会附加到线程。 |
| Run Step | 助手运行时执行步骤的详细列表。“运行步骤”可以检查助手是如何获得最终结果的。 |
助手实际上是一个集合,可以自定义以下命令的组合,来帮助用户达成目标:
- 指令(Instructions):助手和模型要做什么,也就是之前我们已经很熟悉的提示词
- 模型:GPT-3.5 或 GPT-4 模型的型号。如果要用到检索工具(Retrieval tool),就需要指定`gpt-3.5-turbo-1106`或`gpt-4-1106-preview`。
- 工具:使用 `tools` 参数可给予助手多达 128 个工具的访问权限。Assistants API 目前支持三种 OpenAI 官方的[工具](https://platform.openai.com/docs/assistants/tools):
- 代码解释器(Code Interpreter)
- 检索(Retrieval)
- 函数(Functions):通过 `function` 调用第三方工具,可以自定义函数签名。
未来 OpenAI 会发布更多工具,用户还可以共享已经定义好的 Assistants。
- 文件:使用 `file_ids` 参数给予工具访问文件的权限。文件使用 `File` [opload endpoint](https://platform.openai.com/docs/api-reference/files/create) 上传,并且必须将 `purpose` 设置为 `assistants `才能与此 API 一起使用。每个助手最多可以附加 20 个文件,每个文件最大 512 MB。组织上传的所有文件不应超过 100 GB。
### 如何创建助手?
Assistants API 的典型流程是:创建助手—创建线程—添加消息—运行—显示。
#### 步骤 1:创建助手
在 API 中自定义指令并选择模型来创建[助手](https://platform.openai.com/docs/api-reference/assistants/createAssistant),可以启用代码解释器、检索和函数调用等工具。下面是一个创建数学老师的例子,需要开启代码解释器。
```python
assistant = client.beta.assistants.create(
name="数学老师",
instructions="您是一名数学老师,请编写并运行代码来回答数学问题",
tools=[{"type": "code_interpreter"}],
model="gpt-4-1106-preview"
)
```
#### 步骤 2:创建线程
线程和消息表示助理和用户之间的对话会话。建议在用户发起会话后,立即为每个用户创建一个线程,并在用户回复时将 Messages 添加进来。
```python
thread = client.beta.threads.create(
messages=[
{
"role": "user",
"content": "Create 3 data visualizations based on the trends in this file.",
"file_ids": [file.id]
}
]
)
```
线程没有大小限制,支持任意多的消息。API 将使用如截断等技术,确保请求在最大上下文限制之内。
助理可以访问多种格式的[文件](https://platform.openai.com/docs/assistants/tools/supported-files)作为创建文件或对话的一部分。使用工具时,助理还可以创建文件(图像/电子表格等)并引用。例如,要创建基于 `.csv ` 数据可视化的助手,先上传文件,然后用上传的文件创建助手。
```python
file = client.files.create(
file=open("speech.py", "rb"),
purpose='assistants'
)
assistant = client.beta.assistants.create(
name="数据可视化助手",
instructions="你很擅长创建美观的数据可视化。请分析.csv文件中的数据,总结趋势,并将与趋势相关的数据进行可视化,并简要说明你观察到的趋势。",
model="gpt-4-1106-preview",
tools=[{"type": "code_interpreter"}],
file_ids=[file.id] #在助手级别传递的文件可由所有具有此助手的用户访问
)
```
#### 步骤 3:在线程中添加消息
在用户提问时向线程添加[消息](https://platform.openai.com/docs/api-reference/messages)。消息包含用户的文本,以及上传的文件。目前不支持图像文件。
```python
message = client.beta.threads.messages.create(
thread_id=thread.id,
role="user",
content="请帮助我解这个方程 `3x + 11 = 14`"
)
```
现在,如果你[在线程中列出消息](https://platform.openai.com/docs/api-reference/messages/listMessages),会看到这条消息在创建线程时被添加到线程中:
```json
{
"object": "list",
"data": [
{
"created_at": 1696995451,
"id": "msg_4rb1Skx3XgQZEe4PHVRFQhr0",
"object": "thread.message",
"thread_id": "thread_34p0sfdas0823smfv",
"role": "user",
"content": [{
"type": "text",
"text": {
"value": "请帮助我解这个方程 `3x + 11 = 14`",
"annotations": []
}
}],
...
```
#### 第 4 步:运行助手
创建一个[Run](https://platform.openai.com/docs/api-reference/runs/createRun)来让助手响应用户消息。助手会读取线程,并决定是否调用工具或使用模型来回答用户查询。随着运行的进行,助手将消息附加到带有`role="assistant"`的线程。
你可以选择在创建运行时向助手传递其他指令:
```python
run = client.beta.threads.runs.create(
thread_id=thread.id,
assistant_id=assistant.id,
instructions="请称呼该用户为王总,他是我们的 VIP 会员。"
)
```
默认情况下,Run 将使用 Assistant 对象中指定的 `model` 和 `tools` 配置,我们也可以在创建 Run 时修改:
```python
run = client.beta.threads.runs.create(
thread_id=thread.id,
assistant_id=assistant.id,
model="gpt-4-1106-preview",
instructions="additional instructions",
tools=[{"type": "code_interpreter"}, {"type": "retrieval"}]#启用代码解释器和检索
)
```
运行对象可以有多个状态。

| 状态 | 定义 |
| --------------- | ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| queued | 当首次创建队列或完成`required_action`时,它们将(马上)移动到排队状态 `in_progress`。 |
| in_progress | 在进行中时,助手使用模型和工具来执行步骤。可以通过检查 Run[Steps(运行步骤)](https://platform.openai.com/docs/api-reference/runs/step-object)来查看 Run(运行)的进度。 |
| completed | 运行完成。现在可以查看助手添加到线程的所有消息,以及 run 采取的所有步骤。可以向线程添加更多用户消息并创建另一个 Run 来继续对话。 |
| requires_action | 当使用[函数调用](https://platform.openai.com/docs/assistants/tools/function-calling)工具时,一旦模型确定了要调用的函数的名称和参数,Run 将移动到`required_action `状态。然后,必须运行这些函数并在运行继续之前[提交输出](https://platform.openai.com/docs/api-reference/runs/submitToolOutputs)。如果在 `expires_at` 时间戳截止(约创建后 10 分钟)前未输出,则进入过期状态。 |
| expired | 当函数调用在 `expires_at` 之前没有提交并且过期时,变成过期状态。此外,如果运行时间过长,超过了 `expires_at` 中规定的时间,系统也会终止运行。 |
| cancelling | 可以尝试使用 [Cancel Run](https://platform.openai.com/docs/api-reference/runs/cancelRun) 端点取消 `in_progress` 运行。一旦取消成功,运行状态将变为`cancelled`。 |
| cancelled | 已取消运行 |
| failed | 可以通过查看 Run 中的 `last_error` 对象来查看失败的原因。失败的时间戳将记录在 `failed_at` 下。 |
#### 第 5 步:显示助手的响应
这将在 `queued` 状态下创建运行。为了使运行状态保持最新,需要定期 [检索 Run](https://platform.openai.com/docs/api-reference/runs/getRun) 对象,以确定应用程序下一步应该做什么。
```python
run = client.beta.threads.runs.retrieve(
thread_id=thread.id,
run_id=run.id
)
```
运行完成后,可以检索助手添加到线程的消息。
```python
messages = client.beta.threads.messages.list(
thread_id=thread.id
)
```
最后,将它们展示给用户。在此运行期间,助手向线程添加了两条新消息。
| 作用 | 内容 |
| :---------- | :------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| `user` | 我需要解方程#1。你能帮帮我吗? |
| `assistant` | 当然。为了求解方程`(3x + 11 = 14)`和`(x)`,你需要将`(x)`隔离在方程的一侧。你可以这样做:从等式的两边减去 11 得到`(3x = 3)`。然后,将两边除以 3,求解`(x)`。让我为你计算一下`(x)`的值。 |
| `assistant` | 方程`(3x + 11 = 14)`的解是`(x = 1)`。 |
---
# [访谈]巨人的工具:未来比注意力更稀缺的是共识
- URL: https://tophci.com/posts/231017-my-ai-tools
- Date: 2023/10/17
- Tags: 工具, AI, 人机交互
## 您认为 AI 会在不远的未来,在哪些方面严重地影响我们的工作和生活,请举例说明。
这个话题有很多可聊的,我主要围绕内容生产和消费来想象一下。
**什么会变多?**
几乎所有的符号型的内容供给都会成倍增加,包括文字、图像、影像、声音等。只要是人能接收和理解的符号,大都早已数字化,能够很方便地生产出来。现在,大模型、AI 的意图理解和跨模态能力,让数字内容生成变得轻而易举。最开始是文本,但只要找到文本和声音、图像之间的映射和关联关系,生成非文本内容也会变得非常容易。比如 AI 绘画,正是借助了文本-图像的跨模态能力,用文字就能迅速生成图像。
人类已经很擅长用文字表达一切——如果它能够被表达和接收的话。我认为,文字这种符号就是 AI 智能化的一条捷径,因为文字是高度压缩的、人类共享的意义符号。符号本身是什么不重要,重要的是人们已经用这些载体承载了意义。越有共识的符号,越可能被大量复制。
**什么会变少?**
在内容供给极大增加的同时,需求的增长不会那么显著,因为人用来消费内容的时间是有限的,注意力会变得更加稀缺,人们在每段内容上停留的时间也会变少(长篇巨制被碎片化内容包围)。在 AIGC 的时代,产能过剩,内容需求会更加极化,大家可能越来越依赖这么几个筛选策略:关心那些每个人都关心的(现象级爆款),关心那些只有自己关心的(个性化),关心那些社区关心的(亚文化)。身份认同变得更加重要。
**什么会更有价值?**
需求比较恒定,但供给并不随 AI 成倍增加的东西会更有价值,比如:
- 需要时间沉淀的
- 影响变量多,随机性较大,比如爆款
- 个性小众的、难以批量复制的
需求增加,但供给会因为 AI 而减少的东西则最有价值:
- 共识:比注意力更加稀缺的、更有价值的,我认为是广泛的共识。共识非常依赖于长时间、强交互、身份或利益捆绑的环境,这些在以后也许会更加稀薄。小范围同温层的共识会增加,但是不同群体之间的沟通可能会变得更加困难。
- 人性化表达:如果意识到 AI 的符号化表达能力很强悍,我想人的表达方式会趋向于更「直接」。直接是指那些更加本能的方式,包括情绪、声音、肢体动作等。AI 擅长的,就不需要每个人都花费数年时间去训练了,这大概会使得人的书面文字组织和表达能力下降(故事除外),而口头语言和肢体动作等更加「原生」的能力会变得更为重要。
如果说对工作和生活会有什么影响,我也还在思考。曾经,包括现在,基于符号的工作和人际互动,比如数学、语言、工程师,都是困难而且地位较高的,也许在不久以后,基于符号的工作慢慢会转交给 AI,更多人会从事直接跟人互动的工作。学校的教育如果能应需而变,也许要把更多的资源放在开发情绪智力、美学、运动上,以及指导学习者掌握人机协同的方法,而不是继续死磕符号的生成和计算(传统的文科和数理化)。
## 我们人类需要隐喻来理解新事物。如果给 AI 找一个比喻的话,您会用什么?
这是个有意思的问题。我想从「本质」和「关系」这两个方面来入手。
如果讨论 AI 本身更像什么,我想到的是乐高积木,或者说乐高的思维。乐高的基本单元非常简单,但是却能创造出无穷无尽的形态甚至是整个世界。这种不可思议的背后,我认为跟「降维」的力量有关。当我们把大千世界还原为三维世界的 (x,y,z) 坐标,就能表示每一个位置。每一块乐高就是一个「点」,如果把世界拆成最小的原子,然后再重新组合起来,我们就拥有了无限可能和强大的创造力。
大语言模型在一些地方跟乐高很类似。它是一种自然语言处理模型,用于预测一段文本中下一个单词或符号的概率。同时它也是一种统计模型,基于概率分布来建模自然语言的语法和语义规则。GPT 就是一种语言模型,实际上它做的事情很专一:基于上文持续预测最可能出现的字符串。它之所以能预测得很准确(或者说很合理),是因为它经历了巨量文本的学习。当研究者把全网的文本集中到一起,把这些数据「降维」成一维的纯数字「向量」,就将这些海量的数据从最初的形态中解放出来。如果能找到一种高效重新组织文本的方法,那么大模型就拥有了无穷的创造力,也就是我们现在看到的基于向量空间相似度计算的文本生成能力。
AI 生成图像也类似,本质上,它是一个”计算所有像素应该如何分布“的过程,只要把二维平面内每一个像素的值都计算出来,就得到一幅完整的图像。现在最常用的稳定扩散模型,就是从随机的噪声开始,逐渐把噪声“清理”干净,直到生成清晰的图片。图片的像素也是「乐高」。
AI 就像乐高一样,带给我们重组像素、重组文本、重组语言以至于重组世界的能力。
刚才我们从「本质」用乐高的比喻来理解 AI。现在我想切换到人和 AI 的关系的视角,用什么比喻适合呢?很多人都提过人机关系的其他隐喻:助手、宠物、老师、博弈对手等等,但我想到的是「镜子」和「镜像」。
在电影《Her》中,男主使用智能操作系统 Samantha 后,与 ta 产生了深层次的心灵交流。Samantha 通 过学习,逐渐了解和体贴男主,给予他精神支持,很像一个真真切切的伴侣。但 ta 无法体会人类的真实情感和经历,只能通过数据学习模们人性。这如同镜中形象,缺乏真实内在。更多时候,我们在 AI 中看到的、得到的回应,其实是自己的投射。当我跟 ChatGPT 对话时,对话受到我的思考、见解和经验的局限,我只能问出我能够企及的问题,而我们的对话也会局限在我能认知的范围之内。如果换了一个人,费曼也好,村上村树也好,对话内容就会完全不同。你是谁,AI 就会映照出你是谁。我们常说 xx 如镜,能反映出自己的想法、得失。AI 也如同镜子,只不过它背后集成了人类的浩瀚样本,能根据镜子前的人快速准确定位到类似的样本上。跟以前笨笨的魔镜不同,回答不上“谁是世界上最 xx 的人”,大模型总是能说出你想听的话,让人总有一丝顾虑:长此以往,镜子中的自己到底是真实的自己,还是 AI 猜到的我想让 AI 让我看到的自己 🤷。
AI 的突飞猛进,还带了另外一个影响,让我们更加深刻地反思人类到底擅长什么。曾经让我们引以为傲的创意能力,在生成式 AI 面前竟然如小巫见大巫,这对人类的自恋是一次不小的冲击。在冲击之余,我们会开始放下一些骄傲,多一些哲学层面甚至存在意义的思考。智能是什么?意识是什么?创造是什么?人的价值感从而而来又将去向何处?……AI 就像一面(照妖)镜子,让我们又一次看向镜中的自己,思考眼前所见,和那些不见踪迹但始终萦绕在这个物种意识深处的存在危机。
## 除了 Github 之外,能否介绍一个您觉得特别值得大家去订阅或者加入的 AI 领域的网站、媒体或其他信息源?
AI 领域的信息源太多了,我推荐三个还不错的吧。
- A16z:https://a16z.com/ai/ ,A16z(Andreessen Horowitz) 是一家风险投资公司,它对 AI 领域有不少深度洞察,如果想获得国外的前沿深度报道,可以关注。
- 奇思:https://news.miracleplus.com/feeds,奇思是奇绩创坛的社区,大模型日报会汇集每天 AI 领域的最新动态,涵盖面广、时效性强,值得追踪。
- Stable Diffusion 教程: https://stable-diffusion-art.com/ 有非常全面而且详尽的 Stable Diffusion 教程,想学习 AI 绘画的话不要错过。
## 能否介绍一些您个人使用 AI 工具的小技巧或者心得体会?
最近我研究 Stable Diffusion AI 绘画比较多,相比 Midjourney,它的功能确实更加丰富和灵活,但代价是入门曲线比较陡峭,操作界面实在称不上友好。不过如果能顺利通过入门阶段,Stable Diffusion 确实是一个强大的创作工具。
我举一个提示词的例子。很多人在刚接触 AI 绘画时,都觉得凭空写提示词很难,因为我们在日常生活和工作中,很少这样去想象和用英文描述画面。总结起来,这些障碍包括:
- 脑海中没有明确的画面,不知道从何入手
- 不知道哪些提示词是有用的、必要的
- 容易遗漏重要提示词
- 需要输入英文提示词,但自己的英语词汇量有限
- 当出图不符合预期时,不知道怎样调整提示词
针对这些难点,我花了很多时间去学习、试错、总结经验,现在慢慢都沉淀到我的 AI 绘画课程中,后续会在我的公众号「设计极客 00」中发布,这里先简单介绍三个 Stable Diffusion 插件,能大大提高写提示词的效率。
**Prompt all in one**
安装 Prompt all in one 之前和之后绝对是两种不同的使用体验。
在扩展页面搜索并安装成功后重启 WebUI,可以看到提示词输入框下方出现了一排新的按钮。选择语言为简体中文以后,就可以开始在右侧的小输入框中输入中文,回车后内容填入到上方提示词输入框内,等待一两秒,插件会自动翻译成英文。冥思苦想还要查字典写提示词的日子,就这样结束了!你甚至可以设置 ChatGPT 的 API,只输入几个词然后让 GPT 帮你补全。
另一个特别好用的工具是对照翻译。有时候我们在网上看到一些效果非常好的提示词,一大段陌生词汇着实让人头疼。有了 prompt all in one,你可以复制到提示词输入框,一键翻译所有提示词,就可以看到每个提示词对应的中文翻译了,还可以生成图像看看到底是什么效果。ps.这可是学习优质提示词的好方法。
**Boorutag autocompletion**
虽然有了自动翻译工具,但有时候我们还是会想直接写英文提示词,尤其是常用词和缩写,比如 masterpiece 和 NSFW,一不小心就会拼写错误。这时候自动补全功能就非常有用了。安装了 Boorutag 插件后,在输入框开始输入文字,就会有一个浮层显示最常见的相关提示词,选择后按 tab 键,完整的提示词就会自动补全,不再需要每一个字母都输完并且反复检查。
**Style editor**
每次打开 WebUI 需要从头开始输入提示词,特别是一些负向提示词,如果都要重新打一遍真的很烦人。当我们使用了一组效果不错的提示词,可以保存为模板下次使用,尤其是高频使用的词组最好能快速加载。另外,当你保存的模板多了,有时候可能需要删除掉某些模板,或者要做些修改,怎么办呢?提示词模板的文件存放在根目录的 style.csv 文件夹中,打开是可以编辑的,不过使用起来还是比较麻烦。Style editor 插件可以帮到你。
安装后重启 WebUI,可以看到 WebUI 顶部多了一个标签,打开标签可以看到一个列表,正是风格模板列表中的提示词模板,在这个列表中你可以直接修改提示词!也可以新增和右键选中后按 Del 键删除,真的是非常方便了。高级的玩家一般会按风格建几个常用模板,比如动漫、写真、商品图等等。这个插件绝对是高手路上的必备神器。
除了提示词,Stable Diffusion 的学习还会有很多难点,比如参数组合、精确控制、高清放大等等,在我即将推出的 AI 绘画课程中,会有更多更详细的教程和技巧,感兴趣的朋友可以关注公众号「零反思」。让我们一起迎接新的创作时代吧!
---
# 我的新书《深入人心》上市了
- URL: https://tophci.com/posts/230720-00-first-book
- Date: 2023/07/20
- Tags: 深入人心, 出版, 设计, 心理学
00 的第一本个人专著《[深入人心——数字产品设计的底层逻辑](https://item.jd.com/13798493.html)》上市了!

从书名可以看出,这本书的主题是讲数字产品设计的,但其实更重要的关键字是:人心。这是一本用心理学原理解读数字产品设计方法论的书。数字产品如何改变了生活?它们是怎样变得如此深入人心?想设计有用、好用的数字产品,需要思考些什么、做些什么?这是本书想探讨的问题。
### 好产品,坏产品
> 为什么要读这本书?
我们是数字产品的使用者。人选择了工具,工具也塑造了人。我们在数字产品中消费越来越多的时间,也正在将许多生活体验“外包”给它们。在面对海量产品时,我们要如何挑选,应该如何使用?在一次又一次的互动中,形成了什么样的感受?对我们的生活有什么影响?
我们也是数字世界的设计者、建设者,一个产品设计的更新迭代,可能会影响成千上万用户。在确定某个产品功能的方案时,你清楚背后的依据吗?这些依据是否足够可靠?这些改动对不同人群会产生什么样的影响?如何能设计更好的产品,让我们身处在这个变动不居的时代,能过上一种更丰富而从容不迫的生活呢?
阳志平老师在人性系统论中,很强调”情境“的作用。电子设备和数字产品已经成为我们非常重要的”情境“。
每一次我打开手机查看屏幕使用时间,都会被自己花在手机和电脑上的时间所震惊。试想一下,如果我们家里的卧室总是不能让我睡个好觉——可能是窗帘遮光效果不好,天一亮我就醒了,那我一定会想办法改善睡眠环境,比如换一个密不透光的窗帘。但是我们每天在手机上花那么多时间,却好像不怎么在意这些 App 怎样影响了我们,每天刷过的这些文字、图片、视频、广告怎样影响了我们。希望这本书能够提醒大家,在这个永远在线的互联网时代,其实我们可以去选择对用户友好的应用,甚至创造更好的产品和设计,来净化和升华我们所处的数字情境。
### 破解数字产品设计的钥匙
> 我如何思考和组织这本书?
**不变的是什么?**
世界变化太快了,新技术变化更快。有意思的是,技术和工具越是强大,反而越是映照出我们对人的理解很匮乏。比如最近半年的生成式 AI 浪潮,抛给我们很多问题:为什么模型达到一定规模会涌现出令人意想不到的能力?机器的推理能力是怎么来的?什么是意识?什么是智能?创造力是人的特权吗?……
我们很难从一直变化的表象中获得深入的洞察。所以,我认为应该更多地思考“不变”的东西,也就是向那些在变化中始终“不变”的部分发问:人如何感觉、思考、行动?人到底需要什么?

无论是为满足哪一种需求而设计,都要一次又一次地回到人的身 上,认真地思考和理解用户/客户/买家/玩家/学员/消费者们身处什么样的环境,受到哪些动机和需求的驱使,有怎样的想法和预期,会如何反应、选择、行动,又会产生哪些情绪和感受,期待什么样的体验和服务。这个过程,是用技术来服务人的开端。
我相信,无论技术如何演变,都会围绕 “人”来展开。设计好的产品,离不开对人的观察和理解。在瞬息万变中洞察共性,是我们最重要的课题。数字产品设计中真正不变的,就是:
> 理解人,构建人和系统的关系。
**什么是好设计?**
评价一个设计好不好,其实比我们想象要难得多。
比如说,同一个 App 界面,有的用户很喜欢,另一些人用着觉得很挫败,一些界面的细节被设计师同行交口称赞,但是被工程师吐槽。比如说,有一款制作精良的游戏,能让玩家不停地熬夜闯关和氪金,这个是不是好设计?还比如,移动互联网给我们带来了无数便利,但是也在时刻不停地收集个人隐私信息,我刚跟朋友在对话框中说天气热,打开一个 App 就给我推荐空调,这是不是好设计?
评价一个设计好不好,真的是一件没有成本但疑点重重的事情。不过可以肯定的是,一个设计的好坏,并不由设计者决定,也无法交给机器来评判,最终还是要回到人的真实体验。这指向了问题的根源:如何理解人?
读完这本书,你可以不再受限于现有的直觉式反应和词汇,什么高大上,什么丑搓 low,而是掌握更多以人为中心的视角和理论去深入分析数字产品。
数字产品设计要处理人与产品的关系。数字产品并不是一个有形的、不变的物品,承载它的硬件可能形态万千。它可能有人机交互的界面,例如屏幕、鼠标键盘、游戏控制器,也可能没有界面,例如智能音箱。但它们都是有着复杂的规则、数据交换和处理过程的「系统」,可以响应输入并提供可理解的输出。

人与数字产品的关系,首先发生在人类的感知、认知、行为层面,这正是心理学包括认知科学的研究重点。而心理学与计算机等学科交汇之处,又产生人机交互(human-computer interaction)、人因学(human factors)等领域,它们致力于研究人如何与机器、复杂系统互动。设计的核心价值之一,就是让机器更懂人。
**秘密钥匙**
解锁好设计的其中一把秘密钥匙,我认为是从各学科研究成果中,去学习、发现、增进对人的理解,然后促进人与复杂系统的对话。心理学自然是一个理想的切入点,它研究人类内在心理过程和外在行为。本书会聚焦于界面设计、交互设计、产品设计与心理学相关的部分。更具体地说,本书主要参考和梳理以下研究领域在数字产品中的应用。
本书涉及的主要研究领域和代表学者
| 研究领域 | 研究对象 | 代表学者 |
| ---------- | ---------------------------------------------------------------------------------------------------------------------------- | ------------------------------------------- |
| 认知心理学 | 研究人们如何获得、储存、转换、运用以及沟通信息,包括知觉、注意、回忆、思考、推理、决策等心理活动。 | Herbert A. Simon,Alan Baddeley,Don Norman |
| 人因学 | 研究人与系统其他组成部分之间的交互关系的学科,并应用理论、原理、数据和方法进行设计,以优化系统效能和人的幸福健康之间的关系。 | Arthur Kramer |
| 工程心理学 | 研究工作场所中人的作业,包括脑的理论、行为的理论、认知的理论,属于应用心理学的一个分支。 | Christopher D. Wickens |
| 可用性工程 | 研究并改善人机交互系统的可学习性、效率、可记忆性、出错和满意度等属性。 | Jakob Nielsen,Alan Cooper |
| 行为经济学 | 研究心理、认知、情感、文化和社会因素对个人和机构决策的影响。 | Daniel Kahneman,Richard Thaler |
| 行为设计 | 研究设计如何塑造或用于影响人类的行为。 | B.J. Fogg |
| 社会心理学 | 研究人们如何看待他人,如何互相影响,如何与他人互相关联的科学。 | Robin Dunbar,David Myers |
在书里,我想和你一起探索如何从模型中学习,也就是从学者们关于人的研究中,汲取数字产品设计所需要的养分,甚至找到可以直接使用的理论框架,来提升我们对人这个复杂对象(或群体)的理解,从而做出更好的设计。
**三重心智**
认知心理学家斯坦诺维奇提出了三重心智模型,将人类的认知能力分为自主心智,算法心智,反省心智。
自主心智主要受进化影响,只要触发性刺激出现,认知过程就会快速而自主地发生,例如,识别人脸和演奏乐器等内隐学习过程。算法心智指对事物做出思考与判断的认知加工,速度较慢、大脑运算的负荷高,包括工作记忆、执行功能等。反省心智主要关注目标以及与目标相关的信念,是监控、调节自主心智/算法心智的机制,以产生最优的行动,比如从错误中学习。

有趣的是,认知心理学家诺曼曾经提出,产品设计应该解决三个不同的认知和情感处理过程,也就是情感化设计中著名的三个层次:本能、行为和反思层次。这三个层次所对应的时间周期各不相同。
人与系统的互动原本就发生在不同的时间尺度之中,我们可以根据互动所传递的信息和完成的目标,将人机互动的层次粗略划分为:
- 10 秒以内,传达瞬时的信息
- 10 秒~1 天,为达成目标,形成一系列行为流
- 1 天以上,反复与系统互动而产生持续关系
第一个层次主要涉及使用者接收信息并做出反应的过程,以视觉感知和认知加工处理为主,是视觉/UI 设计师、文案作者的工作重心。第二个层次涉及“使用者行为 → 系统响应 → 使用者行为”的持续互动过程,一直到阶段性目标达成,这是交互设计师/产品设计师/UX/UI 设计师的工作内容。第三个层次持续的时间更长,当使用者在不同时间和场景下持续与系统互动,它们之间就建立了一种长期关系,如何促进关系发展,是决策者、产品经理、设计师、运营人员和整个团队都需要考虑的。
本书参考三重心智模型和本能、行为、反思三个层次,将认知和设计的三个层次作为全书的总体框架,对应到互联网公司实际工作中的三设计领域—视觉设计、交互设计和产品运营设计,然后在认知心理学、人因学、工程心 理学、可用性工程、社会心理学等学科中寻找对应的理论和研究进展,介绍给大家。
本书的框架
| 心智层次 | 设计层次 | 主要的设计对象 | 章节 | 相应岗位 |
| -------- | -------- | -------------------------------------- | ---------- | -------------------------------- |
| 自主心智 | 本能层次 | 传达信息的视觉设计 | 第二章 | 视觉设计师,交互设计师,产品经理 |
| 算法心智 | 行为层次 | 引导行为的交互设计,辅助决策的功能设计 | 第三、四章 | 产品设计师,交互设计师,产品经理 |
| 反省心智 | 反思层次 | 营造关系的产品和运营设计 | 第五章 | 产品经理、品牌营销、运营 |
希望能借由这些梳理,搭建起理论研究和实际工作的桥梁,以便大家遇到实际问题时,可以根据线索溯源而上,找到现象背后的原理,获得新的视角和方法来深化理解和优化设计。
### 好设计,从理解三个瓶颈开始
> 关于设计的最小全局认识是什么?
#### 瓶颈一:视而不见
作为一个每天大量使用手机的用户,我依然经常找不到东西——每次在电商 App 想要复制收货地址,我至少要花上 1 分钟时间,因为来回巡视也看不见入口在哪里。作为一个设计师,我还是时不时很困惑,某个功能的入口已经很明显了,用户怎么还是看不到呢,难道只能继续加大字号?在书里,还有大量类似的例子。视而不见,是我们做出好设计的第一道关口。
为什么近在眼前,却就是看不到呢?这是由生理限制决定的。
人的视力好比一束激光,细节都在焦点上。在任何时刻,人只能接收、解释一定数量的信息,只要是视觉焦点没有经过或停留的地方,就有可能视而不见。
> 🎭 反常识
>
> 人类的视力并不是平均分布的。视觉焦点的分辨率,要远远高于焦点以外的区域。
我们以为自己能看清视野里的东西,这只是错觉。大脑非常消耗能量,不可能在大脑中保存整个世界的视觉图像,所以进化选择了更经济实惠的方案:按需所“见”。我们会只针对当前需要,注意那些可以立即获得有用信息的区域,而不是关注整个环境。这就是选择性注意。每个人都是海量信息的过滤器,我们大部分时间都在扫视而不是阅读。如无意外,视觉注意会沿着最容易加工处理的结构前进。
> 在一个信息丰富的世界里,信息的丰富意味着其他东西的匮乏: 只要是信息所消耗的东西就会匮乏。信息消耗的东西是显而易见的: 它消耗了接收者的注意力。因此,丰富的信息造成注意力贫乏,需要有效地将注意力分配给可能消耗它的过度丰富的信息来源。
> ——赫伯特·西蒙
在互联网公司经常有一种说法,我特别反感:用户是小白……这种上帝视角非常傲慢,自以为比用户聪明。如果他们了解认知科学,就知道用户并不是什么都不懂的“小白”,他们只是不会把足够的注意资源花在理解产品上面。
视觉思维的本质就是一个注意力的分配过程,我们主动选择注意什么、忽略什么。可以说,大部分信息类界面的视觉设计,都是为了构建合理的信息布局和视觉路径。从这个层面理解,才不会总是纠缠在主观的好看,我们要清楚美观「美」在了哪里,怎么促进了「观」。
最近很热的 Stable diffusion WebUI,实在是对新手非常不友好,不只是好看不好看,重点是不会用。
想要做好信息传递、改善产品的视觉体验,就需要理解视觉加工的原理,让用户真正看到重要的信息。在这本书里,会介绍很多如何突破视觉认知瓶颈的模型和方法,例如格式塔原理、视觉组块、数字界面的视觉语法等等,对这部分感兴趣的同学可以进一步阅读。
#### 瓶颈二:工作记忆
如何让人使用计算机更高效地完成任务?这就需要找出效率瓶颈所在——人类工作记忆中的信息存储量和保留时长(内存)很有限,会显著影响行为。
工作记忆是指执行推理、理解、学习等复杂任务时的记忆系统。它是一个临时的存储和加工系统,感知、认知、运动处理都跟它有关,让我们在执行复杂任务时能「把事情记在心里」,直到信息派上用场,工作记忆的容量极其有限而且需要消耗注意资源。
打个比方,工作记忆就像意识的「工作台」,我们可以在上面检查、评估、转换和比较不同心理表征。例如,使用工作记忆来完成心算,或者想象如何重新安排待办事项的顺序。而在工作台上处理完的信息,可以整理好再存放到柜子——也就是长时记忆中。

如果说视觉注意像激光一样集中,那么工作记忆就像独木桥一样狭窄而难以通过。
> 🎭 反直觉
>
> 人类感知觉的数据存储量小得惊人。
让我们来看看一组数据:
人类处理器模型子系统的数据存储量(Card,Moran,& Newell,1983)
| 模块 | 存储量 | 保留信息的时间 | 代码类型 |
| ------------------- | ----------- | -------------- | ---------- |
| 感知处理器-视觉存储 | 7-17 个字母 | 70~1000 毫秒 | 物理 |
| 感知处理器-听觉存储 | 5 个字母 | 900~3500 毫秒 | 物理 |
| 认知处理器 | 5~9 个组块 | 5~226 秒 | 声音或图像 |
认知处理器模块主要与工作记忆相关,它的存储量只有 7 个左右的组块,而且保留信息的时间很短。这座「信息独木桥」真是窄得吓人。而人的大部分思维、反应,就产生于这样的硬件条件。
**人的认知资源十分有限**这个观点,这是数字产品设计师时刻要提醒自己的基本现实。交互界面的设计,需要考虑用户的信息处理和记忆能力。
举一个例子,下面是一个摄影类 App 的功能引导。产品和设计师们总是习惯性地提供功能指引,以为这样就能帮助用户快速学会使用。这仅仅是一厢情愿,甚至适得其反。为什么呢?

用工作记忆的原理来思考一下,此时用户面对的是一个不熟悉的界面,需要调动视觉空间模块来识别元素。但是这个时候,屏幕上增加了好几个箭头+说明区域,一下子增加了负担:用户需要一个一个提示去识别,而且出现了额外的文字,语音回路开始跟视觉模版抢夺注意资源;更困难的是,这里总共有 5 个需要理解和记忆的功能点,已经超出舒适的记忆组块范围,在短短的 2 ~ 3 秒内不可能记住。所以这种新手引导设计的效果并不理想,需要重新考虑引导时机,并且降低工作记忆的负荷。
在这本书里,会讲解产品设计时应分析用户在使用过程中有哪些认知负荷,也会介绍费茨定律、层次任务分析等模型。对这部分感兴趣的同学可以进一步阅读。
#### 瓶颈三:认知偏差
在信息、产品和服务过剩的时代,选择往往也过剩。做决定需要消耗认知资源,过多的选择可能会使人疲劳甚至导致决策瘫痪。从有限选项中做选择已经不容易了,而决策是更加复杂的认知任务,需要充分的信息、充裕的时间、 充足的认知资源。

心理学家认为,认知超载是做出最佳决策的主要障碍——当可以利用的信息超过了认知负荷,加上时间受限,人们通常只寻求足够好的解决方案,而不会去寻找最好的、绝对合适的方案。用于应付信息超载的策略尽管经常有效,但也会导致错误和非理性。这就是大家熟悉的有限理性,在书中有详细的讲解和案例。
作为产品设计者,我们时常要面临选择:是利用偏差收割,还是帮助用户避免偏差?
这本书会帮助大家理解认知偏差及其对决策的影响,还会介绍改善决策的方法,例如提供认知脚手架、展示更直观的结果评估、提高系统容错能力等等。从更宏观的视角看待决策,书里还介绍了行为设计的多种方法和模型,可以促进符合用户利益的行动,大家不要错过。
### 聪明的阅读者如何读《深入人心》
> 如何最有效地阅读这本书?
推荐大家先认真学习完阳老师的《聪明的阅读者》,再来读这本书。一方面可以复习聪明的阅读者中讲解的阅读方法,一方面可以更快、更好地阅读这本书。
下面是三个阅读提示
**抽样阅读**。先读哪一部分?从本书框架中,你可以很容易找到与自己工作或者兴趣最相关的章节。视觉设计师先读第二章,产品经理和交互设计师先读第三、第四章,运营先读第五章。另外,你还可以翻看每一章最后的小结中的结构图,快速定位到自己感兴趣的模块。我还做了整本书的模型和主要知识点的梳理,并且整理成了全书的知识地图,方便读者按图索骥,形成全局的认识。
```
如何获取《深入人心》全书知识地图?
👇
关注公众号“设计极客 00”并回复“地图”即可。
```
**结构阅读**。如何快速提取书中的知识?你可以从每一章节的图表、反常识和小贴士入手。全书共有 250+ 张图片、29 个表格、23 处反常识和 47 处设计小贴士。这些都是知识点的提炼和强调,你可以先找到这些路标,再阅读前后相关的文字内容。


**主题阅读**。这本书写作过程中,花费时间最多的就是阅读和整理文献。在每一个知识点尤其是涉及具体模型和数字时,我都尽可能给出最相关、最权威、被引用次数最多的参考文献。每一章的参考文献都是主题阅读的材料,其中超过 1/3 的是书籍,相比论文和其他资料更加全面系统,很多书籍也能找到中文版本,推荐大家从中挑选主题阅读的初步书单。
### 致谢
三年时光并不短暂,在此需要诚挚地感谢许多人。感谢阳志平老师,如果不是他提出选题并鼓励催促,我可能永远也不会踏出第一步。这本书能收录到阳老师创办的开智文库,我倍感荣幸,感谢王薇老师帮助我完成了很多出版流程。从 2014 年关注“心智工具箱”公众号开始,阳老师就是我在认知科学、心理学和许多学科的引路人,是我最敬佩的老师。阳老师创办的开智社群里有许多志同道合的小伙伴,他们是我的智囊团和后援团,给了我源源不断的灵感和力量。
感谢机械工业出版社的向睿洋老师和曹颖老师。向老师帮助我确定了选题方向,精当的建议让这本书更上一层楼。曹老师认真细致地反复阅读、校对全书,帮助我打磨了很多细节,大大提升了阅读体验。还要感谢电子工业出版社的李影老师给我非常多启发和帮助。
感谢阅读书稿后给我详细反馈和建议的同行朋友刘杰、铧仔、陈嘉。特别感谢刘杰,她既是产品经理,又有工程和心理学的专业训练,在整个修改过程中一直支持和鼓励我。很多章节她都是第一个读者,让我收获了及时的反馈和继续的力量。
感谢薛志荣为这本书写推荐序。志荣出版了三本高质量的专业书籍,一直是我的学习榜样。感谢同行师友张佳佳、吴宁、C7210 和 Beforweb 社群的鼎力推荐。
感谢我的家人和挚爱,她们给予我无限的鼓励和理解;感谢关注"设计极客 00”公众号的读者,还有书稿策划时加入微信群的朋友,群里的催更和支持让我心存敬畏又倍感温暖;感谢每一位关注这本书写作和出版的朋友;最后,感谢每一位读者,你们的阅读和反馈,能让这本书延续生命力。
处在技术变革的十字路口,展望未来,世界将会发生天翻地覆的变化。但,人性如常且幽微,其中的秘密依然需要不断探寻。让我们一起深入「人心」,观照他人与自己,重新理解和定义人机关系,共创未来!
---
# AR 系列报告 05 - 交互篇
- URL: https://tophci.com/posts/230630-ar-repost-05
- Date: 2023/06/30
- Tags: XR, report, 交互, HCI
> AR 系列报告交互篇,介绍 XR 的主要交互技术
进入空间计算时代,XR 沉浸体验有赖于对视觉、听觉、触觉等多感官通道的关联融合。AR 尤其强调人与环境的互动,这对传感技术、人机交互技术提出了跨越式的发展要求,将推动人机交互进入全新的发展阶段。TopHCI 的 AR 系列报告的第五期,将为大家重点介绍 XR 领域主要交互技术的原理和现状。

报告预览



💡 下载完整版 PDF:在公众号「零反思」后台回复 “AR 报告 5”,即可获得下载链接
---
更多资源
- XR 网站:[tophci.com](https://www.notion.so/reports-center-0d4b5df65bb54dab81ad8f6edd033d96)
- XR 交流群:[https://wenjuan.feishu.cn/m?t=sTpygKVTLRFi-g5ik](https://wenjuan.feishu.cn/m?t=sTpygKVTLRFi-g5ik)
- XR 周刊:[https://arvrmrxr.feishu.cn/wiki/wikcnzMnJ1G7txL2qMgyXe6Luqd](https://arvrmrxr.feishu.cn/wiki/wikcnzMnJ1G7txL2qMgyXe6Luqd)
---
# ChatGPT Plugin 插件初体验
- URL: https://tophci.com/posts/230511-try-chatgpt-plugin
- Date: 2023/05/11
- Tags: AI, ChatGPT, Plugin
等了一个月,申请了两次,终于拿到了 ChatGPT 插件的权限 ✌🏻

Plugin store 官方推荐的还是这 8 个:

一共也就 5 页,一大波插件应该正在路上:

看到插件开始工作时的感觉也是奇妙

记录一下首次体验的感受:
- 目前插件商店的插件数量还不多,浏览起来也很不方便
- 安装插件可能需要重新登录和二次验证(我使用 Google Authenticator)
- 在一个对话中最多可以添加 3 个插件,不知道后面会不会放宽限制
- 有插件的对话默认使用 3.5
- 插件没有手动触发的入口,而是在对话中自动触发
- 如果没有超出 API 限制的话,插件速度不错,体验也比较流畅
- 目前浏览器中分享对话的 extension,还不支持插件生成的内容展示
有了插件真的好玩很多,请大家推荐插件!🚀
还没有申请的朋友快去填表加入 waitlist 吧~
https://openai.com/waitlist/plugins
---
# 00 原创-给创作者的提示词指南(附 PDF 下载)
- URL: https://tophci.com/posts/230421-creator-prompt-handbook
- Date: 2023/04/21
- Tags: AI, ChatGPT, Prompt, 原创教程, 指南



给创作者的提示词指南-s.pdf
下载链接:https://www.alipan.com/s/YEuXqxDU9dZ
提取码: 1na5
---
# AR 系列报告 04 - 平台篇
- URL: https://tophci.com/posts/230316-ar-repost-04
- Date: 2023/03/16
- Tags: XR, report, 交互, HCI
> AR 系列报告平台篇,介绍 XR 三大平台:Meta,Apple,Microsoft
TopHCI 的 AR 系列报告的第四期,将为大家重点介绍 XR 领域主要平台的发展和优势,为从业者和创作者提供一个简单的“地图”,以便更好地选择适合自己的平台。

报告预览



💡 下载完整版 PDF:在公众号「设计极客 00」后台回复 “AR 报告 4”,即可获得下载链接
更多资源
- XR 网站:[tophci.com](https://www.notion.so/reports-center-0d4b5df65bb54dab81ad8f6edd033d96)
- XR 交流群:[https://wenjuan.feishu.cn/m?t=sTpygKVTLRFi-g5ik](https://wenjuan.feishu.cn/m?t=sTpygKVTLRFi-g5ik)
- XR 周刊:[https://arvrmrxr.feishu.cn/wiki/wikcnzMnJ1G7txL2qMgyXe6Luqd](https://arvrmrxr.feishu.cn/wiki/wikcnzMnJ1G7txL2qMgyXe6Luqd)
- XR 术语卡片集:[小红书「XR 设计」](https://www.xiaohongshu.com/board/6374417d0000000001008eaf?xhsshare=CopyLink&appuid=58d135c950c4b459eca90554&apptime=1669714090)
后续的报告正在准备中,如果你愿意支持 00 持续创作,欢迎到爱发电给我充电 😊

---
# 00的XR周刊07 - HRTF 头部相关传递函数
- URL: https://tophci.com/posts/230301-xr07-HRTF
- Date: 2023/03/01
- Tags: XR, HRTF, 交互, HCI
HRTF(Head-related transfer function)头部相关传递函数是一种空间化技术和空间音频算法,它描述了给定的声波输入在声音到达鼓膜和内耳之前,如何通过头部、耳廓和躯干的衍射和反射特性进行过滤。
在研究空间音频时你一定会接触 HRTF,因为它是大多数现代三维声音空间化技术的基础。它基于人定位声音的原理,模拟了物理世界中头部周围的声音传播现象,通过音频的音量差、时间差、频率差、入射角度和耳廓反射情况等实现音频空间化。
HRTFs 的两个关键要素是身体形状和音源的方向,这是我们用来定位声音的过滤器。
每个人都有独特的耳朵形状、头部大小和耳朵位置,HRTF 基于物理模型和人体头部、躯干和耳朵形状(耳廓)的测量值。最明显的是,头部的大小和质量,耳朵的形状,耳道的长度和直径,以及口腔和鼻窦腔的尺寸,都会通过提高一些频率和减弱其他频率来操纵传入的声波。HRTF 会调整耳朵之间的音频强度差和相位差,大脑对这些差异做出反应,感知到声音来自不同方向。

如果声源位于头部的某一侧,声音也会以一定的衰减和延迟传播到远处的耳朵。模拟声音的衰减是常用的技术,也就是当声音位于右侧时在左耳应用衰减,反之亦然。
### HRTF 对声音的建模
#### 距离建模
HRTF 可以实现音频的空间化,但是它实际上并不模拟音源的距离。从原理上说,人类依靠几个因素来推断与声源的距离:
- 响度。这是最可靠的线索,很容易用声源距离的衰减来模拟。
- 初始时间延迟。比响度更难建模,因为需要计算一组给定的几何体的早期反射,以及该几何体的特性。不但计算成本高,而且在架构上也很难实现。
- DRS(Direct to Reverberant Sound)。 指的是声音的直接路径与其在环境中的反射路径之间的比例。在室内或其他反射表面较多的环境中,声音通常会反射多次,形成混响效果。模拟反射和晚期混响的系统,计算成本很高。
- 运动视差:头部小幅运动的方向变化有助于判断声音的距离。HMD 的头部定位追踪可以获得这些数据。
- 空气吸收。与其他线索相比,空气吸收造成的高频衰减对声音的影响较小,但它很容易用低通滤波器实现。
#### 环境建模
HRTFs 与衰减相结合,提供了一个三维声音的消声模型,它能提供明确的方向性线索,但由于缺乏室内回响(房间氛围),往往听起来很干燥和人工。为了解决这个问题,可以添加环境模型来模仿环境的声学效果。
1.混响和反射
当声音在空间中传播时,遇到物体表面会反射并产生一系列的回声。最初的明显回声称为早期反射,可以帮助我们确定声音的方向和距离。随着这些回声的传播、减弱和相互作用,产生了晚期的混响,这可以增强空间感知。

投射的声音如何从表面反射,而早期反射首先到达我们的视觉效果
2.鞋盒模型
鞋盒模型将环境简化为由六面墙组成的空间,空间中没有任何遮挡,可以模拟墙壁的早期反射和后期混响特性,参数包括距离和反射率,有时还包括听众在房间里的位置和方向。鞋盒模型假设所有的表面的频率吸收都相同,六面平行的墙与听众的头部的距离固定,显而易见它过于简化,无法反映环境的真实情况和各种变化。
3.人工混响
如果要模拟墙面反射和晚期混响,计算量会很大,所以空间混响通常用人工的方法提前设定好。虽然比物理模型的计算量小,但因为没有考虑听众的方向和周围的物理环境,所以听起来不太真实。
4.采样脉冲响应混响(Sampling Impulse Response Reverberation)
SIRR 捕捉真实世界空间的脉冲响应,然后在虚拟环境中对音频信号进行混响。脉冲响应通过分析空间对一个短而尖锐的声音(例如拍手)的反应,以确定该空间的声学特征,如空间的大小和形状、反射面以及空间中材料的吸收和散射特性。声音设计师通常会使用专门的设备如麦克风和扬声器,来捕捉现实世界空间的脉冲响应,然后在虚拟环境中使用软件或硬件处理,对音频信号进行混响。
它可以用来模拟各种声学环境,不论是小型空间还是大型开放空间。缺点是捕获的真实环境数据不一定能完美地映射到虚拟世界中,而且由于是从单一地点捕获的,它不会随着用户在整个环境中的移动而改变。
### HRTF 的实现
**1.捕捉 HRTF**
如果想准确地捕捉 HRTF,可以让听者进入一个消声室,在耳朵上安装特殊的麦克风,从不同方向播放声音并记录下来。然后比较原始声音与捕捉到的声音,计算出 HRTF。不同人的 HRTF 差别并不是很大,如果对精度要求不高,可以使用通用的数据集。
**2.应用 HRTF**
如果已有 HRTF 数据库,就可以使用音频卷积算法,将 HRTF 应用到声音上。基本步骤如下:
- 选择 HRTF 数据
- 载入原始音频
- 进行卷积运算
- 播放音频文件
**3.头部追踪**
我们会本能地通过头部运动来分辨空间中的声音。应用 HRTF 数据库时,需要注意与监听用户的头部和耳朵的相对位置。当用户转动头部时,必须提供准确的音频响应,否则就会失去沉浸感。
### Ref
- [Head-related transfer function - Wikipedia](https://en.wikipedia.org/wiki/Head-related_transfer_function)
- Blauert, J. (1997). _Spatial Hearing: The Psychophysics of Human Sound Localization_. MIT Press.
- [3D Audio Spatialization | Oculus Developers](https://developer.oculus.com/resources/audio-intro-spatialization/)
- [Environmental Modeling | Oculus Developers](https://developer.oculus.com/resources/audio-intro-env-modeling/)
- [What is an HRTF, or Head Related Transfer Function, and why should it be personalized? - YouTube](https://www.youtube.com/watch?v=3CXtmG4nXIM&ab_channel=Embody)
- [Files - Sofaconventions](https://www.sofaconventions.org/mediawiki/index.php/Files)
如果你愿意支持 00 持续创作,欢迎到爱发电给我充电 😊

更多资源
- XR 网站:tophci.com
- XR 交流群:https://wenjuan.feishu.cn/m?t=sTpygKVTLRFi-g5ik
- XR 周刊:https://arvrmrxr.feishu.cn/wiki/wikcnzMnJ1G7txL2qMgyXe6Luqd
- XR 术语卡片集:小红书「XR 设计」
---
# 00的 XR 周刊 06 - 空间音频
- URL: https://tophci.com/posts/230215-xr06-spatial-audio
- Date: 2023/02/15
- Tags: XR, 空间音频, 交互, HCI
> Sound is 50 percent of the movie going experience
>
> —— George Lucas
"声音是体验的一半" 。这句话出自乔治·卢卡斯,他是《星球大战》系列电影的制片人和创作者。声音设计在电影中一直扮演着重要角色,它能极大地影响观众的体验。声音在电影中被用来营造气氛、传达情感,并增强整体的故事性。它是电影制作过程中不可分割的一部分,通常与电影的视觉一样受到重视。声音效果、音乐和对话都在创造电影的氛围和情绪方面发挥着作用,并能帮助传达人物的情感和动机。
### 什么是空间音频
空间音频(spatial audio)使用声音来创造三维空间的印象。它使用专门的音频技术,在三维空间中准确再现声音,使听众能够感知到声音相对于自己的位置和距离。空间音频的应用很广泛,包括娱乐(如电影和游戏)、远程会议、虚拟现实和增强现实。它可以帮助创造更加真实和身临其境的听觉体验,让听众感觉完全融入到场景或环境中。
音频对 XR 的体验至关重要,高质量的空间音频增强了沉浸感,让人感觉身临其境。当听众置身于场景之内,而不是从远处观看时,最有临场感。例如,在 XR 场景中,移动的对象从用户的头顶呼啸而过,远比只播放一段与位置无关的音效要更吸引人。混合现实应用通常比 2D 应用更需要声音加强引导和交互,因为它们缺少触觉界面。
那么,空间音频是我们平时听到的“环绕声”吗?
从概念看它们有相似之处。环绕声使用多个音频通道和扬声器来创造声音来自不同方向的印象,而空间音频指的是使用声音来创造三维空间的印象。虽然两者都使用多个音频通道和扬声器来创造声音来自不同方向的印象,但主要区别是,环绕声通常用于增强观看电影或听音乐的体验,而空间音频则用于创造虚拟环境中的沉浸感。
在一个环绕声系统中,通常有固定数量的音频通道和环绕聆听区域的扬声器。例如,在 5.1 环绕声系统中,有五个主音频通道和一个产生低频效果的重低音通道。通过平衡各音频通道的音量和时间,可以使声音听起来像是来自听众不同方向。一般的立体声扬声器只根据声源到耳朵的距离来调整左右耳的输出音量。有时候为了获得更真实的效果,还会包括因距离而产生的个别信号延迟。但还是无法区分音源的具体方向和位置,这对 XR 来说通常是不够的。
### XR 中的空间音频技术
在 XR 应用中,空间音频一方面实现声音环绕感,让用户听到来自不同方向和距离的声音,增强虚拟环境中的存在感和沉浸感。另一方面实现声音交互,提供环境中物体的位置、距离和运动的提示,使用户接收的声源声音随着动作产生变化,帮助用户在空间中定位和完成交互,这在 AR 体验中尤其重要。
下面介绍常见的创建空间音频的技术。
**双耳音频**
使用两个独立的音频通道来创造 3D 声音的效果。每只耳朵有一个麦克风,模拟声音到达听众时被头部和耳朵过滤的方式来捕捉声音。当音频通过耳机回放时,听者可以感知到声源的方向和距离。
要在 XR 中使用双耳音频,需要使用专门的软件和硬件。首先使用双耳麦克风录制声音,它模拟了头部和耳朵过滤的效果来捕捉声音。采集声音后,用音频工作站编辑和混合声音,用双耳音频插件或其他专业软件,将声音编码为专用格式。
接下来将双耳音频集成到 XR 应用中,这可能需要使用 Unity 或 C# 脚本语言。完成后,使用 HMD 测试音频效果并进行调整,以确保它在虚拟环境中的平衡和定位正确,能增强整体体验的存在感和沉浸感。
**立体混响声音频**
Ambisonics 是一种环绕声录音和再现系统,可以捕捉和再现来自各个方向的声音,以创造一个完整的、360° 的空间声场。这项技术已经有 50 多年的历史,直到最近才被广泛用于 VR 应用中,以创造身临其境的音频体验。
在录制立体混响声音频时,使用多个麦克风和扬声器,按照特定的布局排列,以特定的配置捕捉各个方向的声音。捕捉到的声音经过编码,将多声道的音频转换为单声道信号,然后用扬声器或耳机回放。
**HRTF 技术**
HRTF 技术是指头部相关传递函数,它使用算法来模拟声音到达听众时被头部和耳朵过滤的方式,创造出 3D 声音的印象。基于 HRTF 的技术可以与耳机或扬声器一起使用,以创造空间音频。
**波场合成**
另一种创造更真实的空间声音的方法是波场合成,目的是记录真实事件的波场(如音乐会现场),并能在任何时候再现。波场是由大量的扬声器产生的,这些扬声器必须安排在播放区域周围。扬声器由计算机操作,控制声音的定位和再现。
如果你愿意支持 00 持续创作,欢迎到爱发电给我充电 😊

更多资源
- XR 网站:tophci.com
- XR 交流群:https://wenjuan.feishu.cn/m?t=sTpygKVTLRFi-g5ik
- XR 周刊:https://arvrmrxr.feishu.cn/wiki/wikcnzMnJ1G7txL2qMgyXe6Luqd
- XR 术语卡片集:小红书「XR 设计」
---
# AR 系列报告 03 - 产品篇
- URL: https://tophci.com/posts/230208-ar-report-03
- Date: 2023/02/08
- Tags: XR, report, 交互, 眼镜, HCI
> AR 系列报告产品篇,快速翻查对比国内外 AR 眼镜硬件产品关键参数。
TopHCI 的 AR 系列报告的第三期,将为大家介绍 AR 眼镜硬件产品。00 收集整理了国内外主流 AR 眼镜产品的主要参数,如上市时间、FOV、分辨率、光学方案、显示屏、刷新率等,以方便大家快速查找对比。

报告预览


