This commit is contained in:
Your Name
2026-10-08 18:03:11 +08:00
parent 4dac39c4c2
commit 19ea2dadeb
26 changed files with 1131 additions and 28 deletions
+18 -4
View File
@@ -29,8 +29,9 @@ class AiChatService
return ['ok' => false, 'error' => 'AI 密钥未配置'];
}
$ancientBookSources = self::ancientBookSourcesFromMessages($messages);
try {
$messages = NihaixiaClinicalSkill::augmentMessages($messages);
$messages = ClinicalKnowledgeReference::augmentMessages($messages);
} catch (\RuntimeException $error) {
return ['ok' => false, 'error' => '临床 AI 参考资料不可用'];
}
@@ -85,7 +86,8 @@ class AiChatService
return ['ok' => false, 'error' => 'AI 未返回内容', 'raw' => $decoded];
}
return ['ok' => true, 'content' => $content, 'raw' => $decoded];
return ['ok' => true, 'content' => $content, 'raw' => $decoded,
'ancient_book_sources' => $ancientBookSources];
}
/**
@@ -105,8 +107,9 @@ class AiChatService
return ['ok' => false, 'error' => 'AI 密钥未配置'];
}
$ancientBookSources = self::ancientBookSourcesFromMessages($messages);
try {
$messages = NihaixiaClinicalSkill::augmentMessages($messages);
$messages = ClinicalKnowledgeReference::augmentMessages($messages);
} catch (\RuntimeException $error) {
return ['ok' => false, 'error' => '临床 AI 参考资料不可用'];
}
@@ -188,6 +191,17 @@ class AiChatService
return ['ok' => false, 'error' => 'AI 未返回内容'];
}
return ['ok' => true, 'content' => $fullContent];
return ['ok' => true, 'content' => $fullContent,
'ancient_book_sources' => $ancientBookSources];
}
/** @param array<int,array<string,mixed>> $messages
* @return list<array<string,mixed>>
*/
private static function ancientBookSourcesFromMessages(array $messages): array
{
$text = implode("\n", array_map(static fn (array $message): string =>
($message['role'] ?? '') === 'user' ? (string) ($message['content'] ?? '') : '', $messages));
return TcmAncientBooksReference::sourcesForText($text);
}
}