航班搜索功能

使用Google的Gemini 2.5 Pro通过模型上下文协议(MCP)与航班搜索工具交互,实现自然语言航班查询。

  • by aakriti1318
  • Python
  • 本地部署
  • 更新于
在 GitHub 查看 aakriti1318/gemini-mcp-crewai

使用说明

双子座函数调用 + 模型上下文协议(MCP)航班搜索

这个项目展示了如何使用具备函数调用功能的Google Gemini 2.5 Pro与(系统/其他程序)进行交互 mcp-flight-search 通过模型上下文协议(MCP)使用工具。此客户端实现展示了如何:

  1. 连接到本地MCP服务器进程(mcp-flight-search) 使用stdio通信
  2. 使用自然语言提示与Gemini 2.5 Pro一起搜索航班(例如,“查找2025年5月5日从亚特兰大到拉斯维加斯的航班”)
  3. 让Gemini自动从自然语言输入中确定正确的函数参数
  4. 使用MCP工具执行航班搜索
  5. 显示搜索结果的格式化内容

特点/特性

  • 使用Gemini 2.5 Pro进行自然语言航班搜索
  • 通过函数调用自动提取参数
  • 与……的集成 mcp-flight-search 通过标准输入输出(stdio)使用的工具
  • 航班结果的格式化JSON输出
  • 基于环境的API密钥配置

先决条件

在运行此客户端之前,您需要:

  1. Python 3.7+
  2. 一个用于Gemini的Google AI Studio API密钥
  3. 一个SerpAPI密钥(用于航班搜索工具)
  4. 这个(或“该”) mcp-flight-search 软件包已安装

依赖项

这个项目依赖于几个Python包:

  • 谷歌生成式AI谷歌官方Python库,用于访问Gemini 2.5 Pro及其他谷歌AI模型。

    • 为Gemini 2.5 Pro提供客户端接口
    • 处理函数调用功能
    • 管理API认证和请求
  • **MCP-SDK-Python(注:这里的“MCP”可能代表某个特定的模块、平台或服务的缩写,具体含义需根据上下文确定,但在此直接按原样翻译)**Python的模型上下文协议(MCP)软件开发工具包(SDK)。

    • 提供 ClientSession 用于管理MCP通信
    • 包括 StdioServerParameters 用于配置服务器进程
    • 处理工具注册和调用
  • MCP航班查询一个基于MCP构建的航班查询服务。

    • 使用SerpAPI实现航班搜索功能
    • 提供符合MCP标准的航班搜索工具
    • 支持stdio和HTTP两种通信模式
  • **`asyncio` 翻译为中文是“异步I/O(输入/输出)”。它是Python中的一个库,用于编写并发代码,使用协程(coroutines)来实现异步编程。**Python内置的用于编写异步代码的库。

    • 管理异步操作和协程
    • 处理并发I/O操作
    • MCP客户端-服务器通信所需
  • **JSON(JavaScript Object Notation)**Python内置的JSON编码器和解码器。

    • 解析航班搜索结果
    • 输出格式以供显示
    • 处理数据的序列化/反序列化

设置

  1. 克隆仓库:

    git clone https://github.com/arjunprabhulal/mcp-gemini-search.git
    cd mcp-gemini-search
    
  2. 安装依赖项:

    # Install required Python libraries
    pip install -r requirements.txt
    # Install the MCP flight search tool
    pip install mcp-flight-search
    
  3. 设置环境变量:

    export GEMINI_API_KEY="YOUR_GEMINI_API_KEY"
    export SERP_API_KEY="YOUR_SERPAPI_API_KEY"
    

    将占位符值替换为您的实际API密钥:

建筑学

这个项目整合了多个组件,以实现自然语言航班搜索功能。以下是系统的工作原理:

组件交互

  1. 用户到客户端

    • 用户提供自然语言查询(例如,“查找明天从亚特兰大飞往拉斯维加斯的航班”)
    • 客户端脚本(client.py) 处理输入
  2. 客户端到MCP服务器

    • 客户端启动MCP服务器进程(mcp-flight-search)
    • 建立stdio通信通道
    • 检索可用工具及其描述
  3. 客户转向Gemini 2.5 Pro

    • 发送用户查询
    • 为函数调用提供工具描述
    • 接收带有提取参数的结构化函数调用
  4. 客户端到MCP工具

    • 从Gemini获取函数调用参数
    • 调用适当的MCP工具并传递参数
    • 处理响应处理
  5. MCP服务器到SerpAPI

    • MCP服务器向SerpAPI发出请求
    • 查询Google Flights数据
    • 处理并格式化航班信息

数据流

  1. 输入处理

    User Query → Natural Language Text → Gemini 2.5 Pro → Structured Parameters
    
  2. 航班查询

    Parameters → MCP Tool → SerpAPI → Flight Data → JSON Response
    
  3. 结果处理

    JSON Response → Parse → Format → Display to User
    

通信协议

  1. 客户端 ↔ MCP 服务器

    • 使用stdio进行通信
    • 遵循MCP协议进行工具注册和调用
    • 处理异步操作
  2. MCP服务器 ↔ SerpAPI

    • HTTPS 请求
    • JSON数据交换
    • API密钥认证
  3. 客户端 ↔ Gemini 2.5 Pro

    • HTTPS 请求
    • 函数调用协议
    • API密钥认证

错误处理

该集成包括多级错误处理:

  • 输入验证
  • API通信错误
  • 工具执行失败
  • 响应解析问题
  • 数据格式化问题

使用方法

运行客户端:

python client.py

该脚本将:

  1. 启动MCP航班搜索服务器进程
  2. 将您的航班查询请求发送至2.5 Pro
  3. 使用Gemini的功能调用提取搜索参数
  4. 通过MCP工具执行搜索
  5. 显示格式化后的结果

相关项目

这个客户端使用的是 mcp-flight-search 该工具可访问地址:

作者

要了解更多关于人工智能/机器学习和生成式人工智能的文章,请在Medium上关注我: @阿琼·普拉布胡拉尔(注:这是根据英文名字的音译,实际翻译可能因具体人名翻译习惯而异)

许可证

此项目遵循MIT许可证进行授权。