乐于分享
好东西不私藏

不写一行代码,搭一个AI合同审核员——毕昇实战全攻略

不写一行代码,搭一个AI合同审核员——毕昇实战全攻略

不写一行代码,搭一个AI合同审核员——毕昇实战全攻略

你有没有想过——

合同丢给AI,它自动审出违约金超没超LPR上限?招股书扔进去,它自己查审计机构排名、算流动比率、搜行业规模?

不是科幻,这是毕昇在做的事。

毕昇是什么

一句话:拖拽式AI应用搭建平台,不用写代码。

它把LangChain那套东西——Chains、Agents、VectorStore、Tools——全做成了可视化组件。你只需要拖线连接,就能搭出知识库问答、合同审核、数据库查询这些AI应用。

开源地址:https://github.com/dataelement/bisheng

核心能力:

  • 拖拽连线
    搭AI工作流,不用写Python
  • 内置知识库问答(Milvus向量库+ES关键词搜索)
  • 支持Agent自主决策——让它自己判断调哪个工具
  • 支持本地部署,数据不出服务器

先搞清楚:它里面有什么

毕昇的核心就四层,从下到上:

第一层:语言模型(LLMs)

底层大脑。支持OpenAI系列(GPT-3.5/4),也支持ProxyChatLLM——一个Key代理所有国产大模型,切换模型不用换代码。

关键参数就一个:Temperature。越低越保守稳定,越高越随机创造。合同审核给0.1,写文案给0.7。

第二层:工作链(Chains)

把模型、提示词、知识库串起来的"流水线"。

几个最常用的:

表格

组件
干什么
什么时候用
LLMChain
提示词+模型,最基础的链
生成内容、提取信息、写摘要
RetrievalQA
知识库+模型,单轮问答
用户手册问答、文档查询
ConversationRetrievalChain
知识库+模型+记忆,多轮问答
需要上下文连续对话的场景
APIChain
自然语言调API
查天气、查股价、调用内部系统
CombineDocsChain
控制文档怎么喂给模型
配合RetrievalQA使用

CombineDocsChain有个关键参数——Chain Type,很多人搞不清:

  • stuff
    :所有段落拼一起,一次性喂给模型。短文本首选,速度快
  • map_reduce
    :每个段落单独问答,再合并答案。长文本、需要综合分析时用
  • refine
    :逐段递进优化答案。需要精细推理时用
  • map_rerank
    :每段问答打分,选最高分。只要一个最佳答案时用

第三层:代理(Agents)

比Chain高一级——Agent自己决定调哪个工具

Chain是写死的流水线,Agent是会思考的调度员。

最常用的是ZeroShotAgent:你给它几个工具(知识库、搜索引擎、计算器),它根据问题自己判断用哪个、用几个、什么顺序。

另一个是SQLAgent:用户说人话,它翻译成SQL去查数据库。

第四层:工具(Tools)

Agent的"手"——计算器、搜索引擎、知识库查询、API调用,都是Tool。Chain也可以作为Tool被Agent调用。

实战1:合同审核,全自动

这是毕昇最经典的场景。

目标:上传合同PDF,AI自动审核三个问题——

  1. 合同甲乙方主体信息是什么?
  2. 首尾部主体名称一致吗?
  3. 违约金利率是否超过LPR的150%?

搭建思路

第3个问题最复杂——既要读合同(知识库),又要查LPR(联网搜索),还要算数(计算器)。单个Chain搞不定,必须上Agent。

需要的组件:

  • ChatOpenAI + RetrievalQA + CombineDocsChain + Milvus → 合同内容问答链
  • PyPDFLoader + InputFileNode → 上传合同
  • BingSearchRun → 联网查LPR
  • Calculator → 计算比较
  • ZeroShotAgent
     → 自动决定用哪个工具
  • InputNode → 预置审核问题

连线逻辑

plaintext

合同问答链 → Tool(命名为"Basic_information")

BingSearchRun → 直接连Agent

Calculator → 直接连Agent

InputNode → 预置问题

ZeroShotAgent → 把上面全串起来

运行效果:上传合同 → Agent逐个审核问题 → 自动选工具 → 生成审核报告。

关键优化技巧

把复杂问题拆成简单问题。比如"违约金利率是否符合规范"拆成:

  1. 合同违约金赔偿利率是多少?→ 调Basic_information
  2. 合同签订日期是哪年哪月?→ 调Basic_information
  3. 当月LPR是多少?→ 调BingSearchRun
  4. 违约金利率是否超过LPR的150%?→ 调Calculator

拆问题比调参数管用10倍。

实战2:招股书分析报告

跟合同审核类似,但更复杂——需要两个知识库

一个装招股书(用户上传),一个装审计机构行业排名(预置数据)。Agent需要自己判断哪个问题去哪个库查。

关键区别:两个Tool的Description要写清楚——

  • Tool1:"如果需要知道关于这家公司的各方面信息,可以使用该工具"
  • Tool2:"若用户想查询审计机构的背景信息、去年项目数量和排名,可以使用该工具"

Description写得好不好,直接决定Agent会不会选错工具。

实战3:知识库问答——选向量搜索还是关键词搜索?

大多数人只会用向量搜索,但毕昇同时支持ES关键词搜索。

实测数据:中华药典问答场景——

  • 向量语义搜索:准确率不到50%
  • ES关键词搜索:准确率85%以上

原因很简单:药典里全是专有名词("瓦松""益气养血口服液"),这些词的语义向量区分度很低,但关键词匹配一打一个准。

经验法则:专有名词多的场景用关键词搜索,自然语言描述多的场景用向量搜索。

实战4:一句话查数据库

SQLAgent的玩法:用户说"今天哪个公司股价振幅最大",Agent自己翻译成SQL去查。

不需要你会写SQL,也不需要Agent提前知道表结构——它会先查有哪些表,再判断用哪个表,再写SQL

怎么部署

毕昇支持完全本地部署,数据不出服务器。最简方案只需要三步:

1. 装Docker

bash

sudo apt update

sudo apt install docker-ce docker-ce-cli containerd.io

2. 拉项目、启动

bash

git clone https://github.com/dataelement/bisheng.git

cd bisheng/docker

sudo docker-compose up -d

3. 装Milvus(向量数据库)

bash

wget https://github.com/milvus-io/milvus/releases/download/v2.2.10/milvus-standalone-docker-compose.yml -O docker-compose.yml

sudo docker-compose up -d

如果要跑本地大模型(ChatGLM3-6B),再装个BISHENG-RT就行,需要NVIDIA显卡。

遇到问题看日志:

bash

docker logs docker-backend-1    # 查后端日志

docker-compose restart backend   # 重启后端

写在最后

毕昇解决的核心问题是:让不会写代码的人也能搭AI应用。

合同审核、招股书分析、知识库问答、数据库查询——这些以前得写几百行Python的活,现在拖几根线就搞定了。

但说实话,拖线只是手段,理解原理才是关键。你知道stuff和map_reduce的区别,知道什么时候用Agent什么时候用Chain,知道Description怎么写Agent才不犯傻——这些才是真正值钱的东西。

工具会变,底层逻辑不会。先把原理搞透,换个平台你一样能搭。