让AI给你写代码,初体验(三)- AI加上格式化对话,实现对单个文件的修改/保存
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 = (".")[-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", encoding="utf-8") as f:
content = ()
(content)
except Exception as e:
print('Error: %s' % e)
content = '打开文件失败: %s' % e
finally:
return content
# 保存文件
def saveFile(self, replyMessages):
python_content = (r'```python(.*?)```', replyMessages, )
("python", python_content)
html_content = (r'```html(.*?)```', replyMessages, )
("html", html_content)
js_content = (r'```javascript(.*?)```', replyMessages, )
("javascript", js_content)
# 保存文件原子操作
def saveCode(self, programmingName, content_list):
# 生成版本号
code_file = ""
res_content = ""
now_time = ('%Y-%m-%d_%H:%M:%S', ())
i = (1, 100)
match programmingName:
case "python":
code_file = self.python_path + "pyTest_" + now_time + '_' + str(i) + ".py"
case "html":
code_file = self.html_path + "htmlTest_" + now_time + '_' + str(i) + ".html"
case "javascript":
code_file = self.js_path + "script_" + now_time + '_' + str(i) + ".js"
# 保存至文件
if code_file != "":
try:
content = content_list[0]
with open(code_file, 'w') as f:
(content)
res_content = "保存成功"
except Exception as e:
print('Error: %s' % e)
res_content = '保存失败: %s' % e
else:
res_content = "保存失败: 未找到文件类型"
return res_content
# 提交AI对话
def conversation_ask(self, message):
# 组成对话内容
ai_message = message + self.last_content
messages = [{'role': Role.USER, 'content': ai_message}]
# 提交对话
responses = (.qwen_max, messages=messages, result_format='message', stream=True,
incremental_output=True)
print('from AI:', end='')
whole_message = ''
for response in responses:
if response.status_code == :
whole_message += [0]['message']['content']
print([0]['message']['content'], end='')
else:
print('Request id: %s, Status code: %s, error code: %s, error message: %s' % (
response.request_id, response.status_code,
,
))
print('\n')
({'role': 'assistant', 'content': whole_message})
(whole_message)
return whole_message