通义灵码 AI实战《手把手教你用通义灵码写一个音乐电子小闹钟》

简介: 通义灵码DeepSeek版本相比qwen2.5,增强了深度思考和上下文理解能力,显著提升了开发效率,尤其适合代码能力较弱的运维人员,真正实现了“代码即服务”。

通义灵码是基于通义大模型的 AI 研发辅助工具,提供代码智能生成、研发智能问答、多文件代码修改、自主执行等能力,为开发者带来智能化研发体验,引领 AI 原生研发新范式。

核心能力

代码智能生成

经过海量优秀开源代码数据训练,可根据当前代码文件及跨文件的上下文,为你生成行级/函数级代码、单元测试、代码优化建议等。沉浸式编码心流,秒级生成速度,让你更专注在技术设计,高效完成编码工作。

研发智能问答

基于海量研发文档、产品文档、通用研发知识、阿里云的云服务文档和 SDK/OpenAPI 文档等进行问答训练,为你答疑解惑,助你轻松解决研发问题。

AI 程序员

具备多文件代码修改和工具使用的能力,可以与开发者协同完成编码任务,如需求实现、问题解决、单元测试用例生成、批量代码修改等。


安装方法

Visual Studio Code安装通义灵码,扩展窗口搜索tongyi lingma,找到后安装即可。(PC可以上网(⊙o⊙)哦),我这里已经安装过了,所以提示更新。

1741066786584.png

登录账号,我这里是关联的阿里云账号登录的,个人账户,可以免费试用。

image.png

更新后可以使用DeepSeek了,体验下与qwen2.5的不同之处

image.png

先问个问题,生成nginx_traffic.py

image.png

import re
from collections import defaultdict

def parse_nginx_log(log_file_path):
    """
    解析Nginx访问日志,统计出口流量。
    
    :param log_file_path: Nginx日志文件路径
    :return: 流量统计结果
    """
    traffic_stats = defaultdict(int)
    log_pattern = re.compile(r'(?P<remote_addr>\S+) \S+ \S+ \[(?P<time_local>[^\]]+)\] '
                             r'"(?P<request>[^"]*)" (?P<status>\d{3}) (?P<body_bytes_sent>\d+|-) '
                             r'"(?P<http_referer>[^"]*)" "(?P<http_user_agent>[^"]*)"')

    with open(log_file_path, 'r', encoding='utf-8') as f:
        for line in f:
            match = log_pattern.match(line)
            if match:
                data = match.groupdict()
                # 如果body_bytes_sent是'-',表示没有发送响应体
                bytes_sent = int(data['body_bytes_sent']) if data['body_bytes_sent'] != '-' else 0
                traffic_stats[data['remote_addr']] += bytes_sent

    return dict(traffic_stats)

if __name__ == "__main__":
    log_file_path = "/path/to/your/nginx/access.log"  # 替换为你的Nginx日志文件路径
    traffic = parse_nginx_log(log_file_path)
    
    print("Nginx出口流量统计 (单位: 字节):")
    for ip, total_bytes in traffic.items():
        print(f"IP: {ip}, 总流量: {total_bytes} 字节")

3分钟写一个音乐闹钟小程序,

下列操作步骤按照通义灵码AI编码实战的视频教程知道,一步步操作。

image.png

import tkinter as tk
from time import strftime

def update_time():
    # 获取当前时间并格式化
    current_time = strftime('%H:%M:%S %p')  # 格式示例:14:30:45 PM
    # 更新标签文本
    time_label.config(text=current_time)
    # 每隔1秒递归调用自身实现持续更新
    time_label.after(1000, update_time)

# 创建主窗口
root = tk.Tk()
root.title("数字时钟")
root.geometry("400x150")  # 设置窗口大小

# 创建时间显示标签
time_label = tk.Label(
    root,
    font=('Helvetica', 48, 'bold'),  # 设置字体样式
    background='black',             # 背景颜色
    foreground='white'              # 文字颜色
)
time_label.pack(anchor='center', expand=True)  # 居中对齐

# 首次调用更新时间函数
update_time()

# 启动主循环
root.mainloop()

增加定时功能,可以在界面上设定多少秒后响应,当到达定时时间后,闹钟会弹出。

image.png

之前也体验过qwen2.5版本的通义灵码能力,现在的DeepSeekR1更加智能,具备生成扩展代码的能力:

image.png

插入扩展代码,闹钟为执行成功。尝试AI修复:

触发逻辑缺失

在当前的update_time()中,原有的闹钟触发检查逻辑被覆盖,缺少了关键的时间判断条件。

修复完成后,各功能正常执行。

import tkinter as tk
import winsound
from tkinter import messagebox
from time import strftime, time

def update_time():
    current_time = strftime('%H:%M:%S %p')
    time_label.config(text=current_time)
    
    # 触发检查(新增核心逻辑)
    if alarm_time and isinstance(alarm_time, tuple):
        if time() >= alarm_time[0]:  # 时间到达判断
            trigger_alarm()
    
    # 剩余时间显示(原有优化逻辑)
    if alarm_time and isinstance(alarm_time, tuple):
        try:
            remaining = int(alarm_time[0] - time())
            if remaining >= 0:
                status_label.config(text=f"剩余时间:{remaining}秒")
        except (TypeError, IndexError):
            pass
    
    time_label.after(1000, update_time)

def set_alarm():
    global alarm_time
    try:
        seconds = int(entry.get())
        if seconds <= 0:
            raise ValueError
        # 记录触发时间(当前时间戳 + 秒数)
        alarm_time = (time() + seconds, seconds)
        status_label.config(text=f"闹钟已设置:{seconds}秒后触发")
    except ValueError:
        messagebox.showerror("错误", "请输入有效正整数")

def trigger_alarm():
    messagebox.showinfo("闹钟", "时间到!")
    alarm_window = tk.Toplevel(root)
    alarm_window.title("闹钟提醒")
    alarm_label = tk.Label(alarm_window, 
                         text="⏰ 时间到!",
                         font=('Arial', 24),
                         fg='red')
    alarm_label.pack(padx=50, pady=20)
    
    # 重置闹钟状态
    global alarm_time
    alarm_time = None
    status_label.config(text="等待设置闹钟...")
    winsound.MessageBeep(winsound.MB_ICONHAND)

# 创建主窗口
root = tk.Tk()
root.title("数字时钟+闹钟")
root.geometry("400x250")  # 增加高度容纳新控件

# 时间显示部分保持不变
time_label = tk.Label(root,
                    font=('Helvetica', 48, 'bold'),
                    bg='black',
                    fg='white')
time_label.pack(anchor='center', expand=True)

# 新增控件区域
control_frame = tk.Frame(root)
control_frame.pack(pady=10)

# 输入框和按钮
tk.Label(control_frame, text="设置倒计时(秒):").pack(side=tk.LEFT)
entry = tk.Entry(control_frame, width=10)
entry.pack(side=tk.LEFT, padx=5)
tk.Button(control_frame, 
        text="开始定时",
        command=set_alarm).pack(side=tk.LEFT)
tk.Button(control_frame, 
        text="取消",
        command=lambda: globals().update(alarm_time=None)).pack(side=tk.LEFT)


# 状态显示
status_label = tk.Label(root, 
                      text="等待设置闹钟...",
                      font=('Arial', 12))
status_label.pack(pady=5)
# 修改状态提示初始化文本
status_label.config(text="当前无激活闹钟")
# 初始化变量
alarm_time = None  # 存储(触发时间戳,设置秒数)

update_time()
root.mainloop()

image.png

选中全部代码,进行优化,对话框中输入生成时钟类。

import tkinter as tk
import winsound
from tkinter import messagebox
from time import strftime, time

class ClockApp:
    def __init__(self):
        self.root = tk.Tk()
        self.root.title("数字时钟+闹钟")
        self.root.geometry("400x250")
        
        # 初始化闹钟状态
        self.alarm_time = None
        
        # 创建界面组件
        self._create_widgets()
        self.update_time()
        self.root.mainloop()

    def _create_widgets(self):
        """创建并布局所有界面元素"""
        # 时间显示
        self.time_label = tk.Label(
            self.root,
            font=('Helvetica', 48, 'bold'),
            bg='black',
            fg='white'
        )
        self.time_label.pack(anchor='center', expand=True)
        
        # 控制面板
        control_frame = tk.Frame(self.root)
        control_frame.pack(pady=10)
        
        # 倒计时输入
        tk.Label(control_frame, text="设置倒计时(秒):").pack(side=tk.LEFT)
        self.entry = tk.Entry(control_frame, width=10)
        self.entry.pack(side=tk.LEFT, padx=5)
        
        # 操作按钮
        tk.Button(
            control_frame,
            text="开始定时",
            command=self.set_alarm
        ).pack(side=tk.LEFT)
        
        tk.Button(
            control_frame,
            text="取消",
            command=lambda: setattr(self, 'alarm_time', None)
        ).pack(side=tk.LEFT)
        
        # 状态显示
        self.status_label = tk.Label(
            self.root, 
            text="当前无激活闹钟",
            font=('Arial', 12)
        )
        self.status_label.pack(pady=5)

    def update_time(self):
        """更新时间显示和检查闹钟状态"""
        current_time = strftime('%H:%M:%S %p')
        self.time_label.config(text=current_time)
        
        # 检查闹钟触发
        self._check_alarm_trigger()
        
        # 更新剩余时间显示
        self._update_remaining_time()
        
        # 每秒更新一次
        self.time_label.after(1000, self.update_time)

    def _check_alarm_trigger(self):
        """检查是否到达闹钟时间"""
        if self.alarm_time and isinstance(self.alarm_time, tuple):
            if time() >= self.alarm_time[0]:
                self.trigger_alarm()

    def _update_remaining_time(self):
        """更新剩余时间显示"""
        if self.alarm_time and isinstance(self.alarm_time, tuple):
            try:
                remaining = int(self.alarm_time[0] - time())
                if remaining >= 0:
                    self.status_label.config(text=f"剩余时间:{remaining}秒")
            except (TypeError, IndexError):
                pass

    def set_alarm(self):
        """设置闹钟"""
        try:
            seconds = int(self.entry.get())
            if seconds <= 0:
                raise ValueError
            
            self.alarm_time = (time() + seconds, seconds)
            self.status_label.config(text=f"闹钟已设置:{seconds}秒后触发")
        except ValueError:
            messagebox.showerror("错误", "请输入有效正整数")

    def trigger_alarm(self):
        """触发闹钟提醒"""
        messagebox.showinfo("闹钟", "时间到!")
        self._show_alarm_window()
        self._reset_alarm_state()
        winsound.MessageBeep(winsound.MB_ICONHAND)

    def _show_alarm_window(self):
        """显示提醒窗口"""
        alarm_window = tk.Toplevel(self.root)
        alarm_window.title("闹钟提醒")
        tk.Label(
            alarm_window, 
            text="⏰ 时间到!",
            font=('Arial', 24),
            fg='red'
        ).pack(padx=50, pady=20)

    def _reset_alarm_state(self):
        """重置闹钟状态"""
        self.alarm_time = None
        self.status_label.config(text="当前无激活闹钟")

# 启动应用程序
if __name__ == "__main__":
    ClockApp()

image.png

对set_alarm生成单元测试

import unittest
from unittest.mock import MagicMock, patch
import time_app_optimize

@patch('time_app_optimize.messagebox')
class TestClockAppSetAlarm(unittest.TestCase):
    def setUp(self):
        self.app = time_app_optimize.ClockApp()
        self.app.entry = MagicMock()
        self.app.status_label = MagicMock()
        
        self.mock_time = 1620000000.0
        self.time_patch = patch('time_app_optimize.time', 
                              return_value=self.mock_time)
        self.time_patch.start()
        
        # 初始化确保属性存在
        self.app.alarm_time = None

    def tearDown(self):
        self.time_patch.stop()

    def test_valid_positive_integer(self, mock_msgbox):
        """测试有效正整数输入"""
        self.app.entry.get.return_value = "30"
        
        self.app.set_alarm()
        
        expected_time = (self.mock_time + 30, 30)
        self.assertEqual(self.app.alarm_time, expected_time)
        
        # 验证时间模块调用
        time_app_optimize.time.assert_called_once()
        
        self.app.status_label.config.assert_called_once_with(
            text="闹钟已设置:30秒后触发")
        mock_msgbox.showerror.assert_not_called()

    def test_invalid_string_input(self, mock_msgbox):
        """测试非数字输入"""
        self.app.entry.get.return_value = "abc"
        
        self.app.set_alarm()
        
        mock_msgbox.showerror.assert_called_once_with("错误", "请输入有效正整数")
        self.assertIsNone(self.app.alarm_time)  # 更精确的值断言

    def test_negative_integer(self, mock_msgbox):
        """测试负整数输入"""
        self.app.entry.get.return_value = "-5"
        
        self.app.set_alarm()
        
        mock_msgbox.showerror.assert_called_once_with("错误", "请输入有效正整数")
        self.assertIsNone(self.app.alarm_time)

    def test_zero_input(self, mock_msgbox):
        """测试零输入"""
        self.app.entry.get.return_value = "0"
        
        self.app.set_alarm()
        
        mock_msgbox.showerror.assert_called_once_with("错误", "请输入有效正整数")
        self.assertIsNone(self.app.alarm_time)

if __name__ == '__main__':
    unittest.main()

image.png


总结

之前也使用过qwen2.5的通义灵码,这次升级到DeepSeek,最直观的感受就是有深度思考上下文的能力。可以通过深度思考对过程中进行学习,对提高我们的技术水平有很大帮助,我们可以知道为什么?中间都处理了哪些环节,这样我们也跟着思考学习,而不是单纯等待结果。

image.png

上下文是可以聚焦整个AI参与工作的过程,使我们的每次AI干预能更加精准。

image.png

不论是qwen2.5还是DeepSeek,这种即开即用的代码生成能力确实可以大幅提高我们的生产效率。尤其是对我这代码能力比较弱的种运维人员来说,简直就是质的变化。有一些运维场景,往往需要开发一些小工具,过去苦于代码能力只能想,现在只要把我想要做什么表达出来就ok了。

代码即服务(Code as a Server)

不会没关系,以后AI全部搞定,代码看不懂(代码解释-代码注释),代码用不起来(单元测试-代码优化)。

相关文章
|
2月前
|
人工智能 自然语言处理 前端开发
最佳实践2:用通义灵码以自然语言交互实现 AI 高考志愿填报系统
本项目旨在通过自然语言交互,结合通义千问AI模型,构建一个智能高考志愿填报系统。利用Vue3与Python,实现信息采集、AI推荐、专业详情展示及数据存储功能,支持响应式设计与Supabase数据库集成,助力考生精准择校选专业。(239字)
291 12
|
4月前
|
人工智能 IDE 开发工具
通义灵码 AI IDE使用体验(3)项目优化及bug修复
本文介绍了使用通义灵码 AI IDE进行项目重构与优化的全过程,涵盖页面调整、UI更新、功能修复等内容,并展示了多次优化后的成果与仍存在的问题。
393 0
|
3月前
|
机器学习/深度学习 人工智能 机器人
AI Compass前沿速览:Nano Bananary、MCP Registry、通义DeepResearch 、VoxCPM、InternVLA·M1具身机器人
AI Compass前沿速览:Nano Bananary、MCP Registry、通义DeepResearch 、VoxCPM、InternVLA·M1具身机器人
|
4月前
|
人工智能 IDE 开发工具
通义灵码 AI IDE使用体验(2)项目重构
本文介绍了如何使用灵码IDE将一个简单的CS架构项目重构为BS架构,涉及项目依赖修改、功能迁移、自动开发Web页面等内容,验证了灵码在复杂开发任务中的能力。尽管界面美观度不足,但核心功能已实现。
460 66
|
4月前
|
人工智能 自然语言处理 前端开发
AI 调酒师上岗!Qwen3-Coder × 通义灵码完成 AI 调酒师项目实战开发
本课程通过“AI调酒师”项目实战,讲解如何使用通义灵码与Qwen3-Coder模型结合阿里云百炼平台,从需求分析、前端界面搭建、后端服务调用到整体部署的全流程开发。内容涵盖Bento UI设计、Tailwind CSS布局、语音识别与大模型内容生成,并结合MCP服务实现设计稿驱动开发,帮助开发者快速构建趣味AI应用,提升产品落地能力。
509 33
|
2月前
|
消息中间件 人工智能 安全
云原生进化论:加速构建 AI 应用
本文将和大家分享过去一年在支持企业构建 AI 应用过程的一些实践和思考。
554 36
|
2月前
|
人工智能 运维 Kubernetes
Serverless 应用引擎 SAE:为传统应用托底,为 AI 创新加速
在容器技术持续演进与 AI 全面爆发的当下,企业既要稳健托管传统业务,又要高效落地 AI 创新,如何在复杂的基础设施与频繁的版本变化中保持敏捷、稳定与低成本,成了所有技术团队的共同挑战。阿里云 Serverless 应用引擎(SAE)正是为应对这一时代挑战而生的破局者,SAE 以“免运维、强稳定、极致降本”为核心,通过一站式的应用级托管能力,同时支撑传统应用与 AI 应用,让企业把更多精力投入到业务创新。
457 30
|
3月前
|
人工智能 安全 中间件
阿里云 AI 中间件重磅发布,打通 AI 应用落地“最后一公里”
9 月 26 日,2025 云栖大会 AI 中间件:AI 时代的中间件技术演进与创新实践论坛上,阿里云智能集团资深技术专家林清山发表主题演讲《未来已来:下一代 AI 中间件重磅发布,解锁 AI 应用架构新范式》,重磅发布阿里云 AI 中间件,提供面向分布式多 Agent 架构的基座,包括:AgentScope-Java(兼容 Spring AI Alibaba 生态),AI MQ(基于Apache RocketMQ 的 AI 能力升级),AI 网关 Higress,AI 注册与配置中心 Nacos,以及覆盖模型与算力的 AI 可观测体系。
917 47
|
2月前
|
设计模式 人工智能 自然语言处理
3个月圈粉百万,这个AI应用在海外火了
不知道大家还记不记得,我之前推荐过一个叫 Agnes 的 AI 应用,也是当时在 WAIC 了解到的。
403 1

热门文章

最新文章