在 VSCode 中本地运行 DeepSeek,打造强大的私人 AI

在 VSCode 中本地运行 DeepSeek,打造强大的私人 AI

        本文将分步向您展示如何在本地安装和运行 DeepSeek、使用 CodeGPT 对其进行配置以及开始利用 AI 来增强您的软件开发工作流程,所有这些都无需依赖基于云的服务。 

步骤 1:在 VSCode 中安装 Ollama 和 CodeGPT

        要在本地运行 DeepSeek,我们首先需要安装Ollama,它允许我们在我们的机器上运行 LLM,以及CodeGPT,它是集成这些模型以提供编码辅助的 VSCode 扩展。

安装 Ollama

Ollama 是一个轻量级平台,可以轻松运行本地 LLM。

下载Ollama

访问官方网站:https://ollama.com

  • 下载适合您的操作系统(Windows、macOS 或 Linux)的安装程序。
  • 验证安装
    安装后,打开终端并运行:

ollama --version 

如果 Ollama 安装正确,它将显示已安装的版本。

在 Visual Studio Code 中安装 CodeGPT

打开 VSCode并导航到扩展市场(Ctrl + Shift + X 或 macOS 上为 Cmd + Shift + X)。

搜索“CodeGPT”并点击安装。

或者您可以在此处创建一个免费帐户:https://codegpt.co

安装 Ollama 和 CodeGPT 后,我们现在可以下载并配置 DeepSeek 以开始在本地使用 AI 进行编码。 

第 2 步:下载并设置模型

现在您已经成功安装了 Ollama 和 CodeGPT,现在是时候下载您将在本地使用的模型了。

  • 聊天模型:deepseek-r1:1.5b,针对较小的环境进行了优化,可以在大多数计算机上顺利运行。
  • 自动补全模型:deepseek-coder:1.3b。该模型利用中间填充 (FIM)技术,可以在您编写代码时提供智能自动补全建议。它可以预测并建议函数或方法的中间部分,而不仅仅是开头或结尾。

下载聊天模型 (deepseek-r1:1.5b)

要开始使用聊天模型:

  • VSCode中打开CodeGPT
  • 导航到侧边栏中的“本地 LLM”部分。
  • 从可用选项中,选择Ollama作为本地 LLM 提供商。
  • 选择模型deepseek-r1:1.5b
  • 点击下载按钮。模型将自动开始下载。

下载完成后,CodeGPT 将自动安装模型。安装完成后,您就可以开始与模型进行交互了。

现在,您可以轻松地查询有关代码的模型。只需在编辑器中突出显示任何代码,使用#符号将额外文件添加到查询中,然后利用强大的命令快捷方式,例如: 

/fix — 用于修复错误或建议改进代码。
/refactor — 用于清理和改进代码结构。
/Explain — 获取任何一段代码的详细解释。
这种聊天模型非常适合帮助解决特定问题或获取有关代码的建议。

下载自动完成模型 (deepseek-coder:base)

为了增强代码自动完成功能:

在 VSCode 中打开终端。
运行以下命令来提取deepseek-coder:base模型:

ollama pull deepseek-coder:base

此命令将自动完成模型下载到您的本地机器。
下载完成后,返回CodeGPT并导航到自动完成模型部分。
从可用模型列表中选择deepseek-coder:base 。

选择后,您就可以开始编码。在您输入时,模型将开始提供实时代码建议,帮助您轻松完成函数、方法甚至整个代码块。 

步骤 3:享受无缝本地和私人人工智能编码

        设置模型后,您现在可以享受使用这些强大工具的全部好处,而无需依赖外部 API。通过在您的机器上本地运行所有内容,您可以确保完全的隐私和对编码环境的控制。无需担心数据离开您的计算机,一切都保持安全和私密。

如果您喜欢此文章,请收藏、点赞、评论,谢谢,祝您快乐每一天。   

Read more

C++核心语法入门:从命名空间到nullptr的全面解析

C++核心语法入门:从命名空间到nullptr的全面解析

前言:终于到了C++章节,已经有点迫不及待了。今天我们来学习C++入门小知识。 1. 命名空间 1.1 namespace的价值 在C/C++中,变量,函数名以及后面学习的类都是大量存在的,这些变量,函数名和类的名称都存在于全局作用域中,可能会导致很多冲突。使用命名空间的目的就是为了解决命名冲突的问题。namespace是一个关键字。 #include<stdio.h>#include<stdlib.h>int rand =20;intmain(){//重定义,rand是一个函数,包含在stdlib.h里printf("%d\n", rand);return0;} 我们本意是想要打印整型变量的,但在C++里不同,编译器会在局部域先进行查找,找不到再去全局域查找。

By Ne0inhk
【C++】vector类常用接口及模拟实现

【C++】vector类常用接口及模拟实现

一、vector简介 vector在STL中表示顺序表,使用vector要包含vector头文件。 vector是一个模板,使用时要指定其中存储的数据类型(类模板只能显式实例化)。 vector不支持流插入和流提取,所以不能直接用cin、cout输入输出 vector文档介绍 二、vector的使用(常用接口) 1.vector的定义(构造方法) (constructor)构造函数声明接口说明vector()无参构造vector(size_type n, const value_type& val = value_type())构造并初始化n个valvector(const vector& x)拷贝构造vector(InputIterator first, InputIterator last);使用迭代器进行初始化 #include<iostream>#include<vector>usingnamespace

By Ne0inhk

C++中的volatile:从原理到实践的全面解析

C++中的volatile:从原理到实践的全面解析 在C++编程中,volatile是一个容易被误解却又至关重要的关键字。它并非用于解决多线程安全问题,也不保证操作的原子性,而是针对编译器优化的“反向操作”——强制编译器放弃对特定变量的优化,确保每次访问都直接操作内存。本文将从底层原理出发,详细解析volatile的作用、用法、适用场景及常见误区,帮助开发者正确理解和使用这一关键字。 一、为何需要volatile?——编译器优化的“副作用” 现代编译器为提升程序性能,会对代码进行一系列优化,例如: * 寄存器缓存:将频繁访问的变量值暂存到CPU寄存器中(内存访问速度远低于寄存器),减少内存读写次数; * 指令重排:调整代码执行顺序(只要不改变单线程语义),提高CPU执行效率; * 冗余代码消除:删除未被修改的变量的重复读取,或合并连续的相同操作。 这些优化在大多数情况下能显著提升性能,但对于值可能被程序外部因素修改的变量(如硬件寄存器、信号处理函数修改的标志),优化可能导致严重问题——程序读取到的是寄存器中的“过期值”,而非内存中的最新值。 volatile的核心作

By Ne0inhk
【C++STL】告别 C 字符串噩梦!C++ string 类从入门到精通,含实战避坑指南

【C++STL】告别 C 字符串噩梦!C++ string 类从入门到精通,含实战避坑指南

🔥个人主页:爱和冰阔乐 📚专栏传送门:《数据结构与算法》 、C++ 🐶学习方向:C++方向学习爱好者 ⭐人生格言:得知坦然 ,失之淡然 文章目录 * 前言:认识 STL——C++ 标准库的基石 * 一、先搞懂:为什么要抛弃 C 字符串用 string? * 1.C字符串的三大痛点 * 2.现实需求 * 二、C++11 小助手:auto 与范围 for,用 string 更顺手 * 1. auto:让编译器帮你推类型 * 2.范围 for:遍历 string / 数组 * 三、string 类核心接口全解析(必学!

By Ne0inhk