首页
学习
活动
专区
圈层
工具
发布

​解密prompt系列58. MCP - 工具演变 & MCP基础

如果你需要查询天气,请调用一个名为 'get_current_weather' 的工具。这个工具需要一个 'location' (字符串,必填) 参数,表示要查询天气的城市。...它引入JSON Schema标准化工具描述,明确定义:工具名称(name)功能描述(description)参数列表(parameters),包含类型、描述、是否必填等{ "name": "get_current_weather...而转折点则是24年结构化推理的普及,基于掩码的结构化推理能力(不熟悉的朋友看这里LLM结构化输出)不仅显著提升了模型生成工具JSON Schema的准确性,同时还让Pydantic这个数据验证和解析库进入了大家的视野中...像Langchain、LlamaIndex、DSPY等开源框架都开始引入Pydantic来自动生成工具的JSON Schema。这样不仅解析部分能自动化标准化,生成工具描述的部分同样也被标准化。...MCP服务端适配器,转换请求并返回标准化响应MCP除核心连接简化外,还提供:动态上下文构建:工具列表通过标准list_tools方法动态获取,无需在Agent内部硬编码工具描述协议标准化:明确定义工具发现

78230

工具调用解密:AI Agent的“感官”与“四肢”​​

传统LLM仅作为“大脑”处理文本生成和推理,而Agent则通过工具充当“感官”和“四肢”,执行实际任务(如查询天气、控制设备)。今天我们将深入解析“工具/函数调用”这一基石是如何工作的?...else: message = user_input() # 与用户交互此循环模拟人类使用工具的过程:LLM分析输入,识别需调用的外部函数(如API),生成结构化参数...GetProductDetails: 获取特定产品详情(需产品ID)。Clarify: 当请求模糊时要求用户澄清。函数Schema(JSON格式)指导LLM生成结构化调用。...对话流程示例​​典型交互中,Agent基于对话历史动态决策。例如:用户查询“笔记本”触发Search,后续“详细说明产品p1”调用GetProductDetails。...风险​​:提示注入需多层防护(如拒绝列表和LLM验证)。最后建议从低风险应用入手,逐步迭代安全机制。未来,MCP等协议将推动Agent生态系统标准化,赋能复杂场景(如动态API集成)。

75411
  • 您找到你想要的搜索结果了吗?
    是的
    没有找到

    LLM多智能体AutoGen教程6:Python typing是如何自动生成工具调用请求参数的?

    LLM多智能体AutoGen教程5:函数调用之避免捏造参数》,我们使用typing对可调用函数进行注解,AutoGen据此自动生成OpenAI API函数调用时的请求参数。...Pydantic 前面已经说到Pydantic是世界上最广泛使用的Python的validation库,它基于typing包进行数据验证和序列化,采用Rust编写最快的内核验证代码,可以轻易生成JSON...其中get_function_schema获取function的JSON Schema。...这里我们只看signature,它获取方法和函数签名,一般来讲函数签名通常包括函数名、参数类型列表、返回类型等。...image-20240611185602357 之后就是从返回的signature中获取参数要求,它会通过parameters中获取到想要的一切信息,比如param_annotations,生成一个dict

    68300

    FastAPI(8)- 请求体 Request Body

    发送请求体的栗子 注意 请求体并不是只有 POST 请求有,只不过 POST 更常见 在 PUT、DELETE、PATCH 请求中都可以使用请求体 其实,在 GET 请求中也可以用请求体,不过仅适用于非常极端的情况下...,而且 Swagger API 并不会显示 GET 请求的请求体 不使用 Pydantic的栗子 from fastapi import FastAPI import uvicorn app = FastAPI...给 Pydantic 模型自动的生成 JSON Schema,这些 Schema 会成为生成 OpenAPI Schema 的一部分,并显示在接口文档上 正确传参的请求结果 正常传参,所有属性按指定的类型进行传数据...可以识别出它们中的每一个,并从正确的位置获取到数据 实际代码 from typing import Optional from fastapi import FastAPI from pydantic...如果参数也在路径中声明,它将解释为路径参数【item_id】 如果参数是单数类型(如int、float、str、boo l等),它将被解释为查询参数【name】 如果参数被声明为 Pydantic 模型的类型

    4.6K20

    深入解读 FastAPI:现代、高性能的 Python Web 框架

    深入解读 FastAPI:现代、高性能的 Python Web 框架 FastAPI 是基于 Python 的现代 Web 框架,以其高性能、易用性和自动生成的交互式 API 文档而备受关注。...FastAPI 是一个高性能的 Web 框架,基于 Python 3.7+ 构建,依赖于 Starlette(用于网络框架核心)和 Pydantic(用于数据校验)。...它以 OpenAPI 和 JSON Schema 标准为核心,为开发者提供自动化的文档生成和强大的数据验证功能。...利用 Pydantic 模型定义请求体: from fastapi import FastAPI from pydantic import BaseModel app = FastAPI() class...查询参数具有自动校验和类型转换功能: @app.get("/search/") async def search_items(keyword: str, limit: int = 10): return

    95010

    FastAPI从入门到实战(0)——初识FastAPI

    通过不同的参数声明实现丰富功能。bug 更少。 健壮:生产可用级别的代码。还有自动生成的交互式文档。...FastAPI特性 基于开放标准 用于创建 API 的 OpenAPI 包含了路径操作,请求参数,请求体,安全性等的声明。...使用 JSON Schema (因为 OpenAPI 本身就是基于 JSON Schema 的)自动生成数据模型文档。 经过了缜密的研究后围绕这些标准而设计。并非狗尾续貂。...API 密钥,在: 请求头。 查询参数。 Cookies, 等等。 加上来自 Starlette(包括 session cookie)的所有安全特性。...所有的依赖关系都可以从请求中获取数据,并且增加了路径操作约束和自动文档生成。 即使在依赖项中被定义的路径操作 也会自动验证。 支持复杂的用户身份认证系统,数据库连接等等。 不依赖数据库,前端等。

    4.4K20

    《MCP + Pydantic + FastAPI:构建可审计、可治理的 AI 工具链——测开工程师的工程化落地指南》

    二、核心组件再认识:Pydantic 是 MCP 的“契约基石” MCP 的核心是 Tool Schema ——即模型能理解的“能力说明书”。...而 FastAPI 生态中,Pydantic 模型天然就是 Schema 的最佳载体。 2.1 为什么必须用 Pydantic?...✅ 自动生成 OpenAPI / JSON Schema:MCP Client 可直接解析。 ✅ 序列化/反序列化安全:避免 eval、exec 等危险操作。...✅ 支持嵌套结构:复杂参数也能清晰表达。 关键认知:MCP Tool 的输入输出,必须是 Pydantic BaseModel 的子类,不能是 dict 或 str!...3.1 方案一:基于用户上下文的权限校验(推荐) 假设你的系统通过 JWT 传递用户身份,可在 Tool 中注入当前用户: 1from fastapi import Request 2 3def get_current_user

    24110

    全面拥抱FastApi —三大参数及验证

    基于标准:基于(并完全兼容)API 的开放标准:OpenAPI(以前称为Swagger)和JSON Schema。...前面说过 FastApi 的一大特点是基于标准的 Python 3.6类型声明,兼具参数校验功能,这一切都要归功于 Pydantic 路径参数 路径参数即 url 路径参数,可以使用 Python 格式字符串相同语法声明路径...其中还有一个是路径参数:item_id, str 类型 请求体参数 要发送请求正文,必须使用一个:POST, PUT,DELETE或PATCH,需导入 Pydantic 的 BaseModel from...同时,FastApi 可以自动帮我们识别请求 body 参数, 路径参数以及查询参数,并准确的获取参数数据。...: item_id: 路径参数 q: 参数是一个的单一类型(如int,float,str,bool,等等)将被解释为一个查询参数 item: 参数声明为 Pydantic 模型的类型,则将被解释为请求

    5.9K30

    LLMCompiler应用案例

    通过智能搜索和数据查询,提升用户体验和数据处理效率;在指标提取和选股中,支持精准数据分析和投资决策。这些应用展示了LLMCompiler的技术优势和实际价值。  ...对话系统-产品数据查询 DAG示例 • 易方达中短债成立以来收益率、累计净值情况;易方达新兴产业最近三年收益和单位净值 产品数据查询 搜索系统-智能搜索  智能搜索场景中规划器运行后,通过DAG调用各个接口结果后马上返回给用户...使用`search`工具获取A房屋在2023年的租金 2....,和给出的数据信息,有逻辑并且严谨的生成用户需要的`Final Answer`。...生成`Final Answer`时需要重点检查生成的数值类内容是否正确,同时需要保证回复的数据信息是用户问题所涉及的。

    27600

    从Function Calling到MCP:AI工具调用的范式级变化

    """ # 构建提示词 prompt = f""" 你是一个智能助手,需要根据用户查询和可用工具,生成合适的工具调用请求。...请生成一个JSON格式的工具调用请求,包含工具名称、版本和参数。...,智能调用工具""" # 获取可用工具列表 tools_response = await self.list_mcp_tools() tools = tools_response.get...Schema定义工具的元数据和参数规范 安全机制 包括认证、授权、速率限制、审计日志和沙箱隔离等 生态集成 标准化的工具注册和发现机制,支持工具市场和生态建设 MCP v2.0 API端点详细说明...是 /tools/list GET 获取可用工具列表 否 /tools/{tool_name} GET 获取特定工具信息 否 /negotiate POST 进行能力协商 否 /execute POST

    26110

    构建AI智能体:从单体智能到群体智能:A2A协议如何重塑人机协作新范式

    A2A与传统API的对比优势动态性对比: 传统API:静态接口,需要预先知道端点地址和参数A2A协议:动态发现,代理可运行时识别彼此能力语义化程度: 传统API:通常缺乏机器可读的语义描述A2A协议:完整的...params: dict作用:定义任务请求的数据结构task_id: 任务唯一标识符params: 包含查询参数(日期、位置)1.3 模拟数据存储weather_db = { "2025-...: """通过A2A协议查询天气""" # 获取天气智能体能力描述 agent_card = requests.get( f"{self.weather_agent_url...流程详细说明3.1 阶段一:客户端请求接收与初始化3.1.1 请求接收过程 客户端向高级篮球代理系统提交会议安排请求,请求中包含会议日期、参与者列表、场地类型等关键信息。...通过访问预定义的服务描述端点,获取天气代理的能力描述和接口规范,确保调用的准确性和兼容性。3.2.2.2 天气数据查询 向天气代理提交包含目标日期和位置的查询请求。

    43020

    FastAPI 学习指南 - 为什么它代表了未来?

    FastAPI 作为近几年崛起的高性能 Python Web 框架,完美契合了这些趋势:它原生支持异步编程,能充分利用现代服务器的多核资源;内置基于 Pydantic 的数据验证和自动生成的交互式 API...异步框架在处理 IO 密集型任务(如数据库查询、网络请求)时,无需等待单个请求完成即可处理下一个请求,大幅提升并发能力。...Pydantic 优化:数据验证基于 Pydantic 实现,底层使用 Rust 重写的核心逻辑,验证速度远超传统 Python 手动校验。..."} # 带路径参数的 GET 接口 @app.get("/items/{item_id}") def read_item(item_id: int, q: str = None): """根据...item_id 查询物品,q 为可选查询参数""" return {"item_id": item_id, "q": q} # 启动命令(终端执行):uvicorn main:app --reload

    24110

    LlamaIndex使用指南

    触发/查询(输入):它是来自客户的一个问题或请求,向系统发出信号,使其立即采取行动。这 任务/动作(输出):在理解触发器或查询后,系统执行特定的任务来处理它。...2、询问阶段:运用你的知识 在此阶段,根据查询从知识库中获取相关上下文,并将其与LLM的见解混合以生成响应。这不仅为LLM提供了最新的相关知识,也防止了幻觉。...代理:代理是自动决策制定者,通过工具包与世界进行交互,并通过动态的行动计划而不是固定的逻辑来完成任务。 检索器:它们规定了根据查询从知识库中获取相关上下文的技术。...数据代理的两个组成部分是: 推理循环:指示代理的决策过程,决定使用哪些工具、它们的顺序,以及基于输入任务的每个工具调用的参数。 工具抽象:代理与一组api或工具交互以获取信息或改变状态。...我们开始聊天 我们首先要求它获取列的列表。代理执行python代码并使用pandas读取列名。

    5.8K21
    领券