案例十:基于大模型生成场地评价报告

案例概述

本案例从 GDIM 读取标准地层表、钻孔一览表、地层表,经处理后由大模型生成并输出面向地基基础设计的工程地质评价。

你将学到

PipeLine 中连接「读表、统计计算、表格转 Markdown、大模型」等模块,在本地生成报告文本。

  • GdimTableReader 读取多张表,TableCalculator 按地层编号计算平均层厚。

  • TablesToMarkdownTableToMarkdown 将表数据转为 Markdown 格式,MergeResultModels 合并为统一的 ResultModel

  • PromptTemplate 组装提示词,LLMNode 调用大模型生成工程地质评价。

  • TextWriter 将评价结论输出为 Markdown 文件。

实现思路

  1. 创建 GdimTableReader,读取「标准地层表」「钻孔一览表」「地层表」,并用 output_table_name 指定地层表供后续统计使用。

  2. TableCalculator地层编号 分组,计算各地层的平均层厚。

  3. TablesToMarkdown 将三张原始表、TableToMarkdown 将平均层厚表分别转为 Markdown。

  4. MergeResultModels 合并两个 ResultModelPromptTemplate 组装提示词。

  5. LLMNode 调用大模型撰写评价报告,TextWriter 输出 .md 文件。

关键代码

本例关键在于表格转 Markdown、合并结果模型、大模型,对应代码如下。

avg_calc = TableCalculator("AvgLayerThickness")
avg_calc.group_by = ["地层编号"]
avg_calc.column_templates = {"avg_thickness": "{mean(地层厚度)}"}

tables_md = TablesToMarkdown("Tables2Md")
tables_md.combine_related = False
tables_md.result_key_name = "tables_data"

merge_models = MergeResultModels("MergeModels")
merge_models.add_dynamic_ports_in("InputTablesModel")
merge_models.add_dynamic_ports_in("InputAvgModel")

prompt_tmpl = PromptTemplate("Prompt")
prompt_tmpl.template = (
    "以下是某岩土工程勘察场地的工程地质数据...\n\n"
    "{tables_data}\n\n{avg_thickness_data}\n\n"
    "请对该场地面向地基基础设计的工程地质情况进行系统评价..."
)

llm = LLMNode("LLM")
llm.model = "qwen3.5-plus"

pipeline.add_links(
    tables_md.OutputResultModel >> merge_models.InputTablesModel
    | avg_md.OutputResultModel >> merge_models.InputAvgModel
    | merge_models.OutputResultModel >> prompt_tmpl.InputValues
    | prompt_tmpl.OutputPrompt >> llm.InputPrompt
    | llm.OutputReply >> output_report.InputText
)
pipeline.run()

更进一步

完整代码请查看以下链接:

geologicalEvalOnTableData.py