让AI给你写代码,初体验(三)- AI加上格式化对话,实现对单个文件的修改/保存

上一篇中,AI生成web应用初步解决了简单web应用生成,但是存在两方面的问题
1) 无法向AI提供增量需求,特别是一个对话结束之后,只能把全部需求(包括新需求)再描述一遍
2) 无法用AI对存量代码进行修改,代码存在一定的不稳定性
当然解决的思路很简单,只要能让ai能读入单个文件,然后就可以通过对话驱动AI修改代码了,问题在于千问(Qwen)大模型不能读取本地文件… 怎么办,换个思路,读取本地文件根本不需要AI,只需要程序读取后喂给AI即可, 所以对单个文件的修改和保存可以归纳为:
主人: 要求打开本地指定代码
小助手: 打开本地指定代码,并反显
主人:要求结合这段代码和新需求,增加一个功能
小助手: 将这段代码和新需求提交给AI,并反显AI给出的建议
主人: 要求修改
小助手:将修改要求提交给AI,并反显AI给出的建议
主人:要求合并代码
小助手:将合并代码的要求提交AI,并反显
主人: 要求保存代码
小助手:将AI给的代码提取保持
主人:退出对话
小助手:结束对话
实际上我们只要设计一个代理小助手,他要做的事情分为两类,一类是基本确定的事情,可以用格式化对话,正则表达式提取关键信息,形成操作方法,一类是需要转交给AI进行处理的方法,于是做了个小助手程序assist.py(省略 import和 API Key,请自行补充)

class Assistant:
    def __init__(self):
        self.last_content = ""
        self.last_AI_message = ""
        self.python_path = "/home/cfets/gitea/pyWebTest1/example/server/"
        self.html_path = "/home/cfets/gitea/pyWebTest1/example/templates/"
        self.js_path = "/home/cfets/gitea/pyWebTest1/example/static/"

    def setLastContent(self, content):
        self.last_content = content

    def setLastAImessage(self, message):
        self.last_AI_message = message

    def getLastContent(self):
        return self.last_content

    def getLastAImessage(self):
        return self.last_AI_message

    def genAImessage(self, newMsg):
        return newMsg + self.last_content

    # 打开文件
    def openFile(self, programmingName):
        file_suffix = programmingName.split(".")[-1]
        match file_suffix:
            case "py":
                resources_file = self.python_path + programmingName
            case "html":
                resources_file = self.html_path + programmingName
            case "javascript":
                resources_file = self.js_path + programmingName
        try:
            with open(resources_file, "r", 
评论
成就一亿技术人!
拼手气红包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、付费专栏及课程。

余额充值