推广 热搜: page  关键词  红书  哪些  数据分析  链接  搜索  获取  小红  服务 

让AI给你写代码(10.3)进一步向自然语言编程方向优化,实现基于效果的局部改进(上)

   日期:2024-12-27     作者:oh9uf    caijiyuan   评论:0    移动:https://sicmodule.kub2b.com/mobile/news/11359.html
核心提示:我们开发的AI小助手,在具备调用内外部接口生成代码(参考10.1、10.2)的基础上,已经具备了初步的自然

我们开发的AI小助手,在具备调用内外部接口生成代码(参考10.1、10.2)的基础上,已经具备了初步的自然语言编程能力。 但在实际应用中仍然存在一些不方便的地方,主要的问题是
在生成和执行代码过程中,但凡有一点瑕疵就要推到重来,重新从需求描述开始;但大模型生成代码稳定性不足,并不保证下一次生成的代码比上一次更好,如果需求比较复杂,步骤较多,则问题更加严重,往往按下葫芦起了瓢,需要提高效率。

  1. 代码生成的问题主要有两类

1)自然语言描述功能有瑕疵
除了笔误,主要是描述考虑不周全,例如根据沪深300的成份股列表,按股票代码遍历,按akshare库的stock_zh_a_spot_em接口匹配最新行情,获取最新价,然后再按股票代码匹配报表数据获得股票收益,然后计算市盈率。

这样可以获得准确答案,但大概率会把代码生成为,每次遍历循环中,都取一次全市场行情以及报表数据—— 显然有更好的方法,在执行循环遍历前获得全市场行情以及全市场报表数据

2)AI生成代码不准确
例1: 按股票代码在业绩报表中匹配每股收益,然后计算TTM市盈率

 

很容易看出上述例子中,整体框架是正确的,但是按股票代码stock_code匹配数据的三个语句显然是错误的(虽然是可执行的,但结果是空)。
当然不难改正,例如错误的语句可以修正为标准的

 

例2

 
 
 

以上两个例子表明,某些情况下只需要对代码进行简单人工修正就可以得到正确的结果,并不需要再从头来一遍。

  1. 主要改进, AI在完成一轮自然语言输入,代码生成,执行之后,允许用户选择
    所以我们对 Assistant类,新编写了genCodeNew方法,改进如下
    当一轮代码生成完成后,用户可以选择
    1)按原需求描述,重新生成代码
    2)在存放临时目录里,手工修改代码后,自动执行
    3)重新输入自然语言描述,再来一次
    4)执行后续操作(代码分析,生成说明,入知识库等…
    待执行成功后继续,完成代码功能分析,生成代码描述,保存到本地代码库等流程。

以下代码用了两层循环,外循环针对exec_stat执行状态的变化,起始是1(生成代码) 后续会根据用户的选择变化(0-表示执行成功退出 1-表示需要生成代码; 2-表示需要执行代码 3-表示需要输入需求描述, 内循环是在exec_stat=3代表完成一轮,等待用户输入后续,请指示下一步操作(选1/2/3/4
1- 重新生成代码
2- 重新执行
3- 重新输入需求描述
4- 退出,执行后续
相对简单,可以对照代码查看

 

相应的主程序改成调用 Assistant.genCodeNew方法

 
  1. 次要改进
    本次更新顺便改进了其他两个地方

1)支持用户输入自然语言需求描述时,按可换行的顺序格式输入需求
原先的input方法遇到回车符号就会退出,如果遇到以下格式

请按下列步骤生成计算沪深300静态市盈率的python代码:
1、 获得离当前日期前一年的最后一天,按XXXX1231格式输出到lastyear_reportDate
2、 使用pythonRepository库的getReportDataLocal(report_date=lastyear_reportDate)方法获取上年末的报表lastyear_report
3、 使用pythonRepository库的getHS300List方法获得沪深300成份股,生成stock_list列表
4、 使用akshare库的stock_zh_a_spot_em接口获取全市场行情,再遍历stock_list列表,按股票代码匹配全市场行情,获得当前股价,然后用同一股票代码匹配lastyear_report每股收益,除以当前股价,获得该股票的市盈率,最后结果在stock_list列表增加一列{静态市盈率},并打印该列表
5、 将计算完毕的stock_list按csv形式保存于本地,文件名为HS300_Static_PE,路径是/home/cfets/myquant/fundamentalData,返回值为保存结果

就必须压缩为一行,非常别扭
请按下列步骤生成计算沪深300静态市盈率的python函数calc_HS300_static_pe,无入参: 1、获得离当前日期前一年的最后一天,按XXXX1231格式输出到lastyear_reportDate;2、使用pythonRepository库的getReportDataLocal(report_date=lastyear_reportDate)方法获取上年末的报表lastyear_report;3、使用pythonRepository库的getHS300List方法获得沪深300成份股,生成stock_list列表;4、使用akshare库的stock_zh_a_spot_em接口获取全市场行情,再遍历stock_list列表,按股票代码匹配全市场行情,获得当前股价,然后用同一股票代码匹配lastyear_report每股收益,除以当前股价,获得该股票的市盈率;5、最后结果合并在stock_list列表,形成’股票代码’、‘每股收益’、‘股价’、'静态市盈率’四列,并打印该列表,然后按csv形式保存于本地,文件名为HS300_Static_PE,路径是/home/cfets/myquant/fundamentalData,返回值为保存结果。

所以改进为(参考上述主程序代码

 

即支持
1、 … 回车
2、… 回车
3、…

按两下回车即可退出

  1. 根据代码自动生成文件名方法,改成按正则表达式匹配

即按pattern = r’b(?<!/)[a-zA-Z0-9_.]+.pyb’匹配 XXXX.py的文件名

本文地址:https://sicmodule.kub2b.com/news/11359.html     企库往 https://sicmodule.kub2b.com/ , 查看更多

特别提示:本信息由相关用户自行提供,真实性未证实,仅供参考。请谨慎采用,风险自负。

 
 
更多>同类最新资讯
0相关评论

文章列表
相关文章
最新动态
推荐图文
最新资讯
点击排行
网站首页  |  关于我们  |  联系方式  |  使用协议  |  版权隐私  |  网站地图  |  排名推广  |  广告服务  |  积分换礼  |  网站留言  |  RSS订阅  |  违规举报  |  鄂ICP备2020018471号