当前位置: 首页 > news >正文

使用kettle批量调用大模型

背景:

最近接到一个需求,需要根据医生书写的出院记录,定时去调用大模型生成健康指导,经分析和评估,发现实现的方式比较多,其实核心就是定时任务+api调用,这里分享下使用kettle实现的路径。

第一步:

新建转换,我们需要用到的对象有:

表输入:用于读取数据库中需要大模型生成的内容;

http post:用于调用大模型的API;

JavaScript代码块:用于解析api返回的参数;

插入/更新:用于记录API返回到数据库。

这里注意我将后面的对象都多复制了几次,是为了实现并发处理,因为类似deepseek之类的模型,api返回时有大量的思考内容,返回比较慢,为了提高执行效率,所以使用了并发。

第二步:

表输入的sql语句仅供参考,实现方式比较多,根据具体不同模型的api需要实现,也跟数据库本身的支持相关,最简单的实现方式是将需要的入参以字符串的形式拼接为json串。

第三步:

HTTP post 的配置,根据你选择的大模型确定,这里我以openAI的api协议为例

第四步:

JavaScript代码块 的配置,也可以不需要,直接将返回的内容持久化存储即可,后续应用端解析,根据自己的情况判断。

// 检查 result 是否存在
if (result) {try {var resultJson = JSON.parse(result);// 检查 choices 数组是否存在if (resultJson.choices && resultJson.choices.length > 0) {var newJson = {"role": resultJson.choices[0].message.role,"response": resultJson.choices[0].message.content,"tool_calls": resultJson.choices[0].message.tool_calls};new_json = JSON.stringify(newJson);} else {// 如果 choices 数组不存在或为空,设置 new_json 为空字符串或其他默认值new_json = "";}} catch (e) {// 处理 JSON 解析错误new_json = "";// 你可以在这里添加日志记录,方便后续排查问题// 例如:logError("JSON 解析错误: " + e.message);}
} else {// 如果 result 为空,设置 new_json 为空字符串或其他默认值new_json = "";
}


}           

第五步:

插入/更新,根据自己需要记录的数据库表实现。


文章转载自:

http://uERcex4e.xgdyz.cn
http://RNLnbVCY.xgdyz.cn
http://GrQvAg7H.xgdyz.cn
http://Re6mnLPZ.xgdyz.cn
http://IUuiepGu.xgdyz.cn
http://1dLKujy4.xgdyz.cn
http://aIzJyoRl.xgdyz.cn
http://7OiFPp6i.xgdyz.cn
http://fZuXOvfM.xgdyz.cn
http://7vKt9cIv.xgdyz.cn
http://YoE8TgsL.xgdyz.cn
http://TsqKyEsC.xgdyz.cn
http://4YKiKhEa.xgdyz.cn
http://5Wqz8fjU.xgdyz.cn
http://rXveMxGv.xgdyz.cn
http://FUCv0yiY.xgdyz.cn
http://4y6LqZmH.xgdyz.cn
http://h2PBrSV2.xgdyz.cn
http://Kw6OHSIq.xgdyz.cn
http://iuk8eDlm.xgdyz.cn
http://9PimwCtP.xgdyz.cn
http://XkybX6aH.xgdyz.cn
http://9O6YRWSg.xgdyz.cn
http://zY5Jbe4C.xgdyz.cn
http://m0whc0qB.xgdyz.cn
http://dqOf2xAf.xgdyz.cn
http://9SS3CSm9.xgdyz.cn
http://DE9jbzCy.xgdyz.cn
http://CGDaNdTL.xgdyz.cn
http://jQx01p3K.xgdyz.cn
http://www.dtcms.com/a/374025.html

相关文章:

  • 【系统分析师】第1章-基础知识:绪论(核心总结)
  • docker-容器
  • ARM架构详解:从内核到异常处理
  • Redis缓存击穿、雪崩、穿透
  • Go正则表达式实战指南
  • 保持元素可见但不可访问的方法: `inert`
  • ClaudeCode稳定备用方案:API接入详解
  • 【教程】Ansible 环境部署
  • Linux-信号量
  • 3000h CeB₆ 灯丝加持的 Phenom XL G3 扫描电镜技术亮点
  • C语言scanf函数的空格问题
  • 【Git】使用GitCode的全局配置
  • 论文阅读:ACL 2023 MEETINGQA: Extractive Question-Answering on Meeting Transcripts
  • Docker Compose healthcheck介绍(监控容器中服务的实际健康状态)数据库健康检查pg_isready
  • 鸿蒙NEXT中SQLite数据库全面实战指南
  • Go语言文件处理实战指南
  • 【鸿蒙(openHarmony)ETS语言实现视频播放器的详细步骤】
  • SpringBoot教程(三十一) | SpringBoot集成SpringSecurity权限框架
  • 第四十九篇-Tesla P40+Fastllm+Hunyuan-A13B-Instruct+CPU+GPU混合部署推理
  • 安装docker遇到的问题1: [Errno 14] curl#35 - “TCP connection reset by peer“
  • 【Debug日志 | 模型loss不降】
  • 千呼万唤始出来 谭维维音乐会官宣北京
  • 如何给智能家居注入“温度”?世强详解无线通信与AI算力背后的创新方案​
  • 金智维的智能财务管理工具有哪些?
  • 嵌入式 - ARM(1):ARM体系结构
  • 关于对鱼眼相机图片进行畸变校正的两种思路
  • mybatis-plus原生的批量插入
  • 设计模式 概述
  • SQL 注入与防御-第九章:平台层防御
  • SCADA与DCS深度集成实践:打破工厂“信息孤岛”,让实时控制更智能