网站开发登录链接/学网络营销去哪个学校

网站开发登录链接,学网络营销去哪个学校,网站产品管理模块,上海疫情为什么这么严重最近在研究AI Agent,发现大家都在用Dify,但Dify部署起来总是面临各种问题,而且我在部署和应用测试过程中也都遇到了,因此记录如下,供大家参考。Dify总体来说比较灵活,扩展性比较强,适合基于它做…

      最近在研究AI Agent,发现大家都在用Dify,但Dify部署起来总是面临各种问题,而且我在部署和应用测试过程中也都遇到了,因此记录如下,供大家参考。Dify总体来说比较灵活,扩展性比较强,适合基于它做智能聊天机器人,文本生成,工作流任务,Agent应用建设等场景,要比其他客户端工具更加灵活,更加适合二次开发,但Dify部署起来非常麻烦,会自动部署10个容器,任何一个出现问题,应用都无法正常使用。后续我会与Autogen对比,看看在Agent方面哪个更适合垂直行业AI应用的快速落地。

一、docker部署
1.查看docker-compose版本
docker-compose --version
2.复制环境配置文件

进入dify/docker目录,复制命令如下
cp .env.example .env

3.Docker Engine中的国内镜像配置

打开docker desktop设置功能,修改docker的Docker Engine中的国内镜像地址(否则会出现连接不上错误),具体如下

{"builder": {"gc": {"defaultKeepStorage": "20GB","enabled": true}},"experimental": false,"registry-mirrors": [# 增加部分"https://docker.m.daocloud.io","https://docker.imgdb.de","https://docker-0.unsee.tech","https://docker.hlmirror.com","https://docker.1ms.run","https://func.ink","https://lispy.org","https://docker.xiaogenban1993.com"]
}
4.拉取并启动dify容器

拉取数据、依赖包进行安装配置。
docker compose up -d

5.配置代理

打开docker desktop设置功能,进入到Resources--》proxy下,设置代理服务器地址。

6.常见错误问题的解决方式

错误1:docker部署的容器启动过程中出现db-1总是重启
需要修改docker下的docker-compose.yaml文件db配置,具体如下

services:db:image: postgres:15-alpinevolumes:- postgres-data:/var/lib/postgresql/data #增加这一行#- ./volumes/db/data:/var/lib/postgresql/data # 注释掉
# 在该文件结尾处增加
volumes:oradata:dify_es01_data:postgres-data:# 增加的内容。

然后执行容器的重新加载,具体如下。

docker compose down -v # 卸载
docker compose up # 重新加载
docker restart #重启docker

错误2:浏览器访问时出现502错误
查看服务情况

docker inspect --format '{{range.NetworkSettings.Networks}}{{.IPAddress}}{{end}}' docker-api-1
docker inspect --format '{{range.NetworkSettings.Networks}}{{.IPAddress}}{{end}}' docker-web-1

或者运行以下命令,查看服务详细信息,在返回结果找到IPAddress对应的值,即为ip地址。

docker inspect docker-web-1
docker inspect docker-api-1

比如返回结果如下。
web:172.18.0.4
api:172.18.0.9
然后修改nginx配置文件(比如D:\dify11\docker\nginx\conf.d\default.conf)内容如下:
这种方式重启docker后或重启nginx后会冲掉,或者ip地址会有变化,永久修改方式详见下面的方法。

# Please do not directly edit this file. Instead, modify the .env variables related to NGINX configuration.
# 主要这里的ip地址要根据docker中显示的ip地址进行修改,查询方式详见上面的docker inspect
server {listen 80;server_name _;location /console/api {proxy_pass http://172.18.0.9:5001;include proxy.conf;}location /api {proxy_pass http://172.18.0.9:5001;include proxy.conf;}location /v1 {proxy_pass http://172.18.0.9:5001;include proxy.conf;}location /files {proxy_pass http://172.18.0.9:5001;include proxy.conf;}location /explore {proxy_pass http://172.18.0.4:3000;include proxy.conf;}location /e/ {proxy_pass http://plugin_daemon:5002;proxy_set_header Dify-Hook-Url ://;include proxy.conf;}location / {proxy_pass http://172.18.0.4:3000;include proxy.conf;}    
}

永久修改default.conf配置文件方式如下,但这种方式容易导致nginx配置出错。
在docker目录,新建python程序,内容如下。但目前该程序容易导致安装nginx无法启动,解决办法就是将重启容器那一段不执行(需要手动重启nginx对应的容器)

#!/root/anaconda3/envs/llm/bin/python
# -*- coding: utf-8 -*-
'''
@file: dify-nginx.py
@date: 2025/3/11 15:36
@remark: 更新nginx配置信息,参考其他网友代码。
@input:dify-nginx.py
@output:dify-nginx.py
'''
import os
import dockerclient = docker.from_env()
# 获取当前 Python 脚本所在的文件夹的绝对路径
current_dir = os.path.dirname(os.path.abspath(__file__))# 读取文件
def file_get_contents(file_path):with open(file_path, "r", encoding="utf-8") as file:return file.read()# 写入文件
def file_put_contents(file_path, content):with open(file_path, "w", encoding="utf-8") as file:file.write(content)# 获取容器 IP
def get_container_ip(container_name):container = client.containers.get(container_name)return container.attrs['NetworkSettings']['Networks']['docker_default']['IPAddress']# 重启容器
def restart_container(container_name):# 原始内容container = client.containers.get(container_name)container.restart()def main():# 获取 API 和 Web 容器的 IP 地址api_container_ip = get_container_ip('docker-api-1')web_container_ip = get_container_ip('docker-web-1')print(f'api_container_ip: {api_container_ip}')print(f'web_container_ip: {web_container_ip}')# 拼接模板文件路径和目标文件路径template_path = os.path.join(current_dir, 'nginx/conf.d/default.conf.template')target_path = os.path.join(current_dir, 'nginx/conf.d/default.conf')# 读取模板文件内容并替换 IP 地址tpl_contents = file_get_contents(template_path)tpl_contents = tpl_contents.replace('http://api', f'http://{api_container_ip}')tpl_contents = tpl_contents.replace('http://web', f'http://{web_container_ip}')# 将修改后的内容写入目标配置文件file_put_contents(target_path, tpl_contents)# # 重启 Nginx 容器,记得注释掉# restart_container('docker-nginx-1')# print("Nginx container restarted with updated configuration.")
if __name__ == '__main__':main()

运行命令:python dify-nginx.py
错误3:plugin_daemon安装依赖库出错
解决办法如下。主要修改docker目录下的docker-compose.yaml文件内容(比如E:\dify2\docker\docker-compose.yaml)。增加国内镜像地址,记得注释掉原来的同名设置,如何需要代理,记得在最前面加上HTTP_PROXY,具体如下。

plugin_daemon:image: langgenius/dify-plugin-daemon:0.0.3-localrestart: alwaysenvironment:# Use the shared environment variables.<<: *shared-api-worker-env# HTTP_PROXY=http://ip:8080# HTTPS_PROXY=http://ip:8080# ... 中间省略# 注释掉原来的,新增如下内容# 设置 pip 使用国内镜像源PIP_MIRROR_URL: https://pypi.tuna.tsinghua.edu.cn/simple# 设置超时时间PYTHON_ENV_INIT_TIMEOUT: ${PYTHON_ENV_INIT_TIMEOUT:-640}

错误4:vobe文件找不到
这种错误一般需要在api对应的容器中,配置HTTP_PROXY代理,配置方式和错误3类似,具体不细说,但有时候不管用,所以需要手动更新几个文件路径(比如/api/tiktoken_ext/file),主要是vocab.bpe、encoder.json、r50k_base.tiktoken等5个文件。主要修改openai_public.py文件内容,文件位置大概在api容器的/app/api/.venv/lib/python3.12/site-packages/tiktoken_ext目录下。

# openai_public.py文件
def gpt2():mergeable_ranks = data_gym_to_mergeable_bpe_ranks(vocab_bpe_file="/api/tiktoken_ext/file/vocab.bpe",encoder_json_file="/api/tiktoken_ext/file/encoder.json",vocab_bpe_hash="1ce1664773c50f3e0cc8842619a93edc4624525b728b188a9e0be33b7726adc5",encoder_json_hash="196139668be63f3b5d6574427317ae82f612a97c5d1cdaf36ed2256dbf636783",)return {"name": "gpt2","explicit_n_vocab": 50257,"pat_str": r50k_pat_str,"mergeable_ranks": mergeable_ranks,"special_tokens": {ENDOFTEXT: 50256},}

基本上就是以上四类问题了,如果你遇到了新的问题,那恭喜你中奖了,解决办法目前看只能采取完全删除容器和镜像,重启docker和系统后,换个好的网络环境进行拉取安装了。

二、应用实践
1.安装ollama插件

使用浏览器访问dify,首次安装需要设置管理员用户密码信息等,按照向导执行即可,打开插件,安装ollama插件,最好下载到本地后(需要科学上网),选择本地安装。
在用户--设置,配置大模型服务和embedding模型服务,一般配置本机或局域网内的ollama
服务。
注意:market中提供的好多插件安装过程会导致容器启动异常,建议不要装太多插件,只安装用到的插件,其他用自定义代码块来实现。

2.创建知识库

按照要求完成知识库创建,再加一下私域知识进去,worker容器会自动分块存储。

3.创建第一个聊天助手

在工作室创建聊天助手应用,在知识库部分关联本地知识,然后进行对话,具体如下。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/898023.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

剖析sentinel的限流和熔断

sentinel的限流和熔断 前言源码分析滑动窗口源码限流源码熔断源码 完结撒花&#xff0c;sentinel源码还是挺简单的&#xff0c;如有需要收藏的看官&#xff0c;顺便也用发财的小手点点赞哈&#xff0c;如有错漏&#xff0c;也欢迎各位在评论区评论&#xff01; 前言 平时发起一…

硬盘分区误删后的数据救赎

一、硬盘分区误删的概述 硬盘分区误删&#xff0c;是许多电脑用户在使用过程中可能遭遇的棘手问题。分区&#xff0c;作为硬盘上存储数据的逻辑单元&#xff0c;一旦被误删除&#xff0c;不仅会导致该分区内的所有数据瞬间消失&#xff0c;还可能影响到整个硬盘的存储结构和数…

老牌软件,方便处理图片,量大管饱。

今天介绍的图片查看器名字是&#xff1a;FastStone Image Viewer&#xff0c;是一款可查看、编辑、批量重命名、批量转换的图片查看软件。文末有分享链接。 软件以资源管理器的方式管理你电脑里的图片&#xff0c;点击左侧可选择文件夹&#xff0c;右边可预览图片。 软妹用得最…

Python进阶编程总结

&#x1f9d1; 博主简介&#xff1a;CSDN博客专家&#xff0c;历代文学网&#xff08;PC端可以访问&#xff1a;https://literature.sinhy.com/#/literature?__c1000&#xff0c;移动端可微信小程序搜索“历代文学”&#xff09;总架构师&#xff0c;15年工作经验&#xff0c;…

Redis复制(replica)主从模式

Redis主从复制 Redis 的复制&#xff08;replication&#xff09;功能允许用户根据一个 Redis 服务器来创建任意多个该服务器的复制品&#xff0c;其中被复制的服务器为主服务器&#xff08;master&#xff09;&#xff0c;而通过复制创建出来的服务器复制品则为从服务器&#…

R语言零基础系列教程-03-RStudio界面介绍与关键设置

代码、讲义、软件回复【R语言03】获取。 设置位置: 菜单栏 - Tools - Blobal Options 设置 通用设置 设置面板左侧General选项 版本选择: 一般只用一个版本即可 默认工作目录设置: 你希望RStudio打开时是基于哪个目录进行工作可以不设置, 因为脚本一般都是放置在特定项目路…

微信小程序刷题逻辑实现:技术揭秘与实践分享

页面展示&#xff1a; 概述 在当今数字化学习的浪潮中&#xff0c;微信小程序以其便捷性和实用性&#xff0c;成为了众多学习者刷题备考的得力工具。今天&#xff0c;我们就来深入剖析一个微信小程序刷题功能的实现逻辑&#xff0c;从代码层面揭开其神秘面纱。 小程序界面布局…

JVM--垃圾回收

垃圾回收的概念 垃圾回收主要针对的是堆中的对象&#xff0c;堆是一个共享的区域&#xff0c;创建的对象和数组都放在这个位置。但是我们不能一直的创建对象&#xff0c;也不是所有的对象能一直存放&#xff0c;如果不进行垃圾回收&#xff0c;内存迟早会耗尽&#xff0c;及时…

【教程】继承中的访问控制 C++

目录 简介public&#xff0c;protected 和 private继承中的 public&#xff0c;protected 和 private示例 简介 在 C 中派生类可以通过 public&#xff0c;protected 和 private 三种修饰符决定基类成员在派生类中的访问级别 public&#xff0c;protected 和 private 公有成…

【2025】基于python+django的驾校招生培训管理系统(源码、万字文档、图文修改、调试答疑)

课题功能结构图如下&#xff1a; 驾校招生培训管理系统设计 一、课题背景 随着机动车保有量的不断增加&#xff0c;人们对驾驶技能的需求也日益增长。驾校作为驾驶培训的主要机构&#xff0c;面临着激烈的市场竞争和学员需求多样化等挑战。传统的驾校管理模式往往依赖于人工操作…

要登录的设备ip未知时的处理方法

目录 1 应用场景... 1 2 解决方法&#xff1a;... 1 2.1 wireshark设置... 1 2.2 获取网口mac地址&#xff0c;wireshark抓包前预过滤掉自身mac地址的影响。... 2 2.3 pc网口和设备对接... 3 2.3.1 情况1&#xff1a;... 3 2.3.2 情…

go 安装swagger

1、依赖安装&#xff1a; # 安装 swag 命令行工具 go install github.com/swaggo/swag/cmd/swaglatest# 安装 gin-swagger 和 swagger 文件的依赖 go get -u github.com/swaggo/gin-swagger go get -u github.com/swaggo/files 2、测试 cmd中输入&#xff1a; swag -v 如果…

网络安全反渗透 网络安全攻防渗透

网络渗透防范主要从两个方面来进行防范&#xff0c;一方面是从思想意识上进行防范&#xff0c;另一方面就是从技术方面来进行防范。 1.从思想意识上防范渗透 网络攻击与网络安全防御是正反两个方面&#xff0c;纵观容易出现网络安全事故或者事件的公司和个人&#xff0c;在这些…

技术视界|构建理想仿真平台,加速机器人智能化落地

在近期的 OpenLoong 线下技术分享会 上&#xff0c;松应科技联合创始人张小波进行了精彩的演讲&#xff0c;深入探讨了仿真技术在机器人智能化发展中的关键作用。他结合行业趋势&#xff0c;剖析了现有仿真平台的挑战&#xff0c;并描绘了未来理想仿真系统的设计理念与实现路径…

环境配置 | 5分钟极简Git入门:从零上手版本控制

你是否刚接触Git&#xff1f;别担心&#xff01;这篇指南将用最简单的步骤带你掌握Git核心操作&#xff0c;快速开启版本控制之旅&#xff01;✨ 1.git在win10上的下载安装 1.1.下载git 打开官方网站 Git - Downloadshttps://git-scm.com/downloads ​ ​​ 1.2.git安装 …

计算机网络——DNS

一、什么是DNS&#xff1f; DNS&#xff08;Domain Name System&#xff0c;域名系统&#xff09; 是互联网的核心服务&#xff0c;负责将人类可读的域名&#xff08;如 www.baidu.com&#xff09;转换为机器可识别的 IP地址&#xff08;如 14.119.104.254&#xff09;。它像一…

SQLark 实战 | 如何从Excel、csv、txt等外部文件进行数据导入

数据导入导出是应用开发者在平时开发中最常用的操作之一&#xff0c;SQLark 里提供了方便的图形化界面来完成导入导出。本文先和大家分享如何从 Excel、csv、txt 等外部文件导入数据到数据库表中。 &#x1f449; 前往 SQLark 官网&#xff1a;www.sqlark.com 下载全功能免费版…

钉钉(excel)能让表格中不是‘北京’的字符串自动加亮显示(方便查看)以及隔行填充严颜色是斑马色(方便查看)嘛

在钉钉在线表格中&#xff0c;虽然功能相对Excel有所简化&#xff0c;但仍然可以通过条件格式实现对特定内容的高亮显示。以下是具体步骤&#xff1a; 一、在钉钉在线表格中设置条件格式 1. 打开钉钉在线表格 登录钉钉&#xff0c;进入“钉钉在线表格”应用。 打开你需要操作…

Windows根据文件名批量在文件夹里查找文件并复制出来,用WPF实现的详细步骤

项目前言 在日常工作和生活中&#xff0c;我们常常会遇到需要从大量文件中根据文件名批量查找特定文件并复制到指定位置的情况。手动一个个查找和复制文件不仅效率低下&#xff0c;还容易出错。使用 Windows Presentation Foundation (WPF) 可以创建一个用户友好的图形界面应用…

探索Maas平台与阿里 QWQ 技术:AI调参的魔法世界

摘要&#xff1a;本文介绍了蓝耘 Maas 平台在人工智能领域的表现及其核心优势&#xff0c;包括强大的模型支持、高效的资源调度和友好的操作界面。文章还探讨了蓝耘 Maas 平台与阿里 QWQ 技术的融合亮点及应用拓展实例&#xff0c;并提供了调参实战指南&#xff0c;最后对蓝耘 …