フロー内のいくつかのランダムなやり取りで、次のエラーが発生しています。
エージェントメッセージの変換に失敗しました: req_id: {{id}} PluginInvokeError: {“args”:{},“error_type”:“Exception”,“message”:“read llm model failed: request failed: req_id: {{id}} PluginInvokeError: {"args":{"description":"1 validation error for LLMResultChunk\\nmodel\\n Input should be a valid string [type=string_type, input_value=None, input_type=NoneType]\\n For further information visit [Redirecting... validation error for LLMResultChunk\\nmodel\\n Input should be a valid string [type=string_type, input_value=None, input_type=NoneType]\\n For further information visit [Redirecting...}”}
このエラーが発生する原因と、永続的に解決する方法をご存知の方はいらっしゃいますか?
私はちょうどplugininvokeエラーに遭遇しました。AI大規模モデルのAPIを呼び出すことができない問題です。原因はおそらくDockerデーモンの設定にDNSが欠けていることです。/etc/docker/daemon.jsonには、イメージレジストリの設定のみがあり、DNSの設定がありません。
対処法1:Dockerデーモンの設定を修正する。これにより、すべてのコンテナの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