前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >专栏 >MCP实例解析:基于 OpenAI API 的多轮对话与 Function Call 实现

MCP实例解析:基于 OpenAI API 的多轮对话与 Function Call 实现

作者头像
井九
发布于 2025-02-27 00:43:13
发布于 2025-02-27 00:43:13
73800
代码可运行
举报
文章被收录于专栏:四楼没电梯四楼没电梯
运行总次数:0
代码可运行

本文通过一个具体的示例,解析如何利用 MCP(Multi-turn Conversation Protocol)和 OpenAI API 中的 Function Call 功能,实现一个完整的多轮对话流程。示例场景模拟用户预订机票的需求,从解析意图、查询航班、用户选择到最终预订确认,每一步都展示了如何将 Function Call 与多轮对话结合起来。

场景描述

用户请求

“帮我订一张明天从北京到上海的机票。”

系统需要完成的任务

  1. 解析用户意图:确认用户请求后,需要调用 search_flights 查询航班信息。
  2. 查询航班信息:调用 search_flights API,获取可选航班列表。
  3. 多轮交互:展示航班选项,等待用户选择具体航班。
  4. 预订航班:根据用户选择,调用 book_ticket API 进行预订。
  5. 发送确认信息:调用 send_confirmation API,向用户发送预订成功的确认信息。

系统架构

在本示例中,系统主要分为两个层面:

  • 多轮对话管理层(MCP) 负责解析用户意图、维护上下文和拆解复杂任务,将任务分解为多个步骤。
  • Function Call 层 每个步骤中,系统使用 OpenAI API 的 Function Call 功能调用相应的 API(例如 search_flightsbook_ticketsend_confirmation),获取精确数据后返回给用户。

整体流程图

下面的 Mermaid 序列图展示了整个多轮对话和 API 调用的流程:

详细流程解析

第 1 步:解析用户意图

系统首先接收到用户请求后,通过预设的系统提示和用户输入来确定任务需求。此时,系统已经内置了 search_flights 的 Function Call 配置,准备后续查询。

Prompt 示例

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
{
  "role": "system",
  "content": "你是一个智能助理,能够帮助用户预订机票。"
},
{
  "role": "user",
  "content": "帮我订一张明天从北京到上海的机票。"
}

第 2 步:调用 search_flights 获取航班信息

Function Call 配置

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
{
  "name": "search_flights",
  "parameters": {
    "from": "北京",
    "to": "上海",
    "date": "2025-02-26"
  }
}

API 返回示例

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
{
  "flights": [
    { "flight": "CA123", "time": "08:00", "price": "¥800" },
    { "flight": "MU456", "time": "10:00", "price": "¥850" }
  ]
}

第 3 步:用户选择航班
代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
查询到以下航班:
1️⃣ CA123 - 08:00 - ¥800
2️⃣ MU456 - 10:00 - ¥850
请选择您想预订的航班编号。

用户回复:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
我选 CA123

第 4 步:调用 book_ticket 进行航班预订

Function Call 配置

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
{
  "name": "book_ticket",
  "parameters": {
    "flight": "CA123",
    "user": "用户ID_12345"
  }
}

API 返回示例

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
{
  "order_id": "789456",
  "status": "confirmed"
}

第 5 步:调用 send_confirmation 发送预订确认

Function Call 配置

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
{
  "name": "send_confirmation",
  "parameters": {
    "order_id": "789456",
    "user": "用户ID_12345"
  }
}

API 返回示例

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
{
  "status": "sent"
}

OpenAI API 调用示例

1. 解析用户意图并调用 search_flights
代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
{
  "model": "gpt-4-turbo",
  "messages": [
    { "role": "system", "content": "你是一个智能助理,能够帮助用户预订机票。" },
    { "role": "user", "content": "帮我订一张明天从北京到上海的机票。" }
  ],
  "tools": [
    {
      "type": "function",
      "function": {
        "name": "search_flights",
        "description": "查询航班信息。",
        "parameters": {
          "type": "object",
          "properties": {
            "from": { "type": "string", "description": "出发城市" },
            "to": { "type": "string", "description": "目的地城市" },
            "date": { "type": "string", "description": "航班日期" }
          },
          "required": ["from", "to", "date"]
        }
      }
    }
  ],
  "tool_choice": "search_flights"
}

2. 用户选择航班并调用 book_ticket
代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
{
  "name": "book_ticket",
  "parameters": {
    "flight": "CA123",
    "user": "用户ID_12345"
  }
}

3. 发送预订确认 send_confirmation
代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
{
  "name": "send_confirmation",
  "parameters": {
    "order_id": "789456",
    "user": "用户ID_12345"
  }
}

总结

本实例展示了 MCP 如何在 OpenAI API 中结合 Function Call 功能,实现多轮对话。关键要点包括:

  • 任务拆解:将复杂预订任务拆分为多个简单的步骤(查询、选择、预订、确认)。
  • 上下文管理:在每个阶段维护对话上下文,确保用户输入与系统调用无缝衔接。
  • 精准 API 调用:利用 Function Call 调用后端服务,返回准确的数据以供后续处理。

通过这种方式,MCP 能智能解析用户需求,提升任务执行的效率。

本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2025-02-27,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档
本文部分代码块支持一键运行,欢迎体验
本文部分代码块支持一键运行,欢迎体验