Amazon Bedrock プラグインInvokeError

フロー内のいくつかのランダムなやり取りで、次のエラーが発生しています。

エージェントメッセージの変換に失敗しました: 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