
本文由AI生成由自己补充作为自己学习YAML的查阅文档YAMLYAML Aint Markup Language是一种人类可读的数据序列化语言广泛用于配置文件、数据交换和持续集成/持续部署CI/CD场景。本文将从基础语法开始逐步深入 YAML 的核心概念并展示在AI的提示词运用和Markdown元数据的应用。一、YAML 基础语法YAML 的设计目标是易于人类阅读和编写同时能被机器轻松解析。其基本语法规则如下1.1 基本语法规则YAML 大小写敏感缩进必须使用空格严禁使用 Tab 键推荐缩进为 2 个空格同级元素必须严格左对齐注释使用 # 号仅支持单行注释1.2 文档分隔符可选---表示一个 YAML 文档的开始一个文件可包含多个文档用---分隔1.3 标量Scalar最基础的数据类型1.3.1 字符串String—— 大多数情况下无需引号string_basic: Hello World string_with_colon: http://example.com:8080 # 含冒号或特殊字符建议加引号 string_with_quotes: Single quotes are fine too1.3.2 数值Integer / Floatinteger: 25 float: 3.1415 negative: -10 scientific: 1.2e31.3.3 布尔值Booleanboolean_true: true boolean_false: false # 也支持 on/off, yes/no但推荐使用 true/false1.3.4 空值Nullnull_value: null also_null: ~ # 波浪号也表示 null二、YAML 数据结构2.1 对象 / 映射Mapping键值对集合类似 JSON 的 Object2.1.1 块级Block风格 —— 最常用person: name: Alice age: 30 address: city: Guangzhou street: Tianhe Road2.1.2 流式Flow风格 —— 行内写法类似 JSONperson_flow: { name: Bob, age: 25, address: { city: Shenzhen, street: Nanshan } }2.2 数组 / 序列Sequence列表类似 JSON 的 Array2.2.1 块级Block风格 —— 以短横线 空格开头fruits: - Apple - Banana - Orange2.2.2 流式Flow风格 —— 行内写法fruits_flow: [Apple, Banana, Orange]2.2.3 复杂数组元素数组里放对象非常常用people: - name: Charlie age: 28 - name: David age: 322.3 多行字符串重要2.3.1 保留换行符Literal Block: 使用 |multiline_keep: | Line 1 Line 2 Line 3 # 这3行会保留换行且末尾有换行符2.3.2 折叠换行符Folded Block: 使用 multiline_fold: This is a long sentence that will be folded into a single line with spaces. # 如果想要末尾不换行用 |- 或 -但较少用三、YAML 高级特性3.1 锚点Anchor与别名Alias实现数据复用defaults: default_settings # 定义锚点 timeout: 30 retry: 3 service_a: : *default_settings # : 表示合并Merge Key将锚点内容展开 name: Service A service_b: : *default_settings name: Service B timeout: 60 # 合并后可以覆盖原有字段 简单的别名引用用于标量或列表 favorite_fruit: best Fruit summer_fruit: *best # 直接引用值为 Fruit3.2 强制类型转换Explicit Typing极少用但属于语法explicit_int: !!int 123 # 强制转为数字类型 explicit_str: !!str 456 # 强制转为字符串类型 explicit_bool: !!bool true # 强制转为布尔值3.3 空集合与复杂嵌套混合示例empty_map: {} # 空对象 empty_list: [] # 空列表 混合嵌套列表里包含对象对象的值又是列表 mix_example: project: Alpha members: [John, Mary] project: Beta members: Tom Jerry3.4 结束符可选...# 表示当前文档结束四、YAML 在 AI 提示词中的应用YAML 因其结构清晰、可读性强的特点在 AI 提示词工程中得到了广泛应用。通过 YAML 格式组织提示词可以实现模块化、可复用的提示词管理。4.1 基础提示词模板使用 YAML 定义基础的 AI 提示词模板便于统一管理和调用。# 基础文本生成提示词模板 text_generation: system_prompt: | 你是一个专业的文本创作助手擅长生成高质量的文章内容。 请根据用户提供的主题和要求创作结构完整、语言优美的文章。 user_prompt_template: | 请以{topic}为主题创作一篇{length}字的{style}风格文章。 要求 1. 结构清晰包含引言、正文和结论 2. 语言生动富有感染力 3. 适当使用修辞手法 parameters: temperature: 0.7 max_tokens: 2000 top_p: 0.94.2 多轮对话场景配置对于复杂的多轮对话场景YAML 可以清晰地定义对话流程和上下文管理规则。# 多轮对话配置 conversation_flow: scenario: 技术咨询对话 context_window: 10 # 保留最近10轮对话作为上下文 roles: - name: assistant persona: 资深技术专家 tone: 专业、耐心、详细 - name: user persona: 技术开发者 tone: 直接、具体 stages: - stage: 问题澄清 assistant_prompt: | 您好我是技术专家助手。 为了更好地帮助您请详细描述您遇到的技术问题 1. 问题现象是什么 2. 在什么环境下出现 3. 您已经尝试过哪些解决方法 expected_user_input: 问题描述 - stage: 方案提供 assistant_prompt: | 根据您的问题我分析可能的原因有 {analysis} 建议的解决方案 {solutions} 请告诉我您希望先尝试哪个方案 expected_user_input: 方案选择或进一步提问/code/pre 4.3 复杂任务分解与链式调用 对于需要多个步骤完成的复杂任务可以使用 YAML 定义任务分解和链式调用逻辑。 复杂任务分解配置 complex_task: task_name: 技术博客创作 description: 从技术主题到完整博客文章的自动化创作流程 steps: step: 1 name: 主题分析 prompt: | 分析技术主题{topic}确定 核心概念和关键技术点 目标读者群体 文章的主要价值主张 model: gpt-4 output_format: bullet_points step: 2 name: 大纲生成 prompt: | 基于以下主题分析生成详细文章大纲 {step1_output} 要求 包含引言、3-5个主要章节、结论 每个章节要有明确的子标题 标注每个部分预计的字数 model: gpt-4 output_format: markdown step: 3 name: 内容填充 prompt: | 根据以下大纲撰写完整的文章内容 {step2_output} 写作要求 技术准确示例清晰 语言流畅逻辑连贯 适当添加代码示例和图表说明 model: gpt-4 output_format: markdown parameters: temperature: 0.8 max_tokens: 4000/code/pre五、YAML 在 Markdown 元数据区的应用YAML Front MatterYAML 前置元数据是 Markdown 文件中用于定义文档元数据的标准格式被广泛应用于静态网站生成器、文档系统和内容管理系统中。5.1 基础 Front Matter 语法在 Markdown 文件的开头使用三个短横线---包裹 YAML 内容定义文档的元数据。--- title: YAML 在 Markdown 中的完整指南 date: 2024-03-20 author: 技术作者 tags: - YAML - Markdown - 元数据 - 静态网站 categories: - 技术教程 - 开发工具 draft: false featured: true cover: /images/yaml-markdown-cover.jpg description: 本文详细介绍 YAML Front Matter 在 Markdown 文档中的应用包括基础语法、高级特性和实际案例。 --- 这里是 Markdown 正文内容 YAML Front Matter 让 Markdown 文档具备了结构化元数据管理能力...5.2 复杂元数据与自定义字段YAML Front Matter 支持复杂的数据结构可以定义嵌套对象、数组等满足各种定制化需求。--- # 博客文章配置 layout: post title: 深入理解 YAML Front Matter subtitle: 从基础到高级应用 slug: deep-dive-yaml-front-matter 作者信息嵌套对象 author: name: 张三 avatar: /authors/zhangsan.jpg bio: 资深全栈工程师专注于开发工具和效率提升 social: github: zhangsan-dev twitter: zhangsan_tech linkedin: zhangsan-professional 文章属性 metadata: reading_time: 8 # 预计阅读时间分钟 word_count: 2500 difficulty: 中级 prerequisites: - Markdown 基础 - YAML 基本语法 相关资源 resources: - title: YAML 官方规范 url: https://yaml.org/spec/ type: 官方文档 - title: Front Matter 示例库 url: https://github.com/frontmatter/examples type: 代码示例 发布配置 publish: date: 2024-03-20 14:30:00 update: 2024-03-25 10:15:00 schedule: true platforms: - 个人博客 - 技术社区 - 开发者周刊 SEO 优化 seo: title: YAML Front Matter 完整指南 | 技术博客 description: 学习如何在 Markdown 中使用 YAML Front Matter 管理元数据提升文档可维护性和SEO效果 keywords: - YAML - Front Matter - Markdown - 元数据 - 静态网站 og_image: /social/yaml-frontmatter-og.jpg twitter_card: summary_large_image 正文开始 通过 YAML Front Matter我们可以...5.3 实际应用案例以下是在不同场景中使用 YAML Front Matter 的实际案例。--- # 案例1技术文档页面 type: documentation product: API Gateway version: v2.1.0 status: stable last_reviewed: 2024-03-15 reviewers: - 李四 - 王五 related_docs: - /docs/api-authentication - /docs/rate-limiting - /docs/error-handling toc: true # 自动生成目录 --- API 配置参考 本文档详细介绍了 API Gateway v2.1.0 的配置选项...--- # 案例2项目展示页面 project: name: 智能文档分析系统 repo: https://github.com/org/smart-doc-analyzer demo: https://demo.smart-doc.example.com status: active version: 1.2.0 tech_stack: frontend: - React 18 - TypeScript - Tailwind CSS backend: - Python 3.11 - FastAPI - PostgreSQL ai_components: - OpenAI GPT-4 - LangChain - 向量数据库 team: name: 赵六 role: 全栈开发 contribution: 核心架构 name: 钱七 role: AI 工程师 contribution: 模型集成 timeline: start_date: 2023-09-01 milestones: - date: 2023-11-15 event: MVP 发布 - date: 2024-01-20 event: v1.0 正式版 - date: 2024-03-10 event: 用户突破 1000 metrics: users: 1250 documents_processed: 58420 avg_processing_time: 2.3s accuracy: 94.7 项目概述 智能文档分析系统是一个...--- # 案例3电子书章节 book: title: 现代 Web 开发实战 isbn: 978-7-121-45678-9 edition: 第一版 chapter: 5 chapter_title: YAML 在开发工作流中的应用 learning_objectives: - 掌握 YAML Front Matter 的基本语法 - 理解在静态网站生成器中的应用 - 学会定义复杂的文档元数据 - 能够设计可扩展的 Front Matter 结构 prerequisites: - 熟悉 Markdown 语法 - 了解基本的 YAML 数据结构 - 有使用 Git 的经验 estimated_time: 45分钟 difficulty: 初级到中级 resources: code_examples: /code/chapter5/ exercises: /exercises/chapter5/ further_reading: - Static Site Generators: The Complete Guide - YAML Specification 1.2 - JAMstack Architecture Best Practices --- # 第五章YAML 在开发工作流中的应用 在现代 Web 开发中...