API 连通性调试'; echo ''; // 1. 检查是否有 API 配置 echo '

1. 检查 API 配置

'; $apis = get_option('argon_ai_apis', []); if (empty($apis)) { echo '

✗ 没有配置任何 API

'; die(); } else { echo '

✓ 找到 ' . count($apis) . ' 个 API 配置

'; echo '
' . print_r($apis, true) . '
'; } // 2. 获取第一个 API 进行测试 $test_api = $apis[0]; $api_id = $test_api['id']; echo '

2. 测试 API: ' . esc_html($test_api['name']) . '

'; echo '

API ID: ' . esc_html($api_id) . '

'; echo '

提供商: ' . esc_html($test_api['provider']) . '

'; echo '

模型: ' . esc_html($test_api['model']) . '

'; // 3. 测试 argon_get_api_by_id 函数 echo '

3. 测试 argon_get_api_by_id 函数

'; $api = argon_get_api_by_id($api_id); if ($api) { echo '

✓ 成功获取 API 配置

'; echo '
' . print_r($api, true) . '
'; } else { echo '

✗ 无法获取 API 配置

'; die(); } // 4. 获取默认端点 echo '

4. 获取 API 端点

'; $default_endpoints = [ 'openai' => 'https://api.openai.com/v1/chat/completions', 'anthropic' => 'https://api.anthropic.com/v1/messages', 'deepseek' => 'https://api.deepseek.com/v1/chat/completions', 'xiaomi' => 'https://api.mimo.xiaomi.com/v1/chat/completions', 'qianwen' => 'https://dashscope.aliyuncs.com/compatible-mode/v1/chat/completions', 'wenxin' => 'https://aip.baidubce.com/rpc/2.0/ai_custom/v1/wenxinworkshop/chat/completions', 'doubao' => 'https://ark.cn-beijing.volces.com/api/v3/chat/completions', 'kimi' => 'https://api.moonshot.cn/v1/chat/completions', 'zhipu' => 'https://open.bigmodel.cn/api/paas/v4/chat/completions', 'siliconflow' => 'https://api.siliconflow.cn/v1/chat/completions' ]; $api_endpoint = !empty($api['api_endpoint']) ? $api['api_endpoint'] : (isset($default_endpoints[$api['provider']]) ? $default_endpoints[$api['provider']] : ''); if (empty($api_endpoint)) { echo '

✗ 未配置 API 端点

'; die(); } else { echo '

✓ API 端点: ' . esc_html($api_endpoint) . '

'; } // 5. 构建测试请求 echo '

5. 构建测试请求

'; $model = !empty($api['model']) ? $api['model'] : 'gpt-4o-mini'; $data = [ 'model' => $model, 'messages' => [ [ 'role' => 'user', 'content' => '你好,这是一个测试。请回复"测试成功"。' ] ], 'max_tokens' => 50, 'stream' => false ]; echo '

请求数据:

'; echo '
' . json_encode($data, JSON_PRETTY_PRINT | JSON_UNESCAPED_UNICODE) . '
'; // 6. 发送请求 echo '

6. 发送 API 请求

'; $start_time = microtime(true); $response = wp_remote_post($api_endpoint, [ 'headers' => [ 'Content-Type' => 'application/json', 'Authorization' => 'Bearer ' . $api['api_key'], 'Accept' => 'application/json' ], 'body' => json_encode($data, JSON_UNESCAPED_UNICODE), 'timeout' => 30, 'sslverify' => true ]); $response_time = round((microtime(true) - $start_time) * 1000); echo '

响应时间: ' . $response_time . 'ms

'; // 7. 检查响应 echo '

7. 检查响应

'; if (is_wp_error($response)) { echo '

✗ 请求失败: ' . $response->get_error_message() . '

'; die(); } $status_code = wp_remote_retrieve_response_code($response); $body = wp_remote_retrieve_body($response); echo '

HTTP 状态码: ' . $status_code . '

'; echo '

响应内容:

'; echo '
' . esc_html($body) . '
'; // 8. 解析响应 echo '

8. 解析响应

'; if ($status_code === 200) { $result = json_decode($body, true); if (json_last_error() !== JSON_ERROR_NONE) { echo '

✗ JSON 解析失败: ' . json_last_error_msg() . '

'; } else { echo '

✓ JSON 解析成功

'; echo '
' . print_r($result, true) . '
'; if (isset($result['choices'][0]['message']['content']) || isset($result['content'])) { echo '

✓✓✓ API 测试成功!

'; } else { echo '

✗ API 返回格式异常(缺少 content 字段)

'; } } } else { echo '

✗ HTTP 状态码错误: ' . $status_code . '

'; $result = json_decode($body, true); if ($result && isset($result['error'])) { echo '

错误信息: ' . print_r($result['error'], true) . '

'; } } // 9. 模拟 AJAX 调用 echo '

9. 模拟 AJAX 函数调用

'; echo '

现在模拟调用 argon_ajax_test_unified_api 函数...

'; // 设置 POST 数据 $_POST['api_id'] = $api_id; $_POST['nonce'] = wp_create_nonce('argon_test_unified_api'); // 捕获输出 ob_start(); try { argon_ajax_test_unified_api(); } catch (Exception $e) { echo '

✗ 函数执行异常: ' . $e->getMessage() . '

'; } $ajax_output = ob_get_clean(); echo '

AJAX 函数输出:

'; echo '
' . esc_html($ajax_output) . '
'; // 尝试解析 JSON $ajax_result = json_decode($ajax_output, true); if (json_last_error() === JSON_ERROR_NONE) { echo '

✓ AJAX 返回有效 JSON

'; echo '
' . print_r($ajax_result, true) . '
'; } else { echo '

✗ AJAX 返回不是有效 JSON: ' . json_last_error_msg() . '

'; }