logo
0
0
Login

Run qwen3 on Ollama via CNB

badge

在 CNB 中直接 使用 Ollama 运行 qwen3,预置模型,无需等待,零帧起步。

快速体验

通过云原生开发体验

  1. Fork 本仓库到自己的组织下
  2. 选择喜欢的分支,点击 云原生开发 启动远程开发环境
  3. 5~9 秒后,进入远程开发命令行,输入以下命令即可体验

${image} 为模型名称,如 qwen3:8b

ollama run ${image}

本仓库已内置模型列表

  • qwen3:0.6b
  • qwen3:1.7b
  • qwen3:1.7b-q8_0
  • qwen3:4b
  • qwen3:8b
  • qwen3:14b
  • qwen3:30b
  • qwen3:32b

进阶

公网访问

PORTS 中将 Ollama 暴露到外网,添加 11434 端口即可。

Ollama API 代理服务器

项目背景

这是一个基于Flask的代理服务器,用于转发请求到本地的Ollama API服务。Ollama是一个本地运行大型语言模型的工具,本代理服务器提供了以下功能:

  1. 将Ollama API暴露给外部网络访问
  2. 提供统一的API接口
  3. 支持流式和非流式响应
  4. 处理跨域请求(CORS)
  5. 提供友好的错误处理和日志记录

环境配置

系统要求

  • Linux系统
  • Python 3.8+
  • Ollama服务已安装并运行

依赖安装

# 安装必要的系统包 apt-get update && apt-get install -y python3 python3-pip python3-flask python3-flask-cors python3-requests python3.11-venv # 或者使用pip安装Python依赖 # 创建虚拟环境(选择一个项目目录) python3 -m venv myprojectenv # 激活虚拟环境 ## Linux/macOS: source myprojectenv/bin/activate # 激活后,提示符会显示环境名称(如 `(myprojectenv)`) # 此时安装包不会影响系统环境 pip install flask flask-cors requests -i https://pypi.tuna.tsinghua.edu.cn/simple

启动项目

1. 克隆或下载项目

git clone [您的仓库地址] cd ollama-proxy

2. 启动代理服务器

# 直接运行 python3 ollama_proxy.py # 或者后台运行 nohup python3 ollama_proxy.py > ollama_proxy.log 2>&1 &

3. 验证服务

访问以下URL验证服务是否正常运行:

  • http://localhost:5000/ - 查看API文档页面
  • http://localhost:5000/api - 获取API基本信息

接口说明

基础信息

  • 基础URL: https://pk2qe0dxad-5000.cnb.run/api
  • 默认端口: 5000
  • 超时设置: 300秒

API端点

1. 获取模型列表

GET /api/tags

示例:

curl https://pk2qe0dxad-5000.cnb.run/api/tags

2. 生成文本

POST /api/generate

请求体:

{ "model": "模型名称", "prompt": "提示文本", "stream": false }

示例:

curl -X POST https://pk2qe0dxad-5000.cnb.run/api/generate \ -H "Content-Type: application/json" \ -d '{"model": "deepseek-r1:14b", "prompt": "解释量子计算", "stream": false}'

3. 聊天接口

POST /api/chat

请求体:

{ "model": "模型名称", "messages": [ {"role": "user", "content": "消息内容"} ], "stream": false }

示例:

curl -X POST https://pk2qe0dxad-5000.cnb.run/api/chat \ -H "Content-Type: application/json" \ -d '{"model": "deepseek-r1:14b", "messages": [{"role": "user", "content": "你好"}], "stream": false}'

使用示例

1. 获取所有可用模型

curl https://pk2qe0dxad-5000.cnb.run/api/tags

2. 使用流式模式生成文本

curl -X POST https://pk2qe0dxad-5000.cnb.run/api/generate \ -H "Content-Type: application/json" \ -d '{"model": "deepseek-r1:14b", "prompt": "写一首关于AI的诗", "stream": true}'

3. 进行对话

curl -X POST https://pk2qe0dxad-5000.cnb.run/api/chat \ -H "Content-Type: application/json" \ -d '{"model": "deepseek-r1:14b", "messages": [{"role": "user", "content": "如何学习Python"}], "stream": false}'

注意事项

  1. 性能考虑:大型语言模型生成响应可能需要较长时间(30秒到几分钟)
  2. 流式模式:对于长时间运行的请求,建议使用"stream": true
  3. 超时设置:服务器端设置了300秒超时,客户端也应设置合理的超时
  4. 生产环境:当前配置为开发模式,生产环境应考虑:
    • 使用WSGI服务器(如Gunicorn)
    • 启用HTTPS
    • 添加认证机制
  5. 日志查看:日志文件位于/workspace/ollama_proxy.log

问题排查

  1. 连接问题

    # 检查服务是否运行 ps aux | grep "python3 ollama_proxy.py" # 检查端口是否监听 netstat -tulnp | grep 5000
  2. 查看日志

    tail -f /workspace/ollama_proxy.log
  3. 重启服务

    pkill -f "python3 ollama_proxy.py" nohup python3 ollama_proxy.py > ollama_proxy.log 2>&1 &