应用场景 #
- 打通大模型+数据+图形+表单+触达
- 需要进行复杂的逻辑流程
- 以发票审核为例
使用方法 #
- 新建一个大模型数据源,本次采用dashAI,以调用阿里dashscope的能力为列
dashAI可选择qwen模型,当有图片上传时会自动切换使用vl模型,默认是qwen-vl,你可以在参数中变更,如{“vmodel”:“qwen-vl-max”}
- 新建智能体数据集,选择python数据源,取名为"报销单审核"
import json
gpt_dict = $gpt_dict
history = gpt_dict['his']
prompt = """$prompt"""
p0 = """
请判断用户的意图,
1. 发票审核回答{"status":1}
2. 数据提交,请回答{"status":2}
3.查询或统计数据回答{"status":3}
4.如果都不涉及请询问用户的意图
"""
p1=f"""
如果用户需审核发票,请识别附件内容后进行审核
你需要参考规则:金额不能超过150元;发票信息属实,非虚假报销。
如果审核通过,你需要询问用户确认是否提交
如果不通过,需要给出原因
请输出格式如下:
识别的内容:xxxxx
是否通过:是或否
原因: xxx
以下是我的问题:
{prompt}
"""
p2="""
请基于最后一次的审核的结果判断,忽略之前的审核结果,如果审核未通过,不允许提交,请给出原因;
如果审核通过,请用以下格式输出相应的insert sql的json
{"tool":"local","sql":"INSERT INTO fpshjl (是否通过, 原因) VALUES ('是或否', '替换成你的原因')"}
"""
p3="""
数据存储在sqlite的表中,表结构如下:
create table fpshjl(是否通过 varchar(100), 原因 text, create_time DATETIME DEFAULT (datetime(CURRENT_TIMESTAMP,'localtime')))
请输出以下json格式
{"tool":"local","sql":"你的查询sql"}
"""
# ---------- 意图识别 -----------
ds = ds_gpt('通义千问',prompt,{'his':history+p0},isjson=1)
# ---------- 意图1处理,有上传文件即调用dashAI识别发票 -----------
if ds['status']==1:
if gpt_dict['files']:
ds = ds_gpt('dashAI',p1,{'files':gpt_dict['files']})
else:
ds ={'msg': '请上传图片格式的发票', 'token': 0, 'status': 200}
# ---------- 意图2处理,调用插入sql,写入数据 -----------
elif ds['status']==2:
ds = ds_gpt('通义千问',prompt,{'his':history+p2},1)
if ds.get('tool'):
ds = ds_sql(ds['tool'],ds['sql'])
# ---------- 意图3处理,调用通义千问处理查询数据意图并执行查数要求 -----------
elif ds['status']==3:
ds = ds_gpt('通义千问',prompt,{'his':history+p3},1)
ds = ds_sql(ds['tool'],ds['sql'])
- 如果需要流式返回可以改写
# ---------- 意图识别 -----------
history = gpt_dict['his']
stream = gpt_dict['stream']
def gen():
ds = ds_gpt('通义千问',prompt,{'his':history+p0},isjson=1)
if stream:
yield f'{{"msg": "意图识别完成{ds},等待处理\n", "token": 0, "status": 200,"think":1}}//.'
# ---------- 意图1处理,有上传文件即调用dashAI识别发票 -----------
if ds['status']==1:
if gpt_dict['files']:
if stream:
yield f'{{"msg": "正在处理上传的文件,请等待", "token": 0, "status": 200,"think":1}}//.'
ds = ds_gpt('dashAI',p1,{'files':gpt_dict['files']})
else:
ds ={'msg': '请上传图片格式的发票', 'token': 0, 'status': 200}
# ---------- 意图2处理,调用插入sql,写入数据 -----------
elif ds['status']==2:
ds = ds_gpt('通义千问',prompt,{'his':history+p2},1)
if ds.get('tool'):
ds = ds_sql(ds['tool'],ds['sql'])
# ---------- 意图3处理,调用通义千问处理查询数据意图并执行查数要求 -----------
elif ds['status']==3:
ds = ds_gpt('通义千问',prompt,{'his':history+p3},1)
ds = ds_sql(ds['tool'],ds['sql'])
if stream:
yield json.dumps(ds)
else:
return ds
ds = gen()
- 在首页AI问答的模块使@,即可召唤“报销单审核”