这几天研究通过通义千问AI大模型编程,有三点感受,分享给大家。如果将来有新的感受,会继续分享。
1、清晰的提示词指令,让输出的成功率更高
2、了解点代码知识,虽不会写,但能看的懂
3、定位代码问题的能力
通过提示词的方法使用通义千问AI大模型编程的方法,已经在前一篇文章中分享过了,这篇文章将介绍定位问题的能力和方法。
在使用AI进行代码编程时,AI大模型有时候不能完全理解你的意思,即便输入了几次提示词,依然得不到期望的结果,这时候,解决问题的方法就是打印日志,定位到出现问题的那一行代码,然后告诉AI,这一行代码写错了。
3.1 案例
以我使用AI通义千问做网站开发为例,分享一个问题定位的过程。我通过提示词要求AI大模型做一个饼图的统计模块,AI给出的views.py代码如下:
def record_count_by_tag(request):
is_admin = request.user.is_superuser
user = request.user
# 初始化表单
if request.method == 'GET':
form = DateRangeForm(request.GET)
else:
form = DateRangeForm()
if form.is_valid():
start_date = form.cleaned_data.get('start_date')
end_date = form.cleaned_data.get('end_date')
stat_type = form.cleaned_data.get('stat_type')
else:
start_date = None
end_date = None
stat_type = None
# 根据用户权限和日期筛选记录
if is_admin and stat_type == 'by_tag':
all_records = Record.objects.all()
if start_date and end_date:
all_records = all_records.filter(date__range=(start_date, end_date))
elif is_admin and stat_type == 'by_creator':
all_records = Record.objects.all()
if start_date and end_date:
all_records = all_records.filter(date__range=(start_date, end_date))
else:
all_records = Record.objects.filter(user=user)
if start_date and end_date:
all_records = all_records.filter(date__range=(start_date, end_date))
# 统计标签
if is_admin and stat_type == 'by_tag':
all_tag_counts = all_records.values('tag').annotate(count=Count('tag')).order_by('-count')
elif is_admin and stat_type == 'by_creator':
all_tag_counts = all_records.values('user__username').annotate(count=Count('id')).order_by('-count')
else:
all_tag_counts = all_records.values('tag').annotate(count=Count('tag')).order_by('-count')
# 生成饼图的函数
def generate_pie_chart(data, title, labels=None):
# 设置中文字体
plt.rcParams['font.sans-serif'] = ['SimHei'] # 使用黑体或其他支持中文的字体
plt.rcParams['axes.unicode_minus'] = False # 解决负号显示问题
if not data: