【llm/ollama/qwen】在本地部署qwen2.5-coder并在vscode中集成使用代码提示功能

说在前面

  • 操作系统:windows11
  • ollama版本:0.5.4
  • vscode版本:1.96.2
  • continue插件版本:0.8.66

ollama安装

  • 访问官网,点击下载安装即可
    在这里插入图片描述
  • 默认装在了C盘,比较蛋疼;但是可以指定路径安装:
    OllamaSetup.exe /DIR="d:\some\location"
    
    在这里插入图片描述
    在这里插入图片描述
  • 安装后确定安装完成
    D:\ollama>ollama -v
    ollama version is 0.5.4
    

安装qwen2.5-coder

  • 在官网搜索qwen2.5-coder
    在这里插入图片描述
  • 复制安装命令
    D:\ollama>ollama run qwen2.5-coder
    pulling manifest
    pulling 60e05f210007...   2% ▕                                                        ▏  79 MB/4.7 GB  9.9 MB/s   7m43s 
    
  • 安装完之后就可以进行对话了
    >>> 帮我用golang写一个斐波那契数列当然可以!以下是一个用Go语言编写的生成斐波那契数列的示例代码:```go
    package mainimport ("fmt"
    )// Fibonacci 计算斐波那契数列的第n个数
    func Fibonacci(n int) int {if n <= 1 {return n}a, b := 0, 1for i := 2; i <= n; i++ {a, b = b, a+b}return b
    }// PrintFibonacci 打印斐波那契数列的前n个数
    func PrintFibonacci(n int) {for i := 0; i < n; i++ {fmt.Println(Fibonacci(i))}
    }func main() {n := 10 // 你可以更改这个值来打印不同长度的斐波那契数列PrintFibonacci(n)
    }
    ```这个程序定义了两个函数:
    1. `Fibonacci` 函数用于计算斐波那契数列的第n个数。
    2. `PrintFibonacci` 函数用于打印斐波那契数列的前n个数。在 `main` 函数中,我们调用 `PrintFibonacci(n)` 来打印前10个斐波那契数列的数。你可以根据需要更改 `n` 的值来打印不同长
    度的斐波那契数列。>>> Send a message (/? for help)
    
  • 运行后窗口不要关闭

安装continue插件

  • 在vscode的插件管理窗口搜索continue
    在这里插入图片描述
  • 点击安装即可
  • 选择左侧插件按钮,并选择Add Chat Model
    在这里插入图片描述
  • 选择Ollama,点击Connect后看到Autodetect - qwen2.5-coder
    在这里插入图片描述
  • 然后就可以进行对话了
    在这里插入图片描述

配置continue自动补全

  • 点击vscode右下角的continue按钮
    在这里插入图片描述
  • 选择Configure autocomplete options
    在这里插入图片描述
  • 将配置文件修改为以下内容:
    {"models": [{"model": "AUTODETECT","title": "Autodetect","provider": "ollama"}],"tabAutocompleteModel": {"title": "qwen","provider": "ollama","model": "qwen2.5-coder:latest","apiKey": ""},"contextProviders": [{"name": "code","params": {}},{"name": "docs","params": {}},{"name": "diff","params": {}},{"name": "terminal","params": {}},{"name": "problems","params": {}},{"name": "folder","params": {}},{"name": "codebase","params": {}}],"slashCommands": [{"name": "share","description": "Export the current chat session to markdown"},{"name": "cmd","description": "Generate a shell command"},{"name": "commit","description": "Generate a git commit message"}]
    }
    
  • 然后就可以愉快的自动补全了
    在这里插入图片描述

离线环境下部署大模型

  • 以上为在有网络的环境下进行安装的过程,在内网环境下也是类似的,ollamacontinue插件的安装都比较简单,不再赘述

  • 主要说下模型的部署

  • ollama目前支持两种类型的模型导入:

    • Build from a Safetensors model
      FROM <model directory>
      
      The model directory should contain the Safetensors weights for a supported architecture.
      Currently supported model architectures:
      • Llama (including Llama 2, Llama 3, Llama 3.1, and Llama 3.2)
      • Mistral (including Mistral 1, Mistral 2, and Mixtral)
      • Gemma (including Gemma 1 and Gemma 2)
      • Phi3
    • Build from a GGUF file
      FROM ./ollama-model.gguf
      
      The GGUF file location should be specified as an absolute path or relative to the Modelfile location.
  • 根据文档说明,qwen2.5-coder只能使用GGUF文件来导入

  • 从huggingface或者魔塔下载

  • 这里我选择7B大小的模型,Qwen2.5-Coder-7B-Instruct-GGUF
    在这里插入图片描述

  • 点击模型文件,选择下图红框中的下载即可
    在这里插入图片描述

  • 然后在我们的ollama窗口执行/show modelfile命令,
    在这里插入图片描述

  • 将输出内容保存为文件Modelfile,并修改FROM后面的内容,例如:

    # Modelfile generated by "ollama show"
    # To build a new Modelfile based on this, replace FROM with:
    # FROM qwen2.5-coder:latestFROM ./qwen2.5-coder-7b-instruct-q6_k.gguf
    TEMPLATE """{{- if .Suffix }}<|fim_prefix|>{{ .Prompt }}<|fim_suffix|>{{ .Suffix }}<|fim_middle|>
    {{- else if .Messages }}
    {{- if or .System .Tools }}<|im_start|>system
    {{- if .System }}
    {{ .System }}
    {{- end }}
    {{- if .Tools }}# ToolsYou may call one or more functions to assist with the user query.You are provided with function signatures within <tools></tools> XML tags:
    <tools>
    {{- range .Tools }}
    {"type": "function", "function": {{ .Function }}}
    {{- end }}
    </tools>For each function call, return a json object with function name and arguments within <tool_call></tool_call> XML tags:
    <tool_call>
    {"name": <function-name>, "arguments": <args-json-object>}
    </tool_call>
    {{- end }}<|im_end|>
    {{ end }}
    {{- range $i, $_ := .Messages }}
    {{- $last := eq (len (slice $.Messages $i)) 1 -}}
    {{- if eq .Role "user" }}<|im_start|>user
    {{ .Content }}<|im_end|>
    {{ else if eq .Role "assistant" }}<|im_start|>assistant
    {{ if .Content }}{{ .Content }}
    {{- else if .ToolCalls }}<tool_call>
    {{ range .ToolCalls }}{"name": "{{ .Function.Name }}", "arguments": {{ .Function.Arguments }}}
    {{ end }}</tool_call>
    {{- end }}{{ if not $last }}<|im_end|>
    {{ end }}
    {{- else if eq .Role "tool" }}<|im_start|>user
    <tool_response>
    {{ .Content }}
    </tool_response><|im_end|>
    {{ end }}
    {{- if and (ne .Role "assistant") $last }}<|im_start|>assistant
    {{ end }}
    {{- end }}
    {{- else }}
    {{- if .System }}<|im_start|>system
    {{ .System }}<|im_end|>
    {{ end }}{{ if .Prompt }}<|im_start|>user
    {{ .Prompt }}<|im_end|>
    {{ end }}<|im_start|>assistant
    {{ end }}{{ .Response }}{{ if .Response }}<|im_end|>{{ end }}"""
    SYSTEM You are Qwen, created by Alibaba Cloud. You are a helpful assistant.
    
  • 将该文件与下载好的GGUF文件放到同一个文件夹
    在这里插入图片描述

  • 然后运行ollama命令

    ollama create qwen2.5-coder -f ./Modelfile
    
  • 然后就安装完成了

问题

  • 在离线安装好模型之后,使用continue时会出现以下错误:
    Error calling Ollama /api/generate endpoint: Error: Error: HTTP 404 Not Found
    
    找了半天资料后,将配置文件中"model": "AUTODETECT",改成对应的模型名后就正常了
    {"models": [{"model": "AUTODETECT","title": "Autodetect","provider": "ollama"}],"tabAutocompleteModel": {"title": "qwen","provider": "ollama","model": "qwen2.5-coder:latest","apiKey": ""},
    

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.rhkb.cn/news/505394.html

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

力扣刷题:二叉树OJ篇(上)

大家好&#xff0c;这里是小编的博客频道 小编的博客&#xff1a;就爱学编程 很高兴在CSDN这个大家庭与大家相识&#xff0c;希望能在这里与大家共同进步&#xff0c;共同收获更好的自己&#xff01;&#xff01;&#xff01; 目录 1.单值二叉树&#xff08;1&#xff09;题目描…

C++实现图书管理系统(Qt C++ GUI界面版)

前瞻 本项目基于【C】图书管理系统(完整版) 图书管理系统功能概览&#xff1a; 登录&#xff0c;注册学生,老师借书&#xff0c;查看自己当前借书情况&#xff0c;还书。管理员增加书&#xff0c;查看当前借阅情况&#xff0c;查看当前所有借阅人&#xff0c;图书信息。 效果…

云计算基础,虚拟化原理

文章目录 一、虚拟化1.1 什么是虚拟化1.2 虚拟化类型 二 、存储虚拟化2.1 存储指标2.2 存储类型2.3 存储协议2.4 RAID 三、内存 i/O虚拟化3.1 内存虚拟化基本概念地址空间转换原理内存共享与隔离原理 3.2 I/O 虚拟化基本概念模拟&#xff08;Emulation&#xff09;方式半虚拟化…

机器学习基础-概率图模型

&#xff08;一阶&#xff09;马尔科夫模型的基本概念 状态、状态转换概率、初始概率 状态转移矩阵的基本概念 隐马尔可夫模型&#xff08;HMM&#xff09;的基本概念 条件随机场&#xff08;CRF&#xff09;的基本概念 实际应用中的马尔科夫性 自然语言处理&#xff1a; 在词性…

设计模式学习[15]---适配器模式

文章目录 前言1.引例2.适配器模式2.1 对象适配器2.2 类适配器 总结 前言 这个模式其实在日常生活中有点常见&#xff0c;比如我们的手机取消了 3.5 m m 3.5mm 3.5mm的接口&#xff0c;只留下了一个 T y p e − C Type-C Type−C的接口&#xff0c;但是我现在有一个 3.5 m m 3.…

【简博士统计学习方法】第1章:2. 统计学习方法的基本分类

2. 统计学习方法的基本分类 监督学习所学习的数据都是已经标注过的&#xff1b;无监督学习所学习的数据没有标注信息&#xff1b;半监督学习只含有少量标注&#xff0c;大多数没有标注&#xff08;利用已标注的数据来学习去标注未标注的数据&#xff09; 2.1 监督学习 图里的…

Unity3d 基于Barracuda推理库和YOLO算法实现对象检测功能

前言 近年来&#xff0c;随着AI技术的发展&#xff0c;在游戏引擎中实现和运行机器学习模型的需求也逐渐显现。Unity3d引擎官方推出深度学习推理框架–Barracuda &#xff0c;旨在帮助开发者在Unity3d中轻松地实现和运行机器学习模型&#xff0c;它的主要功能是支持在 Unity 中…

IEC61850遥控-增强安全选控是什么?

摘要&#xff1a;遥控服务是IEC61850协议中非常重要的一项服务&#xff0c;其通常会被应用在电源开关、指示灯、档位调节等器件的操作。 遥控是一类比较特殊的操作&#xff0c;其通过远程方式操作指定的设备器件&#xff0c;在一些重要的场景中需要有严谨的机制来进行约束&…

[免费]微信小程序(高校就业)招聘系统(Springboot后端+Vue管理端)【论文+源码+SQL脚本】

大家好&#xff0c;我是java1234_小锋老师&#xff0c;看到一个不错的微信小程序(高校就业)招聘系统(Springboot后端Vue管理端)&#xff0c;分享下哈。 项目视频演示 【免费】微信小程序(高校就业)招聘系统(Springboot后端Vue管理端) Java毕业设计_哔哩哔哩_bilibili 项目介绍…

基于vue的商城小程序的毕业设计与实现(源码及报告)

环境搭建 ☞☞☞ ​​​Vue入手篇(一)&#xff0c;防踩雷(全网最详细教程)_vue force-CSDN博客 目录 一、功能介绍 二、登录注册功能 三、首页 四、项目截图 五、源码获取 一、功能介绍 用户信息展示&#xff1a;页面顶部设有用户头像和昵称展示区&#xff0c;方便用户识别…

IDEA配置maven和git并如何使用maven打包和git推送到gitlab

首先找到设置 在里面输入maven然后找到点击 然后点击右边两个选项 路径选择下载的maven目录下的settings文件和新建的repository文件夹 点击apply应用 然后在搜索框里搜git点击进去 此路径为git的exe执行文件所在目录&#xff0c;选好之后点击test测试下方出现git版本号表…

04、Redis深入数据结构

一、简单动态字符串SDS 无论是Redis中的key还是value&#xff0c;其基础数据类型都是字符串。如&#xff0c;Hash型value的field与value的类型&#xff0c;List型&#xff0c;Set型&#xff0c;ZSet型value的元素的类型等都是字符串。redis没有使用传统C中的字符串而是自定义了…

Python教程丨Python环境搭建 (含IDE安装)——保姆级教程!

工欲善其事&#xff0c;必先利其器。 学习Python的第一步不要再加收藏夹了&#xff01;提高执行力&#xff0c;先给自己装好Python。 1. Python 下载 1.1. 下载安装包 既然要下载Python&#xff0c;我们直接进入python官网下载即可 Python 官网&#xff1a;Welcome to Pyt…

springmvc前端传参,后端接收

RequestMapping注解 Target({ElementType.METHOD, ElementType.TYPE}) Retention(RetentionPolicy.RUNTIME) Documented Mapping public interface RequestMapping {String name() default "";AliasFor("path")String[] value() default {};AliasFor(&quo…

数据库环境安装(day1)

网址&#xff1a;MySQL 下载&#xff08;环境准备&#xff09;&#xff1a; &#xff08;2-5点击此处&#xff0c;然后选择合适的版本&#xff09; 1.linux在线YUM仓库 下载/安装: wget https://repo.mysql.com//mysql84-community-release-el9-1.noarch.rpm rpm -i https://r…

【MySQL系列文章】Linux环境下安装部署MySQL

前言 本次安装部署主要针对Linux环境进行安装部署操作,系统位数64 getconf LONG_BIT 64MySQL版本&#xff1a;v5.7.38 一、下载MySQL MySQL下载地址&#xff1a;MySQL :: Download MySQL Community Server (Archived Versions) 二、上传MySQL压缩包到Linuxx环境&#xff0c…

eNSP之家----ACL实验入门实例详解(Access Control List访问控制列表)(重要重要重要的事说三遍)

ACL实验&#xff08;Access Control List访问控制列表&#xff09;是一种基于包过滤的访问控制技术&#xff0c;它可以根据设定的条件对接口上的数据包进行过滤&#xff0c;允许其通过或丢弃。访问控制列表被广泛地应用于路由器和三层交换机。 准备工作 在eNSP里面部署设备&a…

web-app uniapp监测屏幕大小的变化对数组一行展示数据作相应处理

web-app uniapp监测屏幕大小的变化对数组一行展示数据作相应处理 1.uni.getSystemInfoSync().screenWidth; 获取屏幕宽度 2.uni.onWindowResize&#xff08;&#xff09; 实时监测屏幕宽度变化 3.根据宽度的大小拿到每行要展示的数量itemsPerRow 4.为了确保样式能够根据 items…

《零基础Go语言算法实战》【题目 1-14】字符串的替换

《零基础Go语言算法实战》 【题目 1-14】字符串的替换 请编写一个函数&#xff0c;将字符串中的空格全部替换为“%20”。假定该字符串有足够的空间存 放新增的字符&#xff0c;并且知道字符串的真实长度&#xff08;≤ 1000&#xff09;&#xff0c;同时保证字符串由大小写的…

WebSocket 测试入门篇

Websocket 是一种用于 H5 浏览器的实时通讯协议&#xff0c;可以做到数据的实时推送&#xff0c;可适用于广泛的工作环境&#xff0c;例如客服系统、物联网数据传输系统&#xff0c; 基础介绍 我们平常接触最多的是 http 协议的接口&#xff0c;http 协议是请求与响应的模式&…