(长期有效)接入第三方 OpenAI 兼容模型到 GitHub Copilot

目前 GitHub Copilot 仅支持接入国外的几家模型提供商,无法直接调用 OpenAI 兼容的自定义 API 进行扩展。参考相关解决方案,我总结了一下Copilot中接入OpenAI 兼容 API 的方法。
实现方法主要分为两种:

方案一:修改 Copilot Chat 源代码
在模型选择器中新增自定义提供商选项。

方案二:API 兼容适配
将 OpenAI 兼容的自定义 API 虚拟化封装为与 Ollama 兼容的 API(运行期间占用 Ollama 端口),从而利用 Copilot 模型选择器中原生的 Ollama 选项。

方法一(目前存在问题)

具体做法可参考修改Copilot chat插件增加自定义模型提供商


这里只说一下这个方法存在的问题:

  1. 官方开源的Copilot chat插件版本通常滞后于最新版,可能存在未来兼容性问题
  2. 打包过程的npm install环节容易报错,需要多次调试
  3. 重要 当前打包后的Copilot chat插件在VSCode中无法显示模型选择器。虽然原作者指出这是由于插件要求的VSCode最低版本与实际版本不匹配所致,但即便修改了package.json中的vscode版本号,问题依然存在。

方法二(长期有效)

这一方法基于Github上的oai2ollama项目,它通过命令行工具启动一个服务,将OpenAI兼容API封装为Ollama兼容API。特别适合为不支持自定义OpenAI API但支持Ollama的编码代理(如VS Code中的GitHub Copilot)提供自定义模型支持。
这一项目的灵感来源于vscode-copilot GitHub讨论区中关于添加自定义 OpenAI 端点配置(基础 URL 和模型参数)到协同聊天设置的讨论。值得注意的是,官方已采纳该提议,未来Copilot版本可能直接支持第三方模型。
言归正传,具体操作步骤如下:

  1. 安装UV工具
    详细安装教程可参考:Windows系统UV安装及路径配置指南
    • 执行uv tool install进行永久安装
    • 创建批处理文件(双击运行):

配置VS Code
在Copilot模型选择器中选择"Ollama",稍候将显示第三方模型列表。

模型选择界面

运行转换程序
在命令行直接执行(无需本地下载项目):

uvx oai2ollama --api-key your_api_key --base-url provider_base_url 

如需长期使用,可选择以下任一方式:

@echo off powershell -NoExit-Command"uvx oai2ollama --api-key your_api_key --base-url provider_base_url"

常见问题:若未显示模型列表,请检查命令行报错信息。多数情况下,在base-url末尾添加/v1即可解决。

Read more

【算法通关指南:数据结构与算法篇 】二叉树相关算法题:1.新二叉树 2.二叉树的遍历

【算法通关指南:数据结构与算法篇 】二叉树相关算法题:1.新二叉树 2.二叉树的遍历

🔥小龙报:个人主页 🎬作者简介:C++研发,嵌入式,机器人方向学习者 ❄️个人专栏:《算法通关指南》 ✨ 永远相信美好的事情即将发生 文章目录 * 前言 * 二、新二叉树 * 2.1题目 * 2.2 算法原理 * 2.3代码 * 三、 二叉树的遍历 * 3.1题目 * 3.2 算法原理 * 3.3代码 * 总结与每日励志 前言 本专栏聚焦算法题实战,系统讲解算法模块:以《c++编程》,《数据结构和算法》《基础算法》《算法实战》 等几个板块以题带点,讲解思路与代码实现,帮助大家快速提升代码能力ps:本章节题目分两部分,比较基础笔者只附上代码供大家参考,其他的笔者会附上自己的思考和讲解,希望和大家一起努力见证自己的算法成长 二、新二叉树 2.

By Ne0inhk
Flutter 三方库 collection 的鸿蒙化适配指南 - 实现具备高级集合操作与相等性深度判定算法的算法底座、支持端侧多维数据结构的高性能治理实战

Flutter 三方库 collection 的鸿蒙化适配指南 - 实现具备高级集合操作与相等性深度判定算法的算法底座、支持端侧多维数据结构的高性能治理实战

欢迎加入开源鸿蒙跨平台社区:https://openharmonycrossplatform.ZEEKLOG.net Flutter 三方库 collection 的鸿蒙化适配指南 - 实现具备高级集合操作与相等性深度判定算法的算法底座、支持端侧多维数据结构的高性能治理实战 前言 在进行 Flutter for OpenHarmony 开发时,面对复杂的业务 JSON 转化、深层嵌套的集合对比或需要对列表执行高频的优先级排序(Priority Queue)时,原生 List 和 Map 的功能往往显得捉襟见肘。collection 是 Dart 官方维护的最权威、最核心的集合工具库。本文将探讨如何在鸿蒙端构建极致、稳健的数据处理架构。 一、原直观解析 / 概念介绍 1.1 基础原理 该库扩展了 Dart 标准库中的集合能力。它不仅提供了如 Equality(深度相等判定)、PriorityQueue(

By Ne0inhk
数据结构堆的深度解析:为什么它是高效处理最值问题的利器

数据结构堆的深度解析:为什么它是高效处理最值问题的利器

前言 在非线性数据结构的家族中,堆是兼具 “完全二叉树特性” 与 “最值优先级” 的高效工具 —— 它以数组为物理载体,却暗藏树形逻辑,能在 O (1) 时间获取最值,O (logN) 时间完成插入删除,成为解决排序、Top-K 等经典问题的 “一把好手”。 📚 初阶数据结构 【 时间复杂度+空间复杂度 】 【 顺序表 】 【 单链表 】 【 链表OJ题(上篇)】 【 链表OJ题(下篇)】 【 栈和队列 】 【 栈和队列面试题 】 【 二叉树概念解析 】 目录 一、堆的核心概念与结构特性 1. 堆的定义 2. 核心特性 3. 直观示例 二、堆的实现  1、堆的结构 2、堆的初始化 3、堆的销毁 4、

By Ne0inhk
【数据结构手札】顺序表实战指南(五):查找 | 任意位置增删

【数据结构手札】顺序表实战指南(五):查找 | 任意位置增删

🌈个人主页:聆风吟 🔥系列专栏:数据结构手札 🔖少年有梦不应止于心动,更要付诸行动。 文章目录 * 📚专栏订阅推荐 * 📋前言 - 顺序表文章合集 * 一. ⛳️顺序表:重点回顾 * 1.1 🔔顺序表的定义 * 1.2 🔔顺序表的分类 * 1.2.1 👻静态顺序表 * 1.2.2 👻动态顺序表 * 二. ⛳️顺序表的基本操作实现 * 2.1 🔔查找某个值的下标 * 2.2 🔔在下标为pos位置插入x * 2.3 🔔删除下标为pos位置的数据 * 三. ⛳️顺序表的源代码 * 3.1 🔔SeqList.h 顺序表的函数声明 * 3.2 🔔SeqList.c

By Ne0inhk