MCP与functioncall实战与对比

目录

一、function call调用:

1.1、工具集成验证

具体工具代码实现:

工具的封装:

对外暴露:

提示词模版构建:

代码解释:

1. 创建StructuredTool对象

id_tool = StructuredTool.from_function( func=validate_id_card, name="QueryIdInfo", description="根据身份证号码,校验身份证是否有效.", )

2. 使用工具

3. 格式化提示模板

总结

1.2、整体代码实现

结合模型的具体代码:

appMain.py

autoGPT.py

代码解析:

1. _format_long_term_memory 和 _format_short_term_memory

2. AutoGPT 类中的方法

3. run 方法

二、mcp

client.py:

server.py

总结:

总结


 

 

 

 

验证python环境:python -m python --version

验证pip的安装:python -m pip --version

pip的安装命令:python -m ensurepip --default-pip

参考地址:终于有人把MCP讲透了!(附MCP实战完整代码)_mcp开发-优快云博客

参考地址:2025最新大模型常见面试题汇总(含答案),面试还得八股文,不背不行啊,非常详细收藏我这一篇就够了!_面试_Python-搬运工-MCP技术社区

一、function call调用:

代码地址:https://gitee.com/chenchen0827/business-acceptance.git

1.1、工具集成验证

具体工具代码实现:

工具的封装:

对外暴露:

提示词模版构建:

代码解释:

在您提供的代码中,Function Call 是通过直接调用定义好的函数来执行特定任务的。这些函数被封装成StructuredTool对象,以便在后续的流程中使用。以下是代码中 Function Call 的详细解释:

1. 创建StructuredTool对象

id_tool = StructuredTool.from_function( func=validate_id_card, name="QueryIdInfo", description="根据身份证号码,校验身份证是否有效.", )

  • StructuredTool.from_function:这是一个工厂方法,用于将普通的函数转换为StructuredTool对象。
  • func=validate_id_card:指定要转换的函数。
  • name="QueryIdInfo":为工具命名,以便在后续的流程中引用。
  • description="根据身份证号码,校验身份证是否有效.":提供工具的描述信息。

2. 使用工具

在__main__部分,工具被用于构建提示模板:

prompt_template = builder.build(tools=[ address_tool, id_tool, phone_number_tool], output_parser=output_parser)

  • builder.build:使用构建器来创建提示模板。
  • tools=[...]:指定要包含在提示模板中的工具。
  • output_parser=output_parser:指定输出解析器。

3. 格式化提示模板

print(prompt_template.format( task_description=task, work_dir=".", short_term_memory="", long_term_memory="", ))

  • prompt_template.format:调用格式化方法来填充提示模板中的占位符。
  • task_description=task:传入任务描述。
  • work_dir=".":指定工作目录。
  • short_term_memory=""和long_term_memory="":传入短期和长期记忆信息。

总结

在面试中,您可以这样解释Function Call:

面试官:请解释一下您代码中的Function Call是如何工作的?

您:在我的代码中,Function Call是指直接调用已定义的函数来执行特定任务。我使用StructuredTool.from_function方法将普通的函数封装成StructuredTool对象,这样可以在后续的流程中方便地引用和执行。例如,我创建了id_tool来校验身份证号码的有效性,address_tool来查询地址详细信息,以及phone_number_tool来校验手机号码格式。这些工具在构建提示模板时被指定,并通过格式化方法填充模板中的占位符。这种方式允许我同步执行函数,并在同一代码库或模块中实现高度耦合的功能调用。

面试官:那么,Function Call和MCP有什么区别呢?

您:Function Call和MCP的主要区别在于执行方式、耦合度和适用场景。Function Call是同步执行的,代码会等待函数执行完成并返回结果后继续执行后续代码,这导致较高的代码耦合度,适用于简单、同一代码库内的功能调用。而MCP通常是异步的,通过网络通信调用远程服务,具有较低的耦合度,适用于复杂、跨服务的交互场景。在我的代码中,我使用了Function Call来实现本地函数的快速调用和执行。

通过这样的解释,您可以展示出对Function Call的深入理解,以及如何在实践中应用它来解决问题

1.2、整体代码实现

结合模型的具体代码:

Function Call 是指直接调用定义好的函数来执行特定的任务,

具体调用代码:

<think>好的,我现在需要回答用户关于Function CallMCP之间区别的问题。首先,我需要回顾一下用户提供的参考资料,特别是引用[1]和[2],因为它们直接提到了这两者的区别。 根据引用[1],Function Call的特点包括高层抽象、明确接口、可扩展性和广泛应用。而MCPFunction Call的区别部分可能没有详细展开,但引用[2]的标题提到要揭秘MCP Server、Function CallAgent的核心区别,说明MCP可能是一个更复杂的系统或架构,而Function Call更偏向于API层面的调用。 接下来,我需要确定用户的问题重点:技术实现上的不同点。这可能涉及到架构设计、功能定位、交互方式等方面。从引用中提到的信息,Function Call是模型的外部能力扩展方式,而MCP Server可能涉及更底层的服务管理或协调。 我需要区分两者在技术实现中的角色。例如,Function Call可能作为单个功能调用的接口,而MCP可能是一个服务端框架,负责多个功能或代理的协调。此外,引用[2]提到Agent,这可能意味着MCPAgent架构有关联,而Function Call是Agent中使用的具体技术。 还要注意用户提供的引用中提到的“明确接口”和“可扩展性”属于Function Call的特点,而MCP可能更注重系统级的协调和管理。可能需要将MCP理解为更宏观的架构,而Function Call是其中的一个组成部分或交互机制。 在组织回答时,应分点对比两者的定位、架构、交互方式、扩展机制和应用场景,确保每个区别点都有依据,并正确引用来源。同时,避免引入用户未提供的假设信息,仅基于给定的引用内容进行推断和总结。 最后,生成的相关问题需要主题相关,帮助用户进一步探索两者的差异和应用场景,如技术架构对比、适用场景或协同工作方式等。</think>### Function CallMCP的区别分析 #### 1. **定位功能差异** - **Function Call**:是模型外部能力交互的接口规范,通过预定义的函数描述和API实现模型对数据库、搜索引擎等外部服务的调用[^1]。例如,模型可以直接调用$f(x)=x^2$这类数学函数,或更复杂的业务逻辑函数。 - **MCP(Multi-Agent Coordination Platform)**:通常指多智能体协作平台,是一种系统级架构,用于协调多个智能体(Agent)之间的任务分配、通信和资源管理[^2]。例如,在分布式系统中管理多个服务实例。 #### 2. **技术架构差异** - **Function Call**: - 实现方式:基于明确的API接口定义,开发者只需关注函数输入输出,例如: ```python def search_database(query: str) -> list: # 数据库查询逻辑 ``` - 轻量级,无需复杂的状态管理。 - **MCP**: - 实现方式:通常包含服务注册、任务调度、负载均衡等模块,例如通过消息队列协调多个Agent。 - 需要维护全局状态和分布式通信协议[^2]。 #### 3. **交互方式对比** - **Function Call**:单向调用模型,遵循“请求-响应”模式,例如模型调用$f(x)$后直接获取结果。 - **MCP**:支持多向交互,例如Agent A向Agent B发送任务,Agent C监控执行状态,涉及复杂的异步通信。 #### 4. **扩展机制不同** - **Function Call**:通过增加新函数实现扩展,例如添加$g(x)=\sin(x)$扩展数学计算能力[^1]。 - **MCP**:需扩展平台底层能力,如新增Agent类型或优化调度算法。 #### 5. **典型应用场景** - **Function Call**:适用于单次功能调用场景,如实时天气查询、数学公式计算。 - **MCP**:适用于复杂系统协作,如自动驾驶中的多传感器协同、供应链多环节优化。 --- ###
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值