让AI给你写代码,初体验(一)

我尝试AI编程主要是解决,我熟悉后台开发,但不熟悉前台的开发,自己写web应用前端页面搞的非常纠结,想通过AI解决这个痛点,于是入坑。

一开始我尝试了阿里的通义灵码,尝试使用akshare库,编制一些简单获取筛选数据代码,但感觉存在一些问题,例如
“使用akshare最新接口,查询全市场行情后,再在其中筛选出600029的最新市场价”
1 可能是因为我选的是开源库接口并不是太稳定,以及按老接口编制的程序信息在数量上压倒最新的接口,代码准确率偏低
在这里插入图片描述
注意这里至少有两个问题:
1) ak.stock_zh_a_spot() 是新浪接口,非常的慢
2) akshare新版本把列名的返回值改成中文,而给出的是英语

所以我尝试纠错,要求AI,请使用akshare最新接口,但是结果不尽如人意
在这里插入图片描述
AI在编造接口!!! ak.stock_zh_a_spot_newest() 是什么鬼…

注意,我希望是使用较快的 ak.stock_zh_a_spot_em()

2 其次目前通义灵码需要手工粘贴代码,就是只能支持代码片段,很难进行工程化

--------------------失望的分隔线-----------------------------

然后我尝试使用 千问(qwen)大模型的限时免费版本——qwen_max

千问大模型API的申请可参考 ,官方 千问API以及用户经验 [从零开始 通义千问大模型本地化到阿里云通义千问API调用](https://blog.csdn.net/qq_51116518/article/details/134448138?utm_medium=distribute.pc_relevant.none-task-blog-2~default~baidujs_baidulandingword~default-1-134448138-blog-135868918.235%5Ev43%5Epc_blog_bottom_relevance_base6&spm=1001.2101.3001.4242.1&utm_relevant_index=4)

这是支持多轮对话的场景代码(注意我略去了 API token 请自行补充)

from http import HTTPStatus
import dashscope
from dashscope import Generation
from dashscope.api_entities.dashscope_response import Role
def conversation_mutual():
    messages = []
    
    while True:
        message = input('user:')
        messages.append({'role': Role.USER, 'content': message})
        whole_message = ''
        responses = Generation.call(Generation.Models.qwen_max, messages=messages, result_format='message', stream=True, incremental_output=True)
        print('system:',end='')
        for response in responses:
            if response.status_code == HTTPStatus.OK:
                whole_message += response.output.choices[0]['message']['content']
                print(response.output.choices[0]['message']['content'], end='')
            else:
                print('Request id: %s, Status code: %s, error code: %s, error message: %s' % (
                    response.request_id, response.status_code,
                    response.code, response.message
                ))
            
    print()
    messages.append({'role': 'assistant', 'content': whole_message})
if __name__ == '__main__':
    conversation_mutual()

我们来看一下测试效果
在这里插入图片描述
注意,千问提供的这段代码需要修改才能运行的,例如返回值代码需要修改为sh600029,返回值需要中文等等,问题是首先要解决ak.stock_zh_a_spot() 是很慢的接口,让我们再来精进一下**: stock_zh_a_spot()较慢,请使用akshare较快的实时行情接口,例如东财的接口**
在这里插入图片描述
执行代码报错,显然返回值里没有‘当前价’
在这里插入图片描述

于是告知AI,stock_zh_a_spot_em()返回值,当前价不存在在这里插入图片描述

AI完成修改,这次执行成功了

在这里插入图片描述

当然千问AI仍然有一定的可能胡编接口,需要主人对编程和相关库接口有一定的了解,才能逐步矫正,当然实际应用不需要做到完全没有问题,一般问题,直接改代码就成。

完成代码生成,接下来就要想办法把代码保存到本地可执行文件,很容易想到,千问提供的内容,引入正则表达式筛选’''pyhon … ‘’'之间的内容,保存为py代码脚本即可,

pyContent = re.findall(r'```python(.*?)```', whole_message, re.DOTALL)

我们在接入千问API程序的基础上略做改进

from http import HTTPStatus
import dashscope
import re
from dashscope import Generation
from dashscope.api_entities.dashscope_response import Role

def conversation_mutual():
   
    
    messages = []
    
    while True:
        message = input('user:')
        messages.append({'role': Role.USER, 'content': message})
        whole_message = ''
        responses = Generation.call(Generation.Models.qwen_turbo, messages=messages, result_format='message', stream=True, incremental_output=True)
        print('system:',end='')
        for response in responses:
            if response.status_code == HTTPStatus.OK:
                whole_message += response.output.choices[0]['message']['content']    
                print(response.output.choices[0]['message']['content'], end='') 
            else:
                print('Request id: %s, Status code: %s, error code: %s, error message: %s' % (
                    response.request_id, response.status_code,
                    response.code, response.message
                ))
        print('\n')   
        #每轮对话都进行正则过滤
       targetPath="/home/cfets/gitea/pyWebTest1/server/"   #保存目录
       fileName=targetPath+"test2.py"    #保存文件名
       
       #print('message:'+message)
       #对两个```之间内容进行萃取
       pyContent = re.findall(r'```python(.*?)```', whole_message, re.DOTALL)
       #print('pyContent:'+pyContent[0])

       #保存至文件
       with open(fileName, 'w') as f:
       f.write(pyContent[0])
                
                
    print()
    messages.append({'role': 'assistant', 'content': whole_message})

if __name__ == '__main__':
    conversation_mutual()

保存为test2,执行成功
在这里插入图片描述
后续准备利用AI搭建一个Flask轻量级的前后台应用,且听下回分解

  • 10
    点赞
  • 8
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

zhyuli

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

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

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

打赏作者

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

抵扣说明:

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

余额充值