跳至主要內容
pptg

pptg

费大厨辣椒炒肉真是太好吃了!

ppNginx
nginx命令行工具 by Golang
youi
个人todo软件 by Flutter
ppMenu
个人Mac的便捷菜单栏 by Swift
ppBlog
个人主页
lookAtMe
悬浮提醒桌面小助手
pp宇宙
无聊画画
迈出新手村

最近又翻出来以前的小项目,外加上要换电脑了,还得整理一下文档。发现了角落里的诸多文件,于是回忆涌上心头 从上学到工作,真的是点了一大堆的科技树,现在看来似乎感觉哪哪都懂点,哪哪都不精通

本科支线: Obj-C(iOS)

2017年的秋天,大一刚入学不久就听说有了社团招新的活动,当时感觉写代码很有意思就想着去报名看看。到了之后才发现有那么多细分领域,什么Web、Android、iOS、后端、SRE...

当时我人生的第一步手机是iphone7,也不懂技术上的区别,就寻思报个iOS吧。结果后面发现居然还要配个mac啊。这方面我老妈还是很支持我的,当即就去Apple解放碑提了人生中的第一台mac。那时候啥也不懂,瞎选了一个8+512的,实际上买回来第二个月就后悔了,RAM是真小。


pptg大约 4 分钟
mac系统matplotlib中文乱码

用了8年的Mac了,之前时不时的接触到Python画图,遇到中文乱码的问题总是去Baidu。这次在这里记录一下解决方案。

网上的很多方案都是告诉我们去修改matplotlib的源代码,或者下载字体什么的。这里给一个新的思路,直接搜索可用的字体,然后选一个中文的就好了。

import matplotlib.font_manager as fm

# 常见中文字体
_CANDIDATE_FONTS = [
    'PingFang SC',
    'Heiti SC',
    'Hiragino Sans GB',
    'Songti SC',
    'STHeiti',
    'Noto Sans CJK SC',
    'Source Han Sans SC',
    'Microsoft YaHei',
    'SimHei',
    'WenQuanYi Micro Hei',
    'Arial Unicode MS',
]


# 从已注册的 TrueType 字体中查找可用字体名
available_names = {f.name for f in fm.fontManager.ttflist}
for name in _CANDIDATE_FONTS:
    if name in available_names:
        plt.rcParams['font.sans-serif'] = [name]
        print(name)
        break
        
# output: Hiragino Sans GB

pptg小于 1 分钟
LLM量化命名体系

什么是量化?

量化是通过降低数值精度来减小模型体积和提升推理速度的技术。

量化格式分类

1. GGUF/GGML格式(CPU优化)

命名模式: 模型名-量化等级.gguf

量化等级(精度从高到低):

等级 比特数 特点 适用场景
Q8_0 8bit 几乎无损 最高质量需求
Q6_K ~6bit 精度损失极小 高质量输出
Q5_K ~5bit 质量与体积平衡 推荐默认选择
Q4_K ~4bit 良好平衡 大多数CPU场景
Q3_K ~3bit 体积较小 资源受限环境
Q2_K ~2bit 极简体积 试验性使用

pptg大约 2 分钟
AI杂谈

1. AI落地的几个阶段

  • 第一阶段:功能验证(能跑起来)

    • 目标:最快验证产品价值,打通前后端交互。
    • 手段:简单提示词 + 轻量 Agent,不纠结精度。
  • 第二阶段:效果封顶(能解决问题)

    • 目标:把场景做到“可用”,建立技术护城河。
    • 手段:
      • 不计成本上最强模型(如 GPT-4/Claude-3),给足上下文。
      • 搭建复杂 Workflow / 多步 Agent,把领域知识固化。
      • 沉淀专属 Benchmark,作为后续成本与效果优化的基线。
  • 第三阶段:精益迭代(能省钱)

    • 目标:在保持效果的前提下,把成本与延迟打下来。
    • 手段:
      • 用蒸馏 / 小模型替代大模型,固定场景用 Workflow 代替 Agent,减少无效推理与 Token 浪费。
      • 微调放在最后一张牌:基模半年一换代,慎做重资产投入。

pptg大约 1 分钟
LLM命名体系

通常情况下,模型不会以单个名称存在,比如Qwen3,Kimi2,往往会给他们加上非常多的后缀,比如Qwen3-Next-80B-A3B-Instruct,Kimi-K2-Instruct-0905,这些都是什么意思呢

常见的命名体系是:

主版本-子系列-总参数-激活参数-训练类型-架构-日期

一个完整的模型名称,通常遵循一个从宏观到微观的逻辑顺序,可以拆解为以下几个层次:


pptg大约 3 分钟
LangGraph持久化报错

1. 使用MySQL作为CheckPoint后端时报错

1.1 问题

asyncmy.errors.OperationalError: (1267, "Illegal mix of collations (utf8mb4_general_ci,IMPLICIT) and (utf8mb4_0900_ai_ci,IMPLICIT) for operation '='")`

pptg大约 2 分钟
LangChain基础

主要模块

LangChain主要模块包括ModelPromptChainRetrievalAgentTool,在基础部分可以节省很多时间,但是对于Chain这块的LCEL写法,感觉完全没必要,自己封装反而更容易Debug。

1. Model

Model模块提供了对接不同大模型的功能,主要包括大模型LLMChatModel和向量化模型Embedding


pptg大约 3 分钟
LangChain部署报错

1. 请求openaipublic.blob.cor.windows.net超时

1.1 问题

今天把镜像推到服务器上,出现了openaipublic.blob.cor.windows.net,继Dify离线报错出过这个类似问题之后,LangChain也出现了。

1.2 原因

原因是LangChain在用langchain_openai的时候,依旧会去openaipublic.blob.cor.windows.net上拉tiktoken分词器。


pptg大约 1 分钟
Dify对话机制解析

写AI真好玩,能自己决定技术栈真好。可以接触到很多非CRUD的东西。

Dify版本:1.4.3

1. 前言

Dify作为一个快速验证思路的工具,还是非常不错的。但是也正因为可视化的拖拽,导致灵活性大大降低。所以最近一直在用langchain/langgraph自研AI平台。

在Dify这里还是吸收了不少经验,最开始Chat这块我是打算一路yield到底的,后面流程复杂了之后,发现各种消息乱飘,调试起来非常复杂。于是参考了Dify的架构进行了重构。


pptg大约 2 分钟
Embedding选型

数据准备

最近试了几个文本嵌入模型,可视化到二维看看效果 数据量比较小,纯主观判断了

准备了一组数据:

  • 知识库是从4个文档里提取的,一共切割成24个chunk
    • 商务视频彩铃产品介绍
    • 云录音产品介绍
    • 智能语音云售后文档
    • 商务视频彩铃售后文档
  • 然后准备了7个问题
    • 售后类:2个(xxx不生效、xxx不好用...)
    • 介绍类:3个(xxx是什么...)
    • 多跳:1个(云录音和商务视频彩铃的区别是什么...)
    • 其他(混淆):1个(转人工)

pptg小于 1 分钟