开发者工具
我之前用的是Codegeex4模型,现在写一款DeepSeek Coder 本地模型
DeepSeek为什么火,我在网上看到一个段子下棋DeepSeek用兵法赢了ChatGpt,而没有用技术赢,这就是AI的思维推理,深入理解孙子兵法,告诉他下棋玩法,告诉GPT你没有更新,GPT玩的是棋,DeepSeek玩的是GPT。
Code编码方面
我个人做了一些验证,不知道是否准确,如果10B以下模型CodeGeex4模型算是最优秀的,但是如果10B以上就会出现了差别,但是如果我们平常开发不会有差别,如果在算法上会有差异。
CodeGeeX4:
CodeGeeX4-ALL-9B,集代码补全和生成、代码问答、代码解释器、工具调用、联网搜索、项目级代码问答等所有能力于一体的代码大模型;
CodeGeeX4-ALL-9B 在 BigCodeBench 和 NaturalCodeBench等公开基准测试中取得了极具竞争力的表现。它是目前参数量少于100亿的最强代码生成模型,甚至超越了更大的通用模型,在推理速度和模型性能方面达到了最佳平衡。
DeepSeek-Coder-V2:
DeepSeek-Coder-V2 沿用 DeepSeek-V2 的模型结构,总参数 236B,激活 21B,在代码、数学的多个榜单上位居全球第二,介于最强闭源模型 GPT-4o 和 GPT-4-Turbo 之间。
DeepSeek Coder-V2
- 开发者工具
- 前言
- 一、环境准备
- 二、下载CodeGPT插件与安装 DeepSeek-Coder
- 1.在IDEA 插件市场安装AI驱动代码助手
- 2.配置 DeepSeek(在线)
- 在线的好处
- 在线的坏处
- 2.1在线配置DeepSeek
- IDEA中集成DeepSeek (AINS.html" title=jetbrains>jetbrains 产品同样支持)
- 3.配置 DeepSeek-CoderV2(离线)
- 离线好处
- 离线坏处
- IDEA中集成DeepSeek (AINS.html" title=jetbrains>jetbrains 产品同样支持)
- 3.1 离线配置DeepSeek
- DeepSeek配置手册
- 三、使用 DeepSeek 进行编程
- 获取思路和代码
- 代码补全应用
- 代码解释与问题解答
- 根据注释生成代码
- 总结
前言
DeepSeek Coder-V2 是基于 DeepSeek-V2 中间检查点进一步预训练的开源专家混合(MoE)代码语言模型,通过增加 6 万亿个标记的持续预训练,显著增强了编码和数学推理能力,同时保持通用语言任务性能。其支持 338 种编程语言,上下文长度扩展到 128K 标记,在代码生成、数学基准测试等方面表现出色,且在许可协议下公开发布,可用于研究和商业用途。
一、环境准备
IDEA版本版本>2022.2 其他AINS.html" title=jetbrains>jetbrains产品同样支持
推荐使用插件CodeGPT,CodeGPT是一个AI驱动的代码助手,旨在帮助开发者进行各种编程活动,它是GitHub Copilot、AI Assistant、Codiumate和其他JetBrains插件的强大替代品。安装之前确保你的 IDEA 处于 2022.x 及以上的较新版本。
高版本的 IDEA 不仅在功能上更加完善,而且在与 DeepSeek 的兼容性和稳定性方面也有更好的表现,能够为后续的集成工作提供坚实的基础。
具体的版本可以参考下插件信息:
CodeGPT -Plugin
二、下载CodeGPT插件与安装 DeepSeek-Coder
我这里使用的IntelliJ IDEA 2024.2.5版本,网上很多方法激活,这里就不讲解如何激活了,不过版本都类似,只讲解插件使用安装
AI_43">1.在IDEA 插件市场安装AI驱动代码助手
启动 IDEA 后,在菜单栏中找到 “File” 选项。
如果你使用的是 Windows 或 Linux 系统,点击 “Settings”;
设置窗口中,找到 “Plugins(插件)”,这里便是 IDEA 的插件管理中心。选中Marketplace后,在输入框输入 CodeGpt 选择 CodeGpt 最右侧会显示详细信息,点击 install 按钮后等待知行安装,最后点击确认。安装插件会RESTART IDEA,重新启动即可。
2.配置 DeepSeek(在线)
在线的好处
实时性高: 能够实时处理新数据,及时更新模型或输出结果,适用于对时效性要求高的场景,如实时代码生成、在线问答等。
数据更新快: 可以快速获取和利用最新的数据进行学习和训练,使模型能够跟上数据的动态变化,保持较好的性能和准确性。
无需本地计算资源: 用户无需在本地设备上安装和配置复杂的计算环境,只要有网络连接,就可以通过浏览器或其他在线平台使用模型,方便快捷。
在线的坏处
依赖网络连接: 如果网络不稳定或中断,将无法正常使用模型,影响工作效率和用户体验。
数据隐私问题: 在使用在线服务时,需要将数据上传到服务器,可能会存在数据泄露的风险,对于一些敏感数据来说这是不可接受的。
响应速度受限: 由于需要通过网络传输数据,可能会受到网络带宽和延迟的影响,导致响应速度不如离线使用快。
成本较高: 在线使用可能需要支付一定的费用,如云计算服务提供商的计费、API调用费用等,对于长期大量使用的用户来说,成本可能是一个考虑因素。
2.1在线配置DeepSeek
创建并设置 API Key
在 DeepSeek官网找到 API开放平台,点击进去。
在开放平台找到 API keys 菜单,这里可以创建API key,切记一定生成保存下来。
AINS.html" title=jetbrains>jetbrains__72">IDEA中集成DeepSeek (AINS.html" title=jetbrains>jetbrains 产品同样支持)
在IDEA中找到已经安装的插件 CodeGpt 工具的设置,然后依次找到 Custom OpenAI 的设置。这里有三部分需要配置
勾选默认配置
第一个是选择模版,输入API KEY;第二个是配置聊天模型;第三个是配置推理模型。
第一个 配置API KEY,这个API KEY就是在 DeepSeek官网 创建的API KEY,可以直接拷贝到这里粘贴即可。
第二个是对话模型,这里需要配置两处:
在URL处粘贴URL:https://api.deepseek.com/chat/completions
将请求的模型在body中修改为:deepseek-chat
第三个是推理模型,这里也需要配置三处
选择FIM template 选择为 DeepSeek Coder 。
在URL处粘贴URL:https://api.deepseek.com/chat/completions
将请求的模型修改为:deepseek-reasoner
通过上述步骤,即可配置完成,配置完成后,点击应用和确认即可。
3.配置 DeepSeek-CoderV2(离线)
离线好处
数据隐私和安全: 所有数据都在本地进行处理,无需上传到云端,避免了数据泄露的风险,适合处理敏感信息和对数据隐私要求较高的场景。
响应速度快: 不需要等待网络传输,直接在本地设备上运行模型,响应速度更快,尤其适用于对实时性要求极高的应用,如实时代码补全等。
稳定性高: 不受网络波动的影响,不会因为网络故障而导致服务中断,保证了系统的稳定性和可靠性。
成本可控: 一旦在公司服务器部署完成,除了硬件设备的初始投资外,后续的使用成本相对较低,无需持续支付云服务等费用。
离线坏处
硬件要求高: 需要在服务器或者本地设备上安装和运行模型,对硬件的性能要求较高,如需要较大的内存、显存和处理器性能等,否则可能无法正常运行或性能不佳。
软件安装和维护麻烦: 需要手动安装和配置相关的软件环境,包括深度学习框架、依赖库等,对于非技术人员来说可能有一定的难度。并且随着技术的更新,还需要不断维护和更新软件,以确保其兼容性和安全性。
数据更新不及时: 无法实时获取新的数据进行学习和训练,模型的知识和能力可能会逐渐落后于在线模型。如果需要更新数据,需要手动下载和重新训练模型,过程较为繁琐。
AINS.html" title=jetbrains>jetbrains__112">IDEA中集成DeepSeek (AINS.html" title=jetbrains>jetbrains 产品同样支持)
3.1 离线配置DeepSeek
我使用的Ollama部署的deepseek-coder-v2:latest模型,我前面帖子也讲了如何安装ollama
以及如何下载模型参考:
私有化部署大模型最佳解决方案 Ollama (8B)模型
步骤都是一样的只是将模型替换掉为deepseek-coder-v2:latest目前最新的为r1,我使用着推理有点问题,应该是插件问题,本地模型也可以采用在线配置一样可以使用
勾选配置为默认Ollama
我部署在服务器上的需要配置2步
这里是Ollama的连接,注意在服务器Ollama开启跨域访问 "Environment="OLLAMA_
ORIGINS=*
Base host:http://127.0.0.1:11434
点击刷新模型获取模型列表
勾选自己下载的模型 deepseek-coder-v2
通过上述步骤,即可配置完成,配置完成后,点击应用和确认即可。
我们可以通过对话框,选中文件等操作询问AI,也可以编写注释,代码自动生成等操作
DeepSeek配置手册
如果还不明白如何配置,可以参考下官方提供的配置策略:
DeepSeek官方文档
CodeGPT官方文档
三、使用 DeepSeek 进行编程
获取思路和代码
找到 CodeGpt组件,找到对话框,默认为设置的默认配置,可以进行修改配置,然后输入内容即可对话。
例如 给出口令:帮我编写一个二分查找算法
给出代码如下:
java">package code;public class TestAI {public static void main(String[] args) {int[] arr = {2, 5, 8, 12, 16, 23, 38, 45, 57, 69};int target = 23;int result = binarySearch(arr, target);System.out.println("Index of " + target + " is: " + result);}private static int binarySearch(int[] arr, int target) {int left = 0;int right = arr.length - 1;while (left <= right) {int mid = left + (right - left) / 2;if (arr[mid] == target) {return mid;} else if (arr[mid] < target) {left = mid + 1;} else {right = mid - 1;}}return -1; // Target not found}
}
代码补全应用
在编写代码时,当你输入部分代码后,只需要回车(Enter),DeepSeek 就会迅速分析代码上下文,智能补全后续代码。这一功能大大节省了代码编写时间,让你的编程效率直线上升。
代码解释与问题解答
对于一些复杂的代码段,理解起来可能会有些困难。这时,你只需选中代码,然后右键点击,选择 “CodeGPT”,DeepSeek 便会为你详细解读代码的功能和逻辑。有了它的帮助,代码维护和调试变得更加轻松。
在编程过程中,遇到问题是常有的事。当你遇到难题时,无需再四处查找资料,直接在代码编辑器中选中相关代码或描述问题,然后选择 “CodeGPT: Ask Question”,DeepSeek 会根据你的问题给出针对性的解决方案和建议。它就像一位随时在线的编程专家,为你排忧解难。
根据注释生成代码
例如我给出
//编写一个冒泡排序 回车(Enter)
代码生成如下
按TAB键一键采纳,也可以按方向键进行逐行采纳
总结
Idea+deepseek在线与离线安装部署使用的实践,我深刻体会到了两者各有优劣。在线使用最大的优势在于其便捷性,无需复杂的本地配置,只要有网络连接,就能随时随地使用模型,并且可以实时获取模型的更新,确保处理结果紧跟数据动态变化。然而,也正是对网络的依赖,使得在网络不稳定时会极大地影响使用体验,且存在数据隐私泄露的隐患,这让我在使用敏感数据时有所顾虑。
离线使用则给我带来了更高的数据安全性和稳定性。所有操作都在本地完成,不担心数据上传导致的隐私问题,同时处理速度也不受网络波动影响,能够快速得到响应。但离线使用的前期准备工作较为繁琐,对硬件要求较高,需要手动安装众多依赖库和配置环境变量,稍有不慎就可能导致模型无法正常运行。而且一旦离线使用,数据的更新变得困难,难以让模型及时适应新的数据分布。
在线与离线使用并非相互排斥,而是应根据具体的需求和场景来选择。如果注重便捷性和实时性,且对数据隐私要求不高,在线使用是个不错的选择;但如果处理敏感数据或对稳定性、响应速度有较高要求,那么离线使用更值得考虑。同时,这也促使我在未来的使用中,会更加细致地评估需求,权衡利弊,以实现效益的最大化。