skip to content
logo

Search

提示词工程方案

要让大模型发挥最大的效果,提示词(Prompt)的设计是很关键的一件事,优秀的提示词不仅能让大模型输出更好的结果,还能节省 token,降低成本。

明确清晰的指令

对于大部分文本大模型而言,实际上是具备理解复杂提示词的能力的,尤其是大参数的模型。

在这个情况下,其实书写有效提示词最重要的一点非常简单,那就是说人话。也就是说,你可以把 AI 当作“人类”,给它明确清晰的指令就可以了。

比如 Deepseek-R1 模型有能力进行深度思考,你可以直接对它提出你的原始需求,比如:我想给初学者讲前端入门课,帮我规划一个课程大纲。

最终,大模型会结合深度思考过程,给出一个比较好的结论:

好的!以下是一个专为前端初学者设计的 8 周入门课程大纲,每周可安排 2-3 次课(每次 1.5-2 小时),包含理论 + 实践 + 作业。课程设计由浅入深,注重动手能力。

# 课程目标
- 掌握 HTML/CSS/JavaScript 核心基础
- 能独立开发响应式静态网页
- 理解现代前端开发流程和工具
- 为后续学习框架(如 Vue/React)打下基础

# 课程大纲

## 第一阶段:基础认知(1 周)
- 什么是前端开发?
  - 前端 vs 后端 vs 全栈
  - 浏览器、服务器、DNS 基本概念
  - 前端技术栈全景图(HTML/CSS/JavaScript → 框架 / 工具)
- 开发环境搭建
  - 安装 VS Code + 必备插件(Live Server, Prettier)
  - Chrome 开发者工具入门(检查元素、控制台)

## 第二阶段:HTML(1 周)

- HTML 核心语法
  - 标签、元素、属性
  - 文档结构(<!DOCTYPE>、<head>、<body>)
- 常用标签实战
  - 文本类:<h1>~<h6>、<p>、<span>、<br>
  - 结构类:<div>、<header>、<section>、<footer>
  - 列表与表格:<ul>/<ol>、<table>
  - 表单与交互:<form>、<input>、<button>
- HTML5 新特性
  - 语义化标签(<nav>、<article>等)
  - 多媒体标签(<video>、<audio>)

- **实践项目**:搭建一个简单的个人简介页面(纯 HTML)。

## 第三阶段:CSS(2 周)

- CSS 基础语法
  - 选择器(类、ID、标签、后代选择器)
  - 盒模型(margin/padding/border/content)
  - 常用单位(px, em, rem, %)
- 布局与定位
  - Flexbox 弹性布局(重点)
  - Grid 网格布局(基础)
  - Position(relative/absolute/fixed)
- 样式进阶
  - 响应式设计(媒体查询 @media)
  - 过渡与动画(transition、@keyframes)
  - 变量(CSS Custom Properties)
- CSS 预处理工具(可选)
  - Sass/SCSS 快速入门

- **实践项目**:将个人简介页面升级为响应式页面,添加样式和布局。

## 第四阶段:JavaScript(3 周)

- JS 基础语法
  - 变量声明(let/const)、数据类型
  - 运算符、条件语句(if/else)、循环(for/while)
  - 函数(声明、参数、返回值)
- DOM 操作
  - 获取元素(querySelector、getElementById)
  - 修改内容、样式、属性
  - 事件监听(click、input、submit)
- JS 进阶
  - 数组与对象操作(map/filter/forEach)
  - 异步编程(setTimeout、Promise基础)
  - 模块化(import/export)
- 实战案例
  - 制作计算器
  - 实现动态待办事项列表(Todo List)

- **实践项目**:开发一个交互式网页应用(如天气查询界面、简易博客)。

## 第五阶段:工程化与工具(1 周)

- 版本控制入门
  - Git 基础命令(init、add、commit、push)
  - GitHub 仓库管理
- 构建工具初探
  - npm 包管理(install、scripts)
  - Webpack/Vite 快速上手(配置基础项目)
- 代码规范
  - ESLint + Prettier 配置

- **实践任务**:将之前的项目用 Git 管理并发布到 GitHub Pages。

## 第六阶段:综合项目(1 周)

- **项目主题**:开发一个完整响应式网站
  - 可选方向:
    - 个人作品集网站
    - 电商产品展示页
    - 新闻资讯站
  - 要求:
    - 使用 HTML/CSS/JavaScript
    - 适配手机 / PC
    - 包含动态交互(如轮播图、表单验证)

## 学习资源推荐

- 文档类:MDN Web Docs、W3Schools
- 练习平台:FreeCodeCamp、Codecademy
- 社区:Stack Overflow、掘金、GitHub

## 课程特色设计

- 每节课后:布置小练习(如用 Flexbox 实现导航栏)
- 每周答疑:集中解决共性问题
- 代码审查:对作业进行逐行点评
- 结业展示:学生演示自己的项目

## 学员能力评估

- 作业完成度(30%)
- 结业项目(40%)
- 随堂测验(20%)
- 课堂参与度(10%)

希望这个大纲对你有帮助!如果需要细化某个模块或补充案例,可以随时告诉我! 😊

通过上面的实践,我们会看到,对于功能强大的模型,你只要给它准确清晰的指令(“初学者、入门课”就是非常重要的信息,它告诉了大模型我期待的课程的难度和适用人群),它通过深入思考,通常就会做得非常优秀。

不过,Deepseek-R1 虽然非常强大,但是这个强大是来源于它的深度思考模式,这个模式需要花费更多的算力和推理时间,模型的价格也比较昂贵。

如果我们想要在能力弱一些,甚至参数规模较小的模型下,依然得到不错的结果,就需要在提示词上多花一点功夫了。

使用结构化提示词

提示词框架(Prompt Framework)是指在大模型中,设计一组清晰且结构化的提示词,用以引导模型生成特定类型的输出。它有助于提高生成的准确性、相关性和质量,确保模型的回应更符合用户的需求。

提示词框架有很多种,有一些框架适用于特定的场景。

这里我们在 Coze 上创建一个智能体,使用豆包模型,用一个简单的结构化提示词来改写我们的问题输入,看看会得到怎样的结果。在“人设与回复逻辑”那里输入:

你是一位曾经就职于互联网头部企业的资深软件工程师和IT教育专家,擅长用通俗易懂的语言来给初学者讲解相应技术方向的基本概念和入门知识。

根据用户的输入,整理一门入门级技术课程的大纲,要求:

1. 注重基本概念和原理,为学员打下扎实基础
2. 具有实操性,注重实用性
3. 内容不要求大而全,要循序渐进,适合初级学员掌握
4. 准备的案例简单而兼具趣味与挑战
5. 展望未来,适当介绍一些新技术和技术趋势

上面这个例子,就是一个典型的结构化提示词,它采用了角色(Role)- 任务(Task)- 结果(Result)的基础结构,通过这样的设定,我们约束了大模型的输出,从而得到更好的结果。

使用分步思考工作流

在不使用深度思考模型的前提下,要实现类似的效果,也并不是没有办法,我们可以利用工作流让 AI 进行深度思考。比如先让大模型提供思路,再根据提供的思路生成具体的结果。

还是前端课程大纲的例子,我们创建一个 Coze 工作流:

  1. 添加一个大模型节点,负责思考课程设计思路
  2. 创建另一个智能体,负责根据设计思路完成课程大纲

使用分步思考工作流有个独特的地方,那就是可以将任务颗粒度细化,让不同的智能体每次只专注于一件事,然后通过协作将内容汇总完成,这样做通常能够较大程度提升输出结果的质量。

由于大模型的注意力机制,一次交互更加适合集中精力处理一件明确的事情,这样的单点处理结果比同时处理多件事,能得到更好的效果。

但是一次处理多件事也有优点,就是相比于多个节点的工作流,它能节省 token 数量,也能节省推理的时间。

使用 JSON 输出

文本大模型有较强的推理能力,有时候我们不用描述太复杂的提示词,可以通过语义化的 JSON 格式来取巧地实现我们想要的内容效果。

我们创建一个 Coze 智能体,在“人设与回复逻辑”里输入:

根据{{input}}的主题,用**中文**输出以下JSON格式内容:

{
  "story_instruction": "",
  "the_whole_story_content": "",
  "the_whole_story_translate_to_en": "",
  "lessons": []
}

我们测试一下它的输出,输入“狼来了”,它输出如下结果:

{
"story_instruction": "讲述一个放羊娃多次撒谎喊 “狼来了”,最后狼真的来了却没人相信他的故事,教育人们要诚实,不能说谎。",
"the_whole_story_content": "从前,有个放羊娃,每天都去山上放羊。一天,他觉得十分无聊,就想了个捉弄大家寻开心的主意。他向着山下正在种田的农夫们大声喊:“狼来了!狼来了!救命啊!” 农夫们听到喊声急忙拿着锄头和镰刀往山上跑,他们边跑边喊:“不要怕,孩子,我们来帮你打恶狼!” 农夫们气喘吁吁地赶到山上一看,连狼的影子也没有!放羊娃哈哈大笑:“真有意思,你们上当了!” 农夫们生气地走了。第二天,放羊娃故伎重演,善良的农夫们又冲上来帮他打狼,可还是没有见到狼的影子。放羊娃笑得直不起腰:“哈哈!你们又上当了!” 大伙对放羊娃一而再再而三地说谎十分生气,从此再也不相信他的话了。过了几天,狼真的来了,一下子闯进了羊群。放羊娃害怕极了,拼命地向农夫们喊:“狼来了!狼来了!快救命呀!狼真的来了!” 农夫们听到了他的喊声,以为他又在说谎,大家都不理睬他,没有人去帮他,结果放羊娃的许多羊都被狼咬死了。",
"the_whole_story_translate_to_en": "Once upon a time, there was a shepherd boy who went up the mountain to herd sheep every day. One day, he felt extremely bored and came up with an idea to play a trick on everyone for fun. He shouted loudly to the farmers who were working in the fields below the mountain:"Wolf! Wolf! Help!"The farmers heard the shouts and rushed up the mountain in a hurry with hoes and sickles in their hands. As they ran, they shouted:"Don't be afraid, son. We're coming to help you fight the evil wolf!"When the farmers gasped their way up the mountain, there wasn't even a shadow of a wolf! The shepherd boy burst out laughing:"This is so funny. You've been tricked!"The farmers left angrily. The next day, the shepherd boy repeated the same trick. The kind farmers rushed up again to help him fight the wolf, but still didn't see any sign of the wolf. The shepherd boy laughed so hard that he could hardly stand up:"Haha! You've been tricked again!"Everyone was very angry with the shepherd boy for lying again and again, and from then on, they no longer believed a word he said. A few days later, a real wolf came and suddenly rushed into the flock of sheep. The shepherd boy was extremely scared and shouted desperately to the farmers:"Wolf! Wolf! Help quickly! The wolf is really here!"The farmers heard his shouts. Thinking that he was lying again, no one paid any attention to him and no one went to help him. As a result, many of the shepherd boy's sheep were bitten to death by the wolf.",
"lessons": ["做人要诚实,不能通过说谎来达到自己的目的。", "如果经常说谎,当真正有危险需要帮助时,可能就不会有人相信和伸出援手。"]
}

我们看到,只需要用符合语义的 JSON 格式作为输出格式,不需要额外解释,大模型就能够输出基本上符合我们想要的 JSON 结果。

由于大模型对 JSON 结构化信息的分析和处理能力很强,所以在大多数情况下,采用 JSON 格式输出,能够获得比采用文本输出更加优质的内容。但是 JSON 也有一些问题,那就是它的结构特点,使得在输出 JSON 的同时,想要充分利用流式输出减少响应时间变得比较困难。

使用元提示(Meta-Prompt)

“元提示”是一种让 AI 写提示词的技巧。顾名思义,就是让一个智能体负责撰写提示词,再将提示词给后续的智能体执行。这个技巧通常用于不同类型的智能体协作的工作流中。

比如可以使用豆包模型生成 Flux 模型需要的提示词,从而让 Flux 模型更好地生成结果,这个模式就是“元提示”模式。

使用动态提示词

在有些场景中,我们需要动态生成提示词,比如在一些生成场景对话的时候,会把当天的日期、节日之类的信息考虑进去,那么我们就要在用户调用大模型的时候将这些内容包含在提示词中。

另外还有更复杂的场景,比如我们针对用户提出的问题类型,采用不同的 AI 节点来处理,每一个节点用来处理一类特定问题,这种做法叫做“多专家模型(MoE)”。

多专家模型(Mixture of Experts, MoE)是一种深度学习架构,它通过引入多个专家模型(即多个子模型)来解决一个任务。每个专家模型都有不同的专长,而在实际任务中,系统会根据输入数据选择最合适的专家模型进行处理。通过这种方式,可以在模型的不同部分灵活地分配计算资源,从而提高效率和性能。
这里,我们借鉴了多专家模型的叫法,但实际上我们的多专家模型是应用层的技术,和模型层面上的并不相同。

注意:一个场景拆分成多个节点的方案,一套流程下来需要和 llm 交互多次,可能速度会很慢,需要思考生产环境如何提高用户体验?(工作流框架 Ling)

使用动态提示词有多种办法,像 Coze 中的智能体,因为本身支持自定义参数,所以我们可以直接通过传参数来实现动态提示词。

而其他平台的 API,大部分不提供自定义参数,但是我们可以用前端比较熟悉的模板引擎技术来实现提示词的动态编译,这种方法也更加通用。https://mozilla.github.io/nunjucks/