让AI给你写代码(10.4)更贴近自然语言构建代码——尝试分步骤匹配本地接口库执行完整任务

STAMP框架:为GUI智能体构建显式记忆,攻克自动化测试健忘症 在自动化测试与机器人流程自动化(RPA)领域,智能体需要理解并操作图形用户界面(GUI)。传统方法依赖即时感知,但面对复杂、多步骤的任务流时,智能体常因缺乏持续记忆而失败,例如无法在弹窗干扰后恢复之前的浏览状态。这引出了对显式记忆机制的需求,其核心原理是为智能体设计一个独立、可读写的存储模块,使其能主动记录关键任务状态并在需要时精准检索。该技术的核心价值在于提升智能体在长链条、多中断场景下的鲁棒性与任务完成率,是构建可靠自动化流程的关键。STAMP(Scalable Training of Agents w 阅读详情

之前的一系列内容,我们逐步拓展了AI根据中文提示自动编程的能力,但正如 让AI给你写代码(10.1): 按接口编程的思想,统一利用内部和外部的接口,逐步扩展和提升AI编程能力 中所述, 目前中文提示更偏向于使用中文编程,即类似于详细设计中描述程序过程以及所希望使用的接口方法(函数),完成该接口方法的代码构建后,再生成该接口方法的功能描述,结合调用该接口方法的方式,储存于ES的接口索引,然后可以用通过自然语言匹配接口索引中相关接口方法描述,并驱动执行相应接口方法。

自然而然,当我们积累了一部分可用接口方法资产后,就需要向前迈一步,能否按更贴近自然语言的方式自动有序的匹配多个接口方法,完成预设的任务?

1、需求

ps://blog.youkuaiyun.com/zhyuli/article/details/143321863)中计算了沪深300所有成份股的动态市盈率、TTM市盈率和市净率,现在准备按下列输入计算 沪深300平均动态市盈率、TTM市盈率和市净率:

1 计算沪深300平均动态市盈率,按以下步骤
步骤1: 计算沪深300的动态市盈率
步骤2: 计算指定指标的平均值

希望按

  1. 自动匹配 “步骤1 计算沪深300的动态市盈率” 2) 根据1)计算结果,匹配“步骤2,计算指定指标的平均值” 完成计算给出最后值

2、难点


根据设想,步骤1的输出结果应该是步骤2的输入,那么存在2个问题
1 自然语言表达上步骤2如何引用步骤1的输出结果
2 具体在python程序内,依次执行步骤1和步骤2对应的方法,如何保存步骤1的输出,并在调用步骤2匹配的方法时作为输入一起执行。

解决问题1:
由前述博文所知,计算完成的指标是保存在本地文件中,并且希望能通用计算动态市盈率、TTM市盈率和市净率等指标,所以输入自然语言提示(prompt)修改为:

1 计算沪深300平均动态市盈率,按以下步骤
步骤1: 计算沪深300的动态市盈率
步骤2: 计算指定指标的平均值,按本地文件{local_file}以及指标为动态市盈率

并且按步骤2的表述,并参照前文的方法由AI自动生成代码和接口方法描述,需求描述如下:

请生成从本地文件获得列表计算平均值的python函数calc_avg_from_localFile,输入值为本地文件名localFile和指标名i_name,按localFile获得本地文件后转成dataframe,并按指标名计算平均值,打印并返回值,如果发生异常则打印异常并反回失败。
并按本地文件名/home/cfets/myquant/fundamentalData/HS300_PE.csv指标名为“动态市盈率”计算案例。

代码略过

储存在接口方法索引es_repository-interface_new的描述如下:

计算指定指标的平均值,可以使用pythonRepository库的calc_avg_from_localFile接口,入参按为本地文件名localFile和指标名i_name,打印并返回指标的平均值,使用python编码,代码格式为python...

解决问题2:
主要的麻烦是AI小助手主程序执行代码用的是exec(代码,global)方法没有返回值,好在执行代码的所有变量,包括返回值都存在global变量里。

global:: {
   
   '__name__': 'assistant.aiAssistant_old', '__doc__': None, '__package__': 'assistant', '__loader__': ...... , 'quit': Use quit() or Ctrl-D (i.e. EOF) to exit, 'exit': Use exit() or Ctrl-D (i.e. EOF) to exit, 'copyright': Copyright (c) 2001-2022 Python Software Foundation.
All Rights Reserved.

Copyright (c) 2000 BeOpen.com.
All Rights Reserved.

All Rights Reserved., 'credits':     Thanks to CWI, CNRI, BeOpen.com, Zope Corporation and a cast of thousands
   ..., 'Assistant': <class 'assistant.aiAssistant_old.Assistant'>, 'calc_HS300_pe': <function calc_HS300_pe at 0x7f04a8a3acb0>, 'file_name': '/home/cfets/myquant/fundamentalData/HS300_PE.csv'} 

其中calc_HS300_pe是计算沪深300动态市盈率的方法,而file_name则是调用calc_HS300_pe方法代码获得其返回值的变量,也就是按步骤1生成的代码中的变量

# 导入所需库
from pythonRepository import calc_HS300_pe

# 调用函数计算沪深300指数成分股的动态市盈率
file_name = calc_HS300_pe()

# 打印文件名
print(f"动态市盈率数据已保存至: {
     
     file_name}")

以上两个问题有基本解决思路后,我们看一下整体解决方案

3、代码


按分步骤匹配的总体步骤,我们分为主程序aiTestChain.py、小助手生成、执行、分析代码aiAssistant_chain.py两部分

主程序aiTestChain.py:

import... 

def ai_calc_fun(step_prompt:str,re_value,llm: BaseLLM):
    # 在prompt中提取变量,如果有变量则将re_value赋值给变量
    pattern =  r'\{(.*?)\}'  # 正则表达式模式匹配大括号内的内容
    if len(re.findall(pattern, step_prompt)) > 0:  # 判断是否匹配到变量
        v_name = "{"+re.findall(pattern, step_prompt)[0]+"}"
        v1 = {
   
   v_name: re_value}
        step_prompt = step_prompt.replace(v_name, str(v1[v_name]))  # 替换prompt中的变量

    step_prompt = step_prompt.split(" ")[1]

    # print(f"prompt:: %s " % step_prompt)
    similarDocs = assistant.local_interface_db.searchKnowledge(step_prompt)

    # print('similarDocs:: ', similarDocs)
    summary_prompt = "".join([doc.page_content for doc in similarDocs
「文智助手」全场景办公AI助理AI+OPC全流程实践方案(大赛作品) 阅读详情

相关推荐

《AI实战嵌入式Agent +MCP+skill》课时2.5|定时器实战

本课讲解定时器时基单元原理,通过PSC、ARR、CNT三寄存器配合实现精确周期控制。以84MHz时钟为例,计算得PSC=8399、ARR=9999可实现1秒溢出周期。采用HAL_TIM_Base_Start_IT启动定时器更新中断,在HAL_TIM_PeriodElapsedCallback中处理周期任务,实现非阻塞、高精度的定时。相比HAL_Delay的阻塞式延时,定时器中断方案不占用主循环,支持并发操作,是嵌入式系统中实现周期任务的高效方式。

现任某外企的算法工程师!专注于人工智能、嵌入式、FPGA、论文写作四大主题的教程和经验分享!辅导请➕v :sci666888999 178

SNAP实战:Sentinel-1 GRD数据从预处理到后向散射系数生成全流程解析

本文详细解析了Sentinel-1 GRD数据从预处理到后向散射系数生成的全流程,包括辐射定标、噪声处理、地形校正等关键步骤。通过SNAP软件实战操作,帮助用户掌握SAR影像处理技巧,提升数据质量与分析效率,适用于地表变化监测、灾害评估等应用场景。

weixin_29239661的博客 536

创建可视化机房

(3)窗户位置创建好以后需要对窗户的墙面镂空位置进行修补,具体操作为,选中镂空位置的顶点(这里必须是选择一个平面的顶点,不要跨平面选择),实际操作如下图:选择点以后,鼠标右键,选择【从顶点创建边/面】,或者按F键,随后对其他镂空位置进行相同操作;(2)将【物体模式】修改为【编辑模式】,选中-x对应面的所有顶点,移动顶点位置,其他放小调整按照同理,找到选中对应面的所有顶点,移动位置即可;调整动画事件轴上的线,选中关键帧的时间,调整模型的位置或者旋转角度,具体根据插入关键帧菜单选择的项进行模型的相关调整。

SmileBu丿㦌的博客 2064

AF3​​​​​​​ Msa、TemplateHit、HitMetadata类解读

Msa:处理 多序列比对 (MSA) 结果,为 AlphaFold3 提供 序列进化信息。 TemplateHit:存储 查询序列与模板结构的比对信息,用于 筛选模板。 HitMetadata:提供 比对模板的 PDB 结构信息,帮助 解析和使用模板数据。

qq_27390023的博客 818

可控异常的契约化设计:在 ABAP 中用 CX_STATIC_CHECK 把可预期错误变成接口的一部分

文章摘要: 本文探讨了ABAP系统中异常处理的工程化设计原则,强调将可预期的业务异常作为接口契约的一部分。核心观点是:对于调用方能够合理处理的错误情况,应使用继承自CX_STATIC_CHECK的受检异常,通过方法签名强制调用方处理或显式转发。文章对比了ABAP三大异常根类的适用场景,提出"三问法"判断异常是否适合受检处理,并给出了包含上下文信息的异常类实现示例。通过Fiori文件上传案例,展示了如何在分层架构中合理传递和转换异常,最终在OData服务层将业务异常映射为标准错误响应。这种

2007 年 ~ 2025 年,深耕 SAP 技术 18 年 3063

手把手教你学simulink(42.1)--储能系统场景示例:基于Simulink的电池+超级电容器混合储能系统

混合储能系统(HESS)结合了电池和超级电容器的优点,能够在满足高功率需求的同时提供较长的持续放电时间。这种组合特别适合用于电动汽车、可再生能源发电系统、电网频率调节等应用场景。本项目将详细介绍如何在MATLAB/Simulink中搭建一个完整的基于电池和超级电容器的混合储能系统,并提供具体的代码实现和设计步骤。如果你需要实现更复杂的控制逻辑,可以使用MATLAB Function模块。以下是一个简单的例子,展示了如何在该模块中实现一个条件逻辑,以分配电池和超级电容器的充放电任务。Matlab。

MHD0815的博客 542

[Dify 实战] 如何在内网环境部署 Dify 应用:彻底离线的企业级方案解析

企业内网环境如何离线部署Dify?本文提供详细教程:Dify作为开源AI平台,支持完全离线部署,无需外网访问。文中介绍两种部署方式:推荐使用Docker一键部署,也可选择源码安装定制化方案。重点讲解内网模型配置(支持Ollama/GPT-OSS等)、知识库存储(MinIO/PostgreSQL)及内网代理设置,并给出常见问题排查方法。该方案适用于金融、政府等对数据安全要求高的场景,确保敏感数据不泄露,实现完全本地化的AI应用闭环。

技术小甜甜:传播可落地技术,帮助个人和企业降低解决真实场景问题的成本 452

【深度学习】Progressive Distillation for Fast Sampling of Diffusion Models

这种方法通过迭代地将一个需要较多步骤的模型(称为教师模型)蒸馏成一个需要较少步骤的学生模型,每次迭代都将采样步骤减半,直到达到所需的采样步骤数量。通过渐进式蒸馏,论文将原始需要8192步采样的模型成功蒸馏为只需4步采样就能取得接近的生成质量的新模型,大幅提高了扩散模型的推理效率。这篇论文提出了一种"渐进式蒸馏"(Progressive Distillation)的方法,来大幅降低用于生成对抗网络(GAN)的扩散模型(Diffusion Model)在推理阶段的采样步数,从而提高其推理效率。

q742971636的博客 1786

Qt入门教程【Core篇】singal and slot信号与槽

Qt中信号与槽singal and slot

小鱼酱的博客 2449

IMSL CNL 7.0.0 (x86-64)Crack

IMSL CNL 7.0.0 (x86-64)Crack intel的算法库破解文件,这是C++版本的破解文件

计算机控制技术及应用

《计算机控制技术及应用》通过总结作者的科研成果和吸收国内外的先进理论、方法和技术,以计算机控制系统的网络化、开放化、智能化和集成化发展趋势为主线索,主要介绍计算机控制系统的基本概念和计算机控制系统的典型形式,计算机控制系统的数学描述与基本分析方法,以及数字PID控制器、最少拍控制系统、达林算法、状态变量设计法等设计方法及其各种改进算法。重点突出计算机控制系统输入输出通道接口的设计方法和典型控制系统的设计案例与实现方法等。

假人有限元模型

假人模型,车辆碰撞假人有限元模型,适合做乘员安全的研究者利用

WINCC7.3破解文件

WINCC7.3硬件够破解文件,有需要的下载!WINCC7.3硬件够破解文件,有需要的下载!

上一篇: 让AI给你写代码(10.3)进一步向自然语言编程方向优化,实现基于效果的局部改进(下):实例介绍
zhyuli
博客等级 码龄10年 326粉丝 57原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

zhyuli

您的鼓励是对我付出努力一种赞赏

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值