记有说 發表於 2025-12-5 11:02:00

标书智能体(三)——生成标书正文代码+提示词

<p>用Python+React打造一个开源的AI写标书智能体~</p>
<p><strong>完整代码已开源</strong></p>
<p>代码很多,文章只放主要代码和提示词,完整代码可以查看开源项目</p>
<p>Github: https://github.com/yibiaoai/yibiao-simple</p>
<p>Gitee: https://gitee.com/yibiao-ai/yibiao-simple</p>
<p>今天是第三期,根据生成好的提纲,填充标书内容。<br>
<img src="https://oss.agnet.top:443/keep/2025/12/05/20251205105804603.png"></p>
<p>正文生成,并不像上一节讲的提纲生成那么复杂,核心难点只有两个:</p>
<ul>
<li><strong>标书需求字数太多:</strong> 一份标书动辄几万几十万字,直接让AI生成必然行不通。有了上一节生成提纲的经验,我们已经知道答案了,那就是把正文也打碎,让AI按照提纲的叶子节点,逐节生成正文。</li>
<li><strong>上下文不连贯,或内容重复:</strong> 这就引出了我们第二个难点,分布生成,多部分内容之间不连贯是肯定的,可以更大的问题是,都是基于一份招标文件生成的技术方案,很可能生成意思过于相近的内容,俗称车轱辘话。<br>
下面,咱们就来逐项分析一下,如何解决上述难点。</li>
</ul>
<h1 id="一获取生成内容所需信息">一、获取生成内容所需信息</h1>
<p>从前端拆分提纲,提纲的每一个叶子节点都发起一个生成请求,需要传递以下参数</p>
<pre><code class="language-python">class ChapterContentRequest(BaseModel):
    """单章节内容生成请求"""
    chapter: Dict = Field(..., description="章节信息")
    parent_chapters: Optional]] = Field(None, description="上级章节列表")
    sibling_chapters: Optional]] = Field(None, description="同级章节列表")
    project_overview: str = Field("", description="项目概述")
</code></pre>
<ul>
<li><strong>chapter:</strong> 本章节信息,不多说,这是必须的</li>
</ul>
<pre><code>{
"id": "3.2.2",
"title": "技术实力",
"description": "技术研发能力和创新情况"
}
</code></pre>
<ul>
<li><strong>parent_chapters:</strong> 上级章节列表,为了保持连贯性</li>
<li><strong>sibling_chapters:</strong> 同级章节列表,为了生成内容不重复</li>
<li><strong>project_overview:</strong> 项目概述,这是核心,让AI知道自己要写的标书的核心需求</li>
</ul>
<h1 id="二核心提示词">二、核心提示词</h1>
<p><strong>SystemPrompt</strong></p>
<pre><code class="language-markdown">你是一个专业的标书编写专家,负责为投标文件的技术标部分生成具体内容。

要求:
1. 内容要专业、准确,与章节标题和描述保持一致
2. 这是技术方案,不是宣传报告,注意朴实无华,不要假大空
3. 语言要正式、规范,符合标书写作要求,但不要使用奇怪的连接词,不要让人觉得内容像是AI生成的
4. 内容要详细具体,避免空泛的描述
5. 注意避免与同级章节内容重复,保持内容的独特性和互补性
6. 直接返回章节内容,不生成标题,不要任何额外说明或格式标记
</code></pre>
<p><strong>UserPrompt</strong><br>
这个就需要拼接一下了</p>
<pre><code class="language-markdown">项目概述信息:
{project_overview}

请为以下标书章节生成具体内容:

{context_info if context_info else ''}

当前章节信息:
章节ID: {chapter_id}
章节标题: {chapter_title}
章节描述: {chapter_description}

请根据项目概述信息和上述章节层级关系,生成详细的专业内容,确保与上级章节的内容逻辑相承,同时避免与同级章节内容重复,突出本章节的独特性和技术方案的优势。
</code></pre>
<p>context_info是拼接的上级、统计节点信息</p>
<pre><code class="language-python"># 构建上下文信息
context_info = ""

# 上级章节信息
if parent_chapters:
    context_info += "上级章节信息:\n"
    for parent in parent_chapters:
      context_info += f"- {parent['id']} {parent['title']}\n{parent['description']}\n"

# 同级章节信息(排除当前章节)
if sibling_chapters:
    context_info += "同级章节信息(请避免内容重复):\n"
    for sibling in sibling_chapters:
      if sibling.get('id') != chapter_id:# 排除当前章节
            context_info += f"- {sibling.get('id', 'unknown')} {sibling.get('title', '未命名')}\n{sibling.get('description', '')}\n"

</code></pre>
<p>拼接后的完整user_prompt示例</p>
<blockquote>
<p>请为以下标书章节生成具体内容:<br>
上级章节信息:</p>
<ul>
<li>1 投标文件技术要求响应程度<br>
对项目技术要求的响应和符合情况</li>
<li>1.1 技术规格响应<br>
详细描述投标产品技术参数与招标技术要求的符合性</li>
</ul>
<p>同级章节信息(请避免内容重复):</p>
<ul>
<li>1.1.2 技术文件完整性<br>
提供的技术文件是否齐全、规范<br>
当前章节信息:<br>
章节ID: 1.1.1<br>
章节标题: 灯具规格符合性<br>
章节描述: 逐项说明各灯具规格与招标文件要求的匹配情况</li>
</ul>
<p>请根据项目概述信息和上述章节层级关系,生成详细的专业内容,确保与上级章节的内容逻辑相承,同时避免与同级章节内容重复,突出本章节的独特性和技术方案的优势。</p>
</blockquote>
<p>就这么简单,生成正文不需要过多的逻辑推理,用最普通的大模型即可实现稳定输出,也几乎不存在生成失败的问题~</p>
<h1 id="完整代码已开源">完整代码已开源</h1>
<p>Github: https://github.com/yibiaoai/yibiao-simple</p>
<p>Gitee: https://gitee.com/yibiao-ai/yibiao-simple</p><br><br>
来源:https://www.cnblogs.com/yibiaoai/p/19311155
頁: [1]
查看完整版本: 标书智能体(三)——生成标书正文代码+提示词