想在自己的电脑上跑一个能写代码的大模型,又不想把代码上传到别人的服务器,Ollama加CodeGeeX4是目前门槛最低的组合之一。Ollama负责把模型的下载、加载、推理这些脏活累活全部封装起来,一条命令就能启动服务;CodeGeeX4则是智谱推出的开源代码模型,在HumanEval等代码基准测试里表现接近部分商业闭源模型,支持中英文提问,对Python、Java、JavaScript、C++等主流语言的补全和生成效果都不错。本文把从零开始到真正用起来写代码的完整流程整理一遍,顺带把容易踩的坑也说明白。

一、Ollama和CodeGeeX4分别是什么,为什么要搭配使用
先厘清一个容易混淆的概念:Ollama不是模型,而是一个本地大模型运行框架。它的工作方式类似于Docker管理容器,把模型的权重文件、量化版本、推理参数统一管理起来。你在终端里输入ollama run xxx,它就会自动检查本地是否已有这个模型,没有就去仓库拉取,有就直接加载进内存或显存开始对话。
CodeGeeX4是智谱AI开源的代码生成模型系列,基于GLM架构训练,全称是CodeGeeX4-ALL-9B。它的参数量是9B级别,提供了Int4量化版本,量化后大约5.5GB左右,这意味着一台16GB内存的普通笔记本,即使没有独立显卡,也能通过CPU推理跑起来,只是速度会慢一些。如果有8GB显存以上的N卡,体验会好很多。
两者搭配的核心价值在于:Ollama的模型仓库里已经收录了codegeex4的量化版本,不需要自己去找GGUF文件、不需要手动配置llama.cpp的参数,一条命令就能完成从下载到运行的整个过程。对于不熟悉编译环境的开发者来说,这基本是最省事的路径。
二、安装Ollama并拉取CodeGeeX4模型
Ollama的安装方式因系统而异。Windows和macOS用户直接去官网下载安装包,双击安装即可,安装完成后系统托盘会出现一个羊驼图标,服务默认监听在127.0.0.1的11434端口。Linux用户用官方提供的一键脚本更方便,在终端执行下面这条命令:
# Linux 一键安装脚本 curl -fsSL https://ollama.com/install.sh | sh # 安装完成后验证版本 ollama --version
安装好之后,接下来拉取CodeGeeX4模型并启动对话:
# 拉取并直接运行 codegeex4 模型(默认为量化版本) ollama run codegeex4 # 首次运行会自动下载模型,下载完成后进入交互式对话 # 退出对话输入 /bye,查看已下载模型用 ollama list
第一次下载的速度取决于网络情况,模型文件在国内的网络环境下可能需要一些耐心。如果下载中断,重新执行同一条命令会断点续传,不用手动清理。下载完成后,终端会直接进入对话模式,你可以试着用中文提问,比如让它写一个快速排序的Python实现,模型会流式输出结果。
几个常用的管理命令值得记一下:ollama list查看本地已有模型,ollama rm 模型名删除模型释放磁盘,ollama ps查看当前正在运行的模型和占用的内存,ollama stop 模型名卸载模型。如果想让服务开机自启或者供局域网其他机器访问,可以通过环境变量OLLAMA_HOST把监听地址改成0.0.0.0。
三、通过API调用,把CodeGeeX4接到自己的工具链里
命令行对话只是验证模型能不能跑,真正的价值在于把Ollama提供的HTTP接口接到编辑器、脚本或者自己的应用里。Ollama暴露了一个兼容OpenAI风格的接口,任何支持自定义API地址的工具几乎都能直接对接。默认接口地址是http://127.0.0.1:11434。
用curl快速测试一下接口是否正常:
curl http://127.0.0.1:11434/api/chat -d '{
"model": "codegeex4",
"messages": [
{
"role": "user",
"content": "用Python写一个函数,判断一个字符串是否是回文,并给出测试用例"
}
],
"stream": false
}'如果用Python写脚本调用,requests库就够了,下面是一个简单的封装示例:
import requests
def ask_codegeex(prompt: str) -> str:
"""调用本地 Ollama 服务,向 CodeGeeX4 提问并返回回答"""
url = "http://127.0.0.1:11434/api/chat"
payload = {
"model": "codegeex4",
"messages": [{"role": "user", "content": prompt}],
"stream": False
}
resp = requests.post(url, json=payload, timeout=300)
resp.raise_for_status()
return resp.json()["message"]["content"]
if __name__ == "__main__":
answer = ask_codegeex("写一段JavaScript代码,实现数组去重并保持原顺序")
print(answer)注意超时时间要给足。本地推理尤其是纯CPU环境下,生成一段较长的代码可能需要一到两分钟,把timeout设得太短会导致脚本频繁报错。另外,把stream设为True可以做流式输出,配合逐字打印能明显改善交互体验,用户不用干等完整结果。
四、常见问题与性能调优
第一个常见问题是显存或内存不足。CodeGeeX4量化版需要大约6GB的空间,如果机器只有8GB内存,加上操作系统本身的开销,很容易触发交换分区导致速度骤降。判断方法是观察ollama ps的输出,如果模型加载后推理极慢,大概率是在用交换分区。解决办法要么换更小的模型过渡,要么关闭一些吃内存的应用。N卡用户可以在BIOS里确认显存分配是否正常,Windows笔记本则要注意混合显卡模式下程序是否真的跑在独显上。
第二个问题是中文回答效果不稳定。CodeGeeX4本身支持中文,但代码模型在长篇闲聊上天然弱于通用对话模型,如果发现它对非编程类问题答非所问,属于正常现象,不要误以为是安装出了问题。反过来,涉及代码补全、函数生成、单元测试编写、代码解释这类任务时,提问越具体越好,把输入输出的例子直接写进提示词里,生成质量会明显提升。
第三是服务无法被其他设备访问的情况。默认配置下Ollama只监听本机回环地址,局域网里的其他机器调用会直接连接失败。以Linux为例,需要用systemd编辑服务配置:
# 编辑服务配置 sudo systemctl edit ollama.service # 在编辑器中加入两行 [Service] Environment="OLLAMA_HOST=0.0.0.0:11434" # 保存后重载并重启服务 sudo systemctl daemon-reload sudo systemctl restart ollama
最后提醒一点磁盘管理。Ollama下载的模型默认存放在用户目录下的隐藏文件夹里,Linux路径是~/.ollama/models,Windows则是C:\Users\用户名\.ollama\models。模型文件动辄几个GB,如果系统盘空间紧张,可以通过环境变量OLLAMA_MODELS指定新的存放路径,比如指向一块大容量数据盘,路径格式类似D:\ollama\models,注意Windows下盘符后必须紧跟反斜杠。整体来说,跑通这套环境之后,你就拥有了一个完全离线、数据不出本机的代码助手,无论是日常写代码还是做原型验证都够用了。