MCP之PYTHON对接大模型遇到的坑

后面会分享个JAVA版本的

PYTHON环境准备

python的本地安装就跳过了,IDE用自己的使用的就可以了

安装UV

复制代码
pip install uv

设置您的环境

bash 复制代码
# 创建项目目录
uv init mcp-client
cd mcp-client
# 创建虚拟环境
uv venv
# 激活虚拟环境
# 在 Windows 上:
.venv\Scripts\activate
# 在 Unix 或 MacOS 上:
source .venv/bin/activate
# 安装所需的包
uv add mcp anthropic python-dotenv
# 删除样板文件
rm hello.py
# 创建我们的主文件
touch client.py

设置您的 API 密钥

需要到使用模型的官网找到对应的密钥。

创建一个 .env 文件来存储它:

ini 复制代码
创建 .env 文件
touch .env
将您的密钥添加到 .env 文件中:
OPENAI_API_KEY=API-KEY
BASE_URL=https://dashscope.aliyuncs.com/compatible-mode/v1
MODEL=qwq-32b

uv的一些命令

官方文档中给的流程图感觉不是太清晰,然后我找了一个流程图

这个流程图我再次发一下,因为对比上篇java版本的(MCP对接Spring AI Alibaba遇到的坑),python更能体会每步的流程(感觉java的封装的比较深吧

网上经常说的MCP非常消耗TOKEN(个人觉得根据上面流程图

  • 要识别调用的工具链,转换为合适的参数
  • 因为MCP是客户本地的服务,需要给本地服务传递调用指令,还需要的到MCP-SERVER的执行结果(一句话链路回合多了)。

网上demo遇到的常见问题

  • 出错的地方在调用本地MCP-SERVER的时候报错
  • 出错的地方在调用本地MCP-SERVER完成后把结果反馈给大模型的时候报错

最常见的报错1:

报错:ModuleNotFoundError: No module named 'mcp'

这问题的报错原因:因为工具加载的时候是通过命令的方式启动加载的。但是你参考的有些地方却写的是python(python环境没有安装mcp的包),改成uv就可以了等于切换了环境。

ini 复制代码
# 根据脚本类型选择执行命令
    command = "uv" if is_python else "node"
    server_params = StdioServerParameters(
        command=command,
        args=["run", server_script_path],
        env=None
    )

最常见的报错2:

报错:在大模型返回信息-》调用本地server-》本地信息在上传个大模型(报错)

css 复制代码
⚠️ 发生错误: Error code: 400 - {'error': {'code': 'invalid_parameter_error', 'param': None, 'message': '<400> InternalError.Algo.InvalidParameter: messages with role "tool" must be a response to a preceeding message with "tool_calls".', 'type': 'invalid_request_error'}, 'id': 'chatcmpl-5801dfcb-208a-913e-930c-b830159810af', 'request_id': '5801dfcb-208a-913e-930c-b830159810af'}

这问题的报错原因:role的问题,把工具调用后返回给大模型做处理的时候,role:tool改为role:funcion就可以了。

bash 复制代码
#原有的信息再拼接个工具调用内容返回给大模型的参数组装
messages.append({
                "role": "function",
                "content": result_content,
                "tool_call_id": tool['id'],
                #"tool_calls": tool_calls
            })
相关推荐
神奇霸王龙1 小时前
GB/T 46886 闭环屠夫:5 旗舰多模态 LLM 工业质检实测
人工智能·计算机视觉·ai·开源·ai编程·本地部署
三声三视2 小时前
uni-app 鸿蒙端传参变成 [object Object]?顺着源码追到 ArkTS router 底层才搞明白
人工智能·ai·uni-app·aigc·ai编程·harmonyos
计算机魔术师3 小时前
Karpathy:用语音与LLM长谈可提升理解效率
人工智能·ai编程
kyriewen4 小时前
我让AI给前端项目做了一次完整的Code Review——它和人类的差距,比我想的大得多
前端·javascript·ai编程
chaors6 小时前
DeepRearchSystem 0x00:初识
langchain·llm·ai编程
一个有理想的摸鱼选手7 小时前
在三维地球上以另一种视角感受巴威台风
前端·gis·ai编程
谁来拯救笨小孩7 小时前
深入 Cursor 架构:一个 AI 编辑器是如何被「流式」重塑的
ai编程
JavaGuide7 小时前
再见 Superpowers!很多 Skill 真的可以扔掉了。
后端·ai编程
东小西7 小时前
第6篇:《智能调度中心:当我同时塞给AI查订单、查库存、查物流三个工具》
openai·ai编程
奋飛7 小时前
AI应用工程:Agent 的能力是如何扩展的?——Tool、Skill、Workflow 与 MCP 的职责边界
agent·workflow·mcp·skills·ai应用工程