更新
0509:使用百度 ERNIE-Bot ,根据表结构生成查询 SQL 语句
0508:自定义操作服务实现单据审核自动获取附件创建知识库
苍穹 GPT
百度千帆大模型
模型社区手册:https://vip.kingdee.com/link/s/lX1pQ
【知识库】知识库社区手册:https://vip.kingdee.com/link/s/lX1vX
如下图索引方式,主要是用 Embedding
测试是用的百度 Embedding-V1 ,按照社区文档配置【算法服务】【服务实例】,新建知识库选择配置的索引方式,上传文档保存,点击【文档处理】等待完成即可。(上传附件报错可参考本文章相关内容处理)
社区文档中注意事项:附件支持50M以内,可解析的pdf、txt格式。单次上传最多支持20个文件
文心一言,根据表结构生成 SQL 语句
配置【服务实例】使用 ERNIE-Bot
配置 【GPT 提示】
提示词如下图
配置【GPT 任务】
生成表结构节点使用插件根据当前表单实体生成 Markdown
生成表结构节点示例代码,表结构使用 Markdown 描述
public class DemoCreateTableGPTAction implements IGPTAction { @Override public Map<String, String> invokeAction(String s, Map<String, String> map) { String pageId=map.get("PAGE_ID"); IFormView formView=SessionManager.getCurrent().getView(pageId); String entityId= MetadataDao.getIdByNumber(formView.getEntityId(), MetaCategory.Entity); EntityMetadata entityMetadata=(EntityMetadata) MetadataDao.readRuntimeMeta(entityId, MetaCategory.Entity); String tableSchema=TableSchemaUtil.buildSchema(entityMetadata,formView.getPageCache()); Map<String, String> returnData=new HashMap<>(); returnData.put("table",tableSchema); return returnData; } }
效果图
单据使用发布的【生成查询 SQL 语句】技能
拷贝 SQL 语句到查询分析器测试
知识库微服务-单据审核附件自动创建知识库
使用平台模型扩展-自定义操作服务。实现单据审核后执行操作服务,自动获取单据附件创建知识库。
知识库微服务,社区手册:https://vip.kingdee.com/link/s/lXWPu
模型扩展-自定义操作服务,社区资料:https://vip.kingdee.com/link/s/lXWgl
创建自定义操作服务
如下图,实现类需要继承 AbstractOpBizRuleAction
审核操作代码配置操作服务
获取附件请求 GPT 微服务
示例代码如下:
public class GaiRepoAutoOpBizRule extends AbstractOpBizRuleAction { @Override public void afterExecuteOperationTransaction(AfterOperationArgs e) { if (getOperationResult().isSuccess()) { for (DynamicObject data : e.getDataEntities()) { invokeGaiService(data); } } } private void invokeGaiService(DynamicObject data) { DynamicObjectType dynamicObjectType = data.getDynamicObjectType(); if (dynamicObjectType instanceof BillEntityType) { BillEntityType billEntityType = (BillEntityType) dynamicObjectType; MainOrgProp mainOrgProp = billEntityType.getMainOrgProperty(); Long userOrg = mainOrgProp == null ? RequestContext.get().getOrgId() : (Long) data.getDynamicObject(mainOrgProp).getPkValue(); JSONObject jsonObject = new JSONObject(); String number = billEntityType.getName(); jsonObject.put("name", number + "#" + data.getPkValue()); String name = dynamicObjectType.getDisplayName().getLocaleValue(); jsonObject.put("desc", name + " 审核自动生成知识库#" + data.getPkValue()); jsonObject.put("indexMethod", "BAIDU_EMBEDDING_V1"); jsonObject.put("type", "qa"); jsonObject.put("useOrg", userOrg); List<Map<String, Object>> attachments = AttachmentServiceHelper.getAttachments(number, data.getPkValue().toString(), "attachmentpanel"); JSONArray fileInfos = new JSONArray(); for (Map<String, Object> attachment : attachments) { String type = (String) attachment.get("type"); if ("pdf".equals(type) || "txt".equals(type)) { JSONObject fileInfo = new JSONObject(); fileInfo.put("fileName", attachment.get("name")); fileInfo.put("fileType", type); fileInfo.put("filePath", attachment.get("relativeUrl")); fileInfo.put("fileSize", attachment.get("size")); fileInfos.add(fileInfo); } } jsonObject.put("fileInfos", fileInfos); Map<String, Object> result = (Map<String, Object>) DispatchServiceHelper.invokeBizService("ai", "gai", "GaiRagService", "createRepo", jsonObject.toJSONString()); if (result != null) { if (!"0".equals(result.get("errCode"))) { String errorMessage = result.get("errMsg").toString(); OperationResult operationResult = getOperationResult(); operationResult.setShowMessage(true); operationResult.setMessage(errorMessage); } } } } }
效果图
社区文档描述:通过微服务接口来实现知识库创建,并自动完成对知识库的处理(文档加载、切分、向量化)
敏感词审查
社区手册:https://vip.kingdee.com/link/s/lX139
例如:校园咨询助手利用敏感词审查机制,识别特殊情况给予正向引导。
MinIO 文件服务器
向量数据库安装后,可切换文件服务器为 MinIO
参考资料:https://vip.kingdee.com/link/s/lVFSA
知识库上传附件报错 org.apache.commons.lang3.math.NumberUtils
参考资料:https://vip.kingdee.com/link/s/lXXsj
如何开启查看详细的错误信息,如下图操作路径:【基础服务云】-【公共设置】-【参数配置】-【系统参数】-【公共参数】-开启显示异常堆栈信息
官方文档补全
语雀文档:升级开发环境(GPT 补丁包)下图中右侧红框【升级设置】勾选需要修改增加【执行应用仓库升级】【执行静态资源升级】
【升级设置】正确勾选项如下图
推荐阅读