feat: 为所有 AI API 调用函数添加详细错误处理
- 为 9 个 API 调用函数添加 post_id 参数(Anthropic, 通义千问, 文心一言, Kimi, 智谱, DeepSeek, 小米 Mimo, 豆包, 硅基流动) - 使用 argon_log_ai_error() 统一记录错误 - 添加 HTTP 状态码检查 - 添加响应格式验证 - 添加空内容检查 - 记录详细的上下文信息(endpoint, model, error) - 所有错误信息保存到文章 meta 供后续查看
This commit is contained in:
542
functions.php
542
functions.php
@@ -6858,7 +6858,7 @@ function argon_call_openai_api($api_key, $prompt, $content, $post_id = 0) {
|
||||
/**
|
||||
* 调用 Anthropic Claude API
|
||||
*/
|
||||
function argon_call_anthropic_api($api_key, $prompt, $content) {
|
||||
function argon_call_anthropic_api($api_key, $prompt, $content, $post_id = 0) {
|
||||
$provider = 'anthropic';
|
||||
$config = argon_get_ai_provider_config($provider);
|
||||
|
||||
@@ -6884,23 +6884,75 @@ function argon_call_anthropic_api($api_key, $prompt, $content) {
|
||||
]);
|
||||
|
||||
if (is_wp_error($response)) {
|
||||
error_log('Argon AI Summary Error: ' . $response->get_error_message());
|
||||
argon_log_ai_error('网络请求失败', $post_id, [
|
||||
'provider' => $provider,
|
||||
'endpoint' => $endpoint,
|
||||
'model' => $model,
|
||||
'error' => $response->get_error_message()
|
||||
]);
|
||||
return false;
|
||||
}
|
||||
|
||||
$status_code = wp_remote_retrieve_response_code($response);
|
||||
if ($status_code !== 200) {
|
||||
argon_log_ai_error('API 返回错误状态码', $post_id, [
|
||||
'provider' => $provider,
|
||||
'endpoint' => $endpoint,
|
||||
'model' => $model,
|
||||
'status_code' => $status_code,
|
||||
'response' => wp_remote_retrieve_body($response)
|
||||
]);
|
||||
return false;
|
||||
}
|
||||
|
||||
$body = json_decode(wp_remote_retrieve_body($response), true);
|
||||
|
||||
if (isset($body['content'][0]['text'])) {
|
||||
return trim($body['content'][0]['text']);
|
||||
if (!is_array($body)) {
|
||||
argon_log_ai_error('API 返回的响应格式无效', $post_id, [
|
||||
'provider' => $provider,
|
||||
'endpoint' => $endpoint,
|
||||
'model' => $model,
|
||||
'response' => wp_remote_retrieve_body($response)
|
||||
]);
|
||||
return false;
|
||||
}
|
||||
|
||||
if (isset($body['error'])) {
|
||||
argon_log_ai_error('API 返回错误', $post_id, [
|
||||
'provider' => $provider,
|
||||
'endpoint' => $endpoint,
|
||||
'model' => $model,
|
||||
'error' => $body['error']
|
||||
]);
|
||||
return false;
|
||||
}
|
||||
|
||||
if (isset($body['content'][0]['text'])) {
|
||||
$result = trim($body['content'][0]['text']);
|
||||
if (empty($result)) {
|
||||
argon_log_ai_error('API 返回空内容', $post_id, [
|
||||
'provider' => $provider,
|
||||
'endpoint' => $endpoint,
|
||||
'model' => $model
|
||||
]);
|
||||
return false;
|
||||
}
|
||||
return $result;
|
||||
}
|
||||
|
||||
argon_log_ai_error('API 响应中缺少预期的内容字段', $post_id, [
|
||||
'provider' => $provider,
|
||||
'endpoint' => $endpoint,
|
||||
'model' => $model,
|
||||
'response_keys' => array_keys($body)
|
||||
]);
|
||||
return false;
|
||||
}
|
||||
|
||||
/**
|
||||
* 调用通义千问 API
|
||||
*/
|
||||
function argon_call_qianwen_api($api_key, $prompt, $content) {
|
||||
function argon_call_qianwen_api($api_key, $prompt, $content, $post_id = 0) {
|
||||
$provider = 'qianwen';
|
||||
$config = argon_get_ai_provider_config($provider);
|
||||
|
||||
@@ -6930,23 +6982,76 @@ function argon_call_qianwen_api($api_key, $prompt, $content) {
|
||||
]);
|
||||
|
||||
if (is_wp_error($response)) {
|
||||
error_log('Argon AI Summary Error: ' . $response->get_error_message());
|
||||
argon_log_ai_error('网络请求失败', $post_id, [
|
||||
'provider' => $provider,
|
||||
'endpoint' => $endpoint,
|
||||
'model' => $model,
|
||||
'error' => $response->get_error_message()
|
||||
]);
|
||||
return false;
|
||||
}
|
||||
|
||||
$status_code = wp_remote_retrieve_response_code($response);
|
||||
if ($status_code !== 200) {
|
||||
argon_log_ai_error('API 返回错误状态码', $post_id, [
|
||||
'provider' => $provider,
|
||||
'endpoint' => $endpoint,
|
||||
'model' => $model,
|
||||
'status_code' => $status_code,
|
||||
'response' => wp_remote_retrieve_body($response)
|
||||
]);
|
||||
return false;
|
||||
}
|
||||
|
||||
$body = json_decode(wp_remote_retrieve_body($response), true);
|
||||
|
||||
if (isset($body['output']['choices'][0]['message']['content'])) {
|
||||
return trim($body['output']['choices'][0]['message']['content']);
|
||||
if (!is_array($body)) {
|
||||
argon_log_ai_error('API 返回的响应格式无效', $post_id, [
|
||||
'provider' => $provider,
|
||||
'endpoint' => $endpoint,
|
||||
'model' => $model,
|
||||
'response' => wp_remote_retrieve_body($response)
|
||||
]);
|
||||
return false;
|
||||
}
|
||||
|
||||
if (isset($body['code']) && $body['code'] !== '200') {
|
||||
argon_log_ai_error('API 返回错误', $post_id, [
|
||||
'provider' => $provider,
|
||||
'endpoint' => $endpoint,
|
||||
'model' => $model,
|
||||
'error_code' => $body['code'],
|
||||
'error_message' => isset($body['message']) ? $body['message'] : 'Unknown error'
|
||||
]);
|
||||
return false;
|
||||
}
|
||||
|
||||
if (isset($body['output']['choices'][0]['message']['content'])) {
|
||||
$result = trim($body['output']['choices'][0]['message']['content']);
|
||||
if (empty($result)) {
|
||||
argon_log_ai_error('API 返回空内容', $post_id, [
|
||||
'provider' => $provider,
|
||||
'endpoint' => $endpoint,
|
||||
'model' => $model
|
||||
]);
|
||||
return false;
|
||||
}
|
||||
return $result;
|
||||
}
|
||||
|
||||
argon_log_ai_error('API 响应中缺少预期的内容字段', $post_id, [
|
||||
'provider' => $provider,
|
||||
'endpoint' => $endpoint,
|
||||
'model' => $model,
|
||||
'response_keys' => array_keys($body)
|
||||
]);
|
||||
return false;
|
||||
}
|
||||
|
||||
/**
|
||||
* 调用文心一言 API
|
||||
*/
|
||||
function argon_call_wenxin_api($api_key, $prompt, $content) {
|
||||
function argon_call_wenxin_api($api_key, $prompt, $content, $post_id = 0) {
|
||||
$provider = 'wenxin';
|
||||
$config = argon_get_ai_provider_config($provider);
|
||||
|
||||
@@ -6973,23 +7078,76 @@ function argon_call_wenxin_api($api_key, $prompt, $content) {
|
||||
]);
|
||||
|
||||
if (is_wp_error($response)) {
|
||||
error_log('Argon AI Summary Error: ' . $response->get_error_message());
|
||||
argon_log_ai_error('网络请求失败', $post_id, [
|
||||
'provider' => $provider,
|
||||
'endpoint' => $endpoint,
|
||||
'model' => $model,
|
||||
'error' => $response->get_error_message()
|
||||
]);
|
||||
return false;
|
||||
}
|
||||
|
||||
$status_code = wp_remote_retrieve_response_code($response);
|
||||
if ($status_code !== 200) {
|
||||
argon_log_ai_error('API 返回错误状态码', $post_id, [
|
||||
'provider' => $provider,
|
||||
'endpoint' => $endpoint,
|
||||
'model' => $model,
|
||||
'status_code' => $status_code,
|
||||
'response' => wp_remote_retrieve_body($response)
|
||||
]);
|
||||
return false;
|
||||
}
|
||||
|
||||
$body = json_decode(wp_remote_retrieve_body($response), true);
|
||||
|
||||
if (isset($body['result'])) {
|
||||
return trim($body['result']);
|
||||
if (!is_array($body)) {
|
||||
argon_log_ai_error('API 返回的响应格式无效', $post_id, [
|
||||
'provider' => $provider,
|
||||
'endpoint' => $endpoint,
|
||||
'model' => $model,
|
||||
'response' => wp_remote_retrieve_body($response)
|
||||
]);
|
||||
return false;
|
||||
}
|
||||
|
||||
if (isset($body['error_code'])) {
|
||||
argon_log_ai_error('API 返回错误', $post_id, [
|
||||
'provider' => $provider,
|
||||
'endpoint' => $endpoint,
|
||||
'model' => $model,
|
||||
'error_code' => $body['error_code'],
|
||||
'error_msg' => isset($body['error_msg']) ? $body['error_msg'] : 'Unknown error'
|
||||
]);
|
||||
return false;
|
||||
}
|
||||
|
||||
if (isset($body['result'])) {
|
||||
$result = trim($body['result']);
|
||||
if (empty($result)) {
|
||||
argon_log_ai_error('API 返回空内容', $post_id, [
|
||||
'provider' => $provider,
|
||||
'endpoint' => $endpoint,
|
||||
'model' => $model
|
||||
]);
|
||||
return false;
|
||||
}
|
||||
return $result;
|
||||
}
|
||||
|
||||
argon_log_ai_error('API 响应中缺少预期的内容字段', $post_id, [
|
||||
'provider' => $provider,
|
||||
'endpoint' => $endpoint,
|
||||
'model' => $model,
|
||||
'response_keys' => array_keys($body)
|
||||
]);
|
||||
return false;
|
||||
}
|
||||
|
||||
/**
|
||||
* 调用 Kimi (Moonshot) API
|
||||
*/
|
||||
function argon_call_kimi_api($api_key, $prompt, $content) {
|
||||
function argon_call_kimi_api($api_key, $prompt, $content, $post_id = 0) {
|
||||
$provider = 'kimi';
|
||||
$config = argon_get_ai_provider_config($provider);
|
||||
|
||||
@@ -7015,23 +7173,75 @@ function argon_call_kimi_api($api_key, $prompt, $content) {
|
||||
]);
|
||||
|
||||
if (is_wp_error($response)) {
|
||||
error_log('Argon AI Summary Error: ' . $response->get_error_message());
|
||||
argon_log_ai_error('网络请求失败', $post_id, [
|
||||
'provider' => $provider,
|
||||
'endpoint' => $endpoint,
|
||||
'model' => $model,
|
||||
'error' => $response->get_error_message()
|
||||
]);
|
||||
return false;
|
||||
}
|
||||
|
||||
$status_code = wp_remote_retrieve_response_code($response);
|
||||
if ($status_code !== 200) {
|
||||
argon_log_ai_error('API 返回错误状态码', $post_id, [
|
||||
'provider' => $provider,
|
||||
'endpoint' => $endpoint,
|
||||
'model' => $model,
|
||||
'status_code' => $status_code,
|
||||
'response' => wp_remote_retrieve_body($response)
|
||||
]);
|
||||
return false;
|
||||
}
|
||||
|
||||
$body = json_decode(wp_remote_retrieve_body($response), true);
|
||||
|
||||
if (isset($body['choices'][0]['message']['content'])) {
|
||||
return trim($body['choices'][0]['message']['content']);
|
||||
if (!is_array($body)) {
|
||||
argon_log_ai_error('API 返回的响应格式无效', $post_id, [
|
||||
'provider' => $provider,
|
||||
'endpoint' => $endpoint,
|
||||
'model' => $model,
|
||||
'response' => wp_remote_retrieve_body($response)
|
||||
]);
|
||||
return false;
|
||||
}
|
||||
|
||||
if (isset($body['error'])) {
|
||||
argon_log_ai_error('API 返回错误', $post_id, [
|
||||
'provider' => $provider,
|
||||
'endpoint' => $endpoint,
|
||||
'model' => $model,
|
||||
'error' => $body['error']
|
||||
]);
|
||||
return false;
|
||||
}
|
||||
|
||||
if (isset($body['choices'][0]['message']['content'])) {
|
||||
$result = trim($body['choices'][0]['message']['content']);
|
||||
if (empty($result)) {
|
||||
argon_log_ai_error('API 返回空内容', $post_id, [
|
||||
'provider' => $provider,
|
||||
'endpoint' => $endpoint,
|
||||
'model' => $model
|
||||
]);
|
||||
return false;
|
||||
}
|
||||
return $result;
|
||||
}
|
||||
|
||||
argon_log_ai_error('API 响应中缺少预期的内容字段', $post_id, [
|
||||
'provider' => $provider,
|
||||
'endpoint' => $endpoint,
|
||||
'model' => $model,
|
||||
'response_keys' => array_keys($body)
|
||||
]);
|
||||
return false;
|
||||
}
|
||||
|
||||
/**
|
||||
* 调用智谱 AI API
|
||||
*/
|
||||
function argon_call_zhipu_api($api_key, $prompt, $content) {
|
||||
function argon_call_zhipu_api($api_key, $prompt, $content, $post_id = 0) {
|
||||
$provider = 'zhipu';
|
||||
$config = argon_get_ai_provider_config($provider);
|
||||
|
||||
@@ -7056,16 +7266,68 @@ function argon_call_zhipu_api($api_key, $prompt, $content) {
|
||||
]);
|
||||
|
||||
if (is_wp_error($response)) {
|
||||
error_log('Argon AI Summary Error: ' . $response->get_error_message());
|
||||
argon_log_ai_error('网络请求失败', $post_id, [
|
||||
'provider' => $provider,
|
||||
'endpoint' => $endpoint,
|
||||
'model' => $model,
|
||||
'error' => $response->get_error_message()
|
||||
]);
|
||||
return false;
|
||||
}
|
||||
|
||||
$status_code = wp_remote_retrieve_response_code($response);
|
||||
if ($status_code !== 200) {
|
||||
argon_log_ai_error('API 返回错误状态码', $post_id, [
|
||||
'provider' => $provider,
|
||||
'endpoint' => $endpoint,
|
||||
'model' => $model,
|
||||
'status_code' => $status_code,
|
||||
'response' => wp_remote_retrieve_body($response)
|
||||
]);
|
||||
return false;
|
||||
}
|
||||
|
||||
$body = json_decode(wp_remote_retrieve_body($response), true);
|
||||
|
||||
if (isset($body['choices'][0]['message']['content'])) {
|
||||
return trim($body['choices'][0]['message']['content']);
|
||||
if (!is_array($body)) {
|
||||
argon_log_ai_error('API 返回的响应格式无效', $post_id, [
|
||||
'provider' => $provider,
|
||||
'endpoint' => $endpoint,
|
||||
'model' => $model,
|
||||
'response' => wp_remote_retrieve_body($response)
|
||||
]);
|
||||
return false;
|
||||
}
|
||||
|
||||
if (isset($body['error'])) {
|
||||
argon_log_ai_error('API 返回错误', $post_id, [
|
||||
'provider' => $provider,
|
||||
'endpoint' => $endpoint,
|
||||
'model' => $model,
|
||||
'error' => $body['error']
|
||||
]);
|
||||
return false;
|
||||
}
|
||||
|
||||
if (isset($body['choices'][0]['message']['content'])) {
|
||||
$result = trim($body['choices'][0]['message']['content']);
|
||||
if (empty($result)) {
|
||||
argon_log_ai_error('API 返回空内容', $post_id, [
|
||||
'provider' => $provider,
|
||||
'endpoint' => $endpoint,
|
||||
'model' => $model
|
||||
]);
|
||||
return false;
|
||||
}
|
||||
return $result;
|
||||
}
|
||||
|
||||
argon_log_ai_error('API 响应中缺少预期的内容字段', $post_id, [
|
||||
'provider' => $provider,
|
||||
'endpoint' => $endpoint,
|
||||
'model' => $model,
|
||||
'response_keys' => array_keys($body)
|
||||
]);
|
||||
return false;
|
||||
}
|
||||
|
||||
@@ -7193,7 +7455,7 @@ add_action('wp_ajax_nopriv_argon_check_ai_summary', 'argon_check_ai_summary');
|
||||
/**
|
||||
* 调用 DeepSeek API
|
||||
*/
|
||||
function argon_call_deepseek_api($api_key, $prompt, $content) {
|
||||
function argon_call_deepseek_api($api_key, $prompt, $content, $post_id = 0) {
|
||||
$provider = 'deepseek';
|
||||
$config = argon_get_ai_provider_config($provider);
|
||||
|
||||
@@ -7220,23 +7482,75 @@ function argon_call_deepseek_api($api_key, $prompt, $content) {
|
||||
]);
|
||||
|
||||
if (is_wp_error($response)) {
|
||||
error_log('Argon AI Summary Error: ' . $response->get_error_message());
|
||||
argon_log_ai_error('网络请求失败', $post_id, [
|
||||
'provider' => $provider,
|
||||
'endpoint' => $endpoint,
|
||||
'model' => $model,
|
||||
'error' => $response->get_error_message()
|
||||
]);
|
||||
return false;
|
||||
}
|
||||
|
||||
$status_code = wp_remote_retrieve_response_code($response);
|
||||
if ($status_code !== 200) {
|
||||
argon_log_ai_error('API 返回错误状态码', $post_id, [
|
||||
'provider' => $provider,
|
||||
'endpoint' => $endpoint,
|
||||
'model' => $model,
|
||||
'status_code' => $status_code,
|
||||
'response' => wp_remote_retrieve_body($response)
|
||||
]);
|
||||
return false;
|
||||
}
|
||||
|
||||
$body = json_decode(wp_remote_retrieve_body($response), true);
|
||||
|
||||
if (isset($body['choices'][0]['message']['content'])) {
|
||||
return trim($body['choices'][0]['message']['content']);
|
||||
if (!is_array($body)) {
|
||||
argon_log_ai_error('API 返回的响应格式无效', $post_id, [
|
||||
'provider' => $provider,
|
||||
'endpoint' => $endpoint,
|
||||
'model' => $model,
|
||||
'response' => wp_remote_retrieve_body($response)
|
||||
]);
|
||||
return false;
|
||||
}
|
||||
|
||||
if (isset($body['error'])) {
|
||||
argon_log_ai_error('API 返回错误', $post_id, [
|
||||
'provider' => $provider,
|
||||
'endpoint' => $endpoint,
|
||||
'model' => $model,
|
||||
'error' => $body['error']
|
||||
]);
|
||||
return false;
|
||||
}
|
||||
|
||||
if (isset($body['choices'][0]['message']['content'])) {
|
||||
$result = trim($body['choices'][0]['message']['content']);
|
||||
if (empty($result)) {
|
||||
argon_log_ai_error('API 返回空内容', $post_id, [
|
||||
'provider' => $provider,
|
||||
'endpoint' => $endpoint,
|
||||
'model' => $model
|
||||
]);
|
||||
return false;
|
||||
}
|
||||
return $result;
|
||||
}
|
||||
|
||||
argon_log_ai_error('API 响应中缺少预期的内容字段', $post_id, [
|
||||
'provider' => $provider,
|
||||
'endpoint' => $endpoint,
|
||||
'model' => $model,
|
||||
'response_keys' => array_keys($body)
|
||||
]);
|
||||
return false;
|
||||
}
|
||||
|
||||
/**
|
||||
* 调用小米 Mimo API
|
||||
*/
|
||||
function argon_call_xiaomi_api($api_key, $prompt, $content) {
|
||||
function argon_call_xiaomi_api($api_key, $prompt, $content, $post_id = 0) {
|
||||
$provider = 'xiaomi';
|
||||
$config = argon_get_ai_provider_config($provider);
|
||||
|
||||
@@ -7263,23 +7577,75 @@ function argon_call_xiaomi_api($api_key, $prompt, $content) {
|
||||
]);
|
||||
|
||||
if (is_wp_error($response)) {
|
||||
error_log('Argon AI Summary Error: ' . $response->get_error_message());
|
||||
argon_log_ai_error('网络请求失败', $post_id, [
|
||||
'provider' => $provider,
|
||||
'endpoint' => $endpoint,
|
||||
'model' => $model,
|
||||
'error' => $response->get_error_message()
|
||||
]);
|
||||
return false;
|
||||
}
|
||||
|
||||
$status_code = wp_remote_retrieve_response_code($response);
|
||||
if ($status_code !== 200) {
|
||||
argon_log_ai_error('API 返回错误状态码', $post_id, [
|
||||
'provider' => $provider,
|
||||
'endpoint' => $endpoint,
|
||||
'model' => $model,
|
||||
'status_code' => $status_code,
|
||||
'response' => wp_remote_retrieve_body($response)
|
||||
]);
|
||||
return false;
|
||||
}
|
||||
|
||||
$body = json_decode(wp_remote_retrieve_body($response), true);
|
||||
|
||||
if (isset($body['choices'][0]['message']['content'])) {
|
||||
return trim($body['choices'][0]['message']['content']);
|
||||
if (!is_array($body)) {
|
||||
argon_log_ai_error('API 返回的响应格式无效', $post_id, [
|
||||
'provider' => $provider,
|
||||
'endpoint' => $endpoint,
|
||||
'model' => $model,
|
||||
'response' => wp_remote_retrieve_body($response)
|
||||
]);
|
||||
return false;
|
||||
}
|
||||
|
||||
if (isset($body['error'])) {
|
||||
argon_log_ai_error('API 返回错误', $post_id, [
|
||||
'provider' => $provider,
|
||||
'endpoint' => $endpoint,
|
||||
'model' => $model,
|
||||
'error' => $body['error']
|
||||
]);
|
||||
return false;
|
||||
}
|
||||
|
||||
if (isset($body['choices'][0]['message']['content'])) {
|
||||
$result = trim($body['choices'][0]['message']['content']);
|
||||
if (empty($result)) {
|
||||
argon_log_ai_error('API 返回空内容', $post_id, [
|
||||
'provider' => $provider,
|
||||
'endpoint' => $endpoint,
|
||||
'model' => $model
|
||||
]);
|
||||
return false;
|
||||
}
|
||||
return $result;
|
||||
}
|
||||
|
||||
argon_log_ai_error('API 响应中缺少预期的内容字段', $post_id, [
|
||||
'provider' => $provider,
|
||||
'endpoint' => $endpoint,
|
||||
'model' => $model,
|
||||
'response_keys' => array_keys($body)
|
||||
]);
|
||||
return false;
|
||||
}
|
||||
|
||||
/**
|
||||
* 调用豆包 (火山引擎) API
|
||||
*/
|
||||
function argon_call_doubao_api($api_key, $prompt, $content) {
|
||||
function argon_call_doubao_api($api_key, $prompt, $content, $post_id = 0) {
|
||||
$provider = 'doubao';
|
||||
$config = argon_get_ai_provider_config($provider);
|
||||
|
||||
@@ -7306,23 +7672,75 @@ function argon_call_doubao_api($api_key, $prompt, $content) {
|
||||
]);
|
||||
|
||||
if (is_wp_error($response)) {
|
||||
error_log('Argon AI Summary Error: ' . $response->get_error_message());
|
||||
argon_log_ai_error('网络请求失败', $post_id, [
|
||||
'provider' => $provider,
|
||||
'endpoint' => $endpoint,
|
||||
'model' => $model,
|
||||
'error' => $response->get_error_message()
|
||||
]);
|
||||
return false;
|
||||
}
|
||||
|
||||
$status_code = wp_remote_retrieve_response_code($response);
|
||||
if ($status_code !== 200) {
|
||||
argon_log_ai_error('API 返回错误状态码', $post_id, [
|
||||
'provider' => $provider,
|
||||
'endpoint' => $endpoint,
|
||||
'model' => $model,
|
||||
'status_code' => $status_code,
|
||||
'response' => wp_remote_retrieve_body($response)
|
||||
]);
|
||||
return false;
|
||||
}
|
||||
|
||||
$body = json_decode(wp_remote_retrieve_body($response), true);
|
||||
|
||||
if (isset($body['choices'][0]['message']['content'])) {
|
||||
return trim($body['choices'][0]['message']['content']);
|
||||
if (!is_array($body)) {
|
||||
argon_log_ai_error('API 返回的响应格式无效', $post_id, [
|
||||
'provider' => $provider,
|
||||
'endpoint' => $endpoint,
|
||||
'model' => $model,
|
||||
'response' => wp_remote_retrieve_body($response)
|
||||
]);
|
||||
return false;
|
||||
}
|
||||
|
||||
if (isset($body['error'])) {
|
||||
argon_log_ai_error('API 返回错误', $post_id, [
|
||||
'provider' => $provider,
|
||||
'endpoint' => $endpoint,
|
||||
'model' => $model,
|
||||
'error' => $body['error']
|
||||
]);
|
||||
return false;
|
||||
}
|
||||
|
||||
if (isset($body['choices'][0]['message']['content'])) {
|
||||
$result = trim($body['choices'][0]['message']['content']);
|
||||
if (empty($result)) {
|
||||
argon_log_ai_error('API 返回空内容', $post_id, [
|
||||
'provider' => $provider,
|
||||
'endpoint' => $endpoint,
|
||||
'model' => $model
|
||||
]);
|
||||
return false;
|
||||
}
|
||||
return $result;
|
||||
}
|
||||
|
||||
argon_log_ai_error('API 响应中缺少预期的内容字段', $post_id, [
|
||||
'provider' => $provider,
|
||||
'endpoint' => $endpoint,
|
||||
'model' => $model,
|
||||
'response_keys' => array_keys($body)
|
||||
]);
|
||||
return false;
|
||||
}
|
||||
|
||||
/**
|
||||
* 调用硅基流动 (SiliconFlow) API
|
||||
*/
|
||||
function argon_call_siliconflow_api($api_key, $prompt, $content) {
|
||||
function argon_call_siliconflow_api($api_key, $prompt, $content, $post_id = 0) {
|
||||
$provider = 'siliconflow';
|
||||
$config = argon_get_ai_provider_config($provider);
|
||||
|
||||
@@ -7349,16 +7767,68 @@ function argon_call_siliconflow_api($api_key, $prompt, $content) {
|
||||
]);
|
||||
|
||||
if (is_wp_error($response)) {
|
||||
error_log('Argon AI Summary Error: ' . $response->get_error_message());
|
||||
argon_log_ai_error('网络请求失败', $post_id, [
|
||||
'provider' => $provider,
|
||||
'endpoint' => $endpoint,
|
||||
'model' => $model,
|
||||
'error' => $response->get_error_message()
|
||||
]);
|
||||
return false;
|
||||
}
|
||||
|
||||
$status_code = wp_remote_retrieve_response_code($response);
|
||||
if ($status_code !== 200) {
|
||||
argon_log_ai_error('API 返回错误状态码', $post_id, [
|
||||
'provider' => $provider,
|
||||
'endpoint' => $endpoint,
|
||||
'model' => $model,
|
||||
'status_code' => $status_code,
|
||||
'response' => wp_remote_retrieve_body($response)
|
||||
]);
|
||||
return false;
|
||||
}
|
||||
|
||||
$body = json_decode(wp_remote_retrieve_body($response), true);
|
||||
|
||||
if (isset($body['choices'][0]['message']['content'])) {
|
||||
return trim($body['choices'][0]['message']['content']);
|
||||
if (!is_array($body)) {
|
||||
argon_log_ai_error('API 返回的响应格式无效', $post_id, [
|
||||
'provider' => $provider,
|
||||
'endpoint' => $endpoint,
|
||||
'model' => $model,
|
||||
'response' => wp_remote_retrieve_body($response)
|
||||
]);
|
||||
return false;
|
||||
}
|
||||
|
||||
if (isset($body['error'])) {
|
||||
argon_log_ai_error('API 返回错误', $post_id, [
|
||||
'provider' => $provider,
|
||||
'endpoint' => $endpoint,
|
||||
'model' => $model,
|
||||
'error' => $body['error']
|
||||
]);
|
||||
return false;
|
||||
}
|
||||
|
||||
if (isset($body['choices'][0]['message']['content'])) {
|
||||
$result = trim($body['choices'][0]['message']['content']);
|
||||
if (empty($result)) {
|
||||
argon_log_ai_error('API 返回空内容', $post_id, [
|
||||
'provider' => $provider,
|
||||
'endpoint' => $endpoint,
|
||||
'model' => $model
|
||||
]);
|
||||
return false;
|
||||
}
|
||||
return $result;
|
||||
}
|
||||
|
||||
argon_log_ai_error('API 响应中缺少预期的内容字段', $post_id, [
|
||||
'provider' => $provider,
|
||||
'endpoint' => $endpoint,
|
||||
'model' => $model,
|
||||
'response_keys' => array_keys($body)
|
||||
]);
|
||||
return false;
|
||||
}
|
||||
|
||||
|
||||
Reference in New Issue
Block a user