copilot_ollama_facade 是一个本地 python3 代理:
- 对外暴露 Ollama 兼容接口(默认
http://127.0.0.1:11434) - 对内转发到 OpenAI 兼容上游(第三方)
目标场景:让 VSCode 继续按 Ollama 本地地址访问,但实际走第三方模型。
本项目按 Ollama v0.6.4 方向补齐了关键能力,包含你提到的 capabilities:
show响应返回capabilitiestags响应可返回capabilities(默认开启,可配置关闭)- 能力校验:
chat需要completion,且带tools时还需要toolsgenerate需要completion,带suffix时还需要insert
chat/generate支持load/unload语义:- 空请求 +
keep_alive=0返回done_reason=unload - 空请求返回
done_reason=load
- 空请求 +
支持的能力枚举(与 0.6.4 一致):
completiontoolsinsertvisionembedding
HEAD /GET /HEAD /api/versionGET /api/versionHEAD /api/tagsGET /api/tagsGET /api/psPOST /api/showPOST /api/chatPOST /api/generatePOST /api/embedPOST /api/embeddingsPOST /api/createPOST /api/copyPOST /api/pullPOST /api/pushDELETE /api/deletePOST /api/delete(兼容调用)HEAD /api/blobs/:digestPOST /api/blobs/:digest
GET /v1/modelsGET /v1/models/:modelPOST /v1/chat/completionsPOST /v1/completionsPOST /v1/embeddings
cd /path/to/copilot_ollama-facade
cp config.example.json config.json
# 修改 config.json
python3 ollama_facade.py --config ./config.json{
"listen_host": "127.0.0.1",
"listen_port": 11434,
"ollama_version": "0.6.4",
"stream_default": true,
"keep_alive_default": "5m",
"upstream_base_url": "https://your-third-party.example.com/v1",
"upstream_api_key": "YOUR_API_KEY",
"upstream_chat_path": "/chat/completions",
"upstream_completions_path": "/completions",
"upstream_models_path": "/models",
"upstream_embeddings_path": "/embeddings",
"default_model": "thirdparty-chat-large",
"default_capabilities": ["completion"],
"model_map": {
"llama3.1": "thirdparty-chat-large",
"qwen2.5-coder": "thirdparty-coder",
"bge-m3": "thirdparty-embedding"
},
"model_capabilities": {
"llama3.1": ["completion", "tools", "insert"],
"qwen2.5-coder": ["completion", "tools", "insert"],
"bge-m3": ["embedding"]
},
"models": ["llama3.1", "qwen2.5-coder", "bge-m3"],
"tags_include_capabilities": true,
"headers": {},
"timeout": 180,
"insecure_skip_tls_verify": false
}upstream_base_url:上游基础地址(必填)upstream_chat_path:上游 chat 路径(默认/chat/completions)upstream_completions_path:上游 completions 路径(默认/completions)upstream_embeddings_path:上游 embeddings 路径(默认/embeddings)default_model:请求未传 model 时的默认模型model_map:本地模型名到上游模型名映射default_capabilities:默认能力model_capabilities:按模型覆盖能力tags_include_capabilities:/api/tags是否附带capabilitiesstream_default:请求未传stream时默认是否流式keep_alive_default:请求未传keep_alive时默认值ollama_version:/api/version返回值(建议0.6.4及以上)
curl http://127.0.0.1:11434/api/version
curl http://127.0.0.1:11434/api/tags
curl http://127.0.0.1:11434/api/show -H 'Content-Type: application/json' -d '{"model":"llama3.1"}'curl http://127.0.0.1:11434/api/chat \
-H 'Content-Type: application/json' \
-d '{"model":"llama3.1","messages":[{"role":"user","content":"你好"}],"stream":false}'
