无缝融入,即刻智能[一]:Dify-LLM大模型平台,零编码集成嵌入第三方系统,42K+星标见证专属智能方案

本文涉及的产品
云数据库 Tair(兼容Redis),内存型 2GB
Redis 开源版,标准版 2GB
推荐场景:
搭建游戏排行榜
简介: 【8月更文挑战第3天】无缝融入,即刻智能[一]:Dify-LLM大模型平台,零编码集成嵌入第三方系统,42K+星标见证专属智能方案

无缝融入,即刻智能[一]:Dify-LLM大模型平台,零编码集成嵌入第三方系统,42K+星标见证专属智能方案

1.Dify 简介

1.1 功能情况

Dify,一款引领未来的开源大语言模型(LLM)应用开发平台,革新性地融合了后端即服务(Backend as a Service,BaaS)与LLMOps的精髓,为开发者铺设了一条从创意原型到高效生产的快车道。其设计旨在打破技术壁垒,让非技术背景的用户也能轻松参与至AI应用的构思与数据运营之中,共同塑造智能未来。

Dify内嵌了构建LLM应用的全方位技术基石,覆盖了从模型库的海量选择(支持数百种模型)到高效直观的Prompt编排界面,再到卓越品质的检索增强生成(RAG)引擎与稳固可靠的Agent框架。这一集成的技术栈,不仅极大地简化了开发流程,还赋予了开发者前所未有的灵活性与创意空间。通过其灵活的流程编排功能及用户友好的界面与API接口,Dify帮助开发者有效规避了重复劳动,使他们能够将宝贵的时间和精力集中于创新思考与业务需求的深度挖掘上。

Dify 一词源自 Define + Modify,意指定义并且持续的改进你的 AI 应用,它是为你而做的(Do it for you)。

  • 核心功能列表:

    1. 工作流: 在画布上构建和测试功能强大的 AI 工作流程,利用以下所有功能以及更多功能。

2. `全面的模型支持`: 与数百种专有/开源 LLMs 以及数十种推理提供商和自托管解决方案无缝集成,涵盖 GPT、Mistral、Llama3 以及任何与 OpenAI API 兼容的模型。

![](https://ai-studio-static-online.cdn.bcebos.com/521c8869f4d6479a9044a555f6537c94ec9563a116ff4a788b767add2a322dfc)


3. `Prompt IDE`: 用于制作提示、比较模型性能以及向基于聊天的应用程序添加其他功能(如文本转语音)的直观界面。

4. `RAG Pipeline`: 广泛的 RAG 功能,涵盖从文档摄入到检索的所有内容,支持从 PDF、PPT 和其他常见文档格式中提取文本的开箱即用的支持。

![](https://ai-studio-static-online.cdn.bcebos.com/f7dd1111db5d482b87d95cb1d3d87d08c53878615bd0473cbf7486547a0dabe8)


5. `Agent 智能体`: 您可以基于 LLM 函数调用或 ReAct 定义 Agent,并为 Agent 添加预构建或自定义工具。Dify 为 AI Agent 提供了50多种内置工具,如谷歌搜索、DALL·E、Stable Diffusion 和 WolframAlpha 等。
![](https://ai-studio-static-online.cdn.bcebos.com/cf7bd1b894da46299e42556edfec4fa580aff15a07e54074a3a6986cb63cbf9b)


6. `LLMOps`: 随时间监视和分析应用程序日志和性能。您可以根据生产数据和标注持续改进提示、数据集和模型。

![](https://ai-studio-static-online.cdn.bcebos.com/e5fa276b6aae45b888941e087efbdb9aabf72c751e2f47309816632d3c274c0a)


7. `后端即服务`: 所有 Dify 的功能都带有相应的 API,因此您可以轻松地将 Dify 集成到自己的业务逻辑中。
  • 功能对比

  • 框架原理图

1.2 关键技术特性

  • 本地模型推理 Runtime 支持:Xinference(推荐),OpenLLM,LocalAI,ChatGLM,Ollama,NVIDIA TIS
  • Agentic Workflow 特性:支持节点

    • LLM
    • 知识库检索
    • 问题分类
    • 条件分支
    • 代码执行
    • 模板转换
    • HTTP 请求
    • 工具
  • RAG特性:

    • 索引方式
      • 关键词
      • 文本向量
      • 由 LLM 辅助的问题-分段模式
    • 检索方式
      • 关键词
      • 文本相似度匹配
      • 混合检索
      • 多路召回
    • 召回优化技术
      • 使用 ReRank 模型
  • 向量数据库支持:Qdrant,Weaviate,Zilliz/Milvus,Pgvector,Pgvector-rs,Chroma,OpenSearch,TiDB,Tencent Vector,Oracle

1.3 云服务

Dify 为所有人提供了云服务,你无需自己部署即可使用 Dify 的完整功能。要使用 Dify 云服务,你需要有一个 GitHub 或 Google 账号。

  • 登录 Dify 云服务,创建一个或加入已有的 Workspace

  • 配置你的模型供应商,或使用我们提供的托管模型供应商

  • 可以创建应用了

1.4 更多LLM平台参考:

2. 社区版部署

2.1 Docker Compose 部署(推荐)

  • 克隆 Dify 代码仓库

    git clone https://github.com/langgenius/dify.git
    
  • 启动 Dify
    ```

    进入 Dify 源代码的 docker 目录,执行一键启动命令:

    cd dify/docker
    cp .env.example .env
    docker compose up -d

>如果您的系统安装了 Docker Compose V2 而不是 V1,请使用 docker compose 而不是 docker-compose。通过$ docker compose version检查这是否为情况。在这里阅读更多信息。

>遇到pulling失败问题,请添加镜像源,参考上述推荐文章有解决方案

* 部署结果展示:
![](https://ai-studio-static-online.cdn.bcebos.com/d9ebd6c2912e4bd0b5076f710ca786f9f8cefb51a30b452097c9e58fc6043164)

![](https://ai-studio-static-online.cdn.bcebos.com/783d7ffbeb85498a8e0c047bd53b17cc29e77c3ed8d14076848b125c63d3cc5f)

最后检查是否所有容器都正常运行:

docker compose ps

包括 3 个业务服务 api / worker / web,以及 6 个基础组件 weaviate / db / redis / nginx / ssrf_proxy / sandbox 。

![](https://ai-studio-static-online.cdn.bcebos.com/ae843d604f164646afb4b8dd53dce8ad4962b6cfa0c8440388893c1cdc9bbfcc)

```python
NAME                  IMAGE                              COMMAND                  SERVICE      CREATED          STATUS                    PORTS
docker-api-1          langgenius/dify-api:0.6.16         "/bin/bash /entrypoi…"   api          15 minutes ago   Up 15 minutes             5001/tcp
docker-db-1           postgres:15-alpine                 "docker-entrypoint.s…"   db           15 minutes ago   Up 15 minutes (healthy)   5432/tcp
docker-nginx-1        nginx:latest                       "sh -c 'cp /docker-e…"   nginx        15 minutes ago   Up 15 minutes             0.0.0.0:80->80/tcp, :::80->80/tcp, 0.0.0.0:443->443/tcp, :::443->443/tcp
docker-redis-1        redis:6-alpine                     "docker-entrypoint.s…"   redis        15 minutes ago   Up 15 minutes (healthy)   6379/tcp
docker-sandbox-1      langgenius/dify-sandbox:0.2.1      "/main"                  sandbox      15 minutes ago   Up 15 minutes             
docker-ssrf_proxy-1   ubuntu/squid:latest                "sh -c 'cp /docker-e…"   ssrf_proxy   15 minutes ago   Up 15 minutes             3128/tcp
docker-weaviate-1     semitechnologies/weaviate:1.19.0   "/bin/weaviate --hos…"   weaviate     15 minutes ago   Up 15 minutes             
docker-web-1          langgenius/dify-web:0.6.16         "/bin/sh ./entrypoin…"   web          15 minutes ago   Up 15 minutes             3000/tcp
docker-worker-1       langgenius/dify-api:0.6.16         "/bin/bash /entrypoi…"   worker       15 minutes ago   Up 15 minutes             5001/tcp
  • 更新 Dify

进入 dify 源代码的 docker 目录,按顺序执行以下命令:

cd dify/docker
docker compose down
git pull origin main
docker compose pull
docker compose up -d

同步环境变量配置 (重要!)

  • 如果 .env.example 文件有更新,请务必同步修改您本地的 .env 文件。
  • 检查 .env 文件中的所有配置项,确保它们与您的实际运行环境相匹配。您可能需要将 .env.example 中的新变量添加到 .env 文件中,并更新已更改的任何值。
  • 访问 Dify

docker 部署运行完成后,输入指令sudo docker ps即可看到运行的容器,其中在运行的容器列表可以看到有个 nginx 的容器,且对外访问的是 80 端口,这个就是外部访问的端口,下面我们进行本地访问测试

在浏览器中输入 http://localhost 访问 Dify。访问 http://127.0.0.1:80 即可使用本地部署的 Dify。

10.80.2.195:80

随便填写,进入界面

  • 自定义配置

编辑 .env 文件中的环境变量值。然后,重新启动 Dify:

docker compose down
docker compose up -d

完整的环境变量集合可以在 docker/.env.example 中找到。

2.2 本地码源部署

  • 前置条件

Clone Dify 代码:

git clone https://github.com/langgenius/dify.git

在启用业务服务之前,需要先部署 PostgresSQL / Redis / Weaviate(如果本地没有的话),可以通过以下命令启动:

cd docker
cp middleware.env.example middleware.env
docker compose -f docker-compose.middleware.yaml up -d
  1. 进入 api 目录
cd api
  1. 复制环境变量配置文件.
    cp .env.example .env
    
  2. 生成随机密钥,并替换 .env 中 SECRET_KEY 的值
openssl rand -base64 42
sed -i 's/SECRET_KEY=.*/SECRET_KEY=<your_value>/' .env
  1. 安装依赖包

Dify API 服务使用 Poetry 来管理依赖。您可以执行 poetry shell 来激活环境。

poetry env use 3.10
poetry install
  1. 执行数据库迁移,将数据库结构迁移至最新版本。
poetry shell
flask db upgrade
  1. 启动 API 服务
flask run --host 0.0.0.0 --port=5001 --debug

正确输出:

* Debug mode: on
INFO:werkzeug:WARNING: This is a development server. Do not use it in a production deployment. Use a production WSGI server instead.
 * Running on all addresses (0.0.0.0)
 * Running on http://127.0.0.1:5001
INFO:werkzeug:Press CTRL+C to quit
INFO:werkzeug: * Restarting with stat
WARNING:werkzeug: * Debugger is active!
INFO:werkzeug: * Debugger PIN: 695-801-919
  1. 启动 Worker 服务

用于消费异步队列任务,如数据集文件导入、更新数据集文档等异步操作。 Linux / MacOS 启动:

celery -A app.celery worker -P gevent -c 1 -Q dataset,generation,mail,ops_trace --loglevel INFO

如果使用 Windows 系统启动,请替换为该命令:

celery -A app.celery worker -P solo --without-gossip --without-mingle -Q dataset,generation,mail,ops_trace --loglevel INFO
 -------------- celery@TAKATOST.lan v5.2.7 (dawn-chorus)
--- ***** ----- 
-- ******* ---- macOS-10.16-x86_64-i386-64bit 2023-07-31 12:58:08
- *** --- * --- 
- ** ---------- [config]
- ** ---------- .> app:         app:0x7fb568572a10
- ** ---------- .> transport:   redis://:**@localhost:6379/1
- ** ---------- .> results:     postgresql://postgres:**@localhost:5432/dify
- *** --- * --- .> concurrency: 1 (gevent)
-- ******* ---- .> task events: OFF (enable -E to monitor tasks in this worker)
--- ***** ----- 
 -------------- [queues]
                .> dataset          exchange=dataset(direct) key=dataset
                .> generation       exchange=generation(direct) key=generation
                .> mail             exchange=mail(direct) key=mail

[tasks]
  . tasks.add_document_to_index_task.add_document_to_index_task
  . tasks.clean_dataset_task.clean_dataset_task
  . tasks.clean_document_task.clean_document_task
  . tasks.clean_notion_document_task.clean_notion_document_task
  . tasks.create_segment_to_index_task.create_segment_to_index_task
  . tasks.deal_dataset_vector_index_task.deal_dataset_vector_index_task
  . tasks.document_indexing_sync_task.document_indexing_sync_task
  . tasks.document_indexing_task.document_indexing_task
  . tasks.document_indexing_update_task.document_indexing_update_task
  . tasks.enable_segment_to_index_task.enable_segment_to_index_task
  . tasks.generate_conversation_summary_task.generate_conversation_summary_task
  . tasks.mail_invite_member_task.send_invite_member_mail_task
  . tasks.remove_document_from_index_task.remove_document_from_index_task
  . tasks.remove_segment_from_index_task.remove_segment_from_index_task
  . tasks.update_segment_index_task.update_segment_index_task
  . tasks.update_segment_keyword_index_task.update_segment_keyword_index_task

[2024-07-31 13:58:08,831: INFO/MainProcess] Connected to redis://:**@localhost:6379/1
[2024-07-31 13:58:08,840: INFO/MainProcess] mingle: searching for neighbors
[2024-07-31 13:58:09,873: INFO/MainProcess] mingle: all alone
[2024-07-31 13:58:09,886: INFO/MainProcess] pidbox: Connected to redis://:**@localhost:6379/1.
[2024-07-31 13:58:09,890: INFO/MainProcess] celery@TAKATOST.lan ready.
  • 前端页面部署

  • 安装基础环境
    Web 前端服务启动需要用到 Node.js v18.x (LTS)NPM 版本 8.x.xYarn

  • 安装 NodeJS + NPM
    进入 https://nodejs.org/en/download,选择对应操作系统的 v18.x 以上的安装包下载并安装,建议 stable 版本,已自带 NPM。

    1. 进入 web 目录,安装依赖包
      cd web
      npm install
      
    2. 配置环境变量。在当前目录下创建文件 .env.local,并复制.env.example中的内容。根据需求修改这些环境变量的值:

      #For production release, change this to PRODUCTION
      NEXT_PUBLIC_DEPLOY_ENV=DEVELOPMENT
      #The deployment edition, SELF_HOSTED
      NEXT_PUBLIC_EDITION=SELF_HOSTED
      #The base URL of console application, refers to the Console base URL of WEB service if console domain is
      #different from api or web app domain.
      #example: http://cloud.dify.ai/console/api
      NEXT_PUBLIC_API_PREFIX=http://localhost:5001/console/api
      #The URL for Web APP, refers to the Web App base URL of WEB service if web app domain is different from
      #console or api domain.
      #example: http://udify.app/api
      NEXT_PUBLIC_PUBLIC_API_PREFIX=http://localhost:5001/api
      
      #SENTRY
      NEXT_PUBLIC_SENTRY_DSN=
      NEXT_PUBLIC_SENTRY_ORG=
      NEXT_PUBLIC_SENTRY_PROJECT=
      
    3. 构建代码,启动 web 服务

      npm run build
      
      npm run start
      #or
      yarn start
      #or
      pnpm start
      
    • 终端会输出如下信息:
      ready - started server on 0.0.0.0:3000, url: http://localhost:3000
      warn  - You have enabled experimental feature (appDir) in next.config.js.
      warn  - Experimental features are not covered by semver, and may cause unexpected or broken application behavior. Use at your own risk.
      info  - Thank you for testing `appDir` please leave your feedback at https://nextjs.link/app-feedback
      
  • 访问 Dify

在浏览器中输入 http://localhost 访问 Dify。访问 http://127.0.0.1:3000 即可使用本地部署的 Dify。

2.3 单独启动前端 Docker 容器

当单独开发后端时,可能只需要源码启动后端服务,而不需要本地构建前端代码并启动,因此可以直接通过拉取 docker 镜像并启动容器的方式来启动前端服务,以下为具体步骤:

  • 直接使用 DockerHub 镜像
    docker run -it -p 3000:3000 -e CONSOLE_API_URL=http://127.0.0.1:5001 -e APP_API_URL=http://127.0.0.1:5001 langgenius/dify-web:latest
    
  • 源码构建 Docker 镜像
    1. 构建前端镜像
      cd web && docker build . -t dify-web
      
    2. 启动前端镜像
```
docker run -it -p 3000:3000 -e CONSOLE_API_URL=http://127.0.0.1:5001 -e APP_API_URL=http://127.0.0.1:5001 dify-web
```
3. 当控制台域名和 Web APP 域名不一致时,可单独设置 CONSOLE_URL 和 APP_URL   
  本地访问 http://127.0.0.1:3000

3. Ollama 部署的本地模型

Ollama 是一个开源框架,专为在本地机器上便捷部署和运行大型语言模型(LLM)而设计。,这是 Ollama 的官网地址:https://ollama.com/

  • 以下是其主要特点和功能概述:

    1. 简化部署:Ollama 目标在于简化在 Docker 容器中部署大型语言模型的过程,使得非专业用户也能方便地管理和运行这些复杂的模型。
    2. 轻量级与可扩展:作为轻量级框架,Ollama 保持了较小的资源占用,同时具备良好的可扩展性,允许用户根据需要调整配置以适应不同规模的项目和硬件条件。
    3. API支持:提供了一个简洁的 API,使得开发者能够轻松创建、运行和管理大型语言模型实例,降低了与模型交互的技术门槛。
    4. 预构建模型库:包含一系列预先训练好的大型语言模型,用户可以直接选用这些模型应用于自己的应用程序,无需从头训练或自行寻找模型源

3.1 一键安装

curl: (77) error setting certificate verify locations:CAfile: /data/usr/local/anaconda/ssl/cacert.pemCApath: none
报错原因: cacert.pem 的寻址路径 CAfile 不对,也就是在该路径下找不到文件。

  • 解决方法:
  1. 找到你的 cacert.pem 文件所在位置 /path/to/cacert.pem。如果你没有该证书,可以先在 https://curl.se/ca/cacert.pem 下载,保存在某个目录中。
  2. 设置环境变量
    export CURL_CA_BUNDLE=/path/to/cacert.pem
    #将"/path/to/cacert.pem"替换为你的证书文件的实际路径。
    export CURL_CA_BUNDLE=/www/anaconda3/anaconda3/ssl/cacert.pem
    
  • 执行下载
    curl -fsSL https://ollama.com/install.sh | sh
    

3.2 手动安装

ollama中文网:https://ollama.fan/getting-started/linux/

  1. 下载 ollama 二进制文件:Ollama 以自包含的二进制文件形式分发。将其下载到您的 PATH 中的目录:
sudo curl -L https://ollama.com/download/ollama-linux-amd64 -o /usr/bin/ollama

sudo chmod +x /usr/bin/ollama
  1. 将 Ollama 添加为启动服务(推荐):为 Ollama 创建一个用户:
sudo useradd -r -s /bin/false -m -d /usr/share/ollama ollama

3.在 /etc/systemd/system/ollama.service 中创建一个服务文件:

#vim ollama.service 

[Unit]

Description=Ollama Service
After=network-online.target

[Service]
ExecStart=/usr/bin/ollama serve
User=ollama
Group=ollama
Restart=always
RestartSec=3

[Install]
WantedBy=default.target
  1. 然后启动服务:
    sudo systemctl daemon-reload sudo systemctl enable ollama

  2. 启动 Ollama¶
    使用 systemd 启动 Ollama:

    sudo systemctl start ollama
    
  3. 更新,查看日志

#再次运行
sudo curl -L https://ollama.com/download/ollama-linux-amd64 -o /usr/bin/ollama
sudo chmod +x /usr/bin/ollama

#要查看作为启动服务运行的 Ollama 的日志,请运行:
journalctl -u ollama
  1. 步骤7:关闭 Ollama 服务
    ```

    关闭ollama服务

    service ollama stop


## 3.3 Linux内网离线安装Ollama

1. 查看服务器CPU的型号

查看Linux系统CPU型号命令,我的服务器cpu型号是x86_64

lscpu


2. 步骤2:根据CPU型号下载Ollama安装包,并保存到目录

下载地址: https://github.com/ollama/ollama/releases/

x86_64 CPU选择下载ollama-linux-amd64

aarch64|arm64 CPU选择下载ollama-linux-arm64


![](https://ai-studio-static-online.cdn.bcebos.com/9021442175c54d0ba3d51949253c22c48089d26df88f47bda2bdbb6dc78be0ad)

有网机器下载过来也一样

wget https://ollama.com/download/ollama-linux-amd64

下载到离线服务器上:/usr/bin/ollama  ollama就是你下载的ollama-linux-amd64 改名了(mv),其他步骤一致

## 3.4 修改存储路径
Ollama模型默认存储在:
* macOS: ~/.ollama/models
* Linux: /usr/share/ollama/.ollama/models
* Windows: C:\Users\<username>\.ollama\models

如果 Ollama 作为 systemd 服务运行,则应使用以下命令设置环境变量systemctl:

1. 通过调用 来编辑 systemd 服务systemctl edit ollama.service。这将打开一个编辑器。

2. Environment对于每个环境变量,在部分下添加一行[Service]:
>直接在“/etc/systemd/system/ollama.service”增了2行:

[Service]
Environment="OLLAMA_HOST=0.0.0.0:7861"
Environment="OLLAMA_MODELS=/www/algorithm/LLM_model/models"

3. 保存并退出。

4. 重新加载systemd并重新启动 Ollama:

```systemctl daemon-reload 
systemctl restart ollama

参考链接:https://github.com/ollama/ollama/blob/main/docs/faq.md

  1. 使用 systemd 启动 Ollama:

    sudo systemctl start ollama
    
  2. 终止

终止(ollama加载的大模型将会停止占用显存,此时ollama属于失联状态,部署和运行操作失效,会报错:

Error: could not connect to ollama app, is it running?需要启动后,才可以进行部署和运行操作

systemctl stop ollama.service
  • 终止后启动(启动后,可以接着使用ollama 部署和运行大模型)
systemctl start ollama.service

3.5 启动LLM

  • 下载模型
ollama pull llama3.1
ollama pull qwen2

  • 运行大模型
ollama run llama3.1
ollama run qwen2

  • 查看是否识别到大模型: ollama list, 如果成功, 则会看到大模型

    ollama list
    NAME            ID              SIZE    MODIFIED    
    qwen2:latest    e0d4e1163c58    4.4 GB  3 hours ago
    
  • 使用该ollama ps命令查看当前已加载到内存中的模型。

NAME            ID              SIZE    PROCESSOR       UNTIL              
qwen2:latest    e0d4e1163c58    5.7 GB  100% GPU        3 minutes from now
  • nvidia-smi查看
    ```
    +---------------------------------------------------------------------------------------+
    | NVIDIA-SMI 535.86.10 Driver Version: 535.86.10 CUDA Version: 12.2 |
    |-----------------------------------------+----------------------+----------------------+
    | GPU Name Persistence-M | Bus-Id Disp.A | Volatile Uncorr. ECC |
    | Fan Temp Perf Pwr:Usage/Cap | Memory-Usage | GPU-Util Compute M. |
    | | | MIG M. |
    |=========================================+======================+======================|
    | 0 Tesla V100-SXM2-32GB On | 00000000:00:08.0 Off | 0 |
    | N/A 35C P0 56W / 300W | 5404MiB / 32768MiB | 0% Default |
    | | | N/A |
    +-----------------------------------------+----------------------+----------------------+

+---------------------------------------------------------------------------------------+
| Processes: |
| GPU GI CI PID Type Process name GPU Memory |
| ID ID Usage |
|=======================================================================================|
| 0 N/A N/A 3062036 C ...unners/cuda_v11/ollama_llama_server 5402MiB |
+---------------------------------------------------------------------------------------+



* 启动后,我们可验证是否可用:

curl http://10.80.2.195:7861/api/chat -d '{
"model": "llama3.1",
"messages": [
{ "role": "user", "content": "why is the sky blue?" }
]
}'


## 3.6 更多其他配置

**Ollama 可以设置的环境变量**:

* `OLLAMA_HOST`:这个变量定义了Ollama监听的网络接口。通过设置OLLAMA_HOST=0.0.0.0,我们可以让Ollama监听所有可用的网络接口,从而允许外部网络访问。

* `OLLAMA_MODELS`:这个变量指定了模型镜像的存储路径。通过设置OLLAMA_MODELS=F:\OllamaCache,我们可以将模型镜像存储在E盘,避免C盘空间不足的问题。

* `OLLAMA_KEEP_ALIVE`:这个变量控制模型在内存中的存活时间。设置OLLAMA_KEEP_ALIVE=24h可以让模型在内存中保持24小时,提高访问速度。

* `OLLAMA_PORT`:这个变量允许我们更改Ollama的默认端口。例如,设置OLLAMA_PORT=8080可以将服务端口从默认的11434更改为8080。

* `OLLAMA_NUM_PARALLEL`:这个变量决定了Ollama可以同时处理的用户请求数量。设置OLLAMA_NUM_PARALLEL=4可以让Ollama同时处理两个并发请求。

* `OLLAMA_MAX_LOADED_MODELS`:这个变量限制了Ollama可以同时加载的模型数量。设置OLLAMA_MAX_LOADED_MODELS=4可以确保系统资源得到合理分配。

>Environment="OLLAMA_PORT=9380" 没有用

* 这样指定:`Environment="OLLAMA_HOST=0.0.0.0:7861"`


* 指定 GPU
本地有多张 GPU,如何用指定的 GPU 来运行 Ollama? 在Linux上创建如下配置文件,并配置环境变量 CUDA_VISIBLE_DEVICES 来指定运行 Ollama 的 GPU,再重启 Ollama 服务即可【测试序号从0还是1开始,应是从0开始】。

vim /etc/systemd/system/ollama.service
[Service]
Environment="CUDA_VISIBLE_DEVICES=0,1"



## 3.7 Ollama常见命令


1. 重启 ollama

systemctl daemon-reload
systemctl restart ollama


2. 重启 ollama 服务

ubuntu/debian

sudo apt update
sudo apt install lsof
stop ollama
lsof -i :11434
kill
ollama serve


* Ubuntu

sudo apt update
sudo apt install lsof
stop ollama
lsof -i :11434
kill
ollama serve


3. 确认服务端口状态:

netstat -tulpn | grep 11434


4. 配置服务

为使外网环境能够访问到服务,需要对 HOST 进行配置。

打开配置文件:

vim /etc/systemd/system/ollama.service


根据情况修改变量 Environment:

服务器环境下:

Environment="OLLAMA_HOST=0.0.0.0:11434"


虚拟机环境下:

Environment="OLLAMA_HOST=服务器内网IP地址:11434"


## 3.8 卸载Ollama

如果决定不再使用Ollama,可以通过以下步骤将其完全从系统中移除:

(1)停止并禁用服务:

sudo systemctl stop ollama
sudo systemctl disable ollama

(2)删除服务文件和Ollama二进制文件:

sudo rm /etc/systemd/system/ollama.service
sudo rm $(which ollama)

(3)清理Ollama用户和组:

sudo rm -r /usr/share/ollama
sudo userdel ollama
sudo groupdel ollama

通过以上步骤,不仅能够在Linux平台上成功安装和配置Ollama,还能够灵活地进行更新和卸载。


# 4.配置LLM+Dify


* 确认服务端口状态:

netstat -tulnp | grep ollama

netstat -tulpn | grep 11434


![](https://ai-studio-static-online.cdn.bcebos.com/f46a0b42a88a4f739db09be69510ebe68631afeea2a64fa9be3ccef276d66385)


* 报错: "Error: could not connect to ollama app, is it running?"
>参考链接:https://stackoverflow.com/questions/78437376/run-ollama-run-llama3-in-colab-raise-err-error-could-not-connect-to-ollama

/etc/systemd/system/ollama.service文件是:

[Service]
ExecStart=/usr/local/bin/ollama serve
Environment="OLLAMA_HOST=0.0.0.0:7861"
Environment="OLLAMA_KEEP_ALIVE=-1"

* 运行指令

export OLLAMA_HOST=0.0.0.0:7861
ollama list
ollama run llama3.1

直接添加到环境变量也可以

vim ~/.bashrc
source ~/.bashrc


在 设置 > 模型供应商 > Ollama 中填入:

![](https://ai-studio-static-online.cdn.bcebos.com/d67bf7c414ef424ba680a5d7d72cfce284459fcc02d8427781fb43009fb97064)

![](https://ai-studio-static-online.cdn.bcebos.com/cd996de1f78b489e850fd070a27694c6d9cc6410278d4eeab335ee2b55c848bc)



* 模型名称:llama3.1
* 基础 URL:`http://<your-ollama-endpoint-domain>:11434`
    * 此处需填写可访问到的 Ollama 服务地址。
    * 若 Dify 为 docker 部署,建议填写局域网 IP 地址,如:`http://10.80.2.195:11434` 或 docker 宿主机 IP 地址,如:`http://172.17.0.1:11434`。
    * 若为本地源码部署,可填写 `http://localhost:11434`。

* 模型类型:对话

* 模型上下文长度:4096
    * 模型的最大上下文长度,若不清楚可填写默认值 4096。

* 最大 token 上限:4096

    * 模型返回内容的最大 token 数量,若模型无特别说明,则可与模型上下文长度保持一致。

* 是否支持 Vision:是

    * 当模型支持图片理解(多模态)勾选此项,如 llava。

* 点击 "保存" 校验无误后即可在应用中使用该模型。

* Embedding 模型接入方式与 LLM 类似,只需将模型类型改为 Text Embedding 即可。

![](https://ai-studio-static-online.cdn.bcebos.com/b01562bc79134a0592d42b43bd66a8a460ab1dc15c084fcdbd754dc6ef1f814d)


* 如果您使用Docker部署Dify和Ollama,您可能会遇到以下错误:

httpconnectionpool(host=127.0.0.1, port=11434): max retries exceeded with url:/cpi/chat (Caused by NewConnectionError(': fail to establish a new connection:[Errno 111] Connection refused'))

httpconnectionpool(host=localhost, port=11434): max retries exceeded with url:/cpi/chat (Caused by NewConnectionError(': fail to establish a new connection:[Errno 111] Connection refused'))
```
这个错误是因为 Docker 容器无法访问 Ollama 服务。localhost 通常指的是容器本身,而不是主机或其他容器。要解决此问题,您需要将 Ollama 服务暴露给网络。

4.1.多模型对比

参考单个模型部署一样,进行再一次配置添加即可

  • 需要注意的是添加完新的模型配置后,需要刷新dify网页,直接网页端刷新就好,新添加的模型就会加载进来

  • 可以看到调用后模型资源消耗情况

更多推荐

更多优质内容请关注公号:汀丶人工智能;会提供一些相关的资源和优质文章,免费获取阅读。

更多优质内容请关注CSDN:汀丶人工智能;会提供一些相关的资源和优质文章,免费获取阅读。

相关文章
|
18天前
|
缓存 监控 安全
通义大模型与现有企业系统集成实战《CRM案例分析与安全最佳实践》
本文档详细介绍了基于通义大模型的CRM系统集成架构设计与优化实践。涵盖混合部署架构演进(新增向量缓存、双通道同步)、性能基准测试对比、客户意图分析模块、商机预测系统等核心功能实现。同时,深入探讨了安全防护体系、三级缓存架构、请求批处理优化及故障处理机制,并展示了实时客户画像生成和动态提示词工程。通过实施,显著提升客服响应速度(425%)、商机识别准确率(37%)及客户满意度(15%)。最后,规划了技术演进路线图,从单点集成迈向自主优化阶段,推动业务效率与价值持续增长。
|
18天前
|
存储 文字识别 自然语言处理
通义大模型在文档自动化处理中的高效部署指南(OCR集成与批量处理优化)
本文深入探讨了通义大模型在文档自动化处理中的应用,重点解决传统OCR识别精度低、效率瓶颈等问题。通过多模态编码与跨模态融合技术,通义大模型实现了高精度的文本检测与版面分析。文章详细介绍了OCR集成流程、批量处理优化策略及实战案例,展示了动态批处理和分布式架构带来的性能提升。实验结果表明,优化后系统处理速度可达210页/分钟,准确率达96.8%,单文档延迟降至0.3秒,为文档处理领域提供了高效解决方案。
|
18天前
|
机器学习/深度学习 资源调度 算法
Kaggle金牌方案复现:CGO-Transformer-GRU多模态融合预测实战
本文详细介绍了在2023年Kaggle &quot;Global Multimodal Demand Forecasting Challenge&quot;中夺冠的**CGO-Transformer-GRU**方案。该方案通过融合协方差引导优化(CGO)、注意力机制和时序建模技术,解决了多模态数据预测中的核心挑战,包括异构数据对齐、模态动态变化及长短期依赖建模。方案创新性地提出了动态门控机制、混合架构和梯度平衡算法,并在公开数据集TMU-MDFD上取得了RMSE 7.83的优异成绩,领先亚军12.6%。
|
20天前
|
人工智能 自然语言处理 运维
AI agent跨平台云资源智能管理终端是什么
随着多云架构和混合IT环境的普及,企业面临跨平台资源协同效率低、操作复杂等问题。为此,跨平台云资源智能管理终端应运而生。它通过模块化架构与自动化引擎,将异构云环境中的资源统一管理,并提供对话式交互、批量操作与智能策略编排能力。典型产品如Chaterm,支持自然语言指令输入,实现从任务规划到执行反馈的闭环体验。其应用场景涵盖大规模服务器集群管理、跨云资源调度、复杂环境自动化配置等,显著提升效率与可靠性。实施时需关注兼容性、扩展性及安全性,建议从试点入手逐步推广,优化企业运维流程。
66 5
|
1月前
|
机器学习/深度学习 人工智能 算法
AI Agent驱动下的金融智能化:技术实现与行业影响
本文探讨了AI Agent在金融领域的技术实现与行业影响,涵盖智能投顾、风险控制、市场分析及反欺诈等应用场景。通过感知、知识管理、决策和行动四大模块,AI Agent推动金融从自动化迈向智能化。文中以Python代码展示了基于Q-learning的简易金融AI Agent构建过程,并分析其带来的效率革命、决策智能化、普惠金融和风控提升等变革。同时,文章也指出了数据安全、监管合规及多Agent协作等挑战,展望了结合大模型与增强学习的未来趋势。最终,AI Agent有望成为金融决策中枢,实现“智管钱”的飞跃。
114 0
AI Agent驱动下的金融智能化:技术实现与行业影响
|
1月前
|
传感器 人工智能 搜索推荐
M3T联邦基础模型用于具身智能:边缘集成的潜力与挑战
随着具身智能系统日益变得多模态、个性化和交互式,它们必须能够从多样化的感官输入中有效学习,持续适应用户偏好,并在资源和隐私约束下安全运行。这些挑战凸显了对能够在模型泛化与个性化之间取得平衡的同时实现快速、情境感知自适应能力的机器学习模型的迫切需求。在此背景下,两种方法脱颖而出,各自提供了部分所需能力:FMs为跨任务和跨模态的泛化提供了一条路径,FL)则为分布式、隐私保护的模型更新和用户级模型个性化提供了基础设施。然而,单独使用时,这两种方法都无法满足现实世界中具身环境复杂且多样化的能力要求。
51 0
|
1月前
|
机器学习/深度学习 数据采集 人机交互
springboot+redis互联网医院智能导诊系统源码,基于医疗大模型、知识图谱、人机交互方式实现
智能导诊系统基于医疗大模型、知识图谱与人机交互技术,解决患者“知症不知病”“挂错号”等问题。通过多模态交互(语音、文字、图片等)收集病情信息,结合医学知识图谱和深度推理,实现精准的科室推荐和分级诊疗引导。系统支持基于规则模板和数据模型两种开发原理:前者依赖人工设定症状-科室规则,后者通过机器学习或深度学习分析问诊数据。其特点包括快速病情收集、智能病症关联推理、最佳就医推荐、分级导流以及与院内平台联动,提升患者就诊效率和服务体验。技术架构采用 SpringBoot+Redis+MyBatis Plus+MySQL+RocketMQ,确保高效稳定运行。
105 0
|
1月前
|
传感器 人工智能 搜索推荐
人机融合智能 | 可穿戴计算设备的多模态交互
本文介绍了可穿戴计算设备的多模态交互技术,阐述了以人为中心的设计目标与原则。内容涵盖设备的历史发展、特点及分类,并重点分析手指触控、手部动作、头部和眼睛动作等交互模态。同时探讨支持这些交互的传感器种类与原理,以及未来挑战。通过十个设计原则,强调自然高效、个性化、低认知负荷及隐私保护的重要性,为可穿戴技术的设计提供指导。
63 0
|
2月前
|
传感器 存储 人工智能
用通义灵码2.5打造智能倒计时日历:从零开始的Python开发体验
本文记录了使用通义灵码2.5开发倒计时日历工具的全过程,展现了其智能体模式带来的高效协作体验。从项目构思到功能实现,通义灵码不仅提供了代码生成与补全,还通过自主决策分解需求、优化界面样式,并集成MCP工具扩展功能。其记忆能力让开发流程更连贯,显著提升效率。最终成果具备事件管理、天气预报等功能,界面简洁美观。实践证明,通义灵码正从代码补全工具进化为真正的智能开发伙伴。
|
2月前
|
弹性计算 自然语言处理 Ubuntu
从0开始在阿里云上搭建基于通义千问的钉钉智能问答机器人
本文描述在阿里云上从0开始构建一个LLM智能问答钉钉机器人。LLM直接调用了阿里云百炼平台提供的调用服务。
从0开始在阿里云上搭建基于通义千问的钉钉智能问答机器人

热门文章

最新文章