八斗科技法律大模型比赛
本项目用于八斗科技法律大模型比赛,包含两套处理方式,1-100题、165-199题采用LegalToolsUtils对应的main方法执行。101-164题采用FilterSchema的main方法执行。
本篇README.md主要讲解方案思路。
问题说明:
1.由于本方案基于八斗科技自研的AI服务支撑平台为底座进行问题处理,若后续有幸进入复赛或决赛。可提供在线服务体验入口进行校验验证。
2.受限于时间限制,本项目代码在独立工程时可能会缺少部分环节。方案实际思路可以参考 - 整体回复策略流程图。
整体回复策略流程图
开发前的配置要求
- JDK8
- mysql5.7,导入/resources/glmai.sql。
- 修改LegalToolsUtils中的BATHPATH为文件配置的地址,问题的内容放在此路径下的ask.json文件里面
- 修改LegalToolsUtils中的AUTHTOKEN、GLMLLM_TOKEN
- 修改LegalToolsUtils中getConnection()方法中链接数据库的地址、账号、密码
安装步骤
- 修改完配置后,直接运行LegalToolsUtils或FilterSchema的main方法。
文件目录说明
filetree
├── README.md
├── /com/
│ ├── /badou/
│ │ ├── /law/
│ │ ├── /project/
│ │ ├── ── /llm/
├── /resources/
│ ├── application.properties
│ ├── glmai.sql
├── pom.xml
└── .gitignore
LegalToolsUtils开发思路(0-100题,165-199题)
- 从数据库加载所有的tools记录在ToolMapByName里面。
- 从ask.json文件中逐行读取文件。
- 调用dynamicGetTools方法询问大模型,获取得到合适的tools。
- 基于大模型functioncall能力结合上一步获取到的tools实际调用tools。
- 本地在dispatchTools中实际执行tools,调用前询问大模型问题可能需要用到的字段。
- 如果返回值是json则记录到缓存,如果返回值是数组,则把问题以及之前的答案传给大模型,采用python代码进行解析得到最终结果。
FilterSchema开发思路(101-164题)
将表的定义汇总成提示词,结合问题向GLM进行提问。让GLM根据问题筛选出可能需要使用的数据表及对应的依赖关系和筛选条件
根据GLM返回的数据进行解析,然后通过调用对应的API来形成数据画像
数据画像组成规则:将筛选到的数据调用与该数据相关的接口来获取完整的数据画像。 ```` 如: 法律文书画像: 1.在获取到文书信息后,通过解析案号来补全起诉年度 2.通过解析案号来获取法院代字,通过法院代字补全该文书的法院相关信息 3.通过原告/被告律师事务所信息补全对应的律所信息 4.由于本身法院/律所等画像内部又补全了自身的地址画像,而地址画像有补全了地址的省市区画像 5.因此最后能够获取法律文书的一个完整数据画像
将数据画像写入本地的文件,获取文件的路径
根据最终得到的数据画像所拥有的属性及文件拼装一个新的提示词,结合问题让GLM进行python代码编写。告诉大模型可以通过file = open("{指定路径}", "r")来获取数据
获取大模型编写的Python代码,将其写入一个指定文件并执行获取最终得到的结果。
根据Python代码的执行结果结合问题让GLM进行回复优化完善,生成最终的答案对问题进行解答。
版本控制
该项目使用Git进行版本管理。
评论