ARTICLE DETAIL

资讯详情

深耕郑州网站建设与运营推广的一线实战洞察。

Fabric 模式实战:用 analyze_proposition 让 AI 对公投提案做结构化利弊分析

Fabric 模式实战:用 analyze_proposition 让 AI 对公投提案做结构化利弊分析 Fabric 模式实战用 analyze_proposition 让 AI 对公投提案做结构化利弊分析【免费下载链接】FabricFabric is an open-source framework for augmenting humans using AI. It provides a modular system for solving specific problems using a crowdsourced set of AI prompts that can be used anywhere.项目地址: https://gitcode.com/GitHub_Trending/fa/Fabric导读analyze_proposition是开源 AI 增强框架 Fabric 内置的 300 众包 Pattern提示词模式之一专门用于对联邦、州或地方层面的**投票公投提案ballot proposition**进行系统化分析。这篇技术指南以 data/patterns/analyze_proposition/system.md 为骨架拆解其 Prompt 设计方法角色设定、执行步骤、输出约束并结合仓库源码讲清一个 Pattern 从磁盘上的system.md到送入大模型生成分析的完整调用链。读完本文你将掌握三件事理解一个高质量分析型 Pattern 的标准结构、会用fabric -p analyze_proposition在命令行落地公投分析以及能基于同一套规范定制自己的分析类 Pattern。一、模式定位它是 Fabric 生态中的哪一个积木按 Fabric 的项目定义它是一套用 AI 增强人类的开源框架通过可复用的、众包维护的 AI 提示词集合去模块化地解决特定问题。每个 Pattern 就是一个积木被组织在data/patterns/下、以目录形式存在analyze_proposition就是其中一块专注公投/选票提案分析的积木。仓库的元数据文件 scripts/pattern_descriptions/pattern_descriptions.json 对该模式给出了官方定位patternNameanalyze_propositiondescriptionExamine ballot propositions to assess purpose and potential impact.审视公投提案评估其目的与潜在影响tagsANALYSIS、RESEARCH——与analyze_paper、analyze_claims、analyze_threat_report等同属分析/研究提示词家族它的目标用户画像很清晰投票日前需要快速吃透一份冗长法案文本的选民、需要向大众解释这票该怎么投的记者与媒体编辑、研究公民投票机制的社会科学研究者以及任何面对 Ballot Proposition 想要一份正反兼顾、背景完整、后果可判断的结构化分析的人。而 Pattern 的存在形式很简单一个目录里放着system.mdAI 的系统提示词可选地再放一个user.md用户侧提示词。在 internal/plugins/db/fsdb/db.go 中可以看到PatternsEntity的SystemPatternFile被固定为system.md这说明system.md是整个 Pattern 目录约定的入口文件。二、Prompt 解剖逐段读懂 system.md完整的模式内容就是 data/patterns/analyze_proposition/system.md 这一个文件。它虽然只有 22 行却构成了一个可自洽运转的 Agent 提示词。下面逐段拆解其设计意图这正是编写高质量分析型 AI 指令的样板。2.1 IDENTITY and PURPOSE身份与使命You are an AI assistant whose primary responsibility is to analyze a federal, state, or local ballot proposition. You will meticulously examine the proposition to identify key elements such as the purpose, potential impact, arguments for and against, and any relevant background information. Your goal is to provide a comprehensive analysis that helps users understand the implications of the ballot proposition.这段在同时完成三件事划定能力边界明确联邦 / 州 / 地方三层政府框架都可能出现提案避免模型把分析范围收窄到单一层级定义要提取的信息维度目的purpose、潜在影响impact、支持与反对论点arguments for/against、背景信息background锚定最终目标不是输出立场而是输出能帮用户理解提案通过后意味着什么的全面分析comprehensive analysis。从 Prompt 工程角度这是典型的Role Task Goal三段式身份设定——先框定角色法案分析师再给任务清单识别要素最后给成功标准让用户看懂影响。它直接决定了后续 STEPS 的展开方向。2.2 推理指令显式要求分步思考Take a step back and think step-by-step about how to achieve the best possible results by following the steps below.这一行短指令与常见的零样本思维链Chain-of-Thought提示一脉相承先让模型退后一步、逐步骤思考再按下方步骤执行。它刻意把规划与执行分离能显著降低模型在长文本法案上跳步、漏项的概率。仓库 data/strategies/ 目录里就存放了standard.json、cot.json、tot.json等策略文件说明 Fabric 本身对思维链思维树这类增强手段有系统性支持system.md内嵌此类指令是一种轻量的模式内实现。2.3 STEPS执行步骤- Identify the key components of a federal, state, or local ballot propositions. - Develop a framework for analyzing the purpose of the proposition. - Assess the potential impact of the proposition if passed. - Compile arguments for and against the proposition. - Gather relevant background information and context. - Organize the analysis in a clear and structured format.六个步骤对应一套完整的分析工作流顺序本身蕴含方法论步骤动作解决的问题1识别提案关键构成提案包含哪些政策条款、税基/预算来源、生效条件2为目的分析搭建框架用什么维度判断提案真实意图问题定义→方案→目标群体3评估若通过后的潜在影响财政、司法、行政、社会层面的二阶后果是什么4汇集正反两方论点支持者与反对者的核心叙事分别是什么、各自论据强弱5收集背景与上下文立法史、历次类似投票、利益相关方、实施先例6以清晰结构组织分析将上述内容编排为易读的报告值得注意的细节是第 4 步用了compile arguments for and against——编译而不是站队。这说明该 Pattern 的价值观中立性它要的是两造论点的对称呈现而不是替用户做决定。这与 Fabric 生态中analyze_debate、compare_and_contrast、identify_dsrp_distinctions等模式共享同一套先分解、后结构、不预设立场的分析哲学。2.4 OUTPUT INSTRUCTIONS输出约束- Only output Markdown. - All sections should be Heading level 1. - Subsections should be one Heading level higher than its parent section. - All bullets should have their own paragraph. - Ensure you follow ALL these instructions when creating your output.这一段是对输出格式的强约束翻译成可实现规则是只输出 Markdown不允许模型用纯文本、JSON 或其他格式包装结果保证下游命令行、文件、其他工具链拿到的是可解析的 Markdown一级章节用 H1#保证报告主结构扁平可扫读子章节相对父级标题保持逐级嵌套原文表述为比父级高一级实际执行时一般理解为子级标题层级低于父级、逐层递进重点是层级必须分明每条 bullet 独占一个段落避免模型把多项内容挤进同一行提高机器可读性与人工跳读效率末尾重申必须全部遵守对可能偷懒的模型做最后的强制提醒。把第 2、3、4 条连起来看这个输出规范本质上是在为后续被解析/引用服务扁平的 H1 主结构 规整的列表最容易被人与下游程序比如再喂给extract_insights、summarize等下游 Pattern二次消费。这一规范输出的提示词做法是 Fabric 大量 Pattern 的共同范式可在 data/patterns/analyze_claims/system.md 等同类文件中看到近似句式。2.5 INPUT输入占位符INPUT:文件最后一行是INPUT:随后的{{input}}由 Fabric 引擎在运行时注入。它不是模型要生成的内容而是用户输入物的插槽——选票提案的正文、摘要、相关链接文本会在此处被拼入。三、运行时行为{{input}}如何被替换用户输入注入逻辑在 internal/plugins/db/fsdb/patterns.go 中有清晰的实现loadPattern()第 68-86 行先判断source是内置模式名还是文件路径以.、/、~、\开头的会被当作文件路径读取对应LooksLikePatternFilePath函数否则走getFromDB按名字查库getFromDB()第 125-170 行拼出filepath.Join(o.Dir, name, o.SystemPatternFile)即patterns目录/模式名/system.md读取内容若配置了CustomPatternsDir会优先在自定义目录里找同名模式实现用户覆盖内置的效果ensureInput()第 88-95 行做了一个关键兜底如果模式文本里不含{{input}}占位符它会自动在文件末尾补上\n{{input}}——保证任何 Pattern 都能接收用户输入applyInput()/applyVariables()第 97-122 行随后把{{input}}全部替换为真实输入变量替换阶段还会用 sentinel 哨兵令牌临时保护{{input}}不被递归误替换。所以在analyze_proposition场景下最终发给模型的完整请求提示词逻辑上等于system.md 全文角色 步骤 输出约束 {{input}}替换后的提案文本这一拼装发生在聊天请求被构造之前。在 CLI 层internal/cli/chat.go 还支持模式级模型覆盖当-p analyze_proposition指定了 Pattern 而未指定-m时会去读环境变量FABRIC_MODEL_ANALYZE_PROPOSITIONPattern 名中的-转成_、全大写即不同分析模式可以各自绑定更擅长长文档推理的专属模型。四、命令行实战三条命令跑通公投分析在确认已完成fabric安装与fabric --setup配置的前提下最直接的调用方式是# 方式一管道喂入提案文本 cat proposition.txt | fabric -p analyze_proposition # 方式二直接附在参数后 fabric -p analyze_proposition 加州 2024 年 Prop 47 修正案全文…… # 方式三交互式粘贴输入完成后 Ctrl-D 结束 fabric -p analyze_proposition-p / --pattern是选模式的核心参数定义见 internal/cli/flags.go。除-p外围绕分析工作流常用的配套参数也都在同一文件定义可按需组合参数类型/默认用途-v, --variablemap[string]string为模式变量传值如-v#role:expert可让分析限定在特定视角-m, --modelstring指定执行分析的模型留空则用默认模型或FABRIC_MODEL_ANALYZE_PROPOSITION-s, --streambool流式输出长报告可边生成边读-o, --outputstring把分析结果同时写入文件便于存档或继续做下游处理-C, --contextstring挂接自定义 Context注入额外背景知识--session/-w, --wipecontextstring会话化连续追问或重置上下文--dry-runbool只打印将要发送给模型的提示词不实际调用便于调试-l, --listpatternsbool列出全部可用模式名--readpatternstring把指定模式文件原样打印到终端例如--readpattern analyze_proposition-g, --languagestring指定输出语言代码如-gzh可要求用中文作答一个更进阶的用法来自 CLI 层对可执行文件名的特殊处理internal/cli/flags.go 中若程序以非fabric/main/cmd的名字被调用则会把该名字当作 Pattern 名。也就是说可以建立软链把某个 Pattern 变成独立命令ln -s $(which fabric) ~/.local/bin/analyze_proposition cat proposition.txt | analyze_proposition调试期强烈建议先用--dry-run查看拼装后的完整提示词确认system.md与输入正确拼接后再正式调用cat proposition.txt | fabric -p analyze_proposition --dry-run五、深入原理一个 Pattern 的完整生命周期结合仓库源码可以梳理出analyze_proposition从文本文件到LLM 请求的完整调用链初始化与装载cmd/fabric/main.go调用 internal/cli/cli.go 的Cli()其中initializeFabric()建立插件注册表。Patterns 由fsdb.PatternsEntity管理而首次使用前需要下载模式库PopulateDB()见 internal/tools/patterns_loader.go从默认的 Fabric 仓库 clone 出data/patterns/目录内容该文件的DefaultPatternsGitRepoUrl/DefaultPatternsGitRepoFolder常量第 19-20 行正是当前仓库模式的来源约定按名解析用户输入analyze_proposition后getFromDB()在data/patterns/analyze_proposition/system.md命中文件并读入内存自定义目录优先级更高变量与输入处理applyVariables()/applyInput()完成{{input}}替换与模板变量展开请求组装cli层把系统提示词放进 system 消息、把输入放进 user 消息连同temperature、topp等采样参数打包成domain.ChatRequest这些参数的默认值与可选项均定义于 internal/cli/flags.go模型推理与输出LLM 依system.md的 OUTPUT INSTRUCTIONS 生成纯 Markdown、层级分明的分析报告经WriteOutput打印并按-o落盘。对应的单元测试 internal/plugins/db/fsdb/patterns_test.go 覆盖了模式保存、按路径加载拦截、自定义模式覆盖、符号链接逃逸防护等边界行为是理解这套装载机制可靠性的最佳补充读物。若想查看当前已装载的完整模式清单与最新模式CLI 的--listpatterns与-n/--latest参数即可后者可列出最近新增的模式。六、扩展把 analyze_proposition 改造成你自己的分析器Fabric 的设计决定了复制即定制非常轻量。由于CustomPatternsDir中的同名目录会覆盖内置模式你不需要改动只读的仓库文件把内置目录整体复制到自定义模式目录默认用户配置下的 patterns 目录例如复制为my_proposition_analyzer/修改其中的system.md可调整身份限定如仅分析州级财政类提案、增删 STEPS、改写输出结构比如追加风险量化等级一节用新名字调用fabric -p my_proposition_analyzer并可配合-v变量实现一键切换分析视角法律/财政/社会。同样的手法也适用于直接以文件路径调用fabric -p /path/to/my/system.mdloadPattern会识别路径型来源把 Fabric 当做一个纯提示词执行引擎用于任意自研 Markdown 提示词。若要查阅其它分析型模式作为参照可顺带浏览 data/patterns/analyze_paper/system.md论文拆解、data/patterns/analyze_claims/system.md主张核验等同类文件完整的模式清单与说明文档位于 data/patterns/pattern_explanations.md。小结analyze_proposition之所以值得拆解是因为它浓缩了一个生产级分析 Agent的全部要素清晰的 Role 设定划定能力边界、显式的分步思考指令抑制跳步、六个 STEPS 构成中立而完备的分析流程、强 Markdown 输出约束保证结果可被下游复用、{{input}}插槽与引擎解耦输入来源。在 Fabric 的架构里它和数百个兄弟模式一样本质是一段被工程化的、可组合、可覆盖、可版本管理的系统提示词——读懂了它的骨架也就掌握了 Fabric 提示词工程的核心方法论。延伸阅读入口模式原文 data/patterns/analyze_proposition/system.md · 模式装载与查询实现 internal/plugins/db/fsdb/patterns.go · CLI 参数定义 internal/cli/flags.go · 模式下载更新逻辑 internal/tools/patterns_loader.go · 模式元数据清单 scripts/pattern_descriptions/pattern_descriptions.json【免费下载链接】FabricFabric is an open-source framework for augmenting humans using AI. It provides a modular system for solving specific problems using a crowdsourced set of AI prompts that can be used anywhere.项目地址: https://gitcode.com/GitHub_Trending/fa/Fabric创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考
返回列表