JupyterHub 中使用 Ollama
安装 Ollama
本地安装
官方文档:ollama/docs/linux.md at main · ollama/ollama
网络配置:使用固定的 Docker 网络配置,多项目共享网络,确保容器间通信稳定
yaml
networks:
jupyterhub-ai-net:
name: jupyterhub-ai-net
external: true
本地启动 Ollama 服务:
bash
# 启动 Ollama 服务
export OLLAMA_HOST=0.0.0.0:11434
ollama serve &
# 拉取模型,模型可以在 https://ollama.com/search 选择
ollama pull deepseek-r1:1.5b
ollama pull qwen3:1.7b
ollama pull qwen2.5-coder:7b
Docker 安装
yaml
ollama:
image: ollama/ollama:latest
container_name: ollama
ports:
- "11434:11434"
volumes:
- ollama-data:/root/.ollama
environment:
- OLLAMA_HOST=0.0.0.0:11434
networks:
- jupyterhub-ai-net
restart: unless-stopped
profiles:
- ollama
- ai-services
# 资源限制
deploy:
resources:
limits:
memory: 8G
reservations:
memory: 4G
# 健康检查
healthcheck:
test: ["CMD", "curl", "-f", "http://localhost:11434/api/tags"]
interval: 30s
timeout: 10s
retries: 3
start_period: 60s
使用 Ollama
官方文档:Users — Jupyter AI documentation
bash
pip install jupyter-ai # 安装 jupyter-ai
pip install langchain-ollama # 安装 langchain-ollama
聊天界面
Language model 中配置:
- Completion model:下拉选择
ollama
- Local model ID:填写本地的模型名称,比如
deepseek-r1:1.5b
,qwen3:1.7b
,qwen2.5-coder:7b
等 - Base API URL:填写本地 Ollama 的 API 地址,比如
http://172.18.0.1:11434
下面的 Embedding model 配置一样,按需填写即可
填写完成后就可以用聊天功能了
AI magic 命令
- 先加载 AI magic 命令
- 配置 Ollama 服务
- 使用 AI magic 命令
python
import os
%load_ext jupyter_ai_magics
os.environ["OLLAMA_HOST"] = "http://172.18.0.1:11434"
%%ai ollama:deepseek-r1:1.5b
请用中文简单介绍一下什么是机器学习,不超过100字。
Python 中使用 Ollama
python
import os
from langchain_ollama import OllamaLLM
from langchain.prompts import PromptTemplate
from langchain_community.llms import Ollama
# 定义 Ollama API 地址
ollama_base = os.environ.get('OLLAMA_API_BASE', 'http://172.18.0.1:11434')
print(f"Ollama API 地址:{ollama_base}")
llm = OllamaLLM(
base_url=ollama_base,
model="deepseek-r1:1.5b",
temperature=0.7
)
prompt = PromptTemplate(
input_variables=["topic"],
template="请用中文详细解释 {topic},包括其定义、应用场景和优缺点。"
)
chain = prompt | llm
result = chain.invoke({"topic": "神经网络"})
print(result)
python
# 使用代码专用模型
def generate_code(prompt, model="qwen2.5-coder:7b"):
try:
response = client.chat(
model=model,
messages=[
{
'role': 'user',
'content': f"请用 Python 编写代码:{prompt}",
},
],
)
return response['message']['content']
except Exception as e:
return f"代码生成失败:{e}"
# 代码生成示例
code_prompt = "创建一个函数,计算斐波那契数列的第 n 项"
print(f"需求:{code_prompt}")
print("\n生成的代码:")
generated_code = generate_code(code_prompt)
print(generated_code)