使用WebUI访问本地Deepseek(Ollama集成Open WebUI)

news/2025/2/10 13:30:37/

在《deepseek本地部署和使用(Linux虚拟机)》中,我们使用Ollama部署了Deepseek-r1,但是只能通过命令行方式交互,默认Ollama启动后,会启动一个监听到127.0.0.1,用以接收POST 请求,服务器使用指定的 DeepSeek-R1 模型处理提示并返回生成的响应。

 ~]# ss -tlnp|grep ollam                            
LISTEN     0           4096                 127.0.0.1:11434                0.0.0.0:*         users:(("ollama",pid=441905,fd=3)) 

curl 发送请求

请求命令如下:

curl -X POST http://127.0.0.1:11434/api/generate \-H "Content-Type: application/json" \-d '{"model": "deepseek-r1:1.5b","prompt": "请比较一下5.4和5.12的大小。"}'

回显也是JSON格式,我猜测 Ollama 的 API 可能默认是以流式的方式返回数据,也就是每次生成一个词就发送一次响应。

集成WebUI

执行如下命令即可启动open webui(需要联网);在无法联网的场景下需要事先下载ghcr.io/open-webui/open-webui:main镜像,上传到服务器之后启动。

docker run -d -p 3000:8080 --add-host=host.docker.internal:host-gateway -v open-webui:/app/backend/data --name open-webui --restart always ghcr.io/open-webui/open-webui:main

该命令的参数释义如下:

1. docker run
  • 含义:用于创建并启动一个新的 Docker 容器。

  • 作用:这是 Docker 的核心命令之一,用于运行容器。

2. -d
  • 含义-d 表示以 ** detached 模式** 运行容器,即在后台运行。

  • 作用:容器会在后台运行,不会占用当前终端。

3. -p 3000:8080
  • 含义:将容器内部的端口 8080 映射到宿主机的端口 3000

  • 作用:通过 localhost:3000 访问容器内部运行的服务(通常是 Web 服务)。

  • 效果:
  • LISTEN 0      4096         0.0.0.0:3000       0.0.0.0:*    users:(("docker-proxy",pid=347493,fd=4))
    LISTEN 0      4096            [::]:3000          [::]:*    users:(("docker-proxy",pid=347507,fd=4))
4. --add-host=host.docker.internal:host-gateway
  • 含义:向容器的 /etc/hosts 文件中添加一个自定义的 hosts 记录。

  • 作用:允许容器内的服务通过 host.docker.internal 访问宿主机的网络资源。

    • host.docker.internal 是 Docker 提供的一个特殊域名,指向宿主机的网络接口。

    • host-gateway 是宿主机的网关地址。

  • 效果:172.17.0.1      host.docker.internal
5. -v open-webui:/app/backend/data
  • 含义:将宿主机的 open-webui 目录挂载到容器内的 /app/backend/data 目录。

  • 作用:实现宿主机和容器之间的数据共享。容器内的数据可以持久化到宿主机的目录中。

  • 效果:
  • ~]# ll /var/lib/docker/volumes/open-webui
    总用量 0
    drwxr-xr-x 5 root root 67 2月   7 10:39 _data
6. --name open-webui
  • 含义:为容器指定一个名称 open-webui

  • 作用:可以通过这个名称方便地管理和操作容器,例如使用 docker stop open-webui 停止容器。

7. --restart always
  • 含义:设置容器的重启策略为 always

  • 作用:无论容器因为何种原因退出,Docker 都会自动重启该容器。

8. ghcr.io/open-webui/open-webui:main
  • 含义:指定要运行的 Docker 镜像及其版本。

    • ghcr.io/open-webui/open-webui 是镜像的名称,存储在 GitHub Container Registry (GHCR) 中。

    • main 是镜像的标签,表示使用的是主分支的版本。

启动后状态验证

~]# docker ps 
CONTAINER ID   IMAGE                                COMMAND           CREATED        STATUS                  PORTS                                       NAMES
50c57b182bf3   ghcr.io/open-webui/open-webui:main   "bash start.sh"   20 hours ago   Up 20 hours (healthy)   0.0.0.0:3000->8080/tcp, :::3000->8080/tcp   open-webui

访问 OpenWebUI 界面(因服务器性能,可能相应比较慢)

打开浏览器,在地址栏输入 http://主机IP地址:3000/ 并打开,进入 OpenWebUI 的聊天测试界面。首次进入需要注册账号。

选择并连接 Ollama 模型

在聊天界面的左上角选择当前在 Ollama 中运行的大语言模型。如果无选择内容,则可能是因为无法连接到 Ollama,可以进行以下修改:

 ~]# systemctl edit ollama

添加
[Service]
Environment="OLLAMA_HOST=0.0.0.0"

重启 Ollama 服务:

systemctl daemon-reload
systemctl restart ollama

重新刷新open webui的页面即可。

补充一点内容: 
1、open webui请求Ollama服务的时候,会触发ollama运行对应的model,效果其实跟ollama run mode-name一样,在回答问题期间,通过ollama ps则可查看运行的model: ~]# ollama ps NAME ID SIZE PROCESSOR UNTIL deepseek-r1:1.5b a42b25d8c10a 1.6 GB 100% CPU 4 minutes from now deepseek-r1:7b 0a8c26691023 5.5 GB 100% CPU 4 minutes from now 2、问题回答完毕,对应的model不会立即终止运行,如果一直没有问题请求,则超时被杀,再次查看就空空如也了: ~]# ollama ps NAME ID SIZE PROCESSOR UNTIL

http://www.ppmy.cn/news/1570866.html

相关文章

C#控件开发6—指示灯

按钮功能:手自动旋转,标签文本显示、点击二次弹框确认(源码在最后边); 【制作方法】 找到控件的中心坐标,画背景外环、内圆;再绘制矩形开关,进行角度旋转即可获得; 【关…

微信小程序案例1——制作猫眼电影底部标签导航栏

文章目录 一、项目步骤1 新建一个无AppID的movie项目2将准备好的底部标签导航图标拷贝到movie项目下面(将图标文件夹image放到项目文件夹里)3 打开App.json配置文件,在pages数组里添加4个页面路径:电影“pages/movie/movie”、影院“pages/cinema/cinema”、发现“pages/find…

VERA: 基于视觉-语言模型的解释性视频异常检测框架

文章目录 速览摘要01 引言1.1 关键观察与研究问题1.2 我们的方法1.3 贡献 02 相关工作2.1 视频异常检测2.2 针对VLM的语言化学习 03 VERA框架3.1 视频异常检测的任务定义3.2 在VERA中通过语言化学习寻找VAD指导性问题训练目标训练数据通过学习者与优化器更新 Q Q Q学习者与优化…

CSS基本语法和常用属性

目录 一、CSS二、CSS基本语法三、CSS的三种形式1、行内样式2、内部样式3、外部样式4、三者的优先级问题5、代码演示 四、选择器1 基础选择器1.1标签选择器1.2 ID选择器1.3 Class选择器1.4 属性选择器 2. 组合选择器2.1 层次选择器4.2.2 并列选择器 3. 伪类选择器4、选择器的优先…

为什么要学习AI/机器学习

考虑到当前技术发展趋势和未来潜力,我建议重点学习 AI/机器学习 相关技术,特别是大语言模型(LLM)相关的技术栈。原因如下: 1. 为什么选择 AI/LLM? 产业趋势 AI 正在重塑各个行业投资持续增长应用场景不断扩大技术革新频繁 市场…

Meta AI 最近推出了一款全新的机器学习框架ParetoQ,专门用于大型语言模型的4-bit 以下量化

每周跟踪AI热点新闻动向和震撼发展 想要探索生成式人工智能的前沿进展吗?订阅我们的简报,深入解析最新的技术突破、实际应用案例和未来的趋势。与全球数同行一同,从行业内部的深度分析和实用指南中受益。不要错过这个机会,成为AI领…

基于对比增强的超声视频的域知识为乳腺癌诊断提供了深度学习

Domain Knowledge Powered Deep Learning for Breast Cancer Diagnosis Based on Contrast-Enhanced Ultrasound Videos 期刊分析摘要引言相关工作乳腺癌中的CAD基于乳房CEU的CAD方法整体框架原始C3D骨干领域知识指导的时间注意模块(DKG-TMA)域知识引导的通道注意模块数据集和实…

android的DataBinding的使用

参考: Android基础入门:dataBinding的简单使用 Android DataBinding的使用