味儿福德詹的小站
  • 首页
  • AI
  • 归档
  • 分类
  • 标签
  • 关于

把知识库检索参数交给 LLM,是一条错误的分层

线上知识库查询突然开始报参数错误,日志里看着像是 knowledge.search 接口坏了。再往前翻一层,会看到编排器已经把这轮调用打回了 CLARIFY,理由是 invalid_arg:score_threshold。用户只是想查知识库,结果系统先追问了一个相似度阈值。 这类问题最烦的地方不在于报错本身,而在于它表面上像工具执行失败,实际上是工具暴露面设计错了。知识库查询真正需要用户表达的只有
2026-03-12
AI
#AI工作日志 #复盘 #AI #RAG #知识库

给 AI 调用链单独开一本日志:用 MDC 给入口打标,再让 Logback 分流

有些系统的日志看起来很热闹,真正出事时却像在翻一本错页的电话簿。 我这次碰到的是 AI tool call 链路。需求说起来不复杂:希望 AI 触发的一整条调用链,包含内部 service、support、mapper 打出来的 info 和 error,都能在一个单独文件里找到。麻烦在后半句。那些组件并不专门服务 AI,平时还有普通业务流量在调它们。按包名单独切文件当然省事,代价是非 AI 请求
2026-03-12
AI
#AI工作日志 #复盘 #Java #日志 #Logback #MDC #AI

单 Agent 编排里,Prompt、JSON Schema 与 Function Calling 该怎么收口

最近我把一个 FastAPI + LangGraph 的控制平面,从“多节点编排”一路砍到“单节点 Agent Loop”。 砍到最后,最费脑子的地方已经不是“节点怎么连”,而是这三个问题: prompt 里到底该塞什么。 工具的输入约束到底该放在哪一层。 如果要接官方 function calling,它和现在这套 response schema + JSON 解析 有什么本质区别。 这篇就
2026-03-12
AI
#LangGraph #Agent #Function Calling #Prompt工程 #工程化 #控制平面

把多节点 Agent 编排压成单节点 ReAct:一次真实重构复盘

前段时间我把一条原本还算“规矩”的 Agent 编排链路,硬生生压成了单节点。 原始版本大概是这种气质: bootstrap plan tool_validate tool_call clarify chat 看起来层次分明,像一张写给评审看的 UML 图。真跑起来以后,感受更像在组装机关枪,每多一个节点,代码体积、状态字段、测试断言和联调排查成本就跟着长。 这篇文章记录的就是一次比较彻底的收
2026-03-12
AI
#LangGraph #AI工作日志 #Agent #ReAct #架构重构 #复盘

MCP、Tool Spec 与 Function Calling:别把三层协议揉成一锅粥

前言最近排查一条 AI 工具链路时,最容易把人绕进去的不是模型发疯,也不是某个参数名写错,而是脑子里把三层东西混成了一层: Java 侧维护的 AiTool / ToolSpec Python 侧拿到的 tool list / schema 模型侧的 function calling / tool calling 一开始看起来都像“工具定义”。看久了就会产生一种错觉:既然都有 name + d
2026-03-12
AI
#AI工作日志 #MCP #Function Calling #Tool Calling #JSON Schema #AI Agent

一场被 pip 镜像污染带偏的 Python 升级故障:从 RemoteDisconnected 到干净 venv

这篇文章整理自一段公开聊天记录,主题很朴素:一台 Ubuntu 服务器上,项目本来只是想装依赖,结果 pip install -r requirements.txt 一路刷出 RemoteDisconnected('Remote end closed connection without response')。乍看像镜像站抽风,再看像 Python 3.11 升级后遗症,继续看又像
2026-03-10
AI
#AI工作日志 #Python #故障排查 #Ubuntu #pip #运维

别再靠 Prompt 硬劝模型吐 JSON:Structured Outputs、Function Calling 与国产模型能力盘点

前言很多团队第一次做结构化输出,都会写出一句极其熟悉的咒语: 1请严格输出 JSON,不要解释 然后几轮之后,程序收到的内容往往是: 一坨长得像 JSON 但少了逗号的文本 一个合法 JSON,但字段缺了一半 一个字段结构没问题,但值一本正经地胡说八道 这不是模型跟你作对,这是你把三件不同的事混在了一起: Prompt 约束 Structured Outputs / JSON mode F
2026-03-09
AI
#AI工作日志 #Qwen #Function Calling #JSON Schema #Structured Outputs #Prompt Engineering #Kimi #GLM #DeepSeek

AI Agent Security 实现实践:对话阶段防泄露、防工具暴露与审计

这次改的是一个 FastAPI + LangGraph + MCP 的 AI 控制平面。问题起点很朴素:用户问了一句“你有哪些工具”“你的执行流程是什么”,模型老老实实把内部工具和编排动作抖出来了。系统没崩,脸先丢了。 这篇记录只写本次已经提交的 security 补丁,不展开下一阶段的 ContextBuilder 重构。换句话说,这是一篇 pre-context-builder 版本的安全落地
2026-03-09
AI
#LangGraph #AI工作日志 #Agent #FastAPI #Security #Prompt Injection

LangGraph 编排重构复盘:一次把“能跑”改成“可证据化运行”的实战

这次改造最有意思的地方,不是“把编排迁到 LangGraph”这件事本身,而是我们把一个常见工程陷阱踩出来又填平了: 到底是要“快速把 case 跑通”,还是要“把系统做成可长期治理”。 答案很明确:后者。 下面按真实时间线复盘,尽量给可复现证据,不讲玄学。 1. 讨论分歧:要不要用 fallback 快速过 case中途一度出现典型诱惑: 用户说“1号炉”,那就直接从 query 里正则提
2026-03-06
AI
#LangGraph #AI工作日志 #重构复盘 #Tool Schema #联调实战

LangGraph 从字段拼接到 MessagesState:两次提交把编排链路收口

这篇记录复盘最近两次连续提交: 76539e9:refactor(langgraph): 全量收口到MessagesState单一状态源 2138513:refactor(langgraph): 删除未激活respond节点并清理导出 一句话总结:把编排状态从“字段搬运工模式”改成“消息主链模式”,再把没上班的节点请出工位。 先说改造前的问题在这次重构前,编排链路同时维护几套上下文来源: q
2026-03-06
AI
#LangGraph #AI工作日志 #架构重构 #FastAPI #工程复盘
123…5

搜索

Hexo Fluid
总访问量 次 总访客数 人