案例十:基于大模型生成场地评价报告
案例概述
本案例从 GDIM 读取标准地层表、钻孔一览表、地层表,经处理后由大模型生成并输出面向地基基础设计的工程地质评价。
你将学到
在 PipeLine 中连接「读表、统计计算、表格转 Markdown、大模型」等模块,在本地生成报告文本。
用
GdimTableReader读取多张表,TableCalculator按地层编号计算平均层厚。用
TablesToMarkdown、TableToMarkdown将表数据转为 Markdown 格式,MergeResultModels合并为统一的ResultModel。用
PromptTemplate组装提示词,LLMNode调用大模型生成工程地质评价。用
TextWriter将评价结论输出为 Markdown 文件。
实现思路
创建
GdimTableReader,读取「标准地层表」「钻孔一览表」「地层表」,并用output_table_name指定地层表供后续统计使用。用
TableCalculator按地层编号分组,计算各地层的平均层厚。用
TablesToMarkdown将三张原始表、TableToMarkdown将平均层厚表分别转为 Markdown。用
MergeResultModels合并两个ResultModel,PromptTemplate组装提示词。用
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()
更进一步
完整代码请查看以下链接: