惯性聚合 高效追踪和阅读你感兴趣的博客、新闻、科技资讯
阅读原文 在惯性聚合中打开

推荐订阅源

Project Zero
Project Zero
GbyAI
GbyAI
Y
Y Combinator Blog
Google DeepMind News
Google DeepMind News
小众软件
小众软件
The GitHub Blog
The GitHub Blog
阮一峰的网络日志
阮一峰的网络日志
J
Java Code Geeks
WordPress大学
WordPress大学
Microsoft Security Blog
Microsoft Security Blog
IT之家
IT之家
F
Fortinet All Blogs
博客园 - 【当耐特】
H
Hackread – Cybersecurity News, Data Breaches, AI and More
P
Proofpoint News Feed
Schneier on Security
Schneier on Security
C
Cybersecurity and Infrastructure Security Agency CISA
L
LINUX DO - 热门话题
Spread Privacy
Spread Privacy
O
OpenAI News
V
V2EX
博客园 - 三生石上(FineUI控件)
AI
AI
奇客Solidot–传递最新科技情报
奇客Solidot–传递最新科技情报
Stack Overflow Blog
Stack Overflow Blog
P
Privacy International News Feed
Microsoft Azure Blog
Microsoft Azure Blog
Blog — PlanetScale
Blog — PlanetScale
Threat Intelligence Blog | Flashpoint
Threat Intelligence Blog | Flashpoint
Jina AI
Jina AI
H
Help Net Security
L
LINUX DO - 最新话题
Application and Cybersecurity Blog
Application and Cybersecurity Blog
T
Tenable Blog
K
KPMG report finds enterprise disconnect between AI and its ROI | CIO
Cisco Talos Blog
Cisco Talos Blog
cs.CV updates on arXiv.org
cs.CV updates on arXiv.org
博客园 - 叶小钗
V
Vulnerabilities – Threatpost
C
Cisco Blogs
D
Darknet – Hacking Tools, Hacker News & Cyber Security
酷 壳 – CoolShell
酷 壳 – CoolShell
Hacker News: Ask HN
Hacker News: Ask HN
S
Security @ Cisco Blogs
S
Securelist
T
The Blog of Author Tim Ferriss
Apple Machine Learning Research
Apple Machine Learning Research
美团技术团队
雷峰网
雷峰网
V2EX - 技术
V2EX - 技术

博客园 - 若-飞

企业AI Agent落地的核心逻辑与路径 LangChain Checkpoint(检查点)是什么?—— Agent 的"存档机制" RAG 设计:Embedding 如何切分 AI 客服系统设计:RAG 知识库设计 Go 百万连接服务器设计:从网卡到业务的全链路解析 深度解析 sync.Pool:从设计哲学到生产实践 Goroutine 泄漏:原因、检测与防范 Go Channel 关闭与超时机制完全指南 Go Map 无限增长问题解决方案 LangChain 聊天记录压缩:原理、机制与实战 揭开 sklearn 文本分类的核心原理:从词袋到逻辑回归 大模型“胡说八道”怎么办?一张图读懂检测、评估与修复全方案 企业级AI知识库权限隔离设计:让AI“懂规矩”比“懂知识”更重要 RAG系统设计全解析:从架构到多模态的核心知识图谱 RAG召回率提升全攻略:7大核心方法让检索更精准 RAG召回率提升秘籍:Metadata过滤的底层原理与实践 构建更好的RAG系统:深入理解混合搜索 一文搞懂 RAG 中 Retriever 和 Reranker 的区别 一文搞懂 RAG 的召回率(Recall)是什么? LangChain / LangGraph、MCP、Harness Engineer 与 Claude Code 的对应关系 Agent Harness 技术笔记:从 Trajectory 到 Function Calling Loop BLEU 是什么?——从原理到工程实践 一文讲清:Approve / Permit / Permit2 的本质区别 分库分表后跨分页查询的完整方案 ai如何处理私有数据 ai幻觉是啥,以及如何解决 别再让大模型“凭空瞎猜”了!带你认识AI最强外挂:ChromaDB 用 useQuery 管请求:TanStack React Query 入门小结 HD钱包--BIP44 TRON 四种 API 面怎么选:从节点协议到 JSON-RPC 再到 TronGrid 以太坊节点存储与共识机制全解析 BSC节点发现协议全解析:UDP发现、Bootnode引导与Gossip交易广播 以太坊节点发现背后的分布式哈希表(DHT)与 Kademlia 原理解析 Solidity中的bytes与string:深入理解这两种特殊的动态数组 智能合约自毁:当资产还在,合约死了 —— 深度解析 selfdestruct 导致的资产锁定风险 TDengine CLI (taos) 使用指南 —— Docker 本地开发实战 在 macOS 上用 DBeaver 连接 TDengine:踩坑总结与最终配置指南 Solidity Storage Slot 深度解析 Geth Snapshot Export/Import 深度解析: 不是备份工具,而是数据分析利器 基于BSC 公链的数据备份与 Snapshot 机制深度解析 Docker 共享内存完全指南:从原理到实践,避免常见的理解误区 Docker容器"僵尸状态"问题排查与自动重启方案 SSE协议深度解析:被低估的HTTP服务器推送标准 TDengine vs MySQL:时序数据处理的时代之选 Proxmox 启用 QEMU Guest Agent 实战指南 解决 Blockscout "batch too large" 错误的完整指南 一文讲清楚什么是基准测试(Benchmark) Rust中的宏(Macro):编译时的代码生成魔法 Docker优雅关闭的艺术:为什么stop_grace_period能防止数据丢失 为什么 Go 没有依赖注入和 Bean 机制?语言设计哲学对比
基于langchain,Function Call的成功率怎么解决?
若-飞 · 2026-07-13 · via 博客园 - 若-飞

这是 AI Agent 面试中最喜欢问的问题之一

很多人回答:

"换个模型。"

实际上,这只是影响因素之一。

在生产环境(LangChain/LangGraph),Function Calling 成功率是一个系统工程,一般需要从 模型、Tool、Prompt、Workflow、Retry、Monitoring 六个方面优化。

我建议整理成下面这篇博客。


LangChain Function Calling 成功率优化——生产级实践总结

在 AI Agent 中,Function Calling(Tool Calling)是整个 Agent 的核心能力。

例如:

用户:
查询订单123456的物流信息

↓

LLM

↓

调用 query_logistics()

↓

返回物流信息

↓

LLM 总结回答

如果 Tool 没有被正确调用,整个 Agent 基本就失去了价值。

因此,一个生产级 Agent,不仅要让模型"会调用 Tool",更要保证 调用成功率(Tool Success Rate)


一、什么是 Function Calling 成功率?

通常包括四个阶段:

User
    │
    ▼
LLM 是否选择正确 Tool
    │
    ▼
Tool 参数是否正确
    │
    ▼
Tool 是否执行成功
    │
    ▼
LLM 是否正确理解 Tool 返回结果

因此:

Function Calling Success Rate

=

Tool Selection

×

Argument Accuracy

×

Tool Execution

×

Result Understanding

任何一个阶段失败,都属于 Function Calling 失败。


二、影响成功率的六大因素

Prompt

↓

Tool Design

↓

Model

↓

Workflow

↓

Retry

↓

Monitoring

生产环境通常从这六个方面优化。


三、Tool 设计(影响最大)

很多项目 Tool 是这样写的:

query()

模型根本不知道它干什么。

正确做法:

@tool
def query_order(order_id: str):
    """
    查询订单信息。

    仅用于查询订单。

    参数:

        order_id:订单号
    """

描述越明确。

成功率越高。


Tool 不要万能

错误:

CustomerTool

什么都查

正确:

QueryOrder

QueryRefund

QueryLogistics

QueryCoupon

每个 Tool 只负责一件事情。

模型更容易选择。


Tool 名字必须语义化

例如:

错误:

tool1

tool2

正确:

query_order

refund_status

query_logistics

Tool Name 本身就是 Prompt。


四、参数设计

例如:

错误:

query(id)

模型不知道:

id:

到底:

订单?

用户?

商品?

正确:

query_order(order_id)

参数越明确。

调用越准确。


使用 Schema 校验

例如:

class OrderRequest(BaseModel):

    order_id: str

模型输出:

{
    "order_id":"123456"
}

如果:

{
    "id":"123456"
}

Schema 会直接报错。

避免错误继续传播。


五、Prompt 优化

Prompt 决定:

什么时候调用 Tool。

例如:

如果涉及:

订单

物流

退款

必须调用对应 Tool。

禁止自行猜测。

不要:

尽量调用 Tool。

而要:

必须调用。

Prompt 越明确。

调用率越高。


Few-shot 示例

例如:

用户:

退款多久到账?

↓

Tool

query_refund_policy()

↓

回答

模型看到多个案例。

调用率会明显提高。


六、模型选择

不同模型 Function Calling 能力差异很大。

一般来说:

GPT-4.x / GPT-5

★★★★★

Claude

★★★★★

Gemini

★★★★☆

Qwen

★★★★☆

DeepSeek

★★★★☆

小模型

★★★☆☆

如果 Tool 很复杂。

模型能力影响非常明显。


七、Workflow 控制(推荐)

不要把所有 Tool 都交给一个 Agent。

例如:

20 个 Tool

↓

Agent

模型容易选错。

推荐:

Intent Router

↓

订单Agent

↓

订单 Tool

--------------

售后Agent

↓

售后 Tool

每个 Agent:

只看到:

自己的 Tool。

Tool Selection 成功率会大幅提高。


八、Retry(生产必备)

Tool 调用失败。

不要立即失败。

建议:

Tool

↓

失败

↓

Retry

↓

重新生成参数

↓

再次调用

例如:

第一次:

{
"id":"123"
}

Schema:

失败。

LLM:

重新生成:

{
"order_id":"123"
}

第二次成功。


九、Tool Result 标准化

很多 Tool:

返回:

{
"code":0
}

模型根本不知道什么意思。

建议:

统一:

{
    "success":true,

    "status":"运输中",

    "company":"顺丰",

    "tracking_no":"SF123"
}

字段语义越明确。

LLM 越容易理解。


十、Observability(可观测性)

生产环境必须统计:

Tool Call Count

Tool Success Rate

Retry Count

Argument Error

Timeout

Latency

例如:

query_order

成功率

99%

--------------

query_coupon

成功率

62%

说明:

Coupon Tool:

需要优化。

而不是模型不好。


十一、推荐整体架构

User
      │
      ▼
Prompt
      │
      ▼
Intent Router
      │
      ▼
Agent
      │
      ▼
Tool Selection
      │
      ▼
Argument Validation
      │
      ▼
Execute Tool
      │
      ▼
Retry(可选)
      │
      ▼
Result Normalize
      │
      ▼
LLM Summary
      │
      ▼
Answer

这是目前生产级 AI Agent 比较常见的 Function Calling 执行流程。


十二、提升 Function Calling 成功率的实践建议

优化方向 推荐做法
Tool 拆分 一个 Tool 只负责一个业务能力,避免"万能 Tool"
Tool 描述 提供清晰的名称、用途、参数说明和调用场景
参数设计 使用具有业务语义的参数名,结合 Pydantic Schema 校验
Prompt 明确规定什么时候必须调用 Tool,避免模型猜测
Few-shot 提供典型 Tool 调用示例,强化模型决策能力
Intent Router 先分类,再进入对应 Agent,减少 Tool 数量
Retry 参数错误或调用失败时自动重试
Result Normalize Tool 返回统一 JSON 结构,方便模型理解
Monitoring 统计调用率、成功率、错误率、重试次数等指标

总结

Function Calling 成功率并不是某一个模型决定的,而是整个 Agent 架构共同作用的结果。

可以将成功率理解为:

Function Calling Success Rate
        =
Tool Selection
×
Argument Accuracy
×
Tool Execution
×
Result Understanding

因此,生产级 AI Agent 的优化重点通常不是"换一个更强的模型",而是:

  • 让模型更容易选择正确的 Tool(Tool 设计 + Prompt)

  • 让 Tool 更容易被正确调用(Schema + 参数校验)

  • 让失败可以恢复(Retry + Workflow)

  • 让整个过程可观测(Monitoring + Trace)

一句话总结:Function Calling 的成功率,本质上不是 LLM 的问题,而是 Agent 工程化能力的问题。模型负责"决策",工程负责"保证决策能够稳定落地"。

面试时再补充一个加分点

很多高级面试官还会继续追问:

如果 Tool 从 10 个增加到 500 个,Function Calling 成功率为什么会下降?怎么解决?

这是因为 Tool 数量越多,模型选择空间越大,Tool Selection 的准确率会下降。生产上通常不会把几百个 Tool 全部暴露给一个 Agent,而是采用:

User
   │
   ▼
Intent Classifier / Router
   │
   ├── Order Agent(10 个订单 Tool)
   ├── CRM Agent(8 个 CRM Tool)
   ├── Payment Agent(6 个支付 Tool)
   └── Knowledge Agent(RAG)

也就是先路由,再调用 Tool,而不是让一个 Agent 面对所有 Tool。这也是 LangGraph 中 Multi-Agent 架构广泛采用的原因之一。