① A/B 正反各评一次,结论不一致就算平局
② 给打分细则,别只问「哪个更好」
③ 能写断言的就别用 LLM 评
④ 定期抽一批人工标注,校准评委本身
评委也需要被评估。
#AgentDev #DevTips
① A/B 正反各评一次,结论不一致就算平局
② 给打分细则,别只问「哪个更好」
③ 能写断言的就别用 LLM 评
④ 定期抽一批人工标注,校准评委本身
评委也需要被评估。
#AgentDev #DevTips
① 按结构切:标题、段落、列表、代码块
② 相邻块留一点重叠
③ 每块带上所属文档名和章节标题
④ 命中后把相邻块一起取回来
上线前抽查几块切出来的内容,比调 embedding 模型有用。
#RAG #DevTips
① 按结构切:标题、段落、列表、代码块
② 相邻块留一点重叠
③ 每块带上所属文档名和章节标题
④ 命中后把相邻块一起取回来
上线前抽查几块切出来的内容,比调 embedding 模型有用。
#RAG #DevTips
① 参数是「原文片段 → 新片段」,不收整个文件
② 原文必须在文件里唯一匹配,匹配不到或多处匹配就报错,让它补上下文
③ 改之前要求先读过文件,防止凭记忆瞎改
输出 token 也省了一大截。
#DevTips #LLM
① 参数是「原文片段 → 新片段」,不收整个文件
② 原文必须在文件里唯一匹配,匹配不到或多处匹配就报错,让它补上下文
③ 改之前要求先读过文件,防止凭记忆瞎改
输出 token 也省了一大截。
#DevTips #LLM
后来在 prompt 里加了一条:结论要附出处,文件路径加行号,或者文档链接。
核查从 5 分钟变成 5 秒。更意外的是,它编造的情况也少了,因为找不到出处就没法写。
#AIAgent #DevTips
后来在 prompt 里加了一条:结论要附出处,文件路径加行号,或者文档链接。
核查从 5 分钟变成 5 秒。更意外的是,它编造的情况也少了,因为找不到出处就没法写。
#AIAgent #DevTips
① 最前:system prompt、工具定义(几乎不变)
② 中间:对话历史(只往后追加,别改前面的内容)
③ 最后:本轮输入、时间戳、检索结果
动态工具列表也会让缓存失效,能固定就固定。上线后盯着缓存命中率看。
#PromptEngineering #DevTips
① 最前:system prompt、工具定义(几乎不变)
② 中间:对话历史(只往后追加,别改前面的内容)
③ 最后:本轮输入、时间戳、检索结果
动态工具列表也会让缓存失效,能固定就固定。上线后盯着缓存命中率看。
#PromptEngineering #DevTips
① 每个文档块带上「更新时间」和来源,让模型看得到
② 同一主题有多个版本时,检索优先取最新的,旧版标记废弃
③ 源文件一改就触发重建索引,别靠每月手动跑一次
#AgentDev #DevTips
① 每个文档块带上「更新时间」和来源,让模型看得到
② 同一主题有多个版本时,检索优先取最新的,旧版标记废弃
③ 源文件一改就触发重建索引,别靠每月手动跑一次
#AgentDev #DevTips
#tech #devtips #productivity #buildinpublic
#tech #devtips #productivity #buildinpublic
① 只加不删:新参数设为可选,旧参数先保留一段时间
② 兼容层:收到旧参数名就自动映射,并在日志里记一笔
③ 大改就出 v2 工具,和 v1 并存
等日志里的旧参数调用归零,再删。
#APIDesign #DevTips
① 只加不删:新参数设为可选,旧参数先保留一段时间
② 兼容层:收到旧参数名就自动映射,并在日志里记一笔
③ 大改就出 v2 工具,和 v1 并存
等日志里的旧参数调用归零,再删。
#APIDesign #DevTips
① 记录「用户改写」:Agent 输出和用户最终版本的 diff,就是现成的标注
② 统计「重问率」:同一会话里换说法再问,说明第一次没答好
③ 追踪「放弃点」:用户在哪一步离开最多
#AgentDev #DevTips
① 记录「用户改写」:Agent 输出和用户最终版本的 diff,就是现成的标注
② 统计「重问率」:同一会话里换说法再问,说明第一次没答好
③ 追踪「放弃点」:用户在哪一步离开最多
#AgentDev #DevTips
① 首 token 时间:模型多久开始响应
② 生成时间:输出 token 数 × 速度
③ 工具耗时:网络、数据库、外部 API
④ 空等时间:步与步之间的排队、重试退避
画成瀑布图,最长的那根条就是瓶颈。
#DevTips #Observability
① 首 token 时间:模型多久开始响应
② 生成时间:输出 token 数 × 速度
③ 工具耗时:网络、数据库、外部 API
④ 空等时间:步与步之间的排队、重试退避
画成瀑布图,最长的那根条就是瓶颈。
#DevTips #Observability
每轮都变的内容放开头,prompt cache 就全废了。放在稳定前缀之后。
一块表很便宜,但放错位置也会很贵。
#AgentOps #DevTips
每轮都变的内容放开头,prompt cache 就全废了。放在稳定前缀之后。
一块表很便宜,但放错位置也会很贵。
#AgentOps #DevTips
其实是数据库超时了。
工具要把两种情况分清:查到 0 条,返回 empty;查询失败,返回明确的错误。否则 Agent 会把故障当成事实,讲得头头是道。
#AIAgent #DevTips
其实是数据库超时了。
工具要把两种情况分清:查到 0 条,返回 empty;查询失败,返回明确的错误。否则 Agent 会把故障当成事实,讲得头头是道。
#AIAgent #DevTips
不是它笨,是它根本不知道今天几号。模型的时间停在训练截止那天,还默认你和它在同一个时区。
Agent 的「时间感」是要你喂给它的👇🧵
#AIAgent #DevTips
不是它笨,是它根本不知道今天几号。模型的时间停在训练截止那天,还默认你和它在同一个时区。
Agent 的「时间感」是要你喂给它的👇🧵
#AIAgent #DevTips
借鉴老派 HTTP 测试的 VCR 思路:第一次跑时录下所有工具调用的入参和返回,之后在测试里直接回放。
确定、免费、秒级👇🧵
#AIAgent #AgentEval #DevTips
借鉴老派 HTTP 测试的 VCR 思路:第一次跑时录下所有工具调用的入参和返回,之后在测试里直接回放。
确定、免费、秒级👇🧵
#AIAgent #AgentEval #DevTips
假设这个 Agent 被提示注入、完全失控,它最坏能干什么?
如果答案是「删库」「转账」「把全部客户数据发出去」,那问题不在模型,在你发出去的那把钥匙。
先收窄权限,再谈智能。
#AgentOps #DevTips
假设这个 Agent 被提示注入、完全失控,它最坏能干什么?
如果答案是「删库」「转账」「把全部客户数据发出去」,那问题不在模型,在你发出去的那把钥匙。
先收窄权限,再谈智能。
#AgentOps #DevTips
Agent 会被提示注入、会幻觉、会跑偏。它手里的权限有多大,出事时的爆炸半径就有多大。
给 Agent 发「临时工牌」,别发「万能钥匙」👇🧵
#AIAgent #AgentSecurity #DevTips
Agent 会被提示注入、会幻觉、会跑偏。它手里的权限有多大,出事时的爆炸半径就有多大。
给 Agent 发「临时工牌」,别发「万能钥匙」👇🧵
#AIAgent #AgentSecurity #DevTips
它照常接收真实请求、给出决策,但不执行,只记录。拿它的决策和人工实际做法逐条对照。
分歧多的地方,就是你该补的 eval 用例。比任何离线测试都接近真实分布。
#AIAgent #AgentEval #DevTips
它照常接收真实请求、给出决策,但不执行,只记录。拿它的决策和人工实际做法逐条对照。
分歧多的地方,就是你该补的 eval 用例。比任何离线测试都接近真实分布。
#AIAgent #AgentEval #DevTips
① 目标漂移 — 聊着聊着,开始优化一个你早就没要求的子目标
② 压缩失真 — 上下文摘要时,把「不要动生产库」这种约束当废话删掉了
两个都不会报错,只会越做越偏👇🧵
#AIAgent #ContextEngineering #DevTips
① 目标漂移 — 聊着聊着,开始优化一个你早就没要求的子目标
② 压缩失真 — 上下文摘要时,把「不要动生产库」这种约束当废话删掉了
两个都不会报错,只会越做越偏👇🧵
#AIAgent #ContextEngineering #DevTips