当前位置: 首页 > news >正文

L2-1、打造稳定可控的 AI 输出 —— Prompt 模板与格式控制

一、为什么需要 Prompt 模板?

在与 AI 模型交互时,我们经常会遇到输出不稳定、格式混乱的问题。Prompt 模板帮助我们解决这些问题,通过结构化的输入指令来获得可预测且一致的输出结果。

模板的作用主要体现在:

  • 固定输出格式,减少随机性
  • 提高交互效率,避免重复输入相同指令
  • 保证输出质量,明确 AI 任务边界
  • 提升用户体验,使 AI 输出易于理解和使用

二、构建稳定可复用的 Prompt 模板策略

高效的 Prompt 模板通常包含以下几个部分:

  1. 角色定义:明确告诉 AI 它应该扮演什么角色
  2. 任务说明:详细描述需要完成的任务
  3. 输出格式:规定 AI 回答的具体结构
  4. 示例展示:提供输入-输出的样例来引导 AI
  5. 评估标准:设定质量要求,让 AI 自我检查

以下是一个基本模板示例:

你是一位专业的数据分析师。请根据我提供的数据,生成一份简洁的分析报告。任务:分析以下销售数据并找出关键趋势。输出格式要求:
1. 数据摘要(100字以内)
2. 关键发现(3-5点)
3. 建议行动(2-3点)请使用markdown格式输出,保持专业简洁的语言风格。

三、如何控制输出格式:结构化输出的常见方法

表格输出技巧

表格是展示数据最直观的方式之一。使用 Markdown 格式的表格可以在大多数平台上正确显示。

import streamlit as st
import pandas as pd
import numpy as npst.title("表格输出示例")# 生成示例数据
data = {'产品': ['A产品', 'B产品', 'C产品', 'D产品'],'销量': [150, 240, 350, 130],'增长率': ['15%', '22%', '30%', '5%'],'评分': [4.2, 4.5, 4.8, 3.9]
}df = pd.DataFrame(data)# 展示数据表格
st.write("### 原始数据表格")
st.dataframe(df)# 添加提示输入框
prompt = st.text_area("输入你的分析请求", "请分析上述产品数据,找出表现最佳的产品和需要改进的产品")if st.button("生成分析"):# 模拟AI分析结果st.write("### 分析结果")col1, col2 = st.columns(2)with col1:st.write("**表现最佳产品**")st.markdown("""| 指标 | 产品 | 数值 || --- | --- | --- || 销量最高 | C产品 | 350 || 增长率最高 | C产品 | 30% || 评分最高 | C产品 | 4.8 |""")with col2:st.write("**需要改进的产品**")st.markdown("""| 指标 | 产品 | 数值 || --- | --- | --- || 销量最低 | D产品 | 130 || 增长率最低 | D产品 | 5% || 评分最低 | D产品 | 3.9 |""")

JSON 格式设计

JSON 格式便于程序处理,尤其适合需要进一步使用 AI 输出的场景。

import streamlit as st
import jsonst.title("JSON 格式输出示例")st.write("### 使用 JSON 结构化数据")# JSON格式示例
json_prompt = st.text_area("输入分析请求", "分析最近一周的网站流量数据,提供关键指标和趋势")if st.button("分析数据"):# 模拟AI返回的JSON格式数据analysis_result = {"time_period": "2023-10-01 to 2023-10-07","key_metrics": {"total_visits": 15240,"unique_visitors": 8750,"bounce_rate": "34.2%","avg_session_duration": "2m 45s"},"trends": [{"metric": "mobile_traffic", "change": "+15.3%", "note": "移动端访问持续增长"},{"metric": "conversion_rate", "change": "+2.1%", "note": "转化率小幅提升"},{"metric": "bounce_rate", "change": "-3.5%", "note": "跳出率有所下降"}],"recommendations": ["优化移动端页面加载速度","关注转化漏斗中购物车页面的用户流失","增加社交媒体引流渠道"]}# 显示格式化的JSONst.json(analysis_result)# 展示如何使用JSON数据st.write("### 基于JSON数据生成的图表")# 从JSON数据中提取趋势信息并可视化trends = analysis_result["trends"]metrics = [t["metric"] for t in trends]changes = [float(t["change"].strip("%").strip("+")) for t in trends]st.bar_chart({"指标": metrics,"变化百分比": changes})

Markdown 样式优化

Markdown 格式兼具可读性和美观性,适合生成报告、文档等内容。

import streamlit as stst.title("Markdown 样式输出示例")st.write("### 使用 Markdown 格式化输出")markdown_prompt = st.text_area("输入研究主题", "请生成一份关于人工智能在医疗领域应用的简短报告")if st.button("生成报告"):# 模拟AI生成的Markdown格式报告markdown_report = """# 人工智能在医疗领域的应用## 摘要人工智能技术正在医疗健康领域发挥越来越重要的作用,从辅助诊断到药物研发,AI技术正在改变传统医疗模式。## 主要应用领域### 1. 医学影像分析- 利用计算机视觉技术辅助放射科医生读片- 提高肿瘤、骨折等病变的检出率- 减少漏诊和误诊概率### 2. 智能诊断系统- 基于大数据的症状分析和疾病预测- 罕见病的辅助诊断- 农村和偏远地区的远程医疗支持### 3. 药物研发- 加速新药筛选过程- 预测药物分子结构的生物活性- 降低药物研发成本和周期## 未来发展趋势1. **个性化医疗**:AI将帮助实现更精准的个体化治疗方案2. **预防医学**:通过数据分析预测健康风险,实现早期干预3. **医患协作**:AI作为辅助工具,增强医患沟通和决策过程## 结论人工智能不是要取代医生,而是作为强大的辅助工具,帮助医疗专业人员提高工作效率和诊疗准确性,最终受益的是患者和整个医疗体系。"""st.markdown(markdown_report)

四、实战演示:从自由输出到格式固定的演进

下面我们通过一个实际案例,展示如何将自由输出逐步改进为格式固定的结构化输出:

import streamlit as st
import pandas as pd
import numpy as npst.title("Prompt 模板演进实战演示")# 创建示例数据
customer_data = pd.DataFrame({'客户ID': range(1001, 1011),'年龄': [28, 35, 42, 39, 51, 32, 45, 30, 36, 48],'性别': ['男', '女', '男', '女', '男', '女', '男', '女', '男', '女'],'购买频率': ['高', '中', '低', '高', '中', '高', '中', '低', '高', '中'],'客户价值': ['A', 'B', 'C', 'A', 'B', 'A', 'B', 'C', 'A', 'B']
})st.write("### 客户数据")
st.dataframe(customer_data)# 展示不同类型的prompt模板
st.write("## Prompt 模板对比")tabs = st.tabs(["基础Prompt", "简单模板", "结构化模板", "高级模板"])with tabs[0]:st.write("### 基础Prompt(无模板)")st.code("""分析上面的客户数据,给我一些见解。""", language="text")if st.button("执行基础分析"):st.write("#### 分析结果(模拟):")st.write("""这份数据包含了10位客户的信息。从性别分布来看,男女各占一半。年龄分布从28岁到51岁不等,平均年龄为38.6岁。购买频率方面,有4位客户为高频率购买,4位为中等频率,2位为低频率。客户价值方面,A类客户有4人,B类有4人,C类有2人。建议对A类客户提供更多的优惠和个性化服务,以保持他们的忠诚度。""")with tabs[1]:st.write("### 简单模板")st.code("""你是一位客户数据分析专家。请分析提供的客户数据,并回答以下问题:1. 客户的年龄分布如何?2. 不同性别客户的购买行为有何差异?3. 客户价值与购买频率是否相关?请给出具体的数据支持你的分析。""", language="text")if st.button("执行简单模板分析"):st.write("#### 分析结果(模拟):")st.write("""### 客户数据分析#### 1. 客户的年龄分布- 年龄范围:28-51岁- 平均年龄:38.6岁- 最多客户集中在30-40岁区间(5人)#### 2. 不同性别客户的购买行为差异- 女性客户中,高频率购买占60%,男性中高频率购买占40%- 女性客户无C类价值客户,而男性中有2位C类客户#### 3. 客户价值与购买频率的相关性- A类客户中,75%为高频率购买者- B类客户中,100%为中频率购买者- C类客户中,100%为低频率购买者存在明显的正相关关系:购买频率越高,客户价值等级越高。""")with tabs[2]:st.write("### 结构化模板")st.code("""角色:你是数据分析师,专精于客户行为分析。任务:分析所提供的客户数据集,找出关键洞察并提供业务建议。输出格式:1. 数据概要(包含客户总数、年龄范围、性别分布)2. 关键发现(至少3点,每点使用数据支持)3. 客户分群分析(基于年龄、性别、购买频率进行交叉分析)4. 业务建议(针对不同客户群体的营销策略,至少3点)请使用表格和要点列表来组织你的回答,使其清晰易读。""", language="text")if st.button("执行结构化模板分析"):st.write("#### 分析结果(模拟):")st.write("### 1. 数据概要")col1, col2, col3 = st.columns(3)with col1:st.metric("客户总数", "10")with col2:st.metric("年龄范围", "28-51岁")with col3:st.metric("性别分布", "男女各5人")st.write("### 2. 关键发现")st.markdown("""- **高价值关联**:所有A类客户(100%)都是高频率购买者,显示购买频率与客户价值强相关- **年龄特征**:30-40岁年龄段的客户占比最高(50%),且在这一区间内A类客户比例达60%- **性别差异**:女性客户中高频购买比例(60%)高于男性(40%),但客户平均价值无显著差异""")st.write("### 3. 客户分群分析")st.markdown("""| 客户群体 | 人数 | 平均年龄 | 高频购买比例 | A类客户比例 ||---------|-----|--------|------------|-----------|| 30岁以下男性 | 1 | 28 | 0% | 0% || 30岁以下女性 | 1 | 30 | 0% | 0% || 30-40岁男性 | 1 | 36 | 100% | 100% || 30-40岁女性 | 3 | 35.3 | 67% | 33% || 40岁以上男性 | 3 | 45 | 33% | 33% || 40岁以上女性 | 1 | 39 | 100% | 100% |""")st.write("### 4. 业务建议")st.markdown("""1. **针对A类客户**:实施会员忠诚计划,提供专属优惠和提前购买权,维系高价值客户关系2. **针对30-40岁客户群体**:增加社交媒体和线上营销力度,设计符合职场人士需求的产品和服务3. **针对女性客户**:开发针对性促销活动,鼓励低频购买女性提升购买频率,有较大转化潜力4. **针对C类客户**:实施有针对性的促销和交叉销售策略,提升其购买频率和客户价值""")with tabs[3]:st.write("### 高级模板(JSON结构输出)")st.code("""你是一位专业的数据分析AI助手。任务:分析给定的客户数据,提供深入洞察并以JSON格式返回分析结果。输出要求:你的回答必须是一个有效的JSON对象,具有以下结构:{"summary": {"total_customers": <整数>,"age_range": {"min": <整数>, "max": <整数>, "avg": <浮点数>},"gender_distribution": {"male": <整数>, "female": <整数>}},"key_findings": [{"title": <字符串>, "description": <字符串>, "supporting_data": <字符串>},...(至少3项)],"customer_segments": [{"segment_name": <字符串>, "count": <整数>, "characteristics": [<字符串>, ...]},...(至少3个细分市场)],"recommendations": [{"target_segment": <字符串>, "action": <字符串>, "expected_outcome": <字符串>},...(至少3项建议)]}确保你的JSON格式正确无误,可以直接被程序解析。不要在JSON前后添加任何说明或附加文本。""", language="text")if st.button("执行高级模板分析"):st.write("#### 分析结果(模拟JSON输出):")# 模拟JSON结果json_result = {"summary": {"total_customers": 10,"age_range": {"min": 28, "max": 51, "avg": 38.6},"gender_distribution": {"male": 5, "female": 5}},"key_findings": [{"title": "购买频率与客户价值高度相关", "description": "高频率购买者更可能成为A类高价值客户", "supporting_data": "100%的A类客户是高频率购买者"},{"title": "年龄段与购买行为关系明显", "description": "30-40岁年龄段客户展现出最高的购买频率", "supporting_data": "该年龄段75%客户为高频购买者,高于其他年龄段"},{"title": "性别差异影响购买频率", "description": "女性客户表现出更高的购买频率", "supporting_data": "60%的女性为高频购买者,而男性中仅40%"}],"customer_segments": [{"segment_name": "高价值忠诚客户", "count": 4, "characteristics": ["A类客户", "高频率购买", "平均年龄35.7岁", "男女比例1:1"]},{"segment_name": "中等价值稳定客户", "count": 4, "characteristics": ["B类客户", "中频率购买", "平均年龄42.5岁", "男女比例1:1"]},{"segment_name": "低价值潜力客户", "count": 2, "characteristics": ["C类客户", "低频率购买", "平均年龄36岁", "全部为男性"]}],"recommendations": [{"target_segment": "高价值忠诚客户", "action": "推出专属会员福利计划,包括优先购买权和专属客户服务", "expected_outcome": "提高客户留存率,增加客户终身价值"},{"target_segment": "中等价值稳定客户", "action": "实施个性化推荐和限时优惠,鼓励增加购买频次", "expected_outcome": "将25%的B类客户转化为A类客户"},{"target_segment": "低价值潜力客户", "action": "提供入门级产品促销和首次购买优惠", "expected_outcome": "将50%的低频客户转化为中频客户"},{"target_segment": "30-40岁女性客户", "action": "开发针对职业女性的产品线和营销活动", "expected_outcome": "增加该群体平均购买金额15%"}]}# 显示JSON并演示如何使用它st.json(json_result)st.write("### 基于JSON自动生成的分析视图")# 创建几个简单的可视化segments = [seg["segment_name"] for seg in json_result["customer_segments"]]counts = [seg["count"] for seg in json_result["customer_segments"]]st.subheader("客户细分分布")st.bar_chart({"客户数量": counts}, x=segments)# 展示关键发现st.subheader("关键发现")for i, finding in enumerate(json_result["key_findings"]):st.write(f"**{i+1}. {finding['title']}**")st.write(finding["description"])st.caption(f"支持数据: {finding['supporting_data']}")# 最终实战示例
st.write("## 综合实战Demo:客户分析助手")with st.form("customer_analysis_form"):st.write("### 输入你的分析需求")analysis_goal = st.selectbox("分析目标",["客户细分", "购买行为分析", "客户价值评估", "客户流失风险预测"])output_format = st.selectbox("期望输出格式",["表格形式", "图表形式", "Markdown报告", "JSON数据"])additional_request = st.text_area("其他具体需求","请重点关注30-40岁年龄段的客户行为特征",height=100)submitted = st.form_submit_button("生成分析")if submitted:st.write("### 生成的Prompt模板")final_prompt = f"""角色:你是一位专业的客户数据分析师,擅长从客户数据中发现有价值的洞察。任务:进行{analysis_goal},重点关注{additional_request}。数据集:客户数据集包含10位客户的年龄、性别、购买频率和客户价值信息。输出要求:以{output_format}提供分析结果,确保包含以下内容:1. 数据概述和关键统计指标2. 主要发现和洞察(至少3点)3. 基于分析结果的业务建议(至少2点)请确保分析深入且有数据支持,建议具体可行。"""st.code(final_prompt, language="text")st.write("### 分析结果")# 这里应该是AI生成的响应,我们用静态内容模拟if output_format == "表格形式":st.write("#### 30-40岁客户群体分析")analysis_df = pd.DataFrame({'指标': ['客户数量', '占总体比例', 'A类客户比例', '高频购买比例', '平均年龄'],'30-40岁男性': ['1', '10%', '100%', '100%', '36岁'],'30-40岁女性': ['3', '30%', '33%', '67%', '35.3岁'],'30-40岁整体': ['4', '40%', '50%', '75%', '35.5岁'],})st.table(analysis_df)st.write("#### 主要发现")st.markdown("""1. **购买能力强**:30-40岁群体中75%为高频购买者,高于整体平均水平(40%)2. **价值贡献大**:该年龄段贡献了50%的A类高价值客户3. **性别差异**:该年龄段女性客户数量是男性的3倍,但男性中A类客户占比更高""")st.write("#### 业务建议")st.markdown("""1. 设计针对30-40岁职场人士的产品套餐,重点关注高频消费需求2. 为该年龄段男性客户开发会员忠诚计划,最大化客户生命周期价值3. 加强对30-40岁女性的营销,提高其客户价值等级转化率""")elif output_format == "图表形式":col1, col2 = st.columns(2)with col1:st.write("#### 年龄段分布")age_data = pd.DataFrame({'年龄段': ['<30', '30-40', '>40'],'客户数量': [2, 4, 4]})st.bar_chart(age_data, x='年龄段', y='客户数量')with col2:st.write("#### 30-40岁客户价值分布")value_data = pd.DataFrame({'客户价值': ['A类', 'B类', 'C类'],'比例': [50, 25, 25]})st.bar_chart(value_data, x='客户价值', y='比例')st.write("#### 30-40岁客户购买频率与性别关系")freq_gender_data = pd.DataFrame({'性别': ['男性', '男性', '男性', '女性', '女性', '女性'],'购买频率': ['高', '中', '低', '高', '中', '低'],'人数': [1, 0, 0, 2, 1, 0]})# 创建交叉表heatmap_data = freq_gender_data.pivot_table(index='性别', columns='购买频率', values='人数',fill_value=0)st.bar_chart(heatmap_data)st.write("#### 主要发现")st.markdown("""1. 30-40岁客户占总体的40%,是最大的客户群体2. 该年龄段客户中没有低频购买者,75%为高频购买客户3. 在该年龄段中,A类客户比例(50%)高于整体平均(40%)""")st.write("#### 业务建议")st.markdown("""1. 将营销资源集中在30-40岁高价值客户群体,提供个性化服务2. 针对30-40岁女性客户,开发升级方案提高其客户价值等级""")elif output_format == "Markdown报告":markdown_report = """# 30-40岁客户群体分析报告## 数据概述在分析的客户样本中,30-40岁年龄段的客户有4位,占总体的40%。这个年龄段是客户基础中最大的群体,具有以下关键特征:* **性别分布**:男性1位(25%),女性3位(75%)* **客户价值**:A类2位(50%),B类1位(25%),C类1位(25%)* **购买频率**:高频3位(75%),中频1位(25%),低频0位(0%)## 主要发现我将补充完整Markdown报告部分的内容:### 1. 强烈的性别差异在30-40岁年龄段中,女性占比明显高于男性(75%比25%)。这一性别分布差异具有以下特点:- 女性客户群体更大,但客户价值分布较为分散- 男性客户虽然数量少,但100%为高价值A类客户- 这表明针对不同性别的营销策略应有明显差异### 2. 高购买频率特征该年龄段客户的购买频率明显高于其他年龄段:- 75%的客户为高频购买者(整体样本中仅40%)- 没有低频购买客户- 高频购买行为与职业发展和家庭建设阶段高度相关### 3. 价值潜力巨大30-40岁客户群体展现出最高的客户价值潜力:- 贡献了50%的A类高价值客户- 客户终身价值预期高于其他年龄段- 客户忠诚度与购买频率呈正相关关系## 策略建议基于以上分析,我们建议采取以下策略:1. **分性别营销策略**:- 男性客户:重点维护现有高价值客户,提供专属会员服务- 女性客户:实施价值提升计划,将中频客户转化为高频、高价值客户2. **个性化产品组合**:- 设计符合30-40岁职业发展需求的产品套餐- 针对家庭建设阶段的消费需求提供整合服务3. **忠诚度计划优化**:- 完善积分系统,提高复购率- 设计阶梯式会员权益,鼓励消费升级4. **数字化触达提升**:- 加强社交媒体营销,特别是女性用户集中的平台- 开发移动端个性化推荐功能,提升用户体验## 结论30-40岁年龄段客户群体是我们最具价值的客户群体之一,他们处于职业和家庭发展的关键阶段,消费能力和意愿都较高。通过针对性的营销策略和产品设计,我们能够显著提升这一群体的客户价值和忠诚度,从而带动整体业绩增长。"""st.markdown(markdown_report)

五、可复制模板库推荐与应用建议

适用于不同场景的模板库

1. 数据分析报告模板

以下是一个通用数据分析报告模板,适用于多种数据分析场景:
你是一位专业的数据分析专家。请根据以下数据进行分析,并提供详细的报告。

数据背景:[数据的来源和背景信息]

分析要求:

  1. 数据摘要和关键统计指标
  2. 数据中的趋势和模式识别
  3. 异常值分析和可能的原因
  4. 基于数据的预测和建议

输出格式:

  • 使用Markdown格式
  • 适当使用表格展示比较数据
  • 对关键发现使用粗体标注
  • 建议部分使用编号列表

分析深度:[基础/中级/高级]
这个模板可以在Streamlit应用中实现,以便用户输入自己的数据并获得分析报告:

import streamlit as st
import pandas as pd
import iost.title("数据分析报告生成器")# 上传数据文件
uploaded_file = st.file_uploader("上传CSV或Excel数据文件", type=["csv", "xlsx"])if uploaded_file is not None:# 读取数据try:if uploaded_file.name.endswith('.csv'):df = pd.read_csv(uploaded_file)else:df = pd.read_excel(uploaded_file)st.write("### 数据预览")st.dataframe(df.head())# 收集分析要求st.write("### 分析配置")col1, col2 = st.columns(2)with col1:data_background = st.text_area("数据背景", "请描述数据的来源和背景信息")analysis_depth = st.select_slider("分析深度",options=["基础", "中级", "高级"])with col2:analysis_focus = st.multiselect("重点分析领域",["时间趋势分析", "类别比较", "相关性分析", "预测建模", "细分群体分析"],["时间趋势分析", "类别比较"])# 生成模板if st.button("生成分析报告模板"):template = f"""你是一位专业的数据分析专家。请根据以下数据进行分析,并提供详细的报告。数据背景:{data_background}分析要求:1. 数据摘要和关键统计指标2. {'、'.join(analysis_focus)}的深入分析3. 异常值分析和可能的原因4. 基于数据的预测和建议输出格式:- 使用Markdown格式- 适当使用表格展示比较数据- 对关键发现使用粗体标注- 建议部分使用编号列表分析深度:{analysis_depth}"""st.code(template, language="text")# 在实际应用中,这里可以添加将模板发送到AI模型获取回复的代码st.info("复制此模板并粘贴到您喜欢的AI聊天工具中,同时提供您的数据。")except Exception as e:st.error(f"读取文件时发生错误: {e}")
2. 创意内容生成模板
import streamlit as stst.title("创意内容生成助手")content_type = st.selectbox("选择内容类型",["博客文章", "社交媒体帖子", "产品描述", "营销邮件", "故事情节"]
)templates = {"博客文章": """你是一位专业的内容创作者。请为以下主题创作一篇引人入胜的博客文章。主题:[主题]目标受众:[受众]文章风格:[风格,如专业、随意、幽默等]输出要求:1. 引人注目的标题(提供3个选项)2. 引言部分(100字左右)3. 3-5个主要部分,每部分需有小标题4. 每个部分包含实例和证据支持5. 总结和行动建议6. 文章字数控制在[字数]字左右使用Markdown格式,确保文章逻辑连贯,使用引人入胜的叙述方式。""","社交媒体帖子": """你是一位社交媒体内容策略专家。请为以下主题创作一组社交媒体帖子。主题:[主题]平台:[平台,如微信、微博、抖音等]目标:[目标,如提高参与度、推广产品、提升品牌认知等]输出要求:1. 创建5个不同的帖子文案2. 每个帖子不超过[字数]字3. 包含适当的表情符号和话题标签建议4. 每个帖子都应有明确的号召性行动5. 提供发布时间建议确保内容有创意、引人注目并符合平台特性。""","产品描述": """你是一位产品文案专家。请为以下产品创作一个引人注目且有说服力的产品描述。产品:[产品名称]目标受众:[受众]主要卖点:[3-5个主要卖点]输出要求:1. 引人注目的产品标题(30字以内)2. 简短吸引人的产品概述(50字以内)3. 详细说明每个主要卖点(每点50-100字)4. 技术规格列表(如适用)5. 有说服力的结束语,包含号召性行动使用生动、形象的语言,突出产品如何解决客户问题或改善生活。""","营销邮件": """你是一位电子邮件营销专家。请创作一封有效的营销邮件。目的:[邮件目的,如产品推广、活动通知、会员维护等]目标受众:[受众]产品/服务:[产品或服务详情]输出要求:1. 引人注目的邮件主题行(3个选项)2. 个性化的开场白3. 简明扼要的核心内容(200字左右)4. 明确的价值主张5. 突出的号召性行动按钮文本6. 简短的结束语确保语言简洁、直接,重点突出价值和好处,而非仅仅列举特性。""","故事情节": """你是一位创意故事作家。请为以下设定创作一个引人入胜的故事情节。类型:[故事类型,如科幻、奇幻、爱情、悬疑等]主角设定:[主角基本设定]背景设置:[故事背景]输出要求:1. 引人入胜的标题2. 故事梗概(100字左右)3. 主要人物介绍(每个人物50字左右)4. 分为三幕的情节概述:- 第一幕:设定和冲突引入- 第二幕:冲突发展和转折- 第三幕:高潮和解决5. 主题和寓意说明创造有深度的角色和情节,确保故事具有情感共鸣和引人思考的元素。"""
}# 显示选择的模板
if content_type in templates:st.subheader(f"{content_type}模板")st.code(templates[content_type], language="text")# 添加自定义选项st.subheader("自定义模板参数")if content_type == "博客文章":topic = st.text_input("主题", "人工智能在日常生活中的应用")audience = st.text_input("目标受众", "25-40岁的科技爱好者")style = st.selectbox("文章风格", ["专业", "随意", "幽默", "教育性", "鼓舞人心"])word_count = st.slider("文章字数", 800, 3000, 1500)if st.button("生成定制模板"):custom_template = templates[content_type].replace("[主题]", topic)\.replace("[受众]", audience)\.replace("[风格]", style)\.replace("[字数]", str(word_count))st.code(custom_template, language="text")st.success("模板已生成!复制此模板并粘贴到您喜欢的AI聊天工具中。")elif content_type == "社交媒体帖子":topic = st.text_input("主题", "新产品发布")platform = st.selectbox("平台", ["微信", "微博", "抖音", "小红书", "LinkedIn"])goal = st.selectbox("目标", ["提高参与度", "推广产品", "提升品牌认知", "引导流量", "收集反馈"])word_count = st.slider("每个帖子最大字数", 50, 300, 140)if st.button("生成定制模板"):custom_template = templates[content_type].replace("[主题]", topic)\.replace("[平台]", platform)\.replace("[目标]", goal)\.replace("[字数]", str(word_count))st.code(custom_template, language="text")st.success("模板已生成!复制此模板并粘贴到您喜欢的AI聊天工具中。")

最佳实践和应用技巧

  1. 根据任务复杂度选择模板

    • 简单任务使用基础模板,减少不必要的复杂性
    • 复杂任务使用结构化模板,确保输出全面且有序
    • 专业分析使用JSON或表格模板,便于数据处理和可视化
  2. 模板迭代优化流程

import streamlit as st
import pandas as pdst.title("Prompt模板迭代优化工具")# 创建侧边栏用于模板管理
with st.sidebar:st.header("模板管理")template_action = st.radio("选择操作", ["使用现有模板", "创建新模板", "编辑模板"])# 示例模板库
if 'templates' not in st.session_state:st.session_state.templates = {"基础数据分析": {"content": """你是一位数据分析师。请分析以下数据并提供见解。数据:{data_description}请提供:1. 关键统计指标2. 主要发现(3-5点)3. 建议(2-3点)""","success_rate": 65,"avg_quality": 3.5},"结构化报告": {"content": """角色:你是数据分析专家。任务:深入分析{data_description},找出关键洞察并提供业务建议。输出格式:1. 数据概要(包含关键统计指标)2. 关键发现(至少3点,每点使用数据支持)3. 业务影响分析4. 行动建议(针对不同利益相关者,至少3点)请使用表格和要点列表来组织你的回答,使其清晰易读。""","success_rate": 85,"avg_quality": 4.2},"JSON输出": {"content": """你是API数据分析助手。请分析{data_description},并以JSON格式返回分析结果。输出要求:你的回答必须是一个有效的JSON对象,具有以下结构:{"summary": {"key_metrics": {},"time_period": ""},"insights": [{"title": "", "description": "", "supporting_data": ""},...(至少3项)],"recommendations": [{"target": "", "action": "", "expected_outcome": ""},...(至少3项)]}确保JSON格式正确无误,可以直接被程序解析。""","success_rate": 90,"avg_quality": 4.7}}if template_action == "使用现有模板":# 显示现有模板及其性能指标st.subheader("可用模板及性能数据")template_data = []for name, details in st.session_state.templates.items():template_data.append({"模板名称": name,"成功率": f"{details['success_rate']}%","平均质量评分": f"{details['avg_quality']}/5.0"})template_df = pd.DataFrame(template_data)st.table(template_df)# 模板选择和自定义selected_template = st.selectbox("选择模板", list(st.session_state.templates.keys()))st.subheader("模板内容")st.code(st.session_state.templates[selected_template]["content"], language="text")# 自定义参数st.subheader("自定义参数")data_description = st.text_area("数据描述", "过去12个月的销售数据,包含产品类别、区域和客户细分")if st.button("生成最终模板"):final_template = st.session_state.templates[selected_template]["content"].format(data_description=data_description)st.code(final_template, language="text")# 显示使用建议st.subheader("使用建议")st.markdown("""1. **复制模板**: 将生成的模板复制到AI聊天工具中2. **提供额外上下文**: 如果有特定的分析需求或背景信息,在模板后添加3. **迭代改进**: 如果结果不理想,尝试添加更多具体的指导或修改格式要求4. **反馈结果**: 使用后请评价此模板的效果,帮助我们改进""")# 在实际应用中,这里可以添加将结果发送到AI模型的代码elif template_action == "创建新模板":st.subheader("创建新模板")new_template_name = st.text_input("模板名称")new_template_content = st.text_area("模板内容", height=300)if st.button("保存模板") and new_template_name and new_template_content:if new_template_name in st.session_state.templates:st.warning(f"模板 '{new_template_name}' 已存在。请使用不同的名称或选择编辑现有模板。")else:st.session_state.templates[new_template_name] = {"content": new_template_content,"success_rate": 0,"avg_quality": 0}st.success(f"模板 '{new_template_name}' 已创建!")elif template_action == "编辑模板":st.subheader("编辑现有模板")template_to_edit = st.selectbox("选择要编辑的模板", list(st.session_state.templates.keys()))edit_content = st.text_area("编辑模板内容", value=st.session_state.templates[template_to_edit]["content"],height=300)if st.button("更新模板") and edit_content:st.session_state.templates[template_to_edit]["content"] = edit_contentst.success(f"模板 '{template_to_edit}' 已更新!")# 添加模板效果反馈机制
st.header("模板效果反馈")
with st.expander("提交模板使用反馈"):feedback_template = st.selectbox("选择使用的模板", list(st.session_state.templates.keys()))success = st.radio("是否成功获得期望结果", ["是", "否"])quality = st.slider("输出质量评分", 1, 5, 3)improvement = st.text_area("改进建议")if st.button("提交反馈"):# 在实际应用中,这里可以添加将反馈保存到数据库的代码success_rate = 100 if success == "是" else 0current_sr = st.session_state.templates[feedback_template]["success_rate"]current_q = st.session_state.templates[feedback_template]["avg_quality"]# 简单模拟更新模板评分(实际应用中应该基于更多数据点)st.session_state.templates[feedback_template]["success_rate"] = (current_sr + success_rate) / 2st.session_state.templates[feedback_template]["avg_quality"] = (current_q + quality) / 2st.success("感谢您的反馈!这将帮助我们改进模板质量。")
  1. 常见问题解决方案
问题解决方案模板调整建议
输出太长冗余设定明确的长度限制添加"请控制总字数在X字以内"或"每点描述不超过Y字"
输出结构混乱使用编号列表和分层标题添加"请使用以下精确格式"并提供示例
缺乏具体数据支持要求引用数据或提供证据添加"每个结论必须有具体数据支持"
内容质量不一致设定质量标准和评估原则添加"分析必须符合以下标准:准确性、相关性、深度、可操作性"
太过技术化难以理解指定目标受众和预期专业水平添加"解释应适合[目标受众]理解,避免过度专业术语"

模板动态生成与适配工具

以下是一个动态生成模板的Streamlit工具:

import streamlit as st
import pandas as pd
import jsonst.title("AI Prompt模板智能生成器")# 初始化session state
if 'template_generated' not in st.session_state:st.session_state.template_generated = False
if 'final_template' not in st.session_state:st.session_state.final_template = ""# 第一步:确定任务类型和输出要求
st.header("第一步:定义任务")task_category = st.selectbox("选择任务类别",["数据分析", "内容创作", "代码生成", "决策支持", "教育培训", "其他"]
)task_specifics = {"数据分析": ["趋势分析", "异常检测", "分群分析", "预测建模", "相关性分析", "情感分析"],"内容创作": ["博客文章", "营销文案", "产品描述", "社交媒体内容", "脚本创作", "技术文档"],"代码生成": ["函数编写", "算法实现", "调试修复", "代码优化", "API调用", "单元测试"],"决策支持": ["风险评估", "选项比较", "投资分析", "战略规划", "资源分配", "场景模拟"],"教育培训": ["概念解释", "教学计划", "练习题生成", "评估标准", "学习路径", "知识总结"],"其他": ["自定义任务"]
}specific_task = st.selectbox("选择具体任务",task_specifics[task_category]
)if specific_task == "自定义任务":specific_task = st.text_input("请描述您的具体任务")task_description = st.text_area("任务详细描述","请详细描述您需要AI完成的任务,包含背景、目标和任何特殊要求。"
)# 第二步:定义输出格式和结构
st.header("第二步:输出要求")output_format = st.multiselect("选择需要的输出格式元素",["文本段落", "要点列表", "表格", "JSON结构", "Markdown格式", "代码块", "对话式回复"],["文本段落", "要点列表"]
)structure_elements = []
if "文本段落" in output_format:structure_elements.append(st.text_input("文本段落要求", "简洁明了的概述"))if "要点列表" in output_format:points_count = st.number_input("要点数量", 1, 10, 3)structure_elements.append(f"包含{points_count}个关键要点")if "表格" in output_format:table_desc = st.text_input("表格内容描述", "比较数据或选项")structure_elements.append(f"使用表格展示{table_desc}")if "JSON结构" in output_format:with st.expander("定义JSON结构"):json_template = st.text_area("JSON模板结构","""{"summary": "摘要内容","key_points": ["要点1", "要点2", "要点3"],"details": {"section1": "内容1","section2": "内容2"}
}""")structure_elements.append("使用指定的JSON结构输出")content_tone = st.select_slider("内容语调",options=["非常正式", "专业", "中性", "友好", "对话式", "幽默"]
)content_depth = st.select_slider("内容深度",options=["入门级", "基础", "中级", "高级", "专家级"]
)max_length = st.slider("最大内容长度", 100, 2000, 500)# 第三步:角色定义和指导原则
st.header("第三步:角色与原则")ai_role = st.text_input("AI应扮演的角色","专业的分析师"
)guiding_principles = st.text_area("指导原则","保持客观、基于事实,提供有见地的分析,避免模糊不清的结论。"
)examples_toggle = st.checkbox("包含示例")
example_content = ""if examples_toggle:example_content = st.text_area("提供示例(输入-输出对)","""输入: [示例输入]
输出: [示例输出]""")# 生成模板
if st.button("生成Prompt模板"):# 构建模板各部分role_part = f"你是一位{ai_role}。"task_part = f"任务:{task_description}"format_items = []for i, element in enumerate(structure_elements, 1):format_items.append(f"{i}. {element}")format_part = "输出格式要求:\n" + "\n".join(format_items)if max_length > 0:format_part += f"\n总内容长度不超过{max_length}字。"tone_part = f"使用{content_tone}的语调,内容深度为{content_depth}级别。"principles_part = f"指导原则:{guiding_principles}"examples_part = ""if examples_toggle and example_content:examples_part = f"参考示例:\n{example_content}"# 组合完整模板st.session_state.final_template = f"""{role_part}{task_part}{format_part}{tone_part}{principles_part}
"""if examples_part:st.session_state.final_template += f"\n{examples_part}"st.session_state.template_generated = True# 显示生成的模板
if st.session_state.template_generated:st.header("生成的Prompt模板")st.code(st.session_state.final_template, language="text")# 添加复制按钮st.success("模板生成成功!您可以复制以上模板用于AI交互。")# 添加保存功能if st.button("保存此模板"):template_name = st.text_input("模板名称", f"{task_category}-{specific_task}")# 在实际应用中,这里可以添加将模板保存到数据库或文件的代码st.success(f"模板 '{template_name}' 已保存!")# 添加直接使用功能(实际应用中可连接到AI API)st.subheader("测试此模板")test_input = st.text_area("输入测试数据或问题")if st.button("发送到AI") and test_input:# 在实际应用中,这里可以添加调用AI API的代码st.info("在实际应用中,这里会将您的模板和输入发送到AI并显示结果。")

总结与实践建议

本文介绍了如何通过 Prompt 模板和格式控制技术打造稳定可控的 AI 输出。我们从模板的作用和基本结构出发,详细探讨了三种常见的结构化输出方法:表格、JSON 和 Markdown。通过实战演示,我们展示了如何将简单指令逐步升级为结构化的高级模板,大幅提升 AI 输出的一致性和可用性。

最后,我们提供了适用于各种场景的模板库、最佳实践和一套动态生成工具,帮助读者快速应用这些技术到实际工作中。综合这些实践,可以显著改进与 AI 的交互体验,提高工作效率。

实践建议

  1. 循序渐进:从简单模板开始,逐步添加结构和复杂度
  2. 持续迭代:根据输出结果不断调整和优化模板
  3. 场景匹配:根据具体场景选择合适的输出格式和结构
  4. 收集反馈:建立模板效果评估机制,追踪成功率和质量
  5. 保持更新:随着 AI 能力的提升,不断更新模板,保持最佳实践

相关文章:

  • Python爬虫实战:获取xie程网敦煌酒店数据并分析,为51出行做参考
  • 火语言RPA--Ftp创建目录
  • 刷题之路:C++ 解题分享与技术总结
  • Mysql--基础知识点--79.1--双主架构如何避免回环复制
  • 设备预测性维护系统部署成本:技术架构与成本优化策略解析
  • JVM虚拟机-类加载器、双亲委派模型、类装载的执行过程
  • 【MySQL高级】锁,日志
  • 子网划分的学习
  • YOLOv8 优化创新:Damo-YOLO 配合 DyHead 检测头的性能突破
  • 【无人机】问题分析。查看电机转速时,四个电机转速不一致,QGC中检测到电机转速不均衡
  • 理解字符设备、设备模型与子系统:以 i.MX8MP 平台为例
  • Redis的数据持久化是怎么做的?
  • 飞算 JavaAI 与 Spring Boot:如何实现微服务开发效率翻倍?
  • dolphinscheduler实现(oracle-hdfs-doris)数据ETL
  • 多态以及多态底层的实现原理
  • 【Dart语言】八、并发
  • 《C++ 模板:泛型编程的核心》
  • 【无人机】使用扩展卡尔曼滤波 (EKF) 算法来处理传感器测量,各传感器的参数设置,高度数据融合、不同传感器融合模式
  • 第十五届蓝桥杯 2024 C/C++组 下一次相遇
  • 逻辑回归:损失和正则化技术的深入研究
  • 咖啡与乳腺健康之间,究竟有着怎样的复杂关系?
  • 专访|白俄罗斯共产党中央第一书记瑟兰科夫:只有大家联合起来,才能有效应对当前危机所带来的冲击
  • 一周文化讲座|“不一样的社会观察”
  • 2025年两院院士增选工作启动,名额均不超过100名
  • 中国驻英国大使郑泽光:中国需要世界,世界也需要中国
  • 朝中社发表评论文章,谴责美军部署B1-B轰炸机至日本