教你如何用Ollama + CodeGPT+ VSCode 构建私有环境的开发助手类似copilot

看到CodeGPT支持ollama,于是就想尝试用Ollama + CodeGPT构建私有环境的开发助手。先在VS Code上安装CodeGPT,发现果然有ollama选项。


添加图片注释,不超过 140 字(可选)


添加图片注释,不超过 140 字(可选)

可是看了文档:Ollama | CodeGPT,又亲自测试了发现只能调用local的ollama。支持的模型包括:

Ollama Models available in Code GPT

  • gemma.7b

  • gemma:2b

  • llama2

  • codellama

  • command-r

  • phi

  • mistral

  • mixtral

  • deepseek-coder

  • starcoder2

  • dolphinecoder

  • dolphin-mixtral

  • starling-lm

  • llama2-uncensored

尝试ollama服务

因为我本机GPU是MX250,性能很差,而且我已经在GPU服务器上部署了ollama,具体参考:

北方的郎:Linux上部署Ollama,启动Mistral-7B及Gemma-7B服务,测试效果

所以希望能用ollama服务,于是我又看了一下其他链接,想看看能否用仿openai服务进行接入,可是发现其他大部分的选项都只有key的输入,url都是默认的。不过有个custom选项可以输入url


添加图片注释,不超过 140 字(可选)

不过只有url,而不论ollama、vLLM都需要输入model,试了一下把模型放在url里面,用curl试的时候就报错。于是想到了用代理。用python+flask写了一个简单的程序:

from flask import Flask, request, jsonifyimport jsonimport requests

app = Flask(__name__)@app.route('/proxy/<model>', methods=['POST'])def proxy(model):
    url = "http://127.0.0.1:11434"
    message = request.json.get('message')
    print(message)
    print(model)    if message:
        ollama_url = f"{url}/api/chat"
        print(ollama_url)
        payload = {            "model": model,            "messages": [{"role": "user", "content": message}]
        }
        response = requests.post(ollama_url, json=payload)
        print(response)
        response_content = ""
        for line in response.iter_lines():            if line:
                response_content += json.loads(line)["message"]["content"]
        print(response_content)        #return jsonify({"choices": [{"text": response_content}]})
        return jsonify({"choices": [{"message": {"content": response_content}}]})    return jsonify({"error": "Missing message parameter"}), 400if __name__ == '__main__':
    app.run(debug=True, port=5050, host='0.0.0.0')

用程序调用:

import requestsimport jsondef send_message_to_ollama(message, port=11434):
    url = "http://172.30.0.99:5050/proxy/codegemma:7b-instruct-q6_K"
    payload = {        "message": message
    }
    response = requests.post(url, json=payload)    return response

返回类似openai api的返回。可是用在CodeGPT上还是连接失败。


添加图片注释,不超过 140 字(可选)

暂时折腾到这了。先用gpt-3.5-turbo,后续再看怎么模拟服务。


添加图片注释,不超过 140 字(可选)

安装本机ollama+codellama

还是准备试一下本机ollama的效果,windows安装本机ollama直接下载安装包即可:


添加图片注释,不超过 140 字(可选)

地址:
https://github.com/ollama/ollama?tab=readme-ov-file, 下载的文件:


添加图片注释,不超过 140 字(可选)

安装后打开powershell,直接就可以运行ollama了,开始下载codellama。


添加图片注释,不超过 140 字(可选)

本机为Thinpad T490,用ollama跑7B, int4的codellama,肯定都是跑在CPU上的,正好看看ollama在CPU上的加速效果。下载完后,问了几个问题,说实话速度比想象得快:


添加图片注释,不超过 140 字(可选)

打开vs code,配置CodeGPT:


添加图片注释,不超过 140 字(可选)

测试效果:


添加图片注释,不超过 140 字(可选)

代码效果不错,就是速度还是稍微有点慢,不过也不是不可忍受。看了一下nvidia-smi:


添加图片注释,不超过 140 字(可选)

果然都是跑在了CPU上。不过我这MX250不是还有2G显存嘛。用起来。


添加图片注释,不超过 140 字(可选)

ollama run gemma:2b


添加图片注释,不超过 140 字(可选)

这速度就快多了,看了一下,的确跑在了GPU上


添加图片注释,不超过 140 字(可选)

设置CodeGPT:


添加图片注释,不超过 140 字(可选)

简单代码也能写一点:



分享一个国内免费使用GPT4.0的AI智能问答工具:智答专家。支持AI文本、作图、语音、Sora视频。无需魔法,亲测有效,点击访问

标签:Ollama,CodeGPT,copilot
来源:智答专家
发布时间:2024-04-26 10:42