Ollama 指南
Ollama 是一个在本地运行大型语言模型的强大工具。本指南解释如何将 Ollama 与 MyDeskBot 集成,以利用本地 AI 模型进行开发辅助。
什么是 Ollama?
Ollama 是一个在本地机器上轻松运行大型语言模型的工具。将 Ollama 与 MyDeskBot 一起使用的优势包括:
- 隐私:将您的代码和数据保留在本地
- 无需互联网:离线工作
- 成本效益:无 API 费用
- 可定制:运行任何兼容的模型
- 快速:本地模型延迟低
安装 Ollama
macOS
使用 Homebrew 安装:
bash
brew install ollama或从 ollama.ai 下载:
bash
curl -fsSL https://ollama.ai/install.sh | shWindows
从 ollama.ai 下载 Windows 安装程序并运行。
Linux
使用 curl 安装:
bash
curl -fsSL https://ollama.ai/install.sh | sh或使用包管理器:
bash
# Ubuntu/Debian
sudo apt install ollama
# Fedora
sudo dnf install ollama
# CentOS/RHEL
sudo yum install ollama启动 Ollama
运行服务
启动 Ollama 服务:
bash
# 启动 Ollama 守护进程
ollama serve
# 或在后台运行
ollama serve &
# 检查是否正在运行
ollama list系统启动
启用 Ollama 自动启动:
bash
# macOS(使用 Homebrew)
brew services start ollama
# Linux(systemd)
sudo systemctl enable ollama
sudo systemctl start ollama流行模型
专注于代码的模型
下载针对编码优化的模型:
bash
# CodeLlama(Meta 的编码模型)
ollama pull codellama:7b
ollama pull codellama:13b
ollama pull codellama:34b
# 带有 Python 指令调优的 CodeLlama
ollama pull codellama:7b-python
# Llama 3(具有良好编码能力的通用模型)
ollama pull llama3:8b
ollama pull llama3:70b
# Mistral(高效且强大)
ollama pull mistral:7b
ollama pull mixtral:8x7b通用模型
其他有用的模型:
bash
# Phi-3(Microsoft 的紧凑模型)
ollama pull phi3:3.8b
# Gemma(Google 的模型)
ollama pull gemma:2b
ollama pull gemma:7b
# Neural Chat(Intel 的模型)
ollama pull neural-chat:7b配置 MyDeskBot 使用 Ollama
基本配置
配置 MyDeskBot 使用 Ollama 模型:
yaml
# .mydeskbot/config.yaml
models:
- name: "local-coding"
provider: "ollama"
model: "codellama:7b"
baseURL: "http://localhost:11434"
role: "chat"
- name: "local-fast"
provider: "ollama"
model: "mistral:7b"
baseURL: "http://localhost:11434"
role: "autocomplete"高级配置
微调 Ollama 模型设置:
yaml
models:
- name: "local-coding-advanced"
provider: "ollama"
model: "codellama:13b"
baseURL: "http://localhost:11434"
role: "chat"
# 模型参数
temperature: 0.2 # 更低的值表示更确定的输出
maxTokens: 2048
topP: 0.9
frequencyPenalty: 0.1
presencePenalty: 0.1
# Ollama 特定选项
options:
num_ctx: 4096 # 上下文窗口
num_predict: 512 # 预测的最大令牌数
repeat_last_n: 64 # 回溯多远查找重复
repeat_penalty: 1.1 # 重复的惩罚
top_k: 40 # 限制为前 K 个选择
tfs_z: 1.0 # 尾部自由采样
mirostat: 0 # Mirostat 采样(0=禁用,1=MLE,2=Mirosample)
mirostat_tau: 5.0 # Mirostat tau
mirostat_eta: 0.1 # Mirostat eta多模型设置
为不同任务配置多个 Ollama 模型:
yaml
models:
# 快速自动完成模型
- name: "ollama-autocomplete"
provider: "ollama"
model: "mistral:7b"
baseURL: "http://localhost:11434"
role: "autocomplete"
temperature: 0.1
# 强大的编码模型
- name: "ollama-coding"
provider: "ollama"
model: "codellama:13b"
baseURL: "http://localhost:11434"
role: "chat"
temperature: 0.3
# 通用模型
- name: "ollama-general"
provider: "ollama"
model: "llama3:8b"
baseURL: "http://localhost:11434"
role: "chat"
temperature: 0.7模型管理
列出模型
查看已下载的模型:
bash
# 列出所有模型
ollama list
# 显示模型详情
ollama show codellama:7b
# 以 JSON 格式显示模型信息
ollama list --json管理模型
下载、删除和管理模型:
bash
# 拉取模型
ollama pull llama3:8b
# 删除模型
ollama rm codellama:7b
# 复制模型
ollama cp llama3:8b my-custom-llama:latest
# 从 Modelfile 创建模型
ollama create my-model -f ./Modelfile模型信息
获取详细的模型信息:
bash
# 显示模型参数
ollama show llama3:8b --modelfile
# 显示许可证信息
ollama show llama3:8b --license性能优化
硬件加速
启用 GPU 加速以获得更好的性能:
bash
# 检查 GPU 支持
ollama list
# Ollama 自动使用可用的 GPU
# 对于 NVIDIA GPU,确保已安装 CUDA
# 对于 AMD GPU,确保已安装 ROCm
# 对于 Apple Silicon,自动使用 Metal资源管理
控制资源使用:
yaml
models:
- name: "resource-managed-model"
provider: "ollama"
model: "llama3:8b"
baseURL: "http://localhost:11434"
options:
num_thread: 8 # 限制 CPU 线程
num_gpu: 1 # 限制 GPU 层
num_keep: 4 # 在块之间保留的令牌数上下文管理
优化上下文窗口使用:
yaml
models:
- name: "context-optimized"
provider: "ollama"
model: "llama3:8b"
baseURL: "http://localhost:11434"
options:
num_ctx: 4096 # 上下文窗口大小
num_batch: 512 # 提示处理的批量大小自定义模型
创建 Modelfile
创建自定义模型配置:
dockerfile
# Modelfile
FROM llama3:8b
# 设置系统消息
SYSTEM """
You are a helpful AI coding assistant integrated with MyDeskBot.
Focus on providing accurate, secure, and efficient code solutions.
"""
# 添加自定义参数
PARAMETER temperature 0.3
PARAMETER repeat_penalty 1.1
# 添加模板以获得更好的格式化
TEMPLATE """
<|begin_of_sentence|>{{ if .System }}<|start_header_id|>system<|end_header_id|>
{{ .System }}<|eot_id|>{{ end }}{{ if .Prompt }}<|start_header_id|>user<|end_header_id|>
{{ .Prompt }}<|eot_id|>{{ end }}<|start_header_id|>assistant<|end_header_id|>
{{ .Response }}<|eot_id|><|end_of_sentence|>
"""构建自定义模型:
bash
ollama create my-custom-model -f ./Modelfile模型自定义
为特定任务自定义模型:
dockerfile
# CodingAssistant Modelfile
FROM codellama:7b
SYSTEM """
You are an expert coding assistant. Provide:
1. Working code examples
2. Explanations of code functionality
3. Best practices and security considerations
4. Error handling and edge cases
"""
PARAMETER temperature 0.2
PARAMETER repeat_penalty 1.2
PARAMETER top_k 50
PARAMETER top_p 0.9
TEMPLATE """
[INST] <<SYS>>
{{ .System }}
<</SYS>>
{{ .Prompt }} [/INST] {{ .Response }}
"""与开发工作流程集成
开发环境设置
配置您的开发环境:
yaml
# .mydeskbot/config.yaml
models:
- name: "dev-local"
provider: "ollama"
model: "codellama:7b"
baseURL: "http://localhost:11434"
role: "chat"
- name: "dev-fast"
provider: "ollama"
model: "mistral:7b"
baseURL: "http://localhost:11434"
role: "autocomplete"
preferences:
# 针对本地模型优化
maxContextTokens: 4096
requestTimeout: 60 # 本地模型可能需要更长时间项目特定配置
为特定项目定制模型:
yaml
# 项目特定的 .mydeskbot/config.yaml
models:
- name: "python-project"
provider: "ollama"
model: "codellama:7b-python"
baseURL: "http://localhost:11434"
role: "chat"
- name: "javascript-project"
provider: "ollama"
model: "llama3:8b"
baseURL: "http://localhost:11434"
role: "chat"故障排除
常见问题
连接问题
bash
# 检查 Ollama 是否正在运行
ps aux | grep ollama
# 检查 Ollama 服务状态
sudo systemctl status ollama # Linux
brew services list | grep ollama # macOS
# 测试连接
curl http://localhost:11434/api/tags模型加载问题
bash
# 检查可用模型
ollama list
# 重新拉取有问题的模型
ollama pull codellama:7b --insecure
# 检查模型完整性
ollama show codellama:7b --modelfile性能问题
bash
# 检查系统资源
htop # 或 macOS 上的活动监视器
# 限制 CPU 使用
OLLAMA_NUM_THREAD=4 ollama serve
# 检查 GPU 使用
nvidia-smi # 对于 NVIDIA GPU调试命令
bash
# 启用详细日志
OLLAMA_DEBUG=1 ollama serve
# 检查 Ollama 日志
journalctl -u ollama -f # Linux
tail -f /usr/local/var/log/ollama.log # macOS
# 直接测试模型
ollama run llama3:8b "你好,你好吗?"
# 获取模型信息
ollama show llama3:8b --all最佳实践
模型选择
- 匹配模型和任务:为特定任务使用专门的模型
- 考虑硬件:选择适合您硬件的模型
- 平衡速度与质量:小模型用于快速任务,大模型用于复杂任务
- 测试多个模型:找到最适合您用例的模型
资源管理
- 监控使用情况:跟踪 CPU/GPU/内存使用
- 限制并发模型:不要同时运行太多模型
- 清理未使用的模型:删除您不使用的模型
- 使用适当的上下文:不要使用比需要更大的上下文窗口
安全
- 保持模型更新:定期更新到最新版本
- 验证来源:仅使用可信的模型来源
- 监控网络:Ollama 默认情况下应仅在 localhost 上监听
- 安全配置:保护您的配置文件
高级功能
模型服务
在自定义端口上服务模型:
bash
# 在自定义端口上服务
OLLAMA_HOST=http://0.0.0.0:11435 ollama serve
# 配置 MyDeskBot 使用自定义端口yaml
models:
- name: "remote-ollama"
provider: "ollama"
model: "llama3:8b"
baseURL: "http://192.168.1.100:11434" # 远程 Ollama 服务器模型链
按顺序使用多个模型:
yaml
rules:
- name: "code-review-process"
prompt: |
首先,使用专注于安全的模型分析此代码的安全问题。
然后,使用专注于性能的模型审查性能优化。
最后,使用通用编码模型检查最佳实践。