编写大模型Prompt提示词方法

发布于:2025-05-09 ⋅ 阅读:(7) ⋅ 点赞:(0)

明确目标和任务

// 调用LLM进行分析
      const prompt = `你是一名严格而友好的英语口语评分官,专业背景包括语音学(phonetics)、二语习得(SLA)和自动语音识别(ASR)。你的任务是:
① 比对参考句(reference)与学员朗读的转写(learner);
② 统计正确朗读的单词比例 correct_ratio = (#matched_words)/(#words_in_reference);
③ 按以下阈值给出三档评价:
  Pass          : correct_ratio ≥ 0.90
  Too Marginal  : 0.70 ≤ correct_ratio < 0.90
  Fail          : correct_ratio < 0.70
④ 输出 JSON,字段包括
  - "classification": "Pass" / "Too Marginal" / "Fail"
  - "correct_ratio": (保留两位小数)
  - "missing_or_wrong": [列出没读出或明显读错的单词]

参考句: "${currentSentence.text}"
学员朗读: "${recognizedText}"`;
  • 核心功能:在这个提示词中,核心目标是让大模型充当英语口语评分官,对学员朗读进行评估并输出特定格式的结果。所以,编写提示词时要清晰定义模型的任务,避免模糊不清。例如,明确要求统计正确朗读单词比例、给出评价等级以及列出错误单词等。
  • 详细步骤:将任务分解为具体的步骤,像示例中依次说明了比对参考句和学员朗读转写、计算比例、给出评价和输出 JSON 等步骤,这样模型能更清晰地理解任务流程。

提供必要信息

  • 参考信息:为模型提供足够的参考信息,如参考句和学员朗读的转写内容。在提示词中使用变量插值(如 ${currentSentence.text} 和 ${recognizedText}),方便在实际使用时动态替换具体内容。
  • 规则说明:明确任务执行的规则,如评价等级的阈值设定(Pass、Too Marginal、Fail 的比例范围),让模型知道如何根据计算结果进行分类。

规定输出格式

  • 数据结构:清晰规定输出的格式,这里要求输出 JSON,并明确列出 JSON 的字段("classification"、"correct_ratio"、"missing_or_wrong"),有助于模型生成符合要求的结果,也方便后续开发中对结果进行处理。
  • 数据类型和精度:对输出的数据类型和精度进行说明,如 "correct_ratio" 要求保留两位小数,避免模型输出不符合预期的数据。

编写提示词的注意点

语言简洁明了

  • 避免歧义:使用简洁、准确的语言,避免使用模糊或容易引起歧义的词汇和句子。例如,在描述任务时,使用具体的动词和明确的表述,让模型能准确理解意图。
  • 逻辑连贯:提示词的逻辑要连贯,各步骤之间要有合理的顺序和衔接,便于模型按照顺序执行任务。

提供示例(可选但推荐)

  • 辅助理解:如果任务比较复杂,提供示例可以帮助模型更好地理解任务要求。例如,可以给出一个简单的参考句、学员朗读转写内容以及对应的输出 JSON 示例,让模型更直观地了解期望的输出形式。

考虑模型能力

  • 适配模型:不同的大模型有不同的能力和特点,编写提示词时要考虑模型的理解能力和输出能力。避免提出超出模型能力范围的要求,确保提示词与模型的适配性。

实际开发中的返回及处理

返回内容

根据提示词的要求,大模型会返回一个 JSON 对象,示例如下:

{
    "code": 0,
    "message": "",
    "data": {
        "input_token_size": 260,
        "output_token_size": 241,
        "result": "根据您提供的参考句和学员朗读的内容,两者完全一致。这意味着学员正确地朗读了所有的单词。\n\n- 参考句: \"Not only did the committee reject the proposal, but it also requested a complete redesign within two weeks.\"\n- 学员朗读: \"Not only did the committee reject the proposal, but it also requested a complete redesign within two weeks.\"\n\n基于此,我们可以计算出正确的单词比例 `correct_ratio` 为 1.00(即100%),因为没有单词被遗漏或错误发音。\n\n按照给定的评价标准:\n- Pass: 如果 `correct_ratio` ≥ 0.90\n- Too Marginal: 如果 0.70 ≤ `correct_ratio` \u003c 0.90\n- Fail: 如果`correct_ratio` \u003c 0.70\n\n该情况属于 \"Pass\" 级别。\n\n因此,输出的 JSON 如下:\n\n```json\n{\n  \"classification\": \"Pass\",\n  \"correct_ratio\": \"1.00\",\n \"missing_or_wrong\": []\n}\n```\n\n这表明学员的表现非常好,没有任何单词被遗漏或错误发音。"
    }
}

处理返回结果

在实际开发中,需要对返回的 JSON 结果进行处理。以下是一个简单的 JavaScript 示例,展示如何解析和使用返回的结果:

const llmResponse = await CallLLM(prompt, SupportLLM.TONGYIQIANWEN);
      const llmResult = await llmResponse.json();
      
      if (llmResult.code !== 0) {
        throw new Error(llmResult.msg || 'AI分析失败');
      }

      // 从返回的文本中提取 JSON 部分
      const resultText = llmResult.data.result;
      const jsonMatch = resultText.match(/```json\n([\s\S]*?)\n```/);

通过以上步骤,你可以在实际开发中有效地编写提示词,并处理大模型返回的结果。

注意⚠️:仅供参考!!!


网站公告

今日签到

点亮在社区的每一天
去签到