我在流程中的某些随机交互中遇到了以下错误。
转换代理消息失败:req_id: {{id}} PluginInvokeError: {“args”:{},“error_type”:“Exception”,“message”:“读取LLM模型失败:请求失败:req_id: {{id}} PluginInvokeError: {"args":{"description":"1 个验证错误,LLMResultChunk\nmodel\n 输入应为有效字符串 [type=string_type, input_value=None, input_type=NoneType]\n 有关更多信息,请访问 [Redirecting... "Redirecting...”) 验证错误,LLMResultChunk\nmodel\n 输入应为有效字符串 [type=string_type, input_value=None, input_type=NoneType]\n 有关更多信息,请访问 [Redirecting...}](Redirecting... "Redirecting...")\n\n有人知道为什么会发生这种情况,以及如何永久解决吗?
我刚也是plugininvoke错误,就是无法调用ai大模型的api问题,可能是这个原因Docker daemon配置缺少DNS:/etc/docker/daemon.json 只有镜像仓库配置,没有DNS配置, 方案1:修改Docker daemon配置。这会修复所有容器的DNS问题。
执行修改:
1. 备份当前配置
bash
echo "=== 1. 备份当前配置 ==="
sudo cp /etc/docker/daemon.json /etc/docker/daemon.json.backup.$(date +%Y%m%d_%H%M%S)
echo "已备份到: /etc/docker/daemon.json.backup"
2. 创建新的daemon.json配置
bash
echo "=== 2. 创建新的daemon.json配置 ==="
sudo tee /etc/docker/daemon.json << 'EOF'
{
"dns": ["223.5.5.5", "119.29.29.29", "114.114.114.114"],
"dns-opts": ["timeout:2", "attempts:3", "rotate"],
"registry-mirrors": [
"https://do.nark.eu.org",
"https://dc.j8.work",
"https://docker.m.daocloud.io",
"https://dockerproxy.com",
"https://docker.mirrors.ustc.edu.cn",
"https://docker.nju.edu.cn"
]
}
EOF
echo "新配置内容:"
sudo cat /etc/docker/daemon.json
3. 重启Docker服务
bash
echo "=== 3. 重启Docker服务 ==="
sudo systemctl daemon-reload
sudo systemctl restart docker
echo "等待Docker重启..."
sleep 10
echo "检查Docker状态:"
sudo systemctl status docker | head -10
4. 重启所有Dify容器
bash
echo "=== 4. 重启所有Dify容器 ==="
cd /root/dify/docker
# 停止所有容器
docker-compose down
# 等待清理
sleep 5
# 重新启动
docker-compose up -d
echo "等待服务启动..."
sleep 20
5. 验证修复
bash
echo "=== 5. 验证DNS修复 ==="
# 测试各个容器的DNS解析
containers=("docker-api-1" "docker-plugin_daemon-1")
for container in "${containers[@]}"; do
echo "测试容器: $container"
echo "DNS配置: $(docker inspect $container --format='{{.HostConfig.Dns}}')"
echo "resolv.conf内容:"
docker exec $container cat /etc/resolv.conf 2>/dev/null || echo "无法访问"
# 测试DNS解析
docker exec $container python3 -c "
import socket
try:
ip = socket.gethostbyname('baidu.com')
print(f'✅ DNS解析成功: baidu.com -> {ip}')
ip2 = socket.gethostbyname('pypi.org')
print(f'✅ DNS解析成功: pypi.org -> {ip2}')
ip3 = socket.gethostbyname('pypi.tuna.tsinghua.edu.cn')
print(f'✅ DNS解析成功: 清华镜像 -> {ip3}')
except Exception as e:
print(f'❌ DNS解析失败: {e}')
" 2>/dev/null || echo "容器内无Python,使用其他方法测试"
echo "---"
done
6. 测试外部API连接
bash
echo "=== 6. 测试外部API连接 ==="
docker exec docker-api-1 python3 -c "
import urllib.request
import socket
import ssl
# 跳过SSL验证
ssl._create_default_https_context = ssl._create_unverified_context
print('测试外部API连接:')
apis = [
('百度', 'https://www.baidu.com'),
('清华镜像', 'https://pypi.tuna.tsinghua.edu.cn'),
('PyPI', 'https://pypi.org'),
]
for name, url in apis:
try:
req = urllib.request.urlopen(url, timeout=10)
print(f'✅ {name}: 可连接 (HTTP {req.status})')
except Exception as e:
print(f'❌ {name}: 连接失败 - {str(e)[:100]}')
"
7. 检查插件状态
bash
echo "=== 7. 检查插件状态 ==="
docker-compose logs --tail=20 plugin_daemon | grep -i "siliconflow\|jina\|install\|ready\|failed" | head -10