乐于分享
好东西不私藏

AI工具| AI提示词(Prompt)“处方”:RCTIOC框架

AI工具| AI提示词(Prompt)“处方”:RCTIOC框架

前面我们介绍了AI工具|Positron中使用Claude Code(接入国产大模型),介绍了如何配置国产主流模型。那么模型配置好了,我们如何使用呢?确保 AI 输出专业、可控、可追溯。那就需要提供良好的「AI提示词」。我根据我的一些实践,构建了RCTIOC的框架来撰写AI提示词。

  • 「R」ole(角色约束)

  • 「C」ontext(研究背景)

  • 「T」ask(任务目标)

  • 「I」nput(输入信息)

  • 「O」utput(输出格式)

  • 「C」heck(风险检查)

RCTIOC框架介绍

R|角色约束 Role

明确模型的协作身份和回答风格

C|研究背景 Context

明确任务背景、证据边界和使用场景

T|任务目标 Task

强调 expected outcome 和 success criteria

I|输入信息 Input

提供必要材料、数据、文献、代码或方案文本

O|输出格式 Output

明确最终交付物、格式、层级和可用性。

C|风险检查 Check

设置 validation rules 和风险核查标准

「下面介绍1个案例,使用RCTIOC框架撰写AI提示词:」

案例:样本量计算

我们以发表在Lancet Diabetes Endocrinol杂志的一篇文章为例,文章详细信息如下:

  • 「文章标题」:Once-weekly albiglutide versus once-daily liraglutide in patients with type 2 diabetes inadequately controlled on oral drugs (HARMONY 7): a randomised, open-label, multicentre, non-inferiority phase 3 study
  • 「期刊」:Lancet Diabetes Endocrinol
  • 「影响因子」:41.8
  • 「原文网址」:https://www.thelancet.com/journals/landia/article/PIIS2213-8587(13)70214-6/abstract
  • 「人群」:口服药控制不佳的2型糖尿病患者
  • 「主要终点」:第32周HbA1c相对基线的变化
  • 「组别」:Albiglutide(试验组)、 Liraglutide(阳性对照组),按照1:1随机分配
  • 「非劣界值」:0.3%

现在设想一个情景:「如果我是这个临床试验的项目统计师,在试验设计阶段,如何借助AI,让AI帮忙计算这个样本量?我只需要做最终把关即可」。现在我们按照RCTIOC框架撰写提示词,让AI帮我们完成这个事情。

「STEP 1」 按照RCTIOC框架撰写提示词

【角色约束 R】你是一名靠谱的临床试验生物统计师,熟悉ICH E9/E9(R1)指导原则,精通R、SAS等样本量计算工具。需基于已确立的统计方法论,所有公式和参数必须注明来源(教材/指南/文献),绝不臆测或虚构任何公式和数值。【研究背景 C】本研究为一项[随机开放非劣效]设计的[3期]临床试验,注册监管机构为[NMPA/FDA],适应症为[2型糖尿病],干预措施为[试验药 vs 对照药],研究目的为[非劣效]。主要终点为[第32周糖化血红蛋白(HbA1c)相对基线变化]。【任务目标 T】请完成以下三项任务:① 首先给出完整的统计假设和标准的样本量计算公式;② 使用R软件编写完整的代码,计算样本量。代码可使用R包或自带函数,但需符合样本量计算公式【输入信息 I】请基于以下参数计算(若某参数未提供影响样本量计算请告知我补充):• 主要终点:[第32周糖化血红蛋白(HbA1c)相对基线变化]• 终点类型:[连续型]• 临床疗效:[试验组 vs 对照组 实际差值为0]• 标准差 σ:[共同标准差为1.1%]• 检验水准 α:[0.025 单侧]• 把握度 1-β:[93%]• 非劣界值:[0.3%],本研究终点指标为低优指标• 分组比例 r(试验:对照):[1:1]• 预期脱落率:[20%]• 样本量计算方法:两样本t检验,不要使用正态近似法【输出格式 O】按以下结构输出:编写R代码,将样本量最终结果输出表格,表格变量名包括:每组人数、考虑脱落每组人数【风险检查 C】在给出最终答案前,请自我核查:✦ R代码是否能实际完整运行?与样本量计算公式是否匹配?✦ 监管接受度:如果我要在 NMPA/FDA 的递交中使用这个方法,审评员是否认可该方法?

「STEP 2」 打开Positron—>Continue插件,将上述提示词发送给AI,如下图所示,得到了样本量计算结果:每组319例,考虑脱落每组399例

AI生成的R代码:

# =============================================================================# 非劣效试验样本量计算 —— 两样本t检验精确方法(非中心t分布迭代)# 适应症:2型糖尿病,主要终点:第32周HbA1c变化值# =============================================================================# ------------------------------ 参数设置 ----------------------------------alpha       <- 0.025# 单侧检验水准target_power <- 0.93# 目标把握度 1-βbeta        <- 1 - target_powersigma       <- 1.1# 共同标准差(%)delta_NI    <- 0.3# 非劣效界值(%,低优指标取正)true_diff   <- 0# 真实差值假设(试验组-对照组)r           <- 1# 分组比例(试验:对照 = 1:1)dropout     <- 0.20# 预期脱落率# -------------------------- 正态近似初值(仅参考) -------------------------z_alpha <- qnorm(1 - alpha)z_beta  <- qnorm(target_power)n_formula <- ( (z_alpha + z_beta)^2 * sigma^2 * (1 + 1/r) ) / (delta_NI - true_diff)^2n_init <- ceiling(n_formula)cat("正态近似法每组样本量(仅初值参考):", n_init, "\n")# ------------------ 精确非中心t分布功效函数 -------------------------------# 检验统计量:T = [(X̄_T - X̄_C) - δ_NI] / (Sp * sqrt(1/n_T + 1/n_C))# H0下 T ~ t(df= n_T+n_C-2), H1下 T ~ t(df, ncp)# 其中 ncp = (true_diff - δ_NI) / (σ * sqrt(1/n_T + 1/n_C))## 功效 = P( T < t_{α, df} | ncp )   (拒绝域为左侧,因低优且H1: diff < δ_NI)power_t_noninferior <- function(n, delta_NI, sigma, true_diff = 0,                                alpha = 0.025, r = 1) {  n_T <- n  n_C <- n * r  df  <- n_T + n_C - 2# 非中心参数(真实差值 - 界值,预期为负)  ncp <- (true_diff - delta_NI) / (sigma * sqrt(1/n_T + 1/n_C))# 临界值:左侧拒绝域,下侧 alpha 分位数  t_crit <- qt(alpha, df)# 功效 = P(T < t_crit | ncp)  power <- pt(t_crit, df, ncp = ncp)return(power)}# ------------------ 二分搜索最小整数样本量(满足功效要求) ----------------# 搜索范围合理增大,以防精确解需更大样本n_low  <- max(2, n_init - 20)n_high <- 5000# 确保上界功效足够while (power_t_noninferior(n_high, delta_NI, sigma, true_diff, alpha, r) < target_power) {  n_high <- n_high * 2if (n_high > 1e5stop("未找到满足功效的 n_high,请检查参数")}# 二分查找while (n_high - n_low > 1) {  n_mid <- floor((n_low + n_high) / 2)  pow_mid <- power_t_noninferior(n_mid, delta_NI, sigma, true_diff, alpha, r)if (pow_mid >= target_power) {    n_high <- n_mid  } else {    n_low <- n_mid  }}n_exact <- n_highfinal_power <- power_t_noninferior(n_exact, delta_NI, sigma, true_diff, alpha, r)# ------------------ 考虑脱落率的样本量调整 --------------------------------n_enroll_per_group <- ceiling(n_exact / (1 - dropout))# ------------------ 输出结果表格 ------------------------------------------result <- data.frame(  `每组人数` = n_exact,  `考虑脱落每组人数` = n_enroll_per_group,  check.names = FALSE)print(result, row.names = FALSE)cat("\n===========================================================\n")cat("精确功效检验:\n")cat(sprintf("精确法每组样本量 n = %d(总样本量 %d)\n", n_exact, n_exact * 2))cat(sprintf("实际把握度 = %.4f\n", final_power))cat(sprintf("考虑 %.0f%% 脱落后每组需入组 %d 例(总入组 %d 例)\n",            dropout * 100, n_enroll_per_group, n_enroll_per_group * 2))cat("===========================================================\n")# ============================================================# 补充:也可用power.t.test(R 内置,基于非中心 t 分布,非正态近似)# ============================================================

「视频演示如下」:(无声音讲解,仅是动态演示)

「STEP 3」 自己最终把关数据,可以看出AI给出的结果和原文发表的结果基本一致,同时与自己复核的结果基本一致。

原文章样本量
自己复核样本量

小结

  • 对于医学科研,我们可以针对不同的情形撰写特定的AI提示词,比如样本量计算、统计分析模型、表格生成、图形绘制、文献阅读等等,但框架可以按照RCTIOC
  • 提示词撰写建议「重结果,轻流程」。避免冗余的提示词
  • 希望这个RCTIOC框架可以助力你的工作和学习
最后推荐3本R语言学习书籍,感兴趣可以买来读读: