本地部署开源版本GLM-4.7并接入claude命令使用,就差最后一步!!!

#32
by wiesencao - opened

HI,各们大佬:
我最近几天都在研究GLM-4.7本地部署,用于替换公司现在昂贵的claude code使用成本。现在使用cherry studio进行对话测试,回复均没有任何问题,但一接入claude命令,就出现不会调用工具的问题。以下是我详细的部署情况:
一、硬件服务器资源
显卡:8卡H20 141GB
内存:2TB
CPU:INTEL(R) XEON(R) PLATINUM 8558P 96核心CPU
硬盘:ssd硬盘
二、模型部署环境信息
部署方式:docker 容器
推理框架:vllm
vllm镜像版本:vllm/vllm-openai:nightly
docker-compose-glm-4.7.yaml配置文件如下:

services:
    vllm-glm-4.7:
      image: docker.1ms.run/vllm/vllm-openai:nightly
      container_name: vllm-glm-4.7
      restart: always
      # GPU 配置 - 使用 device_ids 限制可见 GPU
      deploy:
        resources:
          reservations:
            devices:
              - driver: nvidia
                capabilities: [gpu]
      shm_size: '16gb'
      ipc: host
      environment:
        - NCCL_DEBUG=INFO
        - NCCL_P2P_DISABLE=1
        - NCCL_IB_DISABLE=1
        - NCCL_SOCKET_IFNAME=eth0
        - VLLM_USE_MODELSCOPE=True
        - CUDA_VISIBLE_DEVICES=0,1,2,3,4,5,6,7
        - VLLM_API_KEY=sk-xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
      ports:
        - "8080:8000"
      volumes:
        - /etc/localtime:/etc/localtime:ro
        - /etc/timezone:/etc/timezone:ro
        - /root/.cache/modelscope/hub/models/ZhipuAI/GLM-4.7:/workspace/models
      command:
        - "/workspace/models"
        - "--tensor-parallel-size"
        - "8"
        - "--served-model-name"
        - "GLM-4.7"
        - "--gpu-memory-utilization"
        - "0.90"
        - "--enable-auto-tool-choice"
        - "--tool-call-parser"
        - "glm47"
        - "--reasoning-parser"
        - "glm45"
        - "--speculative-config.method"
        - "mtp"
        - "--speculative-config.num_speculative_tokens"
        - "1"
        - "--max-model-len"
        - "202752"

三、目前状态
1、文本生成功能测试正常。
通过使用8张H20卡,可以正常拉起模型(试过4张卡内存不足,6张卡不支持词嵌入数量不能整除6),并且使用cherry studio可以正常实现对话。
2、将我部署的模型接入claude code中使用,发现无法调起任何工具。
我想实现官方公有模型glm-4.7直接接入claude code中,智谱官方的公有大模型配置是没有任何问题的,可以像claude一样丝滑使用,配置参考的是:https://mp.weixin.qq.com/s/pEPweAhpzZb1ef5oMvaDDA,使用 npx @z_ai/coding-helper,先配置好公有模型对接claude,
然后将 settings.json,按如下修改:
image
image
只要将我的本地模型配置到claude中,就出现以下问题。只能生成文本,不能调用任何工具,也没有看到明显的错误日志。
image
这是claude的日志文件:less .claude/debug/latest
image
这是vllm容器的日志:
image
后来网上有大佬推荐使用claude code router 作一层代理转发,我配置了半天,发现仍然是一样的问题。然后我又试着使用sglang来部署glm-4.7,发现更糟糕,连文本生成都有问题。
四、求助
有没有哪位大佬是完整完成了这项集成工程的,如果遇到类似问题,请不吝赐教。
我大胆推测一下,可能的原因:
1、由于glm-4.7开源还不到一个月,目前基本上很少看到有大佬成功部署的案例,现在用的vllm镜像都是非稳定版本nightly,可能会存在bug?
2、官方公有模型集成到claude中,是用工具进行配置的,现在不知道这个工具做了哪些动作,我仅修改了settings.json中的信息,是不是还不够?还有哪些地方需要修改,才能适应我的开源模型glm-4.7?

wiesencao changed discussion status to closed

大佬,怎么解决的?可以分享一下

目前我的问题已经解决,原因为使用vllm或sglang部署的模型,默认都是类openai接口形式,而在工具调用时,claude code只能接收anthropic风格接口。所以claude与vllm中间需要部署一个接口转换层,如果是个人使用可以选择claude code router(开始配置没有对),如果你是想让统一企业的ai网关,统一做大模型管理,那你可以选择litellm。

大佬,怎么解决的?可以分享一下

wiesencao changed discussion status to open

Sign up or log in to comment