上一篇中,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",

最低0.47元/天 解锁文章
1456

被折叠的 条评论
为什么被折叠?



