(长期有效)接入第三方 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

Python快速入门指南:从零开始掌握Python编程

Python快速入门指南:从零开始掌握Python编程

文章目录 * 前言 * 一、Python环境搭建🥏 * 1.1 安装Python * 1.2 验证安装 * 1.3 选择开发工具 * 二、Python基础语法📖 * 2.1 第一个Python程序 * 2.2 变量与数据类型 * 2.3 基本运算 * 三、Python流程控制🌈 * 3.1 条件语句 * 3.2 循环结构 * 四、Python数据结构🎋 * 4.1 列表(List) * 4.2 字典(Dictionary) * 4.3 元组(Tuple)和集合(Set) * 五、函数与模块✨

By Ne0inhk
Python 爬虫项目实战(一):爬取某云热歌榜歌曲

Python 爬虫项目实战(一):爬取某云热歌榜歌曲

前言 网络爬虫(Web Crawler),也称为网页蜘蛛(Web Spider)或网页机器人(Web Bot),是一种按照既定规则自动浏览网络并提取信息的程序。爬虫的主要用途包括数据采集、网络索引、内容抓取等。 爬虫的基本原理 1. 种子 URL:爬虫从一个或多个种子 URL 开始,这些 URL 是起点。 2. 发送请求:爬虫向这些种子 URL 发送 HTTP 请求,通常是 GET 请求。 3. 获取响应:服务器返回网页的 HTML 内容作为响应。 4. 解析内容:爬虫解析 HTML 内容,提取所需的数据(如文本、链接、图片等)。 5. 提取链接:

By Ne0inhk

Python:布尔类型

在 Python 中,布尔类型(bool)是最基本的数据类型之一,用于表示逻辑上的真与假。 它只有两个取值:True 和 False,是 int 类型的子类。 bool 布尔对象。逻辑值,仅有 True 与 False 两个常量。 在数值运算中,True 等价于 1,False 等价于 0。 1、表示方法 a = True       # 布尔真值b = False      # 布尔假值 print(int(True))   # 1print(int(False))  # 0print(True + 5)    # 6 → 等价于 1 + 5 2、

By Ne0inhk
Python中一切皆对象:深入理解Python的对象模型

Python中一切皆对象:深入理解Python的对象模型

Python中一切皆对象:深入理解Python的对象模型 * 什么是"一切皆对象"? * Python对象的类型层次 * 1. 内置类型对象 * 2. 函数对象 * 3. 类对象和实例对象 * 4. 模块对象 * 对象行为的统一性 * 特殊方法:对象行为的背后 * 对象模型的实际应用 * 性能考虑 * 总结 Python以其"一切皆对象"的设计哲学而闻名,这种设计为语言带来了极大的灵活性和一致性。本文将深入探讨Python的对象模型,解释为什么说"Python中一切皆对象",并通过实例展示这一特性如何影响我们的编程方式。 什么是"一切皆对象"? 在Python中,从简单的数字、字符串到复杂的函数、类甚至模块,所有这些都是对象。这意味着它们都有: 1. 身份(identity):对象在内存中的唯一地址,可通过id()函数获取 2.

By Ne0inhk