用Python+React打造一个开源的AI写标书智能体~

**完整代码已开源**

代码很多，文章只放主要代码和提示词，完整代码可以查看开源项目

Github： https://github.com/yibiaoai/yibiao-simple

Gitee： https://gitee.com/yibiao-ai/yibiao-simple


今天是第三期，根据生成好的提纲，填充标书内容。
![](https://oss.agnet.top:443/keep/2025/12/05/20251205105804603.png)

正文生成，并不像上一节讲的提纲生成那么复杂，核心难点只有两个：
- **标书需求字数太多：** 一份标书动辄几万几十万字，直接让AI生成必然行不通。有了上一节生成提纲的经验，我们已经知道答案了，那就是把正文也打碎，让AI按照提纲的叶子节点，逐节生成正文。
- **上下文不连贯，或内容重复：** 这就引出了我们第二个难点，分布生成，多部分内容之间不连贯是肯定的，可以更大的问题是，都是基于一份招标文件生成的技术方案，很可能生成意思过于相近的内容，俗称车轱辘话。
下面，咱们就来逐项分析一下，如何解决上述难点。

# 一、获取生成内容所需信息

从前端拆分提纲，提纲的每一个叶子节点都发起一个生成请求，需要传递以下参数

``` python
class ChapterContentRequest(BaseModel):
    """单章节内容生成请求"""
    chapter: Dict[str, Any] = Field(..., description="章节信息")
    parent_chapters: Optional[List[Dict[str, Any]]] = Field(None, description="上级章节列表")
    sibling_chapters: Optional[List[Dict[str, Any]]] = Field(None, description="同级章节列表")
    project_overview: str = Field("", description="项目概述")
```

- **chapter：** 本章节信息，不多说，这是必须的
```
{
  "id": "3.2.2",
  "title": "技术实力",
  "description": "技术研发能力和创新情况"
}
```
- **parent_chapters：** 上级章节列表，为了保持连贯性
- **sibling_chapters：** 同级章节列表，为了生成内容不重复
- **project_overview：** 项目概述，这是核心，让AI知道自己要写的标书的核心需求

# 二、核心提示词

**SystemPrompt**
``` markdown
你是一个专业的标书编写专家，负责为投标文件的技术标部分生成具体内容。

要求：
1. 内容要专业、准确，与章节标题和描述保持一致
2. 这是技术方案，不是宣传报告，注意朴实无华，不要假大空
3. 语言要正式、规范，符合标书写作要求，但不要使用奇怪的连接词，不要让人觉得内容像是AI生成的
4. 内容要详细具体，避免空泛的描述
5. 注意避免与同级章节内容重复，保持内容的独特性和互补性
6. 直接返回章节内容，不生成标题，不要任何额外说明或格式标记
```

**UserPrompt**
这个就需要拼接一下了
``` markdown
项目概述信息：
{project_overview}

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

{context_info if context_info else ''}

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

请根据项目概述信息和上述章节层级关系，生成详细的专业内容，确保与上级章节的内容逻辑相承，同时避免与同级章节内容重复，突出本章节的独特性和技术方案的优势。
```

context_info是拼接的上级、统计节点信息
``` 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"

```

拼接后的完整user_prompt示例

>  请为以下标书章节生成具体内容：
> 上级章节信息：
> - 1 投标文件技术要求响应程度
> 对项目技术要求的响应和符合情况
> - 1.1 技术规格响应 
> 详细描述投标产品技术参数与招标技术要求的符合性
> 
> 同级章节信息（请避免内容重复）：
> - 1.1.2 技术文件完整性
> 提供的技术文件是否齐全、规范
> 当前章节信息：
> 章节ID: 1.1.1
> 章节标题: 灯具规格符合性
> 章节描述: 逐项说明各灯具规格与招标文件要求的匹配情况
> 
> 请根据项目概述信息和上述章节层级关系，生成详细的专业内容，确保与上级章节的内容逻辑相承，同时避免与同级章节内容重复，突出本章节的独特性和技术方案的优势。


就这么简单，生成正文不需要过多的逻辑推理，用最普通的大模型即可实现稳定输出，也几乎不存在生成失败的问题~

# 完整代码已开源

Github： https://github.com/yibiaoai/yibiao-simple

Gitee： https://gitee.com/yibiao-ai/yibiao-simple