跳至主要內容
Function Calling 和普通聊天接口有什么区别

概要

普通聊天接口让大模型“回答问题”,Function Calling 则让大模型参与“选择并调用系统能力”。

两者表面上都接收消息并返回结果,但工程目标完全不同:普通聊天主要生成自然语言;Function Calling 需要模型、工具、权限、状态和错误处理共同组成一个执行闭环。

我在企业诊断报告类 AI 项目中设计过兼容 OpenAI Function Calling 格式的轻量工具调用框架,也做过 MCP 客户端与服务端集成。本文从工程角度说明两者的区别,以及什么时候值得引入工具调用。

普通聊天:输入消息,输出文本


布衣云水客大约 6 分钟文章AI 应用Function CallingLLMAI AgentMCPJava
一个老系统是否值得重构,可以先看这 4 项

概要

老系统不好维护时,团队很容易形成两个极端观点:

  • “这个系统已经没救了,必须全部重写”;
  • “现在还能跑,千万不要动”。

两种判断都可能有道理,也都可能把项目带入困境。

我参与过大型中台的服务聚合、接口治理、异构平台迁移和领域模型建设。实践中,决定是否重构的关键并不是代码“看起来有多旧”,而是业务价值、风险边界、经济账和演进路径能否同时成立。

在启动重构前,我通常先看以下四项。

一、业务价值:系统问题是否真的阻碍了业务

技术团队常见的不满包括代码重复、框架老旧、分层不标准、测试不足。这些是技术债,但不一定足以支持一场大规模重构。


布衣云水客大约 5 分钟文章架构设计系统重构微服务Java技术债架构治理
企业做 AI 应用,什么时候不应该先上 RAG

概要

提到企业大模型应用,很多方案的第一反应都是:把资料放进向量数据库,搭一套 RAG,再做一个聊天页面。

RAG 很有价值,但它解决的是“从非结构化知识中找到相关证据,并辅助模型生成回答”。如果业务真正需要的是精确计算、实时查询、流程执行或规则判断,先上 RAG 反而可能绕远路。

在企业智能问数、知识检索和自动诊断报告的实践中,我越来越倾向于先判断任务类型,再决定使用 RAG、工具调用、规则引擎还是普通软件功能。

场景一:答案必须来自实时结构化数据

例如:

  • 查询本月某区域销售额;
  • 统计当前库存、订单和告警数量;
  • 对比两个时间段的转化率;
  • 按组织、产品和客户层级聚合数据。

布衣云水客大约 5 分钟文章AI 应用RAGFunction CallingAI Agent企业 AI架构设计
Java 接口突然变慢,我通常先检查哪 5 个位置

概要

“这个接口昨天还是 200ms,今天突然变成 5 秒。”

遇到这类问题,最危险的做法是立即改线程池、加缓存或者重启服务。它们有时能暂时缓解问题,却可能掩盖真正原因,并给系统引入新的不确定性。

我做过中台慢接口治理、性能边界压测和高并发服务调优。面对接口变慢,我通常按照“先界定范围,再沿调用链缩小问题”的方式排查,重点检查以下五个位置。

一、先确认“慢”发生在哪里

第一步不是看代码,而是建立事实:

  • 是平均耗时变慢,还是 P95/P99 尾延迟变慢?
  • 是所有请求都慢,还是某类参数、租户或数据范围慢?
  • 是单个实例慢,还是所有实例慢?
  • 从什么时间开始?期间是否有发布、配置、数据量或流量变化?
  • 服务端处理慢,还是网关排队、客户端网络或重试造成的慢?

布衣云水客大约 6 分钟文章JavaJavaSpring Boot性能优化JVM数据库
为什么很多企业知识库 Demo 能用,上线后却没人用

概要

企业知识库项目最常见的错觉是:上传几份文档,问几个预先准备好的问题,模型回答得像模像样,于是大家认为项目已经完成了大半。

但 Demo 能回答,不等于系统有人用;有人试用,也不等于能够进入真实业务流程。

我参与过企业智能问数、卡片检索和诊断报告类 AI 应用的设计与交付。实践中真正困难的部分通常不是“把向量数据库接上”,而是让知识、检索、权限、评测和业务动作形成一个可以长期运营的闭环。

本文总结企业知识库从 Demo 走向生产时最容易忽略的五个问题。

一、Demo 验证的是技术链路,用户需要的是任务结果


布衣云水客大约 6 分钟文章AI 应用RAG企业知识库大模型AI 工程化产品设计
高级 Java 与 AI 应用工程(六):企业运营诊断 AI Copilot 架构

高级 Java 与 AI 应用工程(六):企业运营诊断 AI Copilot 架构

架构定位

本章以企业运营诊断 AI Copilot 为例,展示 Java 服务、DDD、消息、检索、LLM 工具调用、实时推送、工作流与 DevOps 如何形成一个完整系统。它不是特定业务的唯一实现,而是一份可用于架构设计和面试阐述的参考蓝图。

这个项目将 Java、Spring、DDD、Redis、RabbitMQ、Elasticsearch、工作流、LLM Function Calling、MCP、SSE、性能与 DevOps 串成一条完整链路。


布衣云水客大约 7 分钟人工智能AI Copilot企业架构DDDRAGMCP
高级 Java 与 AI 应用工程(五):性能、DevOps 与生产可信

高级 Java 与 AI 应用工程(五):性能、DevOps 与生产可信

技术定位

性能工程回答系统在给定负载下能否满足 SLO;DevOps 将构建、测试、发布和回滚变成可重复流程;安全与可信研发限制身份、数据、依赖和操作风险。它们共同决定代码能否在生产环境长期运行,而不只是“功能能否演示”。

1. 性能工程的闭环

性能优化不是“把 TPS 跑高”,而是明确业务场景下的容量边界和服务质量。

1.1 先定义测什么

每个场景写清:业务动作、数据规模、并发模型、读写比例、依赖模拟方式、成功标准和失败阈值。核心指标至少包括吞吐(TPS/QPS)、P50/P95/P99 延迟、错误率、CPU、内存、GC、线程池、连接池、数据库负载和消息积压。


布衣云水客大约 7 分钟工程效能JVM性能优化DevOpsDockerKubernetes
高级 Java 与 AI 应用工程(四):LLM、RAG、Function Calling 与 MCP

高级 Java 与 AI 应用工程(四):LLM、RAG、Function Calling 与 MCP

技术定位

企业 AI 应用的本质是将概率模型嵌入确定性系统:程序负责身份、权限、数据、工具与审计,模型负责语言理解、归纳和受约束的决策。RAG 解决知识与事实来源,Function Calling/Skill 解决受控动作,MCP 解决工具互操作,评测与观测解决持续可信。

1. 从“聊天”到“业务系统”

LLM 擅长语言理解、信息抽取、归纳与受约束的决策;它不天然可靠、不了解实时数据,也不具备权限。生产系统应把模型放在受控流程中:模型负责推理,程序负责权限、数据、动作和校验。


布衣云水客大约 9 分钟人工智能LLMRAGSpring AIMCPFunction Calling
高级 Java 与 AI 应用工程(三):数据库、中间件与流程编排

高级 Java 与 AI 应用工程(三):数据库、中间件与流程编排

技术定位

关系型数据库保存业务事实与事务约束;Redis 处理低延迟的临时状态;RabbitMQ 负责异步传递与削峰;Elasticsearch 提供搜索、聚合与向量召回;工作流引擎管理长生命周期的人机流程。它们各自解决不同问题,不能互相替代。

1. 关系型数据库:事实与事务的来源

MySQL、PostgreSQL、GaussDB、Oracle 的 SQL 细节不同,但设计原则一致:以约束保护数据,以索引支撑访问路径,以执行计划证明性能。


布衣云水客大约 6 分钟后端技术RedisRabbitMQElasticsearch数据库Camunda
高级 Java 与 AI 应用工程(二):DDD、事件与分布式一致性

高级 Java 与 AI 应用工程(二):DDD、事件与分布式一致性

技术定位

DDD 不是将项目机械分为四个包,而是用统一语言和边界控制复杂性;分布式设计不是追求“最终一致”,而是在不能使用单一事务的地方,明确哪些结果必须立即一致、哪些结果可恢复地异步收敛。

1. DDD 解决的不是“代码分层”

DDD 的价值在于让业务概念和软件模型一致,降低规则散落在 Controller、SQL、定时任务和前端中的风险。先找业务语言,再决定类和表。

1.1 三个必须回答的问题

  1. 这个系统的核心业务结果是什么?例如“报告已生成”而不是“数据库插入一行”。
  2. 哪些规则必须始终同时成立?这决定聚合边界和事务。
  3. 哪些变化可以接受最终一致?这决定事件、任务和补偿的边界。

布衣云水客大约 7 分钟架构设计DDD分布式系统事件驱动状态机消息队列