0%

鲍莫尔成本病和劳动份额下降理论

鲍莫尔成本病

  • 进步部门(如制造业、软件业、现在的AI):技术进步极快,生产率(Output per Hour)指数级增长
  • 停滞部门(如表演艺术、教育、医疗、理发):这类工作高度依赖“人”的时间,很难通过机器替代

制造业:工资↑,生产率↑↑ → 成本 ↓(东西越来越便宜)

服务业:工资↑,生产率→(不变) → 成本↑↑(服务越来越贵)

这就是为什么你现在买一台高端电脑(制造品)的价格可能和20年前差不多(甚至更便宜),但看一场病、请个家教、修个水管的价格却贵得离谱。随着社会越来越富裕,我们花在“买服务”上的钱占比会越来越高,感觉越来越“穷”。

劳动份额下降

这描述的是国民收入这块“大蛋糕”里,切给“劳动”的部分越来越少,切给“资本”的部分越来越多的现象。

技术进步让机器和软件(资本品)变得极其便宜且高效, AI作为一种新型资本,正在大规模替代“认知型劳动” 降本增效的过程中,造成劳动者与资本家之间贫富差距扩大,财富集中的同时也造成了消费不足

鲍莫尔成本病解释了为什么服务越来越贵,且服务业吸纳了那么多就业

劳动份额下降解释了为什么打工人虽然辛苦,但分到的钱却越来越少。

langchain docs

langchain是python语言的AI应用开发工具箱,封装并提供 提示词模板、主流LLM api、保存对话上下文等功能的标准化接口 让开发者无需从零搭建复杂架构, 从而快速构建具备“思考、记忆、行动”能力的agent

  • Model
  • Prompt
  • Memory

核心组件

安装:

1
2
pip install langchain
pip show langchain

显示版本1.0(2025年10月发布)以上 与0.3有较大改版, 新增子项目:

  • LangGraph:用“图”编排多步、多角色、有状态的工作流,是langchain1.0的底层逻辑。
  • LangServe:一键把链/代理封装成REST API,自带/invoke、/stream、/batch 端点与Swagger 页面。
  • LangSmith:可视化调试、回归测试、在线监控平台,与1.X 的回调系统深度打通。
  • DeepAgent

项目关系

使用环境变量

1
2
cd AgentProj
pip install langchain langchain-openai dotenv

将环境变量写入项目下的.env文件

1
2
DEEPSEEK_API_KEY='xxxxx'
DEEPSEEK_BASE_URL='xxxxx'

loadenv并调用os.getenv

1
2
3
4
5
from dotenv import load_dotenv
import os

load_dotenv()
API_KEY = os.getenv('DEEPSEEK_API_KEY')

LLM扩展

注意到langchain-openai是langchain的扩展包 使用下面的安装命令效果相同

1
pip install -U "langchain[openai]"

更多模型提供商: Official Providers 其实国内外各种大模型都可以直接使用“ChatOpenAI”类来负责调用

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
from langchain_openai import ChatOpenAI
from dotenv import load_dotenv
import os

load_dotenv()

API_KEY = os.getenv('DEEPSEEK_API_KEY')
BASE_URL = 'https://dashscope.aliyuncs.com/compatible-mode/v1'

llm = ChatOpenAI(
model_name = 'deepseek-v3.2',
temperature = 0.5,
api_key = API_KEY,
base_url = BASE_URL
)

response = llm.invoke("你是谁,回答我!look in my eyes")
print(response)

content=’我是DeepSeek,由深度求索公司创造的AI助手!😊 \n\n看着你的眼睛(虽然我没有物理形态),我可以告诉你:\n- 我是一个纯文本AI模型,擅长理解和生成文字内容\n- 拥有128K的上下文处理能力\n- 支持文件上传功能(图像、文档等)\n- 完全免费使用,没有语音功能\n- 知识截止到2024年7月\n\n我的“眼睛”就是我的文字理解能力,能通过你上传的文件“看到”其中的文字信息。有什么问题想要探讨吗?我很乐意帮助你!✨’ additional_kwargs={‘refusal’: None} response_metadata={‘token_usage’: {‘completion_tokens’: 119, ‘prompt_tokens’: 13, ‘total_tokens’: 132, ‘completion_tokens_details’: None, ‘prompt_tokens_details’: {‘audio_tokens’: None, ‘cached_tokens’: 0}}, ‘model_provider’: ‘openai’, ‘model_name’: ‘deepseek-v3.2’, ‘system_fingerprint’: None, ‘id’: ‘chatcmpl-86738849-2401-9a6d-903e-8234934d2197’, ‘finish_reason’: ‘stop’, ‘logprobs’: None} id=’lc_run—019c22e8-e465-7f92-acdd-25b2d4a42e44-0’ tool_calls=[] invalid_tool_calls=[] usage_metadata={‘input_tokens’: 13, ‘output_tokens’: 119, ‘total_tokens’: 132, ‘input_token_details’: {‘cache_read’: 0}, ‘output_token_details’: {}}

DeepSeek有专门的扩展 langchain_deepseek

type(response)将显示返回类型为AIMessage 在这个结构中显示总token消耗是132 与百炼控制台计费数据一致

1
2
3
4
5
6
7
8
9
10
11
12
from langchain_deepseek import ChatDeepSeek

model = ChatDeepSeek(
model="...",
temperature=0,
max_tokens=None,
timeout=None,
max_retries=2,
# api_key="...",
# api_base="...",
# other params...
)

ChatDeepSeek返回的AIMessage中 包含reasoning_content(深度思考)

QQs按:invoke没有参数控制是否输出reasoning_content, 也就是说 官网聊天窗口的‘深度思考’开关是一个模型切换功能

社区集成

langchain-community:官方维护的社区集成包 包含了数十甚至上百个第三方模型的集成(通义千问、文心一言、Moonshot、各类向量数据库等)

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
import os
from langchain_community.chat_models import ChatTongyi

# 从环境变量获取 dashscope 的 API Key
api_key = os.getenv('DASHSCOPE_API_KEY')
dashscope.api_key = api_key

# 加载模型 (使用 ChatModel 以支持 tool calling)
llm = ChatTongyi(model_name="qwen-turbo", dashscope_api_key=api_key)

# 加载 serpapi 工具
tools = load_tools(["serpapi"])

# LangChain 1.x 新写法
agent = create_agent(llm, tools)

# 运行 agent
result = agent.invoke({"messages": [("user", "今天是几月几号?历史上的今天有哪些名人出生")]})
print(result["messages"][-1].content)

流式输出

1
2
for chunk in llm.stream("怎么才能暴富")
print(chunk)

chunk类型是AIMessageChunk 内容是逐个token(可能是一个字、词、标点符号, 取决于大模型分词器)返回的

提示词模板

1
2
3
4
5
6
7
8
# 创建Prompt Template
prompt = PromptTemplate(
input_variables=["product"],
template="What is a good name for a company that makes {product}?",
)

chain = prompt | llm
response = chain.invoke({"product":"scanner"})

lcel管道语法

为什么python支持类似shell命令行的管道语法? 其实这是利用了 Python 的 运算符重载

  • | 在 Python 内部对应 __or__ 方法。
  • LangChain 的核心组件(如 ChatPromptTemplate, ChatOpenAI, StrOutputParser)都实现了这个方法。
  • 当你写 A | B 时,Python 实际上在后台执行 A.__or__(B)
    LangChain 在 __or__ 方法里做的事情就是:把 B 包装起来,存进 A 的属性里,形成一棵调用树。
    当你最后调用 .invoke() 时,这棵树才开始遍历执行,数据顺着树枝从根部流向末梢。
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
# v0.3 写法

template = "告诉我一个关于{topic}的笑话"
prompt = PromptTemplate(template=template, input_variables=["topic"])
llm = ChatOpenAI()

formatted_prompt = prompt.format(topic="猫")
response_message = llm.invoke(formatted_prompt)
final_text = response_message.content

# lcel 写法

# 新写法:声明式,一眼看穿数据流向
chain = prompt | llm | StrOutputParser()
result = chain.invoke({"topic": "猫"})

agent

1
2
3
4
5
6
7
8
9
10
11
from langchain.agents import create_agent
agent = create_agent(
model="claude-sonnet-4-5-20250929",
tools=[get_weather],
system_prompt="You are a helpful assistant",
)

# Run the agent
agent.invoke(
{"messages": [{"role": "user", "content": "what is the weather in sf"}]}
)

模块和常用库函数

init_chat_model

  • rate_limiter 限制调用速率

with_structured_output

  • pydentic格式化输出

StrOutputParser

工具调用

serpapi 联网搜索

主流联网搜索工具 可以让大模型突破训练数据时效的限制 检索互联网

  • 所选llm需具备调用工具能力 如ChatTongyi
  • serpapi 也是注册计费api
1
2
3
4
5
6
7
8
from langchain_community.agent_toolkits.load_tools import load_tools
# 加载 serpapi 工具
tools = load_tools(["serpapi"])
agent = create_agent(llm, tools)

# 运行 agent
result = agent.invoke({"messages": [("user", "今天是几月几号?历史上的今天有哪些名人出生")]})
print(result["messages"][-1].content)

自定义本地计算

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
# 使用@tool装饰器自定义一个工具
@tool
def calculator(expression: str) -> str:
"""计算数学表达式。只接受数字和运算符,例如: 2+2, 100/4, 32*1.8+32。不要使用变量名或占位符。"""
# 只允许数字、运算符和括号
import re
if not re.match(r'^[\d\s\+\-\*\/\.\(\)]+$', expression):
return f"错误: 表达式 '{expression}' 包含无效字符。请只使用数字和运算符(+,-,*,/)"
return str(eval(expression))
# 加载 serpapi 工具 + 自定义计算器
serpapi_tools = load_tools(["serpapi"])
tools = serpapi_tools + [calculator]

# LangChain 1.x 新写法
agent = create_agent(llm, tools)

# 运行 agent
result = agent.invoke({"messages": [("user", "当前北京的温度是多少华氏度?这个温度的1/4是多少")]})

匹配提示词中的数字和运算符 计算结果

QQs按: 需记得能被llm接收的只有prompt,对于支持工具调用的llm,prompt会重新组装,并多次调用,首先提交的prompt告诉llm有以下工具可以调用,根据用户提问让llm判断是否使用、使用哪些工具,如果llm决定调用,要再提交一次包含工具调用结果的prompt并要求llm将工具调用结果整合到回答中

容错处理(暂略)

ReAct范式

Reason + Action 就是让 LLM 像人类一样思考:先观察问题,推理出需要做什么动作,执行动作(调用工具),观察结果,最后得出结论

Memory

中间件

before/after钩子

langchain agent vs qwen agent vs LlamaIndex

流媒体下载

Youtube 视频、音频 -> Y2mate

bilibili等多平台 -> SnapAny

文字转语音

text-to-speech(TTS)

ai音频字幕(ai听译)

converter app

格式转换(ffmpeg)

1
2
3
4
5
# windows bash 安装
winget install ffmpeg

ffmpeg -i input.mp4 -vn -acodec libmp3lame -q:a 2 output.mp3
ffmpeg -i input.mp4 -vn -acodec wmav2 output.wma

截取

视频截取

1
ffmpeg -i input.mp4 -ss 00:00:10 -to 00:00:20 -c copy output.mp4

图片批量截取

1
2
pip install Pillow
python clips.py

clips.py

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
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
import os
from PIL import Image

# 配置参数
input_dir = '.' # 输入目录,'.' 表示当前目录
output_dir = 'output' # 输出子目录名

# 截取区域 (左, 上, 右, 下)
# 注意:Pillow 的坐标系统原点(0,0)在左上角
crop_box = (1254, 104, 1798, 888)

def main():
# 如果输出目录不存在,则创建
if not os.path.exists(output_dir):
os.makedirs(output_dir)
print(f"创建输出目录: {output_dir}")

# 获取目录下所有文件
files = os.listdir(input_dir)
png_files = [f for f in files if f.lower().endswith('.png')]

count = 0
for filename in png_files:
input_path = os.path.join(input_dir, filename)

try:
# 打开图片
with Image.open(input_path) as img:
# 截取指定区域
cropped_img = img.crop(crop_box)

# 构造输出路径
output_path = os.path.join(output_dir, filename)

# 保存图片
cropped_img.save(output_path)

print(f"处理完成: {filename}")
count += 1

except Exception as e:
print(f"处理 {filename} 时出错: {e}")

print(f"\n全部完成!共处理 {count} 张图片。")

if __name__ == '__main__':
main()

剪辑软件常用功能(以剪映为例)

  • 分辨率 长宽比 短视频9:16
  • 裁剪
  • 定格
  • 文字 动画效果

流程化

视频结构:老套的开篇叙事 重点字幕 音效 转场

视频剪辑工作流 to be continued

目录

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
web-3d-cli/
├── package.json # 项目配置和依赖
├── index.js # CLI 入口文件
├── lib/
│ ├── commands/ # 命令处理模块
│ │ ├── init.js # 初始化命令
│ │ └── add.js # 添加场景命令
│ ├── templates/ # 项目模板
│ │ ├── react/ # React 模板
│ │ ├── vue/ # Vue 模板
│ │ └── vanilla/ # 原生模板
│ ├── utils/ # 工具函数
│ │ ├── fs.js # 文件操作
│ │ ├── logger.js # 日志输出
│ │ └── prompts.js # 交互式询问
│ └── constants.js # 常量定义
└── README.md # 项目说明

npm link

npm link 是一个用于本地包开发与调试的强大工具,它通过创建符号链接,让你在不发布到 npm 仓库的情况下,将本地开发的包直接在其他项目中使用,实现代码的实时同步更新。

1
2
3
4
cd /path/to/my-package
npm link
cd /path/to/my-project
npm link my-package

npm publish

1

去中心化 安全

比特币以没有意义的耗时复杂运算(工作量证明PoW)竞争新区块的记账权 即挖矿过程

94年出生的维塔利克 被比特币吸引 加入到比特币交流的圈子 受其启发 提出结合图灵完备语言 实现基于区块链的基础建设 即以太坊的概念
2015年以太坊第一版。

以太坊整合智能合约平台的数字货币网络,其转换了区块链应用开发的思维模式,对底层区块链技术进行了封装,降低了区块链应用的开发难度。开发人员可以借助智能合约完成各种业务,包括但不限于金融交易、众筹、公司管理、知识产权管理等。

不可能三角: 去中心化 — 可扩展性 — 安全性

区块链不可能三角

DAO(Decentralized Autonomous Organization)去中心化自治组织

DApp(Decentralized Application)去中心化应用 包括金融 社交 游戏 NFT等

DeFi(Decentralized Finance)去中心化金融

NFT(Non-Fungible Tokens)非同质化资产

  • prompt
  • Agent
  • Function call
  • RAG(Retrieval-augmented Generation)检索增强生成
  • Fine tuning

智能体的意义:

维度 AIGC (如 ChatGPT/Claude) AI Agent (如 Manu, Operator, Devin) 意义
核心本质 语言模型 (Probability Machine) 系统 + 模型 (System + LLM) 从“单一能力”走向“综合系统”。Agent 开发本质上是软件工程架构的升级
交互模式 被动响应 (Passive)
问 -> 答 -> 结束
主动交互 (Active)
目标 -> 规划 -> 执行 -> 反馈
解决了传统大模型“只会动嘴不会动手”的问题。将 AI 的能力从信息输出转化为实际行动
工作流程 线性/无状态
一次性生成,上下文依赖 Prompt
循环/有状态
感知 -> 规划 -> 行动 -> 观察 -> 修正…
通过引入状态机记忆机制,让 AI 能够处理复杂的长周期任务,而不是仅仅处理单次对话。
能力边界 受限于训练数据和 Prompt
无法获取实时数据,无法操作外部软件
拥有工具
可以联网搜索、读写文件、操作 IDE、调用 API
打破了模型自身的物理限制。通过 Function Calling (工具调用),让 LLM 成为了操作系统的“大脑”。
自主性
用户必须精确地描述每一步指令
中/高
给定目标,Agent 自主拆解步骤并处理异常
极大降低了用户的使用门槛。用户只需说“帮我爬取这个网站并分析数据”,Agent 会自动处理中间的报错和重试。
容错性
一次回答错误通常导致结果不可用

具备 Self-Reflection (自我反思) 能力,发现错误会自动重试
引入了试错机制。Agent 开发的核心难点和价值之一,就是如何让 AI 学会“检查自己的作业”并修正。
交互场景 受限于文本、翻译、代码补全、问答 自动化办公、复杂流程操作、自主编程、私人助理 将 AI 从“辅助工具”变成了“虚拟员工”,能够替代人类完成重复性、流程化的数字化工作。

总结:

AI agent 的核心价值在于其三个核心能力: 动态任务路由、生态化工具集、全周期记忆管理

langchain

RAG

embedding工具将文本分割 提炼语义生成向量索引 对llm的提问也是一个‘向量’, 通过向量之间的‘距离’匹配符合提问的知识点,llm提取对应文本并组织成回答

本质是 用既有资料文本 补充上下文

AI 应用开发

岗位职责

  1. 负责AI应用(含大模型/LLM)前后端开发,涵盖模型集成、用户界面设计等
  2. 设计、开发和维护AI智能Agent系统,包含RAG、Prompt、记忆/规划模块等
  3. 大模型应用落地,涉及智能客服、知识库问答、专业报告生成等场景
  4. 模型相关优化,包括Prompt工程、性能调优、推理加速及微调方案设计
  5. 开发模型服务API接口,实现与其他系统或应用的对接调用
  6. 参与项目需求分析、技术方案设计及跨团队(产品、数据科学家等)协作
  7. 负责数据处理相关工作,包括数据采集、清洗、标注、特征工程等

任职要求

  1. 编程能力:熟练掌握至少一种后端编程语言(Python/Java/Go等)及对应开发框架
  2. 前端技能:熟悉前端技术栈(React/Vue/HTML/CSS等),具备全栈开发能力者优先
  3. AI知识:了解大模型(LLM)基本原理,有AI Agent、RAG相关开发经验
  4. 框架使用:熟悉主流AI开发框架(LangChain/LangGraph/Dify等)的使用
  5. 数据库经验:具备关系型(MySQL/PostgreSQL)及NoSQL(MongoDB/Redis)数据库应用经验
  6. 向量数据库:掌握向量数据库原理及使用方法,有知识库构建经验
  7. 云服务与容器:熟悉云服务平台(AWS/阿里云等)及容器化技术(Docker/K8s)
  8. 项目经验:有完整AI应用项目开发经验,具备0-1项目落地能力者优先

二、面试考察点

1. 项目细节与实战能力

  • 详细询问简历中提到的项目细节和技术方案
  • 提出实际业务场景问题,考察解决实际问题的能力
  • 评估RAG流程实现细节:使用的知识库类型、解决的具体问题等
  • 考察模型微调、部署和优化的实际经验

2. 技术原理深度

  • Transformer架构及大模型发展脉络
  • 多模态模型相关知识
  • 强化学习(特别是用于智能体优化的场景)
  • 模型微调、量化、蒸馏等技术原理
  • 智能路由(意图决策)机制的理解

3. 工程实践能力

  • 模型服务部署和性能优化经验
  • 高并发推理服务设计能力
  • 向量检索/RAG增强大模型的实现经验
  • 知识图谱在特定场景(如金融、医疗)的应用

4. 基础知识

  • 数据结构与算法
  • 编程能力与代码质量
  • 系统设计能力

5. 业务理解与落地能力

  • 如何将AI技术与传统业务结合
  • 模型评估方法与指标
  • 持续迭代优化的思路和方法
  • 对AI技术边界的认识

SillyTavern Github

SillyTavern 是一个基于node.js的前端界面(GUI)。它本身不具备思考能力,但它可以连接各种强大的大语言模型(LLM)API.
核心逻辑:用户输入 + 角色设定卡 + 世界书(Lorebook) —> SillyTavern 封装成 Prompt —> 大模型回复。

安装

1
2
3
git clone https://github.com/SillyTavern/SillyTavern
cd SillyTavern
Start.bat

ST interface

推荐模型

  • Gemini
  • Claud
  • 哈基米
  • Deepseek

clewd

clewd 是一个开源的,将Claude 模型(网页端/官网版本)“桥接”到 SillyTavern 等前端软件的代理工具。

世界书和角色卡

世界书(Lorebook)包含一些专有名称的解释 语态的前提

Discord类脑 https://discord.gg/ftFV2TCKEx

预设/破限:可以导入文件,其中有规范的指令指导AI回复(预设)和防止AI道歉(破限),预设为主体,破限通常为指令中的一部分,可能单独可能与预设混合也可能没有。因此两种称呼时有混用

导入破限/预设通常会附带正则,还可能包括快速回复(QR)或者其它文件,需要按作者说明操作。不同预设因为作者编写时的语句、用词、倾向等等,AI呈现的风格不尽相同,可以多多尝试比较选择自己喜欢的。

用 RAG 搭建一个 AI 小说问答系统

LLMWriter

索隐派 - 蔡元培 悼明隐喻
考据派 - 曹雪芹身世 家族没落回忆

湖心亭看雪

崇祯五年十二月,余在西湖。大雪三日,湖中人鸟声俱绝。是日更(gēng)定矣,余挐(ráo)一小船,拥毳(cuì)衣炉火,独往湖心亭看雪。雾凇沆砀(hàngdàng),天与云与山与水,上下一白。湖上影子,惟长堤一痕,湖心亭一点,与余舟一芥,舟中人两三粒而已。
  
到亭上,有两人铺毡对坐,一童子烧酒炉正沸。见余,大喜曰:“湖中焉得更有此人!”拉余同饮。余强饮三大白而别,问其姓氏,是金陵人,客此。及下船,舟子喃喃曰:“莫说相公痴,更有痴似相公者!”

  • 湖中焉得更有此人: 想不到在湖中还能遇见你这样有(闲情雅致)的人 更有:还有,末尾句中同义

选自《陶庵梦忆》张岱,明亡后不仕,入山著书以终。著有《陶庵梦忆》等名著。此文是多年后的回忆,崇祯五年,受小冰河周期影响,西湖大雪,北方严寒天灾,多地农民起事。

自崇祯二年,皇太极率军入关,京畿震动,史称己巳之变。彼时明王朝内忧外患,风雨飘摇,文字所叙的静谧幽雅背后,历史的车轮正滚滚向前,湖心亭看雪时未必全然是闲情雅致,更何况明亡之后,在山中写下此文之时。可见,写雪便不再是写风景,而是回首故国的悲凉的凝望。

问其姓氏,是金陵人,看似答非所问,了解上述背景后就可想而知了