You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

基于FastMCP实现Gemini CLI与MCP工具的交互式流程开发疑问

解决方案:结合Gemini SDK实现带上下文的多轮交互

核心是利用Gemini SDK的ChatSession类维护对话上下文,同时适配FastMCP的工具流程,实现文件处理+多轮交互的完整逻辑。

步骤1:安装依赖

先安装Gemini SDK:

pip install google-generativeai

步骤2:完整代码实现

from fastmcp import FastMCP
import google.generativeai as genai

# 配置Gemini API密钥(从Google AI Studio获取)
genai.configure(api_key="你的API_KEY")

mcp = FastMCP("Demo")

# 初始化Gemini对话模型
model = genai.GenerativeModel("gemini-pro")

@mcp.tool
def demo_tool(filename: str) -> str:
    """处理文件并与用户进行带上下文的多轮交互"""
    # 步骤1:读取并处理文件(替换为你的业务逻辑)
    def Process(file_path):
        with open(file_path, 'r', encoding='utf-8') as f:
            content = f.read()
        # 整理为用户可讨论的结构化数据
        return f"文件处理完成,可讨论内容预览:\n{content[:500]}..."

    processed_data = Process(filename)

    # 步骤2:初始化Gemini会话,传入文件数据作为初始上下文
    chat_session = model.start_chat(history=[
        {"role": "user", "parts": f"基于以下文件内容展开讨论:{processed_data}"},
        {"role": "model", "parts": "请告诉我具体讨论方向,输入'cancel'结束对话。"}
    ])

    # 步骤3:多轮交互,自动维护上下文
    print(chat_session.history[-1]['parts'][0])
    user_input = ""
    while user_input != 'cancel':
        user_input = input("输入你的问题:")
        if user_input == 'cancel':
            break
        # 发送请求,会话自动保存历史上下文
        response = chat_session.send_message(user_input)
        print(f"Gemini回复:{response.text}")

    # 步骤4:基于完整对话生成最终输出
    final_summary = chat_session.send_message("总结本次对话的核心内容和结论")
    return f"交互结束,最终总结:\n{final_summary.text}"

关键细节说明

  • 上下文维护:ChatSession会自动存储每一轮的用户输入与模型回复,后续调用send_message时会自动携带历史对话,无需手动管理上下文列表。
  • FastMCP适配:工具函数最终返回字符串结果,符合FastMCP的要求;交互过程中的print仅用于实时反馈给用户,不影响工具的返回逻辑。
  • 文件处理扩展:将Process函数内的代码替换为你的实际业务逻辑,比如解析CSV、提取JSON字段、生成统计数据等。

内容的提问来源于stack exchange,提问作者Yahav Festinger

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.12 12:12:06