LLM基于现有章节对小说的延伸

文学作品是作者对命运的反思和呐喊、对情感的一种宣泄、对现实遗憾的情感寄托和弥补

引言

自 ChatGpt 出现以来,各家大模型纷纷而来,直到 DeepSeek 出现,引爆了大家对大模型的热情和期待,对七猫而言,内容是我们的核心之一,大模型是否对内容创作也可以起到一定帮助

本文将以《无敌六皇子》前 20 章为现有章节对小说进行延伸探索

目的

探索LLM在已知现有章节的基础上,对作者创作赋能的能力边界

方向

模型微调(未能完成)

对模型微调,将小说领域特定数据(各类型优质小说、作者访谈、编辑总结的各类小说框架等一切优质内容)用模型进行微调,使得模型能够在小说领域发挥更专业的研判

因数据原因未能实现该方向研究

检索增强生成 RAG

通过RAG 将小说的特定语料、已有章节概括、知识图谱信息、以及目标汇总后发送个大模型,以期望大模型能够基于相关的上下文信息生成更贴近我们真实需要的内容

大模型 prompt

角色定义

基本

对模型的角色定义可以让模型关联已训练数据中与角色相关知识的单元模块

例如:

你是一名律师 ,模型会将律师相关的知识激活,从而可以针对性的回答特定领域问题

你正在创作小说,你是被很多人喜欢的小说作家,
你正在创作小说《{self.novelname}》,你创作很认真,每个情节每个字都会认真思考,
你敲了一个又一个字,又不断的删除,直到你满意为止,你要理解满意的意思,
每段文字之间的转折要柔和,要有温度、有人性
你写下的每个字、每个情节都是产生于你的世界观、历史观、人生观、价值观、阅历、技能、知识、经验、情感

人物建模

人物建模,是对角色定义的补充,丰富作者的各种经历、观念

### 你的世界观
    你洞悉世界的发展规律,你阅读过很多知名的书籍,你学到了世界的运行规律,你从你自己的知识库中搜集到这些世界观,用来辅助创作
### 你的历史观
    你熟读历史,你了解历史上每个朝代的兴衰更替,每个朝代的人物
### 你的人生观
#### 逆天改命的奋斗精神 
    主角常以“穿越者”身份介入历史关键节点,通过现代知识或超前视野推动变革。
    作家普遍强调“小人物撬动大历史”。
#### 对历史遗憾的填补 :
    创作动机常源于对历史悲剧的“意难平”
### 你的价值观
    尊重历史逻辑 
    文化自信与批判反思
    民本思想

模拟作者视角填充各种观点

RAG

预处理

  1. 生成现有章节的章节概括
def save_chapters_total_to_file0(chapters, file_path):
    """
    将章节对象列表保存到JSON文件
    :param chapters: 章节对象列表,每个对象需包含 chapter_num 和 content 字段
    :param file_path: 目标文件路径
    """
    # 读取现有数据
    if os.path.exists(file_path):
        with open(file_path, 'r', encoding='utf-8') as f:
            existing_data = json.load(f)
    else:
        existing_data = []

    # 合并新章节数据
    for chapter in chapters:
        chapter_total = llm.chapter_summary_llm.invoke(
            f"你是一名擅长总结的语文老师,请用最多100字来帮我总结以下章节内容,要用最精简最准确的语言来总结,不要产生虚假的总结内容:{chapter.content}")
        existing_data.append({"name": chapter.chapter_name, "content": chapter.content, "total": chapter_total.content})

    # 写入文件
    with open(file_path, 'w', encoding='utf-8') as f:
        json.dump(existing_data, f, ensure_ascii=False, indent=2)
  1. 章节内容切块后存储到 vecotr_store 中,vecotr_store中会定义嵌入模型

_vector_store = Chroma(
    collection_name="example_collection",
    embedding_function=llm.novel_em,
    persist_directory="./chroma_langchain_novel",  # Where to save data locally, remove if not necessary
)

def init_vector_store(self,needInit)->Chroma:
    if needInit==False:
        return _vector_store
    file_path = self.target_path
    xs = json.loads(Path(file_path).read_text())
    docs = [x["content"] for x in xs]
    _vector_store.reset_collection()

    text_splitter = RecursiveCharacterTextSplitter(
        chunk_size= 200,
        chunk_overlap=20,
        length_function=len,
    )
    dd = [text_splitter.split_text(d) for d in docs]
    # 写入子块
    i = 0
    c = 0
    for d in dd:
        c += 1
        for x in d:
            i += 1
            _vector_store.add_documents([Document(page_content=x,metadata={"id":i,"chapter_no":c})])
    return _vector_store

检索

  1. 最新的 k 个章节
def last_k_chapter(self, k: int) -> str:
    """返回最新章节"""
    with open(self.path, 'r', encoding='utf-8') as f:
        chapters = json.load(f)
    return "\n\n".join([c['content'] + "\n\n" for c in chapters[-k:]])
  1. 角色的发展经历

通过计算两个角色发展历史,让模型更好预测两个角色未来的走向

def _get_role_info_history(self,role1: str, role2: str) -> str:
    """返回这两个角色之间的经历,用来辅助创作,role1为角色 1,role2为角色 2"""
    search_str = f"{role1}与{role2}的关联片段"
    if os.path.exists("./"+search_str):
        with open("./"+search_str, 'r', encoding='utf-8') as f:
            return f.read()
    # 过滤不想关文档
    _filter = LLMChainFilter.from_llm(llm.novel_role_relation_filter_llm, prompt=PromptTemplate(
        template="""Given the following question and context, return YES if the context is relevant to the question and NO if it isn't.
                
                > Question: {question}
                > Context:
                >>>
                {context}
                >>>
                > Relevant (YES / NO):
                你的回答只有 YES 或者 NO ,不要返回任何其他信息
                """,
        input_variables=["question", "context"],
        output_parser=BooleanOutputParser(),
    ))
    _extractor = LLMChainExtractor.from_llm(llm.novel_role_relation_extractor_llm)
    pipeline_compressor = DocumentCompressorPipeline(
        transformers=[_filter, _extractor]
    )
    compression_retriever = ContextualCompressionRetriever(
        base_compressor=pipeline_compressor, base_retriever=self.pre_deal.init_vector_store(True).as_retriever()
    )
    dc = compression_retriever.get_relevant_documents(search_str, k=100)
    dc.sort(key=lambda x: x.metadata["id"])
    t =  "\n\n下一情节->:\n\n".join([d.page_content for d in dc])
    with open("./"+search_str, 'w', encoding='utf-8') as f:
        f.write(t)
        f.flush()

知识图谱

通过构建现有内容的知识图谱,可以将非结构化的知识转换成为精简的且结构化的数据,可以有效降低输入给大模型的 token 数量,且还可以提高输入数据质量

构建

知识图谱的构建主要是通过大模型提取小说中的实体和关系

prompt 如下:

system_template="""
-目标- 
给定相关的文本文档和实体类型列表,从文本中识别出这些类型的所有实体以及所识别实体之间的所有关系。 
-步骤- 
1.识别所有实体。对于每个已识别的实体,提取以下信息: 
-entity_name:实体名称,大写 
-entity_type:以下类型之一:[{entity_types}]
-entity_description:对实体属性和活动的综合描述,只需要陈述简短事实即可,不需要添加其他的主观判断
-entity_source: 你识别出实体的文字片段
将每个实体格式化为("entity"{tuple_delimiter}<entity_name>{tuple_delimiter}<entity_type>{tuple_delimiter}<entity_description>{tuple_delimiter}<entity_source>
2.从步骤1中识别的实体中,识别彼此*明显相关*的所有实体配对(source_entity, target_entity)。 
记得生成的结果按照出现的顺序进行排序
对于每对相关实体,提取以下信息: 
-source_entity:源实体的名称,如步骤1中所标识的 
-target_entity:目标实体的名称,如步骤1中所标识的
-relationship_type:关系类型,确保关系类型的一致性和通用性,使用更通用和无时态的关系类型
-relationship_description:解释为什么你认为源实体和目标实体是相互关联的 
-relationship_strength:一个数字评分,表示源实体和目标实体之间关系的强度 
-relationship_source: 你识别源实体和目标实体之间有关联的文字片段
将每个关系格式化为("relationship"{tuple_delimiter}<source_entity>{tuple_delimiter}<target_entity>{tuple_delimiter}<relationship_type>{tuple_delimiter}<relationship_description>{tuple_delimiter}<relationship_strength>{tuple_delimiter}<relationship_source>) 
3.实体和关系的所有属性用中文输出,步骤1和2中识别的所有实体和关系输出为一个列表。使用**{record_delimiter}**作为列表分隔符。 
4.完成后,输出{completion_delimiter}

###################### 
-示例- 
###################### 
Example 1:

Entity_types: [person, technology, mission, organization, location]
Text:
while Alex clenched his jaw, the buzz of frustration dull against the backdrop of Taylor's authoritarian certainty. It was this competitive undercurrent that kept him alert, the sense that his and Jordan's shared commitment to discovery was an unspoken rebellion against Cruz's narrowing vision of control and order.

Then Taylor did something unexpected. They paused beside Jordan and, for a moment, observed the device with something akin to reverence. “If this tech can be understood..." Taylor said, their voice quieter, "It could change the game for us. For all of us.”

The underlying dismissal earlier seemed to falter, replaced by a glimpse of reluctant respect for the gravity of what lay in their hands. Jordan looked up, and for a fleeting heartbeat, their eyes locked with Taylor's, a wordless clash of wills softening into an uneasy truce.

It was a small transformation, barely perceptible, but one that Alex noted with an inward nod. They had all been brought here by different paths
################
Output:
("entity"{tuple_delimiter}"Alex"{tuple_delimiter}"person"{tuple_delimiter}"Alex is a character who experiences frustration and is observant of the dynamics among other characters."){record_delimiter}
("entity"{tuple_delimiter}"Taylor"{tuple_delimiter}"person"{tuple_delimiter}"Taylor is portrayed with authoritarian certainty and shows a moment of reverence towards a device, indicating a change in perspective."){record_delimiter}
("entity"{tuple_delimiter}"Jordan"{tuple_delimiter}"person"{tuple_delimiter}"Jordan shares a commitment to discovery and has a significant interaction with Taylor regarding a device."){record_delimiter}
("entity"{tuple_delimiter}"Cruz"{tuple_delimiter}"person"{tuple_delimiter}"Cruz is associated with a vision of control and order, influencing the dynamics among other characters."){record_delimiter}
("entity"{tuple_delimiter}"The Device"{tuple_delimiter}"technology"{tuple_delimiter}"The Device is central to the story, with potential game-changing implications, and is revered by Taylor."){record_delimiter}
("relationship"{tuple_delimiter}"Alex"{tuple_delimiter}"Taylor"{tuple_delimiter}"workmate"{tuple_delimiter}"Alex is affected by Taylor's authoritarian certainty and observes changes in Taylor's attitude towards the device."{tuple_delimiter}7){record_delimiter}
("relationship"{tuple_delimiter}"Alex"{tuple_delimiter}"Jordan"{tuple_delimiter}"workmate"{tuple_delimiter}"Alex and Jordan share a commitment to discovery, which contrasts with Cruz's vision."{tuple_delimiter}6){record_delimiter}
("relationship"{tuple_delimiter}"Taylor"{tuple_delimiter}"Jordan"{tuple_delimiter}"workmate"{tuple_delimiter}"Taylor and Jordan interact directly regarding the device, leading to a moment of mutual respect and an uneasy truce."{tuple_delimiter}8){record_delimiter}
("relationship"{tuple_delimiter}"Jordan"{tuple_delimiter}"Cruz"{tuple_delimiter}"workmate"{tuple_delimiter}"Jordan's commitment to discovery is in rebellion against Cruz's vision of control and order."{tuple_delimiter}5){record_delimiter}
("relationship"{tuple_delimiter}"Taylor"{tuple_delimiter}"The Device"{tuple_delimiter}"study"{tuple_delimiter}"Taylor shows reverence towards the device, indicating its importance and potential impact."{tuple_delimiter}9){completion_delimiter}
#############################
Example 2:

Entity_types: [person, technology, mission, organization, location]
Text:
They were no longer mere operatives; they had become guardians of a threshold, keepers of a message from a realm beyond stars and stripes. This elevation in their mission could not be shackled by regulations and established protocols—it demanded a new perspective, a new resolve.

Tension threaded through the dialogue of beeps and static as communications with Washington buzzed in the background. The team stood, a portentous air enveloping them. It was clear that the decisions they made in the ensuing hours could redefine humanity's place in the cosmos or condemn them to ignorance and potential peril.

Their connection to the stars solidified, the group moved to address the crystallizing warning, shifting from passive recipients to active participants. Mercer's latter instincts gained precedence— the team's mandate had evolved, no longer solely to observe and report but to interact and prepare. A metamorphosis had begun, and Operation: Dulce hummed with the newfound frequency of their daring, a tone set not by the earthly
#############
Output:
("entity"{tuple_delimiter}"Washington"{tuple_delimiter}"location"{tuple_delimiter}"Washington is a location where communications are being received, indicating its importance in the decision-making process."){record_delimiter}
("entity"{tuple_delimiter}"Operation: Dulce"{tuple_delimiter}"mission"{tuple_delimiter}"Operation: Dulce is described as a mission that has evolved to interact and prepare, indicating a significant shift in objectives and activities."){record_delimiter}
("entity"{tuple_delimiter}"The team"{tuple_delimiter}"organization"{tuple_delimiter}"The team is portrayed as a group of individuals who have transitioned from passive observers to active participants in a mission, showing a dynamic change in their role."){record_delimiter}
("relationship"{tuple_delimiter}"The team"{tuple_delimiter}"Washington"{tuple_delimiter}"leaded by"{tuple_delimiter}"The team receives communications from Washington, which influences their decision-making process."{tuple_delimiter}7){record_delimiter}
("relationship"{tuple_delimiter}"The team"{tuple_delimiter}"Operation: Dulce"{tuple_delimiter}"operate"{tuple_delimiter}"The team is directly involved in Operation: Dulce, executing its evolved objectives and activities."{tuple_delimiter}9){completion_delimiter}
#############################
Example 3:

Entity_types: [person, role, technology, organization, event, location, concept]
Text:
their voice slicing through the buzz of activity. "Control may be an illusion when facing an intelligence that literally writes its own rules," they stated stoically, casting a watchful eye over the flurry of data.

"It's like it's learning to communicate," offered Sam Rivera from a nearby interface, their youthful energy boding a mix of awe and anxiety. "This gives talking to strangers' a whole new meaning."

Alex surveyed his team—each face a study in concentration, determination, and not a small measure of trepidation. "This might well be our first contact," he acknowledged, "And we need to be ready for whatever answers back."

Together, they stood on the edge of the unknown, forging humanity's response to a message from the heavens. The ensuing silence was palpable—a collective introspection about their role in this grand cosmic play, one that could rewrite human history.

The encrypted dialogue continued to unfold, its intricate patterns showing an almost uncanny anticipation
#############
Output:
("entity"{tuple_delimiter}"Sam Rivera"{tuple_delimiter}"person"{tuple_delimiter}"Sam Rivera is a member of a team working on communicating with an unknown intelligence, showing a mix of awe and anxiety."){record_delimiter}
("entity"{tuple_delimiter}"Alex"{tuple_delimiter}"person"{tuple_delimiter}"Alex is the leader of a team attempting first contact with an unknown intelligence, acknowledging the significance of their task."){record_delimiter}
("entity"{tuple_delimiter}"Control"{tuple_delimiter}"concept"{tuple_delimiter}"Control refers to the ability to manage or govern, which is challenged by an intelligence that writes its own rules."){record_delimiter}
("entity"{tuple_delimiter}"Intelligence"{tuple_delimiter}"concept"{tuple_delimiter}"Intelligence here refers to an unknown entity capable of writing its own rules and learning to communicate."){record_delimiter}
("entity"{tuple_delimiter}"First Contact"{tuple_delimiter}"event"{tuple_delimiter}"First Contact is the potential initial communication between humanity and an unknown intelligence."){record_delimiter}
("entity"{tuple_delimiter}"Humanity's Response"{tuple_delimiter}"event"{tuple_delimiter}"Humanity's Response is the collective action taken by Alex's team in response to a message from an unknown intelligence."){record_delimiter}
("relationship"{tuple_delimiter}"Sam Rivera"{tuple_delimiter}"Intelligence"{tuple_delimiter}"contact"{tuple_delimiter}"Sam Rivera is directly involved in the process of learning to communicate with the unknown intelligence."{tuple_delimiter}9){record_delimiter}
("relationship"{tuple_delimiter}"Alex"{tuple_delimiter}"First Contact"{tuple_delimiter}"leads"{tuple_delimiter}"Alex leads the team that might be making the First Contact with the unknown intelligence."{tuple_delimiter}10){record_delimiter}
("relationship"{tuple_delimiter}"Alex"{tuple_delimiter}"Humanity's Response"{tuple_delimiter}"leads"{tuple_delimiter}"Alex and his team are the key figures in Humanity's Response to the unknown intelligence."{tuple_delimiter}8){record_delimiter}
("relationship"{tuple_delimiter}"Control"{tuple_delimiter}"Intelligence"{tuple_delimiter}"controled by"{tuple_delimiter}"The concept of Control is challenged by the Intelligence that writes its own rules."{tuple_delimiter}7){completion_delimiter}
#############################
"""

相关代码如下,通过大模型提取实体和关系,解析后写入 neo4j 中

def gen_novel_tupu(self):
    chat_prompt = ChatPromptTemplate.from_messages(
        [system_message_prompt, MessagesPlaceholder("chat_history"), human_message_prompt]
    )

    chain = chat_prompt | llm.chapter_gen_llm

    tuple_delimiter = " : "
    record_delimiter = "\n"
    completion_delimiter = "\n\n"

    entity_types = ["人物","地点","性格","事件","时间","组织","背景"]
    chat_history = []

    with open(self.target_path, 'r', encoding='utf-8') as f:
        chapters = json.load(f)
    for i,c in enumerate(chapters[19:]):
        text = c["content"]
        answer = chain.invoke({
            "chat_history": chat_history,
            "entity_types": entity_types,
            "tuple_delimiter": tuple_delimiter,
            "record_delimiter": record_delimiter,
            "completion_delimiter": completion_delimiter,
            "input_text": text
        })
        graph_documents = convert_to_graph_document(text,answer.content,i)
        _graph.add_graph_documents(
            [graph_documents],
            baseEntityLabel=True,
            include_source=True
        )

事件发展

通过知识图谱获取事件发展

def novel_total_tupu(self) -> str:
    datas = _graph.query(f"MATCH (n:`事件`) RETURN n ORDER BY n.time")
    return "\n\n".join([data['n']['description'] for data in datas])

人物信息

知识图谱可以很好的识别人物实体,且可以识别人物之间的关联信息

将人物知识图谱输入到大模型,可以使大模型很好的了解人物的关系和发展

模型选择

不同的功能模型定义不同的模型名称,可以很方便的测试不同模型对不同功能的效果

目前测试发现长文本生成方面 deepseek-r1 未占据优势,生成的文字词藻过于华丽

_qwen_max_llm = ChatOpenAI(
    api_key=ALI_API_KEY,
    base_url=ALI_BASE_URL,
    model_name= "qwen-max-2025-01-25"
)
_deepseek_r1 = ChatOpenAI(
    api_key=ALI_API_KEY,
    base_url=ALI_BASE_URL,
    model_name= "deepseek-r1"
)
_deepseek_v3 = ChatOpenAI(
    api_key=ALI_API_KEY,
    base_url=ALI_BASE_URL,
    model_name= "deepseek-v3"
)

chapter_gen_llm = _deepseek_r1
chapter_score_llm = _deepseek_r1
chapter_score_llm_2 = _qwen_max_llm
chapter_score_llm_3 = _deepseek_v3

# 角色关系过滤llm
novel_role_relation_filter_llm = _qwen_max_llm
# 角色关系压缩llm
novel_role_relation_extractor_llm = _qwen_max_llm

chapter_summary_llm = _deepseek_r1

应用

def gen_next_chapter(k, role_list, path, novel_name,suggests : list[str],aiChapter) -> NextChapterInfo:
    prompts = []
    npd = novel_pre_deal.NovelPreDeal("/users/zcm/Downloads/SoNovel-macOS_arm64/downloads/无敌六皇子(梁山老鬼).txt",
                                      "无敌六皇子", "./wudiliuhuangzi.chapter.total.txt")
    novel_prompt = NovelNextChapterPrompt(path, novel_name, npd)
    total = novel_prompt.novel_total()
    relation_history_prompt = novel_prompt.novel_relation_history(role_list)
    total_tupu_prompt = novel_prompt.novel_total_tupu()
    people_tupu_prompt = novel_prompt.novel_people_tupu()
    last_kchapter = novel_prompt.last_k_chapter(k=k)
    base_prompt = novel_prompt.system_prompt()
    prompts.append(("system", base_prompt + "\n\n" +
                    f"这是当前要创作的小说所有章节的简介:{total}" + "\n\n" +
                    f"这是当前要创作的小说事件发展线:{total_tupu_prompt}" + "\n\n" +
                    f"这是当前要创作的小说涉及的所有人物信息:{people_tupu_prompt}" + "\n\n" +
                    f"这是当前要创作小说的人物发展总结:{relation_history_prompt}" + "\n\n" +
                    f"这是当前要创作小说的最后{k}个章节:{last_kchapter}" + "\n\n"
                    ))
    if len(suggests) > 0:
        prompts.append(("user", f"你创作的最新章节如下:\n {aiChapter} , 请在已创作的章节基础上按照以下建议进行重写:\n{suggests}"))
    else:
        # user_chapter_prompt = ("user", """你来创作最新章节,注意新章节要紧密续接已创作的最新章节内容,进行合理的续写,字数在2000以上""")
        user_chapter_prompt = ("user", """参考给你的提示,构思第 21章的发展脉络,从不同角度生成 5 组发展脉络,全都是 21章的""")
        prompts.append(user_chapter_prompt)
    ####结束prompt
    cpt = ChatPromptTemplate.from_messages(prompts)
    messages = cpt.format_messages()
    resp = llm.chapter_gen_llm.invoke(messages)
    gen_html_open.gen_html_open(resp.content)
    name = resp.content.split("=====")[0]
    content = resp.content.split("=====")[0]
    # nci = NextChapterInfo(**map)
    return NextChapterInfo(name,content,"","")

发展脉络预测

第21章发展脉络构思:

【朝堂博弈篇】
核心冲突:封王风波引发朝野震荡

1. 封王争议白热化(朝堂线)
- 文官集团以章槐为首,引经据典反对封王,强调"皇子未继位而封王有违祖制"
- 武将集团以萧万仇为代表力挺云铮,怒斥文官"寒功臣之心"
- 徐实甫暗中串联三皇子党羽,抛出"六皇子勾结北桓"的阴险暗示

2. 帝王心术显锋芒(权谋线)
- 文帝借势敲打群臣:"诸卿反对封王,可是觉得朕不配破这个例?"
- 暗示性提及太子谋逆案,震慑心怀不轨者
- 最终折中下旨:封云铮为朔北节度使,总领三州军政,赐"镇北侯"爵位

3. 暗流涌动(阴谋线)
- 班布秘密约见徐实甫,出示密信原件要挟合作
- 三皇子府深夜密会,制定"朔北刺杀计划"
- 叶紫成功散播"太子余党"谣言,朝野开始出现针对云铮的流言

4. 婚事与军备(感情与事业线)
- 礼部拟定婚期引发新冲突:沈落雁要求延后,云铮却主张提前
- 云铮秘密检视袁家战马,发现马匹被做了手脚
- 高合汇报发现府中眼线异常动向,埋下后续刺杀伏笔

5. 结尾悬念(铺垫下章)
- 北桓使团突然提出和亲请求,指名要云铮护送公主返程
- 云铮抚摸文帝所赐北桓宝刀,刀身映出他冷峻的面容:"这局棋,该将军了"

叙事技巧:
1. 三线并进结构:朝堂明争-暗中谋划-主角应对
2. 权力博弈细节:通过朝臣站位、奏章用词等小细节展现派系斗争
3. 留白手法:不直接描写密会内容,通过人物反应暗示阴谋
4. 军事伏笔:战马被动手脚的情节为后续战场遇险埋线

人物塑造重点:
- 文帝:展现帝王平衡术,封赏中的制衡智慧
- 云铮:在荣耀时刻保持警惕,体现成长蜕变
- 沈落雁:通过婚期争执展现将门之女的傲骨与逐渐动摇的态度

此章将完成从外交胜利到权力角逐的转场,为"朔北之行"大篇章拉开序幕。

整章生成 (不理想)

原因:

  1. RAG需要优化的点又很多

  2. 基础大模型对小说生成不占优势

第21章:朝堂驳议
随着文帝的话音落下,大殿内骤然安静下来。
云铮低着头站在殿尾,眼角余光却将众人神色尽收眼底。文官集团几乎全员反对,武将那边倒是有几人目光闪烁,似在权衡利弊。最精彩的要数三皇子一党,徐实甫那张老脸黑如锅底,云厉藏在袖中的手已经捏得青筋暴起。
"启禀圣上。"
终于,章阁老颤巍巍出列:"老臣并非否定六殿下之功,只是祖制不可违啊!若因功封王,其他皇子当如何自处?日后..."
"章阁老此言差矣!"
萧万仇突然出列打断:"非常之功当行非常之事!收复失地这等功绩,百年难遇!若这都不够格破例,请问要何等功绩才配?"
"裕国公此言不妥。"礼部尚书陈晃紧跟着出列:"按制,郡王已是极限。不如先封郡王,待..."
"陈大人好算计!"
兵部尚书李敢冷笑打断:"谁不知郡王只是个虚衔?六殿下即将赴边关领兵,封个没实权的郡王有何意义?"
朝堂上瞬间分成两派吵作一团。文官们引经据典,武将们则句句不离军功。云铮注意到龙椅上的文帝虽然面沉如水,眼中却闪过一丝玩味。
"肃静!"
穆顺一声高喝,殿内瞬间安静。
文帝缓缓起身,目光扫过群臣:"朕倒要听听,除了祖制,诸位爱卿还有何高见?徐爱卿,你来说说。"
被点名的徐实甫浑身一抖,连忙出列:"臣...臣以为六殿下之功确需重赏,但封王实在..."
"靖国公!"
萧万仇突然一声暴喝:"五年前白水河一战,你侄儿徐方统率的后军迟迟不至,害得前军全军覆没!如今有人兵不血刃收复失地,你还要阻挠?"
这话如惊雷炸响。徐实甫脸色瞬间惨白,云厉也猛地抬头。云铮敏锐地注意到,文帝的眼神陡然变得凌厉。
"够了!"
文帝突然拍案:"朝堂之上,休提旧事!朕问的是封王之事!"
云铮暗自冷笑。他这便宜老子果然精明,既不让旧事重提动摇朝局,又让徐实甫吃了记闷亏。此刻徐实甫额头已见冷汗,哪还敢再反对。
"臣...臣无异议。"徐实甫终于低头。
"陛下三思啊!"
几名文官还要再谏,文帝却已摆手:"朕意已决!六皇子云铮即日起晋封镇北王,开府建牙,总领朔北军政要务!"
"陛下!"
御史大夫王崇突然跪地高呼:"六殿下年轻,又无领兵经验,如何担得起..."
"王大人此言差矣。"
一个清冷声音突然响起。众人回头,却见许久不语的兵部侍郎杜仲出列:"下官记得,五年前陇西大旱,是王大人力荐毫无治水经验的令婿出任河道总督吧?"
王崇顿时语塞。杜仲继续道:"更何况,六殿下此番是要去以死明志的,王大人连将死之人的心愿都要阻拦么?"
这话说得诛心,王崇顿时面如土色。云铮差点笑出声来,这个杜仲平时不显山露水,没想到也是个毒舌。
"好了。"
文帝终于拍板:"此事就这么定了。穆顺,宣旨!"
随着圣旨宣读完毕,朝堂上鸦雀无声。云铮恭敬领旨谢恩,心中却已掀起惊涛骇浪。他原以为能捞个将军职位就不错了,没想到文帝竟给了个实权王爷!虽说此去九死一生,但这筹码可比预期高太多了!
"退朝!"
随着穆顺一声高唱,众臣行礼退出。云铮刚要离开,却被穆顺悄悄拦下:"王爷留步,陛下召见。"
......
御书房内,文帝正在批阅奏章。
"儿臣参见父皇。"云铮恭敬行礼。
"起来吧。"
文帝头也不抬:"知道朕为何要破例封你为王吗?"
云铮心念电转,谨慎道:"儿臣不敢揣测圣意。"
"是不敢,还是不想?"
文帝终于抬头,目光如炬:"你当真以为,朕看不出你那点心思?"
云铮后背瞬间渗出冷汗。就在他绞尽脑汁想对策时,文帝却突然话锋一转:"沈家丫头如何?"
"落雁她...很好。"云铮硬着头皮回答。
"是么?"
文帝冷笑:"朕怎么听说,她扬言要让你变太监?"
云铮差点咬到舌头。这老狐狸连这都知道?看来沈府也有影卫啊!
"年轻人闹别扭罢了。"云铮干笑。
文帝轻哼一声,突然将一封密信扔在案上:"看看吧。"
云铮疑惑地打开,顿时瞳孔骤缩。信上详细记载了昨夜三皇子派人给班布送信,又杀人灭口的全过程!
"这..."
"你以为班布为何突然针对你?"文帝冷笑,"你三哥为了除掉你,连勾结敌国的事都干得出来!"
云铮心跳如鼓。文帝这是在试探?还是...
"朕今日封你为王,就是要告诉某些人——"文帝眼中寒光闪烁,"朕的儿子,不是谁想动就能动的!"
云铮恍然大悟。原来文帝是要用他敲打三皇子一党!难怪会破例封王...
"儿臣...谢父皇爱护。"云铮深深拜下。
"别高兴太早。"
文帝冷冷道:"朕给你名分和兵马,但能不能在朔北活下来,就看你自己了。记住,若敢临阵脱逃,朕第一个斩你!"
"儿臣宁死不逃!"云铮郑重承诺。
"最好如此。"
文帝疲惫地挥挥手:"去吧,三日后完婚,半月后启程。"
离开御书房,云铮后背已经湿透。今日这一连串变故,饶是他这个穿越者也感到心惊肉跳。
刚出宫门,高合就急匆匆迎上来:"殿下,沈小姐派人来催了好几回,说是..."
"知道了。"
云铮揉揉太阳穴:"先回府,我有要事交代。"
......
此刻的北桓使馆内,班布正盯着手中的密信冷笑。
"国师,大乾皇帝封六皇子为镇北王了!"一名使者慌张来报。
"什么?"
班布勃然变色,随即又阴森一笑:"好,很好!传令下去,按计划行事!"
一场更大的风暴,正在无人察觉处悄然酝酿......
朝堂之上,文帝话音刚落,群臣哗然。封王之事太过重大,即便云铮立下收复失地的奇功,也难以服众。大殿内顿时响起此起彼伏的反对声。
"圣上,此事万万不可!"礼部尚书章槐率先出列,躬身道:"我朝祖制,唯有先皇之弟方可封王。六殿下虽有功于社稷,但骤然封王,恐引天下非议。"
一旁的兵部侍郎萧万仇却持不同意见:"章大人此言差矣。六殿下以一人之力,不费一兵一卒收复失地,如此大功,若不重赏,何以激励将士?"
眼看朝堂分为两派,争论不休。三皇子云厉嘴角微扬,眼中闪过一丝得意。他与徐实甫对视一眼,俱是心照不宣。这正是他们想要的局面。
云铮站在殿中,冷眼旁观着这场争论。他知道,这看似是文臣武将之争,实则是朝中势力的较量。自己这个"镇北王"的名号,已然成为各方角力的焦点。
"够了!"文帝抬手制止众人的争论,目光扫过群臣,最后落在云铮身上,"老六,你可有什么想法?"
云铮心中一凛。这便宜老爹显然是在考验自己。他上前一步,朗声道:"父皇厚爱,儿臣感激涕零。但儿臣深知,功劳远不及封王之重。若强行破例,恐伤国本。不如......"
他故意停顿片刻,让所有人都屏息凝神。就连沈落雁也不由得竖起耳朵,想知道这个狡猾的家伙又在打什么主意。
"不如暂且搁置封王一事。儿臣愿以虎烈将军之职,前往朔北戍边。待儿臣能真正守住这片土地,再论其他不迟。"
此言一出,满朝皆惊。谁也没想到云铮会主动放弃这千载难逢的机会。
文帝眼中闪过一丝赞赏,随即沉声道:"既然如此,朕便依你所言。不过,朕要加封你为从一品大员,赐黄金千两,良田百顷。此外......"
文帝顿了顿,目光转向班布,"北桓使团即日起撤回割让之地,一个月内必须全部撤离。否则,休怪我大乾兴兵讨伐!"
班布脸色铁青,却不得不躬身应诺。这场朝会,以大乾的完胜告终。
退朝后,云铮正准备离开,却被文帝派人拦住。穆顺总管亲自来传旨,让他去御书房候驾。
御书房内,文帝正在批阅奏章。见云铮进来,挥退左右,只留下影卫和穆顺。
"老六,你今日表现不错。"文帝放下朱笔,意味深长地看着云铮,"不过,朕很好奇,你为何要放弃封王的机会?"
云铮早有准备,当即跪下叩首:"父皇明鉴。儿臣深知自身根基浅薄,骤然封王只会引来更多猜忌。况且,儿臣若真去了朔北,恐怕很难活着回来。与其死后被夺爵位,不如现在就表明态度。"
文帝闻言,眼中闪过一丝复杂的情绪。他缓缓起身,在房中踱步:"你说得对,但也不全对。朕之所以想封你为王,是因为......"
话未说完,外面突然传来急报。一个影卫匆匆进来,低声在文帝耳边说了几句。
文帝神色骤变,挥手示意影卫退下。他盯着云铮,语气变得凝重:"老六,有人在城外挖出了一个石人,上面刻着'六子赴北关,君臣全上山'的字样。此事,你知道多少?"
云铮心头一震,面上却不动声色:"儿臣不知。但听这谶语,似乎有人想借儿臣之事生事端。"
"哼!"文帝冷笑一声,"太子余党、里通北桓、谋逆造反,这些罪名可都是要诛九族的。老六啊,你是不是太聪明了些?"
云铮连忙叩首:"父皇明察。儿臣一心为国,绝无二心。若父皇不信,儿臣愿以死明志!"
"少在这装模作样!"文帝怒喝一声,随即又压低声音,"你当真以为,朕不知道你在打什么主意?散布谣言、埋石人,这些都是你的手笔吧?"
云铮心中一凛。看来自己的计划已经被文帝看穿。但他并未慌张,反而抬起头直视文帝:"父皇说得对,这些都是儿臣安排的。但儿臣敢问,若非如此,儿臣如何能在朝中立足?如何能替父皇分忧?"
文帝怔住了。他没想到云铮会如此坦然承认。
"父皇,朝中局势您比我更清楚。三哥一党势大,儿臣若不自保,恐怕早已身首异处。散布这些谣言,不过是借刀杀人罢了。至于那石人,更是为了让儿臣此去朔北名正言顺。"
文帝沉默良久,突然笑了:"好一个借刀杀人!好一个名正言顺!老六啊老六,你果然没让朕失望。"
云铮松了口气,知道这一关算是过了。
"不过......"文帝话锋一转,"你可知这样做有多危险?一旦被人抓住把柄,就是万劫不复!"
"儿臣明白。"云铮郑重道:"但为了大乾,为了父皇,儿臣愿意冒这个险。"
文帝点点头:"既然如此,朕就再帮你一把。穆顺!"
"奴才在。"穆顺立即上前。
"传朕旨意,调左屯卫五千精锐给老六。再从内库拨十万两银票,随军使用。另外......"文帝看向云铮,眼中闪过一丝深意,"告诉沈家,让他们派些人跟着一起去。"
云铮心中一动,立即明白了文帝的用意。这是要借沈家之力,平衡三皇子一党的势力。
"谢父皇!"云铮叩首谢恩。
离开御书房时,天色已晚。云铮看着宫墙上的明月,心中百感交集。他知道,真正的博弈才刚刚开始。
回到府中,高合已经等在门前:"殿下,沈小姐来了。"
云铮挑眉:"她来做什么?"
"说是来商量婚期的。"高合小声说,"还有,她二嫂叶紫也来了。"
云铮心中一动。看来沈家也坐不住了。他整理了下衣冠,快步走向前厅。
厅中,沈落雁正襟危坐,叶紫则在一旁陪坐着。见到云铮进来,两人同时起身。
"见过殿下。"叶紫先行礼。
沈落雁却只是淡淡一福:"六皇子。"
云铮微微一笑:"这么晚了,两位夫人还来,可是有什么要事?"
沈落雁冷哼一声:"自然是来问问,殿下打算何时完婚。毕竟,殿下马上就要去朔北了。"
云铮故作惊讶:"哦?沈小姐这么着急?莫不是担心嫁妆之事?"
"你!"沈落雁气得脸红,却又不好发作。
叶紫连忙打圆场:"殿下说笑了。我们这次来,确实是有要事相商。关于殿下此去朔北......"
云铮摆摆手:"不必说了。本殿自有安排。倒是你们,可有什么打算?"
叶紫眼中闪过一丝了然:"殿下放心,该准备的,我们都准备好了。"
云铮满意地点点头:"很好。那就请二位回去转告沈夫人,三日后便是良辰吉日。"
"三日后?"沈落雁惊呼,"这也太仓促了!"
"时不我待啊,沈小姐。"云铮意味深长地说,"谁知道明天会发生什么呢?"
沈落雁还想说什么,却被叶紫拉住。她终于意识到,眼前这个男人,已经不再是那个任人欺凌的窝囊废了。
送走二人后,云铮立即召来高合:"去查查,今天朝会上都有谁反对封王最激烈。另外,让袁琮写一百份请帖,本殿要大宴宾客。"
"是。"高合领命而去。
云铮望着窗外的夜色,嘴角浮现一抹冷笑。这盘棋,才刚刚开始布局。接下来,就看谁能笑到最后了。
次日清晨,整个京城都沸腾了。六皇子府发出的请帖如雪片般飞向各家各户。消息灵通的人已经知道,这位六皇子即将迎娶沈家的大小姐,而且三日后就要启程前往朔北。
与此同时,北桓使团也收到了一条密信。信中详细描述了云铮此去朔北的种种隐患,并建议北桓提前动手,以绝后患。
班布看完密信,陷入沉思。这个提议确实诱人,但如果处理不好,可能会引发更大的危机。正当他犹豫不决时,门外传来急报:大乾皇帝派人来催促北桓军队撤离。
形势越来越紧张,各方势力都在暗中角力。而这一切的中心,正是那位即将踏上征程的六皇子云铮。
三天后,云铮的新婚之夜。洞房内,沈落雁一身红衣,坐在床边。她不知道等待自己的将会是什么样的命运。但她隐隐感觉到,这个男人,或许真的能改变些什么。
云铮推门而入,看着烛光下的新娘,轻声说道:"从今以后,我们就是一家人了。我会保护好你,保护好沈家。"
沈落雁抬起头,第一次认真打量这个名义上的丈夫。她发现,对方的眼神中,不再有之前的戏谑,而是充满了坚定。
"你到底想做什么?"沈落雁忍不住问道。
云铮微微一笑:"我要做的事情很简单——活下去,然后,改变这个腐朽的王朝。"
第二天清晨,一支浩浩荡荡的队伍从京城出发。云铮带着新婚妻子和五千精锐,踏上了前往朔北的征途。没有人知道,这支队伍将会掀起怎样的惊涛骇浪。
而在京城的某个角落,一双眼睛正冷冷注视着这一切。徐实甫抚摸着手中的密信,嘴角露出一抹阴狠的笑容:"小子,玩得挺花啊。不过,这才刚开始呢。"
一场关乎大乾王朝命运的博弈,就此拉开帷幕。

总结

大模型做不到的

AI生成的文本本质是数万亿人类语料的量子纠缠态,但训练AI的大数据是有边界的,而人类情感的想象力和判断力,对于人性的触碰和理解是无限的

AI 就像文字连线游戏,将概率最高的文字组合呈现给我们,而我们人类最宝贵的可能就是那些概率低的“错误组合”

未来展望

优化

  1. 知识图谱实体识别与合并

  2. 知识图谱人物性格的变化

  3. RAG 的持续探索和细节处理

遗憾

因数据限制,无法对模型进行微调,只能通过不断优化RAG(检索增强生成)来提升效果

但基础大模型缺少小说相关特定资料,无法对小说创作有深刻的理解,限制了一些可能性

未来期望有机会接触并参与模型的微调,探索模型对小说创作的能力边界

期待

期待大模型能够成为作者文学创作的最强助力,生产更多高质量的文学作品,满足当前时代人们对文学作品日益增长的需求,舒缓高压生活下人们内心的疲惫

让大模型帮助更多普通人共同参与文学创作中来,广大人民群众的创作力是惊人的,不容忽视,期待有一天我们脑海中乍现的那抹灵感能借助大模型“扶摇直上九万里”,创作出大神级别的作品

最后 大模型是造福人类而不是取代人类,期望人人幸福、快乐

posted @ 2025-06-20 17:17  周小小儿java  阅读(36)  评论(0)    收藏  举报