如何让VS Code与 llama-server通信?

前端开发 2026-07-09

我正在尝试使用的VS配置文件是:

[
    {
        "name": "My Custom Endpoint",
        "vendor": "customendpoint",
        "apiType": "chat-completions",
        "models": [
            {
                "id": "myllamacpp",
                "name": "my llama cpp",
                "url": "http://localhost:8080",
                "toolCalling": false,
                "vision": true,
                "maxInputTokens": 128000,
                "maxOutputTokens": 128000
            }
        ]
    }
]

但当我试着“聊天”时,出现错误信息“语言模型不可用”(尽管 llama-server 正在监听所指定的URL——我可以在浏览器中或使用Python的 requests 库对它进行对话)。

解决方案

针对llama.cpp自定义端点的VS Code“语言模型不可用”修复方法

如果 curl 能工作,但VS Code仍然显示 “语言模型不可用”,问题很可能不是 /v1/chat/completions 端点本身。更可能的是VS Code发送的模型ID与 llama-server 暴露的模型名称/别名之间存在不匹配。

最强的修复方法是以显式别名启动 llama-server,然后在VS Code中使用完全相同的别名。

请按如下方式启动llama.cpp:

llama-server \
  -m /path/to/your/model.gguf \
  --alias myllamacpp \
  --host 127.0.0.1 \
  --port 8080 \
  --ctx-size 32768 \
  --n-gpu-layers -1 \
  --api-key sk-local \
  --jinja

然后在VS Code的 chatLanguageModels.json 中使用以下内容:

[
  {
    "name": "Local llama.cpp",
    "vendor": "customendpoint",
    "apiKey": "sk-local",
    "apiType": "chat-completions",
    "models": [
      {
        "id": "myllamacpp",
        "name": "My llama.cpp",
        "url": "http://127.0.0.1:8080/v1/chat/completions",
        "toolCalling": false,
        "vision": false,
        "maxInputTokens": 32768,
        "maxOutputTokens": 4096,
        "streaming": false
      }
    ]
  }
]

然后验证llama.cpp是否暴露了相同的模型ID:

curl http://127.0.0.1:8080/v1/models \
  -H "Authorization: Bearer sk-local"

你应该看到类似如下的内容:

"id": "myllamacpp"

然后使用相同的模型名称测试聊天:

curl http://127.0.0.1:8080/v1/chat/completions \
  -H "Content-Type: application/json" \
  -H "Authorization: Bearer sk-local" \
  -d '{
    "model": "myllamacpp",
    "messages": [
      {"role": "user", "content": "Say only: working"}
    ],
    "stream": false
  }'

之后,彻底重启VS Code:

pkill -f code
code

以下是一些重要细节:

请使用 127.0.0.1 而不是 localhost,以避免IPv4/IPv6绑定问题。

除非你实际在运行带有正确投影文件的多模态模型,否则请设置 "vision": false

先设置 "streaming": false,以再移除一个兼容性变量。

先使用 "toolCalling": false 让普通聊天工作。之后如果能工作,再尝试通过将其改为以下设置来进入Agent模式:

"toolCalling": true

对于Agent模式,在 llama-server 命令中保持 --jinja,因为工具/函数调用取决于模型模板的支持。

核心思路是:让llama.cpp的别名与VS Code的模型 "id" 完全相同。 端点可以支持 curl,但如果模型身份或能力与它所期望的不匹配,VS Code仍可能失败。

站内所有文章版权归属LeftHeroAI导航站,无授权禁止任何主体转载、抄袭、复制内容,亦不得私自架设镜像站点。一经侵权,本站将通过法律途径追责。

相关文章