基于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
相关产品推荐
相关产品推荐

