更新
This commit is contained in:
@@ -0,0 +1,42 @@
|
||||
<?php
|
||||
|
||||
declare(strict_types=1);
|
||||
|
||||
require dirname(__DIR__) . '/vendor/autoload.php';
|
||||
|
||||
use app\common\service\NihaixiaClinicalSkill;
|
||||
|
||||
function skillExpect(bool $condition, string $message): void
|
||||
{
|
||||
if (!$condition) {
|
||||
fwrite(STDERR, "FAIL: {$message}\n");
|
||||
exit(1);
|
||||
}
|
||||
}
|
||||
|
||||
$reference = NihaixiaClinicalSkill::reference();
|
||||
skillExpect(str_contains($reference, NihaixiaClinicalSkill::VERSION), 'pinned skill version is present');
|
||||
skillExpect(str_contains($reference, '六经主证:太阳:'), 'reference is read from the installed six-meridian table');
|
||||
skillExpect(str_contains($reference, '条件线索:太阳病(脉浮 + 头项强痛 + 恶寒)'), 'clinical clues are read from the installed diagnostic formulas');
|
||||
skillExpect(str_contains($reference, '辨证步骤:定表里→分阴阳→辨寒热'), 'seven-step method is read from the installed skill');
|
||||
skillExpect(str_contains($reference, '未满足关键证据时不得强行归经'), 'diagnostic clues require patient evidence');
|
||||
skillExpect(str_contains($reference, '不得据此建议停用现有治疗'), 'historical cases cannot override treatment safety');
|
||||
skillExpect(strlen($reference) < 3000, 'reference is bounded for staged clinical prompts');
|
||||
|
||||
$question = '请分析当前患者的口渴和高血糖。';
|
||||
$query = NihaixiaClinicalSkill::augmentQuery($question);
|
||||
skillExpect(str_contains($query, $question), 'original clinical question is preserved');
|
||||
skillExpect(substr_count($query, NihaixiaClinicalSkill::VERSION) === 1, 'query receives the skill once');
|
||||
skillExpect(NihaixiaClinicalSkill::augmentQuery($query) === $query, 'query retries do not duplicate the skill');
|
||||
|
||||
$messages = [
|
||||
['role' => 'system', 'content' => '只输出 JSON'],
|
||||
['role' => 'user', 'content' => $question],
|
||||
];
|
||||
$augmented = NihaixiaClinicalSkill::augmentMessages($messages);
|
||||
skillExpect(count($augmented) === 3, 'chat messages receive one skill system reference');
|
||||
skillExpect(($augmented[1]['content'] ?? '') === '只输出 JSON', 'original system format is preserved');
|
||||
skillExpect(($augmented[2]['content'] ?? '') === $question, 'original user question is preserved');
|
||||
skillExpect(NihaixiaClinicalSkill::augmentMessages($augmented) === $augmented, 'stream retries do not duplicate the skill');
|
||||
|
||||
echo "Nihaixia clinical skill contract passed.\n";
|
||||
Reference in New Issue
Block a user