AI在线 AI在线

让 Gemini CLI 跑在你的私有大模型上

前不久,Google 开源了 Gemini CLI 工具,它允许用户通过命令行与 Gemini AI 模型进行高效交互。 然而,在实际应用中,出于安全性和成本控制的考虑,很多场景更适合使用本地部署的大语言模型(LLM)。 因此,让 Gemini CLI 支持连接本地 LLM 就显得尤为重要。

前不久,Google 开源了 Gemini CLI 工具,它允许用户通过命令行与 Gemini AI 模型进行高效交互。

然而,在实际应用中,出于安全性和成本控制的考虑,很多场景更适合使用本地部署的大语言模型(LLM)。因此,让 Gemini CLI 支持连接本地 LLM 就显得尤为重要。

我们的核心目标是:无需身份验证,并支持接入 兼容 OpenAI 接口规范 的本地模型服务。

本文将介绍如何对 Gemini CLI 进行二次开发,使其能够作为本地 LLM(如 Ollama、vLLM)的轻量私有客户端使用。

让 Gemini CLI 跑在你的私有大模型上

1. 明确改造目标

  • 删除身份验证功能,使用于本地LLM
  • 使用OpenAI Compatible API(Ollama、Vllm都支持)
  • 将启动标志从GEMINI更改为ZONE(可以忽略)

2. 修改代码和文件结构

(1) 了解ContentGenerator接口

/packages/core/src/core/contentGenerator.ts

这个文件是AI提供者抽象的核心代码。通过实现这个接口,您可以支持不同的AI提供商。

(2) 实现兼容OpenAI协议的ContentGenerator

/packages/core/src/core/openAICompatibleContentGenerator.ts

(3) 修改创建者

/packages/core/src/core/contentGenerator.ts

(4) 添加身份验证类型

/packages/core/src/core/contentGenerator.ts

(5) 更新身份验证对话框

/packages/cli/src/ui/components/AuthDialog.tsx

(6) 更新认证验证代码

/packages/cli/src/config/auth.ts

(7) 更改徽标(可有可无)

/packages/cli/src/ui/components/AsciiArt.ts

将ASCII艺术从Gemini更改为Gemma:

3. 注意事项

(1) TypeScript的类型兼容性

Gemini响应格式和OpenAI格式不同,需要进行转换处理

(2) 配置文件优先级

如果~/.gemini/settings.json存在,它可以优先于环境变量。如果要完全专用于本地LLM,则必须删除该文件或对其进行适当配置。

4. 总结

通过对Gemini cli 的改造,可以了解到gemini非常优秀的架构设计。

优势主要体现在:

  • 开放、封闭原则:对扩展开放,对修改关闭
  • 单一责任原则:每个模块都有明确的责任
  • 依赖反转原则:依赖于接口而不是具体类

有赖于Gemini CLI优秀的架构设计以及采用了Apache-2.0开源许可,使其成为开源项目二次开发、扩展的理想选择。

相关资讯

GPT未竟的革命,由o1接棒:或是LLM研究最重要的发现

天下武功唯快不破,但 OpenAI 不走寻常路,新出的 o1 系列宣告天下:我们更慢,但更强了。 o1 要花更多的时间思考问题,再做出反应,但在复杂推理层面直接窜了几个档位。 在国际数学奥林匹克 (IMO) 资格考试中,GPT-4o 仅正确解决了 13% 的问题,而 o1 得分为 83%。
9/13/2024 3:50:00 PM
刘洁

如何理解模型的蒸馏和量化

在LLM领域内,经常会听到两个名词:蒸馏和量化。 这代表了LLM两种不同的技术,它们之间有什么区别呢? 本次我们就来详细聊一下。
3/7/2025 8:00:00 AM

LLM「想太多」有救了!高效推理让大模型思考过程更精简

LLM的推理能力显著增强,然而,这个「超级大脑」也有自己的烦恼。 有时候回答会绕好大一个圈子,推理过程冗长又复杂,虽能得出正确答案,但耗费了不少时间和计算资源。 比如问它「2加3等于多少」,它可能会从数字的概念、加法原理开始,洋洋洒洒说上一大通,这在实际应用中可太影响效率啦。
4/7/2025 9:23:00 AM
新智元
  • 1