基于MCP协议调用的大模型agent开发02

在AI agent的开发过程中,如何使用mcp服务器作为大模型的工具调用‘百宝箱’?

#逻辑流程图

用户向大模型发送请求

大模型识别需要调用的工具

大模型通过MCP客户端向MCP服务器发送请求

MCP服务器解析请求

MCP服务器调用对应的工具

工具执行并返回结果

MCP服务器将结果返回给大模型

大模型处理结果并回复用户

# 伪代码

# 定义MCP服务器
class MCP_SERVER:
    def __init__(self):
        self.tools = {}

    def add_tool(self, name, tool_function):
        self.tools[name] = tool_function

    def handle_request(self, request):
        tool_name = request.get('tool')
        tool_function = self.tools.get(tool_name)
        if tool_function:
            return tool_function(**request.get('args', {}))
        else:
            return {"error": "Tool not found"}

# 定义一个示例工具:天气查询
def get_weather(latitude, longitude):
    # 这里可以是调用天气API的代码
    return f"Current weather at {latitude}, {longitude}: Sunny, 25°C"

# 初始化MCP服务器并添加工具
mcp_server = MCP_SERVER()
mcp_server.add_tool('weather', get_weather)

# 模拟大模型与MCP服务器的交互
def main():
    user_input = "What's the weather like in New York?"
    
    # 大模型识别需要调用的工具
    tool_to_use = 'weather'
    tool_args = {'latitude': 40.7128, 'longitude': -74.0060}
    
    # 发送请求到MCP服务器
    request = {'tool': tool_to_use, 'args': tool_args}
    result = mcp_server.handle_request(request)
    
    # 大模型处理结果并回复用户
    response = f"The weather in New York is {result}"
    print(response)

if __name__ == "__main__":
    main()

Tip: FastMCP 通过 Python 的 类型提示 和 文档字符串 自动生成工具定义,使得 MCP 工具 的创建与维护变得更加简单。FastMCP聊一聊FastAPI

FastAPI

使用 FastAPI 构建后端的 API 服务

在现代 web 开发中,API(应用程序编程接口)成为了系统之间交互的核心。API 允许

不同的软件应用之间交换数据,它是 前后端,Web 服务、移动应用间沟通的桥梁。

FastAPI 是一个非常不错的框架,它简单高效,适合初学者快速上手。

什么是 API

API(应用程序编程接口) 是一组定义不同软件组件之间如何交互的规则和协议。API

是系统间“对话”的桥梁。比如,当你使用手机应用发送一条消息时,应用程序会向服

务器发起一个请求,服务器根据请求返回响应数据。这个过程就通过 API 完成。

API 通常采用 HTTP 协议工作。常见的 HTTP 请求方法包括:

为什么使用 FastAPI

FastAPI 是一个用于构建 API 服务的 Python 框架。它的优势包括:

基础概念

路由(Route):

是 API 中用来指定请求路径和处理方法的规则。比如, GET

/users 可能表示获取用户列表

请求(Request)和响应(Response):用户通过 HTTP 请求发送数据,服务器

通过响应返回数据

ASGI 服务器:

ASGI 是一种新的 Web 服务器协议,支持异步处理多个请求,适合高并发、实时

应用等场景

准备工作

安装 FastAPI 和 Uvicorn

在使用 FastAPI 构建 API 服务之前,首先需要安装相关的依赖库。可以使用 pip 来

安装:

pip install fastapi uvicorn

FastAPI 是框架本身

Uvicorn 是 ASGI 服务器,用于运行 FastAPI 应用

创建第一个 API 服务

代码示例

from fastapi import FastAPI
from pydantic import BaseModel

# 创建 FastAPI 应用实例,这行代码创建了一个 `FastAPI` 应用实例。可将 `app`看作是整个 API 服务的核心。(类似于flask框架)
app = FastAPI()
# 定义请求体的数据结构,这里我们定义了一个 Pydantic 数据模型 `ChatRequest`,包含一个 `message` 字段,类型是 `str`。Pydantic 是一个用于数据验证的库,FastAPI 使用它来确保请求数据符合预期格式。
class ChatRequest(BaseModel):
    message: str
    # 创建路由,处理 POST 请求。`@app.post("/chat")` 是 FastAPI 的装饰器,表示当有用户发送 POST 请求到 `/chat` 路径时,调用 `chat` 函数来处理。
    @app.post("/chat")
    def chat(chat_request: ChatRequest):
    # 返回响应
        return {"response": f"Received message:        {chat_request.message}"}
        
# 启动 Uvicorn 服务器,这行代码启动了 Uvicorn 服务器,并监听所有网络接口的8000 端口。通过 `http://localhost:8000`,你可以访问这个 API 服务。
if __name__ == "__main__":
    import uvicorn
    uvicorn.run(app, host="0.0.0.0", port=8000)

测试API

  1. 运行应用:运行这个文件脚本(其app.py更换为你的文件名):

python app.py

这将启动你的 API 服务。

  1. 发送请求:你可以使用 Postman、cURL 或者浏览器访问以下地址:

POST http://localhost:8000/chat

或者在http://localhost:8001/docs#/

它的自动化接口文档平台上面,注意保持格式,只能更改值里面的内容:

  1. 查看响应:服务器会返回类似的响应

自动化文档

FastAPI 提供了自动化生成 API 文档的功能。只需要访问以下链接,你就可以查看和测试你的 API,FastAPI 会自动生成这些文档,无需额外编写API文档更加方便助力api开发

FastMCP

FastMCP与FastAPI

FastAPI

FastAPI 是一个现代、快速(高性能)的 Web 框架,用于构建 API,特别适合于异步请求处理。FastAPI 支持 Python 3.6 及以上版本,并且可以利用 Python 类型提示来自动生成 API 文档(如 Swagger UI 和 ReDoc)。它基于 Starlette 和 Pydantic,提供了快速请求响应处理、数据验证、序列化和异步处理等特性。

FastAPI 的主要特点包括:

快速:高性能,与 NodeJS 和 Go 相当。

快速编码:通过 Python 类型提示减少样板代码。

少错误:自动数据验证减少代码中的错误。

直观:自动生成文档。

易维护:通过依赖注入减少代码复杂性。

生产就绪:内置支持异步和同步代码。

FastMCP

FastMCP 是一个基于 FastAPI 的库,专门用于实现 Model Context Protocol (MCP) 服务器。MCP 是一种协议,用于在大语言模型(LLM)应用和外部工具或服务之间进行通信。FastMCP 利用 FastAPI 的高性能和异步特性,提供了一个快速、灵活的方式来构建符合 MCP 协议的服务器。

FastMCP 的作用包括:

简化 MCP 服务器开发:提供一套工具和抽象,简化 MCP 服务器的开发过程。

高性能:利用 FastAPI 的高性能特性,提供快速的请求响应处理。

异步处理:支持异步请求处理,提高服务器的并发处理能力。

易于集成:可以轻松集成到现有的 FastAPI 应用中,或作为独立的 MCP 服务器运行。

在 MCP 开发中的作用

在 MCP 开发中,FastMCP 作为基于 FastAPI 的库,主要发挥以下作用:

提供 MCP 协议实现:FastMCP 提供了 MCP 协议的核心实现,包括消息格式、通信模式等,使得开发者可以专注于业务逻辑的实现,而不需要从头开始实现 MCP 协议。

简化服务器开发:通过 FastMCP,开发者可以更容易地创建符合 MCP 协议的服务器,利用 FastAPI 的特性来处理请求和响应。

提高开发效率:FastMCP 提供了一套工具和抽象,简化了 MCP 服务器的开发过程,提高了开发效率。

支持异步处理:FastMCP 利用 FastAPI 的异步特性,支持异步请求处理,提高了服务器的并发处理能力。

评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值