跳到主要内容

GLM-4.6支持思考及思维链回传

· 阅读需 5 分钟

GLM-4.6在cluade code中启用思考

GLM从4.5开始就对claude code进行了支持,我之前也一直在关注,很多用户反映在claude code中无法启用思考,刚好最近收到了来自智谱的赞助,就着手进行研究。

首先根据官方文档,我们发现/chat/completions端点是默认启用思考的,但是是由模型判断是否需要进行思考

或许我们能在 Router 中做更多事情

· 阅读需 5 分钟

自从claude-code-router发布以来,我收到了很多用户的反馈,至今还有不少的 issues 未处理。其中大多都是关于不同的供应商的支持和deepseek模型调用工具不积极的问题。 之前开发这个项目主要是为了我自己能以较低成本使用上claude code,所以一开始的设计并没有考虑到多供应商的情况。在实际的排查问题中,我发现尽管市面上所有的供应商几乎都宣称兼容OpenAI格式调用,即通过/chat/compeletions接口调用,但是其中的细节差异非常多。例如:

  1. Gemini 的工具参数类型是 string 时,format参数只支持datedate-time,并且没有工具调用 ID。

  2. OpenRouter 需要使用cache_control进行缓存。

  3. DeepSeek 官方 API 的 max_output 为 8192,而火山引擎的会更大。

除了这些问题之外,还有一些其他的小的供应商,他们或多或少参数都有点问题。于是,我打算开发一个新的项目musistudio/llms来处理这种不同服务商的兼容问题。该项目使用 OpenAI 格式为基础的通用格式,提供了一个Transformer接口,该接口用于处理转换请求和响应。当我们给不同的服务商都实现了Transformer后,我们可以实现不同服务商的混合调用。比如我在AnthropicTransformer中实现了Anthropic <-> OpenAI格式的互相转换,并监听了/v1/messages端点,在GeminiTransformer中实现了Gemini <-> OpenAI格式的互相转换,并监听了/v1beta/models/:modelAndAction端点,当他们的请求和响应都被转换成一个通用格式的时候,就可以实现他们的互相调用。

项目初衷及原理

· 阅读需 6 分钟

早在 Claude Code 发布的第二天(2025-02-25),我就尝试并完成了对该项目的逆向。当时要使用 Claude Code 你需要注册一个 Anthropic 账号,然后申请 waitlist,等待通过后才能使用。但是因为众所周知的原因,Anthropic 屏蔽了中国区的用户,所以通过正常手段我无法使用,通过已知的信息,我发现:

  1. Claude Code 使用 npm 进行安装,所以很大可能其使用 Node.js 进行开发。
  2. Node.js 调试手段众多,可以简单使用console.log获取想要的信息,也可以使用--inspect将其接入Chrome Devtools,甚至你可以使用d8去调试某些加密混淆的代码。

由于我的目标是让我在没有 Anthropic 账号的情况下使用Claude Code,我并不需要获得完整的源代码,只需要将Claude Code请求 Anthropic 模型时将其转发到我自定义的接口即可。接下来我就开启了我的逆向过程:

  1. 首先安装Claude Code