问题:Function Calling 定义的函数过多是否会导致模型上下文爆炸?
函数定义本身会计入模型上下文。OpenAI 在官方说明中明确写道:“functions 会被注入到 system message 中,因此它们会占用上下文并按输入 token 计费;如果遇到上下文极限,应当减少函数数量或精简参数描述。”
只要所有输入 token(系统提示 + 函数列表 + 对话历史 + 用户提问)之和没有超过所选模型的最大上下文窗口,就不会触发 context_length_exceeded 错误;反之就会报错。
真正会爆的是:
MCP 对大模型 Function Calling 的意义


在 LLM 首轮交互时,客户端只将“user query + system message(default prompt & history context & capabilities)”传入,由LLM 判断是否需要调用工具或访问资源。只有当需要调用工具或访问资源时,客户端才会再将“具体的 tool 或 resource 的 JSON Schema 传入给LLM,让 LLM 生成 tool 或 resource 的参数。
分层调用
MCP 通过客户端与服务端的职责分离,为“执行层”提供了统一的 JSON-RPC 规范,支持动态列举与调用工具(tools/list → tools/call),这样工具的元数据可以在“模型外”维护,而不是每轮对话都放进上下文。
-
https://github.com/modelcontextprotocol/python-sdk


