广告位 · 页头(后台-模块管理-新建模块后替换此区域)

如何设计大模型Prompt实现竞品动态监控与分析?

竞品动态监控不是简单地把竞品新闻丢给大模型让它总结,而是需要设计一套能稳定产出结构化结果的提示词体系。动态信息通常来自官网更新、版本发布说明、行业媒体报道、招聘信息等多个渠道,文本格式差异很大。直接用一句“帮我分析竞品”得到的结果往往过于笼统,无法沉淀为可追踪的数据。合理的做法是先定义监控字段,例如公司名称、事件类型、功能变化、定价变化、影响程度、发生时间、来源链接,再通过Prompt约束模型只输出这些字段。这样做既能降低人工整理成本,也能让后续分析变成可比较、可查询的数据表。

如何设计大模型Prompt实现竞品动态监控与分析?

另一个容易被忽略的点是事件分类。竞品动态至少可以拆成功能发布、版本升级、定价调整、合作生态、高管变动、融资并购和舆情风险七类。提示词必须明确每类的判定边界,否则模型会把营销软文当成功能升级,或者把普通招聘误判为战略扩张。把分类定义写进Prompt,并且要求给出置信度,可以显著降低误报率。下文会给出一个可复用的模板,并说明如何用代码批量调用。

一、先定义事件模式,再设计抽取提示词

竞品监控的质量很大程度取决于提示词里的事件定义。与其让模型自由发挥,不如把可能的事件类型和判断标准全部列清楚。比如版本升级类事件通常包含版本号、发布日期、更新日志,定价调整类事件会出现价格、订阅计划、免费额度等关键词。提示词中可以使用条件判断式的描述:如果文本同时出现版本号和功能更新描述,则归为版本升级;如果只出现价格或订阅变化,则归为定价调整。这样的定义能减少模型犹豫,也能让不同批次的分析结果保持一致。

抽取字段也要尽量结构化。推荐使用JSON作为输出格式,字段包括company、event_type、title、summary、impact_level、source_date、confidence。在提示词中给出每个字段的类型和可选值,例如impact_level只能是high、medium、low,confidence只能是0到1之间的一位小数。这样后续程序可以直接解析,不需要再做文本清洗。下面是一个基础模板。

你是一名竞品情报分析助手。请根据给定的文本,判断其中是否包含竞品动态事件。如果包含,输出JSON对象,字段如下:
{
  "company": "公司名称,字符串",
  "event_type": "事件类型,只能是功能发布、版本升级、定价调整、合作生态、高管变动、融资并购、舆情风险之一",
  "title": "事件标题,不超过30个字",
  "summary": "事件摘要,不超过80个字",
  "impact_level": "影响程度,只能是high、medium、low",
  "source_date": "事件发生日期,格式为YYYY-MM-DD,未知则为空字符串",
  "confidence": 0.0到1.0之间的小数,表示判断置信度
}
如果文本中不包含任何竞品动态事件,输出空JSON对象{}。
给定文本:
{source_text}

这个模板强调输出格式和可选值,可以减少模型随意发挥。需要特别注意的是,Prompt中的事件类型和字段名称要保持和下游数据库一致。如果后续表格里用的是product_focus这种英文键名,就不要在提示词里用中文键名,否则增加一层映射成本。建议从一开始就统一用英文键名,中文值可以保留。

二、用Python批量调用大模型处理多来源信息

单个文本分析看不出价值,只有批量处理才能形成动态监控。可以用Python脚本读取RSS源、数据库或Excel中的待分析文本,逐条调用大模型接口,把返回的JSON存入表格。这里给出一个简化示例,演示如何封装提示词并解析结果。实际生产环境需要加入重试、限流和错误日志。

import json
import openai
client = openai.OpenAI(api_key="your-api-key")
SYSTEM_PROMPT = """你是一名竞品情报分析助手。请根据给定的文本,判断其中是否包含竞品动态事件。如果包含,输出JSON对象,字段如下:
{
  "company": "公司名称,字符串",
  "event_type": "事件类型,只能是功能发布、版本升级、定价调整、合作生态、高管变动、融资并购、舆情风险之一",
  "title": "事件标题,不超过30个字",
  "summary": "事件摘要,不超过80个字",
  "impact_level": "影响程度,只能是high、medium、low",
  "source_date": "事件发生日期,格式为YYYY-MM-DD,未知则为空字符串",
  "confidence": 0.0到1.0之间的小数,表示判断置信度
}
如果文本中不包含任何竞品动态事件,输出空JSON对象{}。
"""
def analyze_text(text):
    user_prompt = "给定文本:\n" + text
    response = client.chat.completions.create(
        model="gpt-4o-mini",
        messages=[
            {"role": "system", "content": SYSTEM_PROMPT},
            {"role": "user", "content": user_prompt}
        ],
        temperature=0.1,
        response_format={"type": "json_object"}
    )
    content = response.choices[0].message.content
    try:
        result = json.loads(content)
    except json.JSONDecodeError:
        result = {}
    return result
sample_text = "A公司今日发布3.2版本,新增智能推荐模块,同时下调专业版订阅价格。"
print(analyze_text(sample_text))

代码中把temperature设成0.1是为了让输出更稳定。抽取型任务提示词不需要创造性,低温度能降低随机性。response_format指定json_object只适用于支持该参数的模型,如果模型不支持,可以去掉,并在提示词中强调只输出JSON。解析时一定要捕获JSONDecodeError,因为即使约束了JSON,模型偶尔仍会返回多余解释或格式错误。实际处理RSS时,可以先提取标题和摘要拼接成待分析文本,也可以把整篇正文截断到模型上下文限制以内。

批量处理可以使用线程池或异步请求提高吞吐,但要注意接口限流。建议每条请求之间加一个很小的延迟,并在并发数上做控制。分析结果需要记录原始文本哈希,避免同一条信息重复入库。对于confidence低于0.6的结果可以丢弃或标记为待人工复核,这样能减少噪声。

三、从单次分析到每日监控报告

动态监控讲究持续性。每天定时抓取竞品官网、社交媒体、行业资讯和招聘平台的信息,经过模型分析后汇总成日报。这个流程可以用任务调度工具来实现,比如Linux下的cron或者Airflow。调度脚本每天执行一次,读取新增文本,调用分析函数,把结构化结果写入数据库。之后再用一个聚合提示词,把当天所有high影响事件整理成报告摘要。

聚合提示词的设计和抽取提示词不同。抽取阶段要求逐一判断,聚合阶段更关注归纳和排序。可以给模型输入当天的结构化JSON列表,要求输出三段内容:重要事件、需要关注的信号、建议行动。提示词里要指定输出长度,比如每段不超过120字,并排除低置信度条目。这样生成的日报可以直接发送给产品、市场和研发团队。

你是一名竞品策略分析师。以下是今日竞品动态的结构化事件列表。
请从中筛选出impact_level为high的事件,按时间顺序排列,并生成报告。
报告包含三部分:
1. 重要事件:每条不超过50字,说明公司、事件和影响。
2. 需要关注的信号:归纳2到3条趋势性信号。
3. 建议行动:给出2到3条可执行建议。
事件列表:
{event_list_json}

聚合时需要注意上下文窗口。如果一天事件很多,可能需要分批次聚合,或者只把high和medium事件放入报告。上下文窗口不是越大越好,过多无关事件会分散模型注意力。另一个做法是把事件先按公司分组,每组单独总结,最后再合并。经验上,单次聚合的事件数量控制在20条以内效果更好。

四、控制幻觉与持续优化提示词

大模型在做分析时可能出现幻觉,例如给不存在的版本号编造更新内容,或者把竞品A的事件归到竞品B。要降低这种风险,提示词里必须强调只依据给定文本,不要补充外部知识。对于关键字段,可以要求模型在文本中定位原文片段作为依据。比如version字段后面增加source_quote字段,让模型把支持判断的那句话摘出来。如果找不到原文,就输出null。这样能明显提高可信度。

另一个实用方法是加一个复核环节。对于抽取结果中confidence在0.5到0.7之间的记录,用第二个提示词进行二次校验。校验提示词只问一个问题:该事件是否确实出现在文本中,并给出是或否。两轮判断不一致的,交由人工处理。这样不需要很大成本就能过滤大部分幻觉和误判。

提示词优化需要数据反馈。可以把人工复核结果记录下来,每周统计哪些事件类型最容易判错,然后修改提示词中的定义。例如如果发现模型经常把合作伙伴的新闻当成融资事件,就在融资并购定义里加入明确排除项,如不包含投资方与被投资方关系的文本不归为融资并购。用规则加示例的方式逐步收敛,比单纯换模型更有效。

最后提醒,竞品动态监控系统不要追求全自动。人工复核和提示词迭代是持续工作。先把核心数据源跑通,形成稳定的结构化输出,再逐步扩展渠道和事件类型。这样可以在不显著增加人力的情况下,获得比人工更及时、更全面的竞品动态视图。

广告位 · 文章底部(后台-模块管理替换此区域)