LangChain脚本如何调度及提效?

本文涉及的产品
云原生网关 MSE Higress,422元/月
MSE Nacos 企业版免费试用,1600元额度,限量50份
服务治理 MSE Sentinel/OpenSergo,Agent数量 不受限
简介: 在大模型时代,Python成为了主要的编程语言,最有代表性的就是LangChain大模型开发框架。本文章介绍如何有效的进行LangChain脚本管理、调度、提升资源利用率、限流等能力。

概述

LangChain是开源领域最流行的大模型编程开发框架,支持通过python/js语言快速构建AI应用。Dify是开源的图形化大模型应用开发平台,可以通过可视化的画布拖拖拽拽快速构建AI agent/工作流。

通过任务调度系统托管AI任务,可以进行脚本版本管理、定时调度、提升资源利用率、限流控制、可运维、可观测。

image.png

本文章主要介绍通过任务调度SchedulerX进行LangChain脚本的管理和调度。

脚本管理及调度

AI任务有许多业务场景,需要定时调度,比如:

  • 风险监控:每分钟扫描风险数据,通过大模型分析是否有风险事件,并发出报警。
  • 数据分析:每天拉取金融数据,通过大模型进行数据分析,给出投资者建议。
  • 内容生成:每天帮我做工作总结,写日报。

LangChain任务基本上都是python脚本,可以使用SchedulerX的脚本任务托管脚本,并进行定时配置

image.png

任务调度SchedulerX还支持脚本的历史版本,方便进行历史版本的对比和回滚:

image.png

Prompt管理

Prompt(提示词)对于AI任务来说非常重要,为了得到好的效果,可能需要经常修改Prompt,将Prompt写在脚本中会非常麻烦。我们可以通过SchedulerX的任务参数来管理Prompt,在LangChain脚本中通过SchedulerX提供的系统参数(#{schedulerx.jobParameters})动态获取任务参数,来代替Prompt或者PromptTemplate参数。

定时调度获取Prompt

Prompt写法

  1. 通过SchedulerX控制台编写脚本
from langchain_community.llms import Tongyi
from langchain.prompts import PromptTemplate
from langchain.chains import LLMChain

llm = Tongyi(model="qwen-plus")
question = "#{schedulerx.jobParameters}"
print("question:" + question)

results = llm.invoke(question)
print(results)
  1. 配置任务参数

image.png

PromptTemplate写法

  1. 通过SchedulerX控制台编写脚本
from langchain_community.llms import Tongyi
from langchain.prompts import PromptTemplate
from langchain.chains import LLMChain

llm = Tongyi(model="qwen-plus")
prompt = PromptTemplate(template="请帮我解答这个问题:{question}")

chain = LLMChain(llm=llm, prompt=prompt)
question = "#{schedulerx.jobParameters}"
print("question:" + question)

results = chain.invoke(question)
print(results)
  1. 配置任务参数

image.png

API调度动态传递Prompt

SchedulerX也支持通过控制台手动运行或者API调度,动态设置新的Prompt,以上面PromptTemplate写法为例,通过控制台手动运行任务,动态传递任务参数,该任务参数会覆盖任务配置中的静态任务参数。

image.png

提升资源利用率

SchedulerX执行脚本,当前支持两种模式(未来会支持更多的运行时):

  • 脚本任务:在ECS上部署schedulerx-agent,每次执行fork一个子进程执行脚本,适合任务数比较多、调度频繁、资源消耗少的场景。
  • K8s任务:在K8s上部署schedulerx-agent,每次执行弹一个Pod执行脚本,适合任务数不多、调度不频繁、资源消耗大的场景。

两种运行时适合不同的场景,结合起来使用,可以提升资源利用率。

image.png

如上图所示,通过ECS执行脚本以及通过K8s执行脚本,主要区别总结下表:

ECS执行脚本

K8s执行脚本

如何安装依赖

将依赖提前手动部署在ECS上

将依赖构建成基础镜像,如果依赖修改,需要重新构建基础镜像

脚本调度频繁

推荐。每次fork一个子进程运行脚本,速度快。

不推荐。每次拉镜像起Pod,速度比较慢。

脚本不频繁调度

不推荐。ECS需要提前准备好资源,如果一天就跑一次,资源利用率不高。

推荐。拉一个Pod跑任务,跑完Pod自动销毁,对于任务少并且调度不频繁的场景来说,成本更低。

脚本资源消耗小

推荐。fork子进程运行脚本,复用ECS的资源,成本低。

不推荐。每次执行都得拉一个Pod执行,要占用额外的资源,成本高。

脚本消耗资源大

不推荐。超大任务,可能会把ECS资源打满,影响任务执行。

推荐。通过K8s的负载均衡策略,每次弹一个Pod运行脚本,稳定性高。

限流控制

业务场景:比如有一堆离线任务,每天0点之后执行,处理上一天的数据,核心任务必须在早上9点上班前全部跑完。业务同学可能会把任务的调度时间都设置成同一时刻,比如每天00:30执行。

当大量任务同时调度的时候,会把ECS资源打满。虽然用K8s跑脚本可以解决一部分问题,但是突增的流量一样会把下游(比如数据库)打满。所以针对这种突增流量的场景,最佳解决方案是使用限流。通过限流控制解决定时调度不均特别是突发流量的场景,其实也是一种提升资源利用率的解决方案。

image.png

如上图所示,任务调度SchedulerX支持应用级别的限流控制:

  1. 每个应用会有2个队列,一个是优先级排队队列,可以把任务按照优先级在队列中排队,保证核心任务优先跑完。任务的优先级仅在自己的应用下生效,不会和其他应用产生冲突。
  2. 另一个是并发数队列,控制这个应用的并发数,不同应用的并发数彼此不受干扰。
  3. 当并发队列中某个任务运行完成,有空闲槽位后,会从排队队列头部取出任务,放到并发队列中,开始执行任务。

失败自动重试

当前大模型调用不是很稳定,大家平时和大模型聊天,可能会经常遇到token限流了,或者是后端服务异常了。这个时候我们只要过一会重新尝试下就好了。

任务调度SchedulerX自带任务失败自动重试功能,可以通过控制台动态配置,经过我们验证,使用失败重试功能,LangChain脚本因为后端大模型限流或者服务不可用导致的失败率大大降低,成功率可以提升至少一个9。

image.png

依赖编排

SchedulerX提供可视化任务编排能力,如果你的LangChain脚本有依赖关系,可以进行任务编排。甚至是不同任务类型的任务,都可以进行编排。

image.png

如上图所示:

  1. 先通过Shell脚本,去大数据平台拉取数据。
  2. 通过Java代码实现,做商家数据和用户数据清洗。
  3. 通过LangChain实现,把清洗好的数据用大模型做数据分析。
  4. 最后,再通过Python脚本生成报表。

企业级可观测

任务调度SchedulerX默认集成了各种云产品,提供企业级可观测能力,包括但不限于如下功能。

调度大盘

调度大盘可以看到任务执行的总体情况,支持按照命名空间和应用过滤筛选

image.png

监控报警

任务如果执行失败了,需要快速响应处理,否则容易产生故障。SchedulerX支持应用级别报警,也能精细到每个任务级别,如下图所示是任务级别报警配置

image.png

  • 联系人管理:支持联系人和联系人组管理,支持同步云监控联系人。
  • 报警方式:失败报警、超时报警、成功通知。
  • 报警渠道:邮件、webhook、短信、电话。

日志服务

当任务执行失败了,需要查看任务运行的日志分析问题。只要接入schedulerx-agent运行脚本,默认就集成了日志服务,可以看到脚本运行的所有标准输出和异常。

  1. 配置如下脚本

image.png

  1. 任务参数配置如下

image.png

  1. 运行一次,查看日志

image.png

未来展望

在AI时代,AI任务调度面临着新的机遇和挑战,我们总结了一些用户的诉求如下:

  • AI任务管理:可以通过任务调度配置prompt模版、模型类型、输出格式等参数,通过控制台可以动态调整。
  • 模型Failover:通过任务调度系统托管各种模型,如果某个模型调用失败,可以自动重试其他的模型,进一步提升任务执行的成功率。
  • Tokens限流:每个任务返回消耗的tokens,任务调度系统能做到token级别的限流,防止触发下游大模型的API限流。
  • AI任务批处理:AI任务执行时间比较长,特别是推理型模型时间更加长,通过任务调度系统进行任务拆分及分布式处理,加快任务执行速度。
  • AI可观测:可以看到每个任务的执行耗时、消耗的tokens、输入和输出。如果是工作流,可以看到每个node级别的耗时、tokens消耗、输入和输出。

如果您有AI任务调度方面的其他诉求,欢迎联系我们,钉钉群号:23103656

相关实践学习
阿里云百炼xAnalyticDB PostgreSQL构建AIGC应用
通过该实验体验在阿里云百炼中构建企业专属知识库构建及应用全流程。同时体验使用ADB-PG向量检索引擎提供专属安全存储,保障企业数据隐私安全。
AnalyticDB PostgreSQL 企业智能数据中台:一站式管理数据服务资产
企业在数据仓库之上可构建丰富的数据服务用以支持数据应用及业务场景;ADB PG推出全新企业智能数据平台,用以帮助用户一站式的管理企业数据服务资产,包括创建, 管理,探索, 监控等; 助力企业在现有平台之上快速构建起数据服务资产体系
目录
相关文章
|
2月前
|
人工智能 监控 安全
管理和调度Dify工作流
Dify是一款开源的大模型应用开发平台,支持通过可视化界面快速构建AI Agent和工作流。然而,Dify本身缺乏定时调度与监控报警功能,且执行记录过多可能影响性能。为解决这些问题,可采用Dify Schedule或XXL-JOB集成Dify工作流。Dify Schedule基于GitHub Actions实现定时调度,但仅支持公网部署、调度延时较大且配置复杂。相比之下,XXL-JOB提供秒级调度、内网安全防护、限流控制及企业级报警等优势,更适合大规模、高精度的调度需求。两者对比显示,XXL-JOB在功能性和易用性上更具竞争力。
745 63
管理和调度Dify工作流
|
7月前
|
监控 安全 调度
彻底解决5大开源痛点,阿里云发布任务调度 XXL-JOB 版
阿里云任务调度XXL-JOB版 迎来重磅发布,以任务调度SchedulerX为内核,0代码改造,完全兼容开源XXL-JOB客户端接入,解决开源XXL-JOB痛点问题。
1030 94
|
1月前
|
人工智能 智能设计 算法
浙江大学联合阿里云举办的全国高校人工智能师资素养提升交流活动圆满结束丨云工开物
为推动人工智能与教育深度融合,浙江大学联合阿里云举办“2025年全国高校人工智能师资素养提升交流活动”。活动吸引121所高校及单位的579名教师参与,通过项目实例讲解、平台实践训练等方式,助力教师掌握AI技术并融入教学。活动中,浙江大学与阿里云专家分享了前沿技术和应用案例,参访浙大艺博馆与阿里云展厅,并完成AIGC辅助设计实训。未来,双方将持续推进数字化技能培训,支持高校AI人才培养。
|
20天前
|
存储 弹性计算 缓存
阿里云服务器ECS经济型、通用算力、计算型、通用和内存型选购指南及使用场景分析
本文详细解析阿里云ECS服务器的经济型、通用算力型、计算型、通用型和内存型实例的区别及适用场景,涵盖性能特点、配置比例与实际应用,助你根据业务需求精准选型,提升资源利用率并降低成本。
|
20天前
|
人工智能 弹性计算 自然语言处理
从0到1部署大模型,计算巢模型市场让小白秒变专家
阿里云计算巢模型市场依托阿里云弹性计算资源,支持私有化部署,集成通义千问、通义万象、Stable Diffusion等领先AI模型,覆盖大语言模型、文生图、多模态、文生视频等场景。模型部署在用户云账号下,30分钟极速上线,保障数据安全与权限自主控制,适用于企业级私有部署及快速原型验证场景。
|
1月前
|
人工智能 并行计算 算法
《解锁JNA与CUDA内核密码,定制专属AI算子》
JNA(Java Native Access)让Java程序轻松调用本地代码,无需复杂JNI操作,动态加载本地库并自动映射Java与C/C++语言。结合CUDA(NVIDIA并行计算平台),可高效开发自定义AI算子。CUDA内核通过分解任务充分利用GPU多核优势,满足AI算法中矩阵运算和数据处理需求。两者结合虽面临性能优化与跨平台兼容性挑战,但能充分发挥Java便捷性与CUDA高性能,为AI领域提供强大支持。
71 27
|
2月前
|
API C++ 开发者
PySide vs PyQt:Python GUI开发史诗级对决,谁才是王者?
PySide 和 PyQt 是 Python GUI 开发领域的两大利器,各有特色。PySide 采用 LGPL 协议,更灵活;PyQt 默认 GPL,商业使用需授权。两者背后团队实力雄厚,PySide 得到 Qt 官方支持,PyQt 由 Riverbank Computing 打造。API 设计上,PySide 简洁直观,贴近原生 Qt;PyQt 增加 Pythonic 接口,操作更高效。性能方面,两者表现优异,适合不同需求的项目开发。选择时可根据项目特点与开源要求决定。
167 20
|
1月前
|
存储 弹性计算 数据可视化
如何在公有云部署UE/Unity实时云渲染推流平台
以阿里云主机为例,介绍如何在公有云上部署Paraverse平行云LarkXR实时云渲染平台,支持UE、Unity等各类引擎开发的三维可视化程序上云,应用于数字孪生、教育虚仿、展览展示、元宇宙及数字人等3D/XR场景中。
|
1月前
|
人工智能 弹性计算 运维
亚太唯一,阿里云Serverless计算产品进入Forrester领导者象限
Forrester发布Serverless开发平台评估报告《Forrester Wave™: Serverless Development Platforms, Q2 2025》:在21项测评中,阿里云函数计算FC和Serverless应用引擎SAE的产品能力拿到了9项最高分。阿里云成功进入领导者象限,是国内唯一进入该象限的科技公司。
|
XML 移动开发 API
微信支付开发(7) H5支付
关键字:微信支付 微信支付v3 H5支付 wap支付 prepay_id 作者:方倍工作室原文: http://www.cnblogs.com/txw1958/p/wxpayv3_h5.html    本文介绍微信支付下的H5支付实现流程。
3597 1