48 lines
2.0 KiB
C#
48 lines
2.0 KiB
C#
using Health.Infrastructure.AI;
|
|
using Health.Domain.Enums;
|
|
|
|
namespace Health.Tests;
|
|
|
|
public sealed class PromptManagerTests
|
|
{
|
|
[Fact]
|
|
public void UnifiedPrompt_DistinguishesQuestionsFromEntryRequests()
|
|
{
|
|
var prompt = new PromptManager().GetSystemPrompt(AgentType.Unified);
|
|
|
|
Assert.Contains("先判断用户是在咨询数值,还是希望记录数据", prompt);
|
|
Assert.Contains("血氧98%是不是太高了", prompt);
|
|
Assert.Contains("先回答问题,不调用 record_health_data", prompt);
|
|
Assert.Contains("帮我记录血压116/89", prompt);
|
|
}
|
|
|
|
[Fact]
|
|
public void UnifiedPrompt_RequiresFreshToolsForPersonalStatusAndKeepsArchiveReadOnly()
|
|
{
|
|
var prompt = new PromptManager().GetSystemPrompt(AgentType.Unified);
|
|
|
|
Assert.Contains("必须先调用对应只读工具", prompt);
|
|
Assert.Contains("当前工具结果是最高优先级", prompt);
|
|
Assert.Contains("聊天中不修改健康档案", prompt);
|
|
Assert.DoesNotContain("健康档案查询/修改", prompt);
|
|
}
|
|
|
|
[Fact]
|
|
public void UnifiedPrompt_UsesACommonTemporalIntentModelForPlanQueries()
|
|
{
|
|
var prompt = new PromptManager().GetSystemPrompt(AgentType.Unified);
|
|
|
|
Assert.Contains("时间意图 + 业务对象", prompt);
|
|
Assert.Contains("某一天的任务", prompt);
|
|
Assert.Contains("计划所处的生命周期", prompt);
|
|
Assert.Contains("不依赖某一句固定问法或某个单独关键词", prompt);
|
|
Assert.Contains("scope=\"upcoming_plans\"", prompt);
|
|
Assert.Contains("scope=\"ended_plans\"", prompt);
|
|
Assert.Contains("scope=\"inactive_plans\"", prompt);
|
|
Assert.Contains("scope=\"scheduled_date\"", prompt);
|
|
Assert.Contains("复查使用同一语义映射", prompt);
|
|
Assert.Contains("scope 必须明确传入", prompt);
|
|
Assert.DoesNotContain("患者背景只包含当前日期范围内的部分计划", prompt);
|
|
}
|
|
}
|