阿里 “通义灵码” 真的 “灵吗”,全保姆级实操

news2024/11/25 15:48:19

 最近很多朋友,都在关注阿里公测的“通义灵码”,我索性也安装了,准备看看它真的有说的那么“灵吗”?

图片

一、安装

官网:https://tongyi.aliyun.com/lingma/

安装方式:https://tongyi.aliyun.com/lingma/download

帮助手册:https://help.aliyun.com/document_detail/2590613.html

补充几个安装步骤:

1、我用的是IDEA,各位IDEA的小伙伴要注意从插件商店去安装,搜索“TONGYI Lingma”。

图片

2、安装完成后要重启,重启后可能会有一定的加载过程,比较慢。

图片

3、重启后,IDEA会提示你灵码要登录。

图片

图片

4、点击登录后会进入阿里云登录界面,登录自己的阿里账号。

图片

图片

图片

5、登录成功后,可以看看右边的栏目中找到“通义灵码”的插件,点击后即可对话。

图片

6、快捷键。

图片

二、初探

一)看看聊闲话的能力

安装这个的目的就是为了让它帮咱们写代码,现在一起来看看他写代码的能力,首先我尝试的问了一些题外话:

1、开发团队的问题

图片

回答很官方,哈哈。

2、看看它会多少种语言

图片

由于截图有限我把他的内容整理出来,能明确的是102种:

作为一款智能编码助手,通义灵码(TONGYI Lingma)具备处理多种编程语言的能力,能够理解并为用户提供以下主要编程语言的相关支持:

通用编程语言:

Java、Python、C、C++、C#、JavaScript、TypeScript、Rust、Swift、Go、Kotlin、Scala、Ruby、PHP、Perl、Objective-C、Dart、Erlang、Haskell、Lua、Julia、Groovy、R、Matlab

Web开发相关:

HTML/CSS、React、Vue.js、Angular、Svelte、jQuery、Bootstrap、Tailwind CSS、Webpack、Gatsby、Next.js、Nuxt.js、Jekyll、WordPress、Drupal、Laravel、Django、Flask、Express.js、Fastify、Node.js

移动开发:

Android (Java/Kotlin)、iOS (Swift/Objective-C)、Flutter、React Native

数据库与数据处理:

SQL (MySQL, PostgreSQL, SQLite, Oracle, SQL Server, etc.)、

NoSQL (MongoDB, Cassandra, Redis, Elasticsearch, etc.)、

GraphQL、Pandas、NumPy、SciPy、pandas-SQLAlchemy、dplyr (R)

脚本与自动化:

Bash、PowerShell、Ansible、Terraform、Chef、Puppet

数据分析与科学计算:

NumPy、Pandas、SciPy、Matplotlib、Seaborn、scikit-learn、TensorFlow、PyTorch、Keras、Theano、Spark MLlib、R Shiny

云计算与容器化:

Docker、Kubernetes、AWS SDKs、Azure SDKs、Google Cloud SDKs、OpenStack、Terraform、CloudFormation

其他工具与框架:

Git、Jenkins、Travis CI、CircleCI、GitHub Actions、Docker Compose、Makefiles、JUnit、pytest、Mocha、Chai、Jest、Enzyme、ESLint、Prettier、Black、Flake8、SonarQube、Jupyter Notebook

以上列举了通义灵码能够提供支持的部分编程语言、框架、库和服务。

3、是否能判断我当前的代码环境和开发环境

图片

嗯~意料之中吧。

三、看看发力点

一)代码补全

直接上干货,我在service中增加了一个方法,只给它把注释写好,让他来补写代码:

图片

组合键ALT + P:

图片

Tab键将代码做实,回车后会自动提示下面的代码:

图片

但是显然还没完成,我们在方法中间再让它补充一下:

图片

这次就完美了,哈哈总体来说,简单的代码还是可以写的。

图片

二)再看看查问题的能力

1、直白问题查找

图片

回答挺全面的,因为问题就很模糊,回答自不用说了。

三)选中代码进行bug查找

选中左边的文件认为有问题的代码,在右边的对话框中填入“/查找问题”,回车。

图片

图片

图片

从这些原因中进行分析和查找,多半能解决。

四)对问题进行搜索

解答大多数来自“stackoverflow”

图片

图片

四、尝试让他写个增删改查

下面我以Java为例,用rouyi框架做演示,让它来写一个增删改查试试:

一)先写Controller

图片

package com.example.app.controller.system;

import java.util.List;
import java.util.stream.Collectors;
import javax.servlet.http.HttpServletResponse;
import org.apache.commons.lang3.ArrayUtils;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.security.access.prepost.PreAuthorize;
import org.springframework.validation.annotation.Validated;
import org.springframework.web.bind.annotation.DeleteMapping;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.PathVariable;
import org.springframework.web.bind.annotation.PostMapping;
import org.springframework.web.bind.annotation.PutMapping;
import org.springframework.web.bind.annotation.RequestBody;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;
import org.springframework.web.multipart.MultipartFile;
import com.example.app.common.annotation.Log;
import com.example.app.common.core.controller.BaseController;
import com.example.app.common.core.domain.AjaxResult;
import com.example.app.common.core.domain.entity.CustomUser;
import com.example.app.common.enums.BusinessType;
import com.example.app.common.utils.SecurityUtils;
import com.example.app.common.utils.StringUtils;
import com.example.app.common.utils.poi.ExcelUtil;
import com.example.app.system.service.ICustomUserService;

/**
 * 自定义用户信息
 * 
 * @author Your Name
 */
@RestController
@RequestMapping("/system/customuser")
public class CustomUserController extends BaseController
{
    @Autowired
    private ICustomUserService customUserService;

    /**
     * 获取自定义用户列表
     */
    @PreAuthorize("@ss.hasPermi('system:customuser:list')")
    @GetMapping("/list")
    public TableDataInfo list(CustomUser customUser)
    {
        startPage();
        List<CustomUser> list = customUserService.selectCustomUserList(customUser);
        return getDataTable(list);
    }

    @Log(title = "自定义用户管理", businessType = BusinessType.EXPORT)
    @PreAuthorize("@ss.hasPermi('system:customuser:export')")
    @PostMapping("/export")
    public void export(HttpServletResponse response, CustomUser customUser)
    {
        List<CustomUser> list = customUserService.selectCustomUserList(customUser);
        ExcelUtil<CustomUser> util = new ExcelUtil<CustomUser>(CustomUser.class);
        util.exportExcel(response, list, "自定义用户数据");
    }

    // ... (省略导入功能相关方法,若需要请自行添加)

    /**
     * 根据自定义用户ID获取详细信息
     */
    @PreAuthorize("@ss.hasPermi('system:customuser:query')")
    @GetMapping(value = { "/", "/{customUserId}" })
    public AjaxResult getCustomUserInfo(@PathVariable(value = "customUserId", required = false) Long customUserId)
    {
        if (StringUtils.isNotNull(customUserId))
        {
            CustomUser customUser = customUserService.selectCustomUserById(customUserId);
            return AjaxResult.success(customUser);
        }
        return AjaxResult.error("Invalid custom user ID");
    }

    /**
     * 新增自定义用户
     */
    @PreAuthorize("@ss.hasPermi('system:customuser:add')")
    @Log(title = "自定义用户管理", businessType = BusinessType.INSERT)
    @PostMapping
    public AjaxResult add(@Validated @RequestBody CustomUser customUser)
    {
        if (!customUserService.checkCustomUserNameUnique(customUser))
        {
            return error("新增自定义用户'" + customUser.getUserName() + "'失败,登录账号已存在");
        }
        // ... (根据实际需求添加其他唯一性校验,如手机号、邮箱等)

        customUser.setCreateBy(getUsername());
        // ... (如有需要,进行密码加密或其他初始化操作)
        return toAjax(customUserService.insertCustomUser(customUser));
    }

    /**
     * 修改自定义用户
     */
    @PreAuthorize("@ss.hasPermi('system:customuser:edit')")
    @Log(title = "自定义用户管理", businessType = BusinessType.UPDATE)
    @PutMapping
    public AjaxResult edit(@Validated @RequestBody CustomUser customUser)
    {
        customUserService.checkCustomUserAllowed(customUser);
        if (!customUserService.checkCustomUserNameUnique(customUser))
        {
            return error("修改自定义用户'" + customUser.getUserName() + "'失败,登录账号已存在");
        }
        // ... (根据实际需求添加其他唯一性校验,如手机号、邮箱等)

        customUser.setUpdateBy(getUsername());
        return toAjax(customUserService.updateCustomUser(customUser));
    }

    /**
     * 删除自定义用户
     */
    @PreAuthorize("@ss.hasPermi('system:customuser:remove')")
    @Log(title = "自定义用户管理", businessType = BusinessType.DELETE)
    @DeleteMapping("/{customUserIds}")
    public AjaxResult remove(@PathVariable Long[] customUserIds)
    {
        if (ArrayUtils.contains(customUserIds, getUserId()))
        {
            return error("当前用户不能删除");
        }
        return toAjax(customUserService.deleteCustomUserByIds(customUserIds));
    }

    // ... (省略其他自定义用户管理相关功能,如重置密码、状态修改、授权等,若需要请自行添加)

    /**
     * 获取自定义用户所属部门树列表
     */
    @PreAuthorize("@ss.hasPermi('system:customuser:list')")
    @GetMapping("/deptTree")
    public AjaxResult customUserDeptTree(CustomUser customUser)
    {
        // ... (实现或调用相应服务方法获取自定义用户的部门树列表)
        return success(customUserDeptTreeList);
    }
}

代码还不错,基本满足要求,接下来我给它数据表的sql,告诉它用ORM用的MyBatis,让他生成domain文件、service层文件、mapper文件和xml文件,结果就差强人意了:

二)domain

图片

三)service

有点拉跨,想使用就得不停的连续问

图片

四)Mapper

直接给了个空接口

图片

五)XML

应该是回答字数限制,突然停止了,然后我让它“继续”。。。。

图片

图片

嗯~~~~它开始别的操作了,应该是上下文衔接不好。

综合看,不如代码生成器来的方便,能节约开发量吗,能节约,但不是很大,没那么玄乎。

五、它适合来干啥?

1、简单的代码补全,前提是你能够有逻辑能力,有清晰的判断,并且告诉它,你会引入其他类或方法来辅助它。

2、查找明显错误(逻辑性强的难点儿)

3、生成固定写法和算法

例如这样的:

图片

4、生成注释和解释代码

六、总结

总的来说,灵码还是挺灵的,但是如果想从众多 AI编码工具中脱颖而出,还得做几点加强:

1、超时问题,我用了2小时,大概出现了10次左右。

图片

2、应加强上下文联动,尤其回答不够,需要“继续”时。

3、给出相应的提示词Demo,让程序员更快的了解专用的提示词。

4、增加文件上传对文件进行分析,然后根据要求修复代码或者,生成改写代码。

5、能够分析当前打开代码的语言和环境,能够快速识别,能够给使用者更好的体验。


怎么样今天的内容还满意吗?再次感谢观众老爷的观看。

最后,祝您早日实现财务自由,还请给个赞,谢谢!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/2092839.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

Redis 集群:引领企业级 NoSQL 数据库新潮流

一 、关系型数据库和 NoSQL 数据库 在当今的数据库领域&#xff0c;关系型数据库和非关系型数据库都占据着重要的地位。 关系型数据库 关系型数据库是建立在关系模型基础上的数据库&#xff0c;它通过表与表之间的关系来存储和管理数据。 特点 数据结构清晰&#xff1a;以二…

“微服务革命”之后...

曾几何时&#xff0c;我记得我的手指疯狂地敲打键盘&#xff0c;与庞大而杂乱的代码库搏斗。那是巨石的时代&#xff0c;代码就像古老的城堡一样&#xff0c;由一块块石头砌成一个令人印象深刻的庞然大物。 几年过去了&#xff0c;时代变了。开发人员口中的流行语变成了“微服…

基于STM32校车安全监控系统的设计(论文+源码+实物)

1 方案设计 根据设计要求&#xff0c;本设计校车安全监控系统的设计以STM32F103单片机作为主控制器&#xff0c;通过MQ传感器实现异常气体的检测&#xff0c;当异常气体浓度异常时会通过继电器打开车窗进行通风&#xff0c;以保证舒适的环境&#xff0c;通过红外传感器用于监…

EXO:StandardNode _process_tensor

目录 EXO:StandardNode _process_tensor EXO:StandardNode _process_tensor 这段代码是在处理某种分片(sharding)逻辑时使用的,特别是在处理大型模型或数据处理任务时,这些任务被分割成多个较小的部分(即分片)来并行处理。这里,代码片段关注于根据特定的调试级别(DEBU…

大数据处理从零开始————1.Hadoop介绍

1. 大数据时代背景 1.1 大数据时代到来 在微信上&#xff0c;随手点的一个赞&#xff1b;在百度上&#xff0c;随手输入的搜素关键词&#xff1b;在健康记录应用上&#xff0c;每天所产生的微信步数这些都是数据。我们每人每天都在产生大量数据。人类近些年所产生的数据比过去…

【设计模式】创建型模式——简单工厂模式

文章目录 一、创建型模式1. 包含模式1.1 工厂模式1.2 建造者模式1.3 原型模式1.4 单例模式 二、工厂模式1. 概要1.1 意图1.2 主要解决问题1.3 何时使用1.4 如何解决1.5 关键代码1.6 使用场景1.7 优点1.8 缺点1.9 简单工厂实现 2. 简单工厂模式2.1 模式结构2.2 实例2.3 模式定义…

Charles激活

简介 Charles激活码计算 激活 Help -> Register Charles 添加 Registered Name 和计算出的 License key 点击 Register Java import java.nio.ByteBuffer; import java.nio.ByteOrder; import java.util.Random; import java.util.Scanner;/*** program: ZK* descriptio…

开关二极管损坏如何判断

系列文章目录 1.元件基础 2.电路设计 3.PCB设计 4.元件焊接 5.板子调试 6.程序设计 7.算法学习 8.编写exe 9.检测标准 10.项目举例 11.职业规划 文章目录 前言1. 外观检查2. 测量正向压降3. 反向电阻测量4. 电路功能测试5. 高压测试6. 加热测试 前言 送给大学毕业后找不到奋…

【Java】 为什么是split 方法按点号分割是用 “ \\. “ ?

前言&#xff1a; 小知识&#xff0c;记录自用and分享。 原因分析&#xff1a; 字符串的很多方法是可以使用正则表达式的&#xff0c;这里就包括了split这个方法。 . 在正则表达式里的意思是通配符&#xff0c;表示&#xff1a;匹配任意单个字符。那么&#xff0c;当使用split…

参加 帆软 BI 上海城市 课堂(08-30培训)

参加 帆软 BI 城市 课堂&#xff08;0830&#xff09;&#xff1a; 由于目前是自由职业&#xff0c;也想学习一下新的知识 。所以参加本次的培训&#xff0c;总的来说还是比较专业。 培训在 上海 帆软的总部 环球港进行。时间是 13:30~17&#xff1a;00 老师很专业。学习中 课…

家具大卖nouhaus独立站拆解丨出海笔记

今天我们分析下一家传统外贸起家的大卖独立站&#xff1a;www.nouhaus.com 品牌背景是恒林股份&#xff08;A股603661&#xff09;旗下&#xff0c;算是有上市公司支持了。据资料显示&#xff1a;恒林股份成立于1998年&#xff0c;一年能卖出1000万件的办公椅和沙发&#xff0…

合并多个rtf文件

合并多个rtf文件&#xff0c;有2个细节&#xff1a; 1、不同文件之间加分页 2、编号的处理 选择一个目录 private void BtnImportingDirectoryBrowse_Click(object sender, EventArgs e){if (FbdlgDirectory.ShowDialog() DialogResult.OK){textBox1.Text FbdlgDirectory.S…

Linux---文件(1)---初识文件

目录 预备知识 文件操作接口 打开文件接口 重定向与文件操作关系 "w"方式与重定向 “a”方式与追加重定向 写入文件接口 读取文件接口 系统调用接口 参数解析 预备知识 我们知道&#xff0c;创建出一个空文件也要在内存中占空间。 文件文件内容文件属性 操…

raw.githubusercontent.com未能解析” 解决方案

1.操作场景 通过windows11 powershell 下载依赖包 2.报错信息如下 irm : 未能解析此远程名称: raw.githubusercontent.com 所在位置 行:1 字符: 27 & ([scriptblock]::Create((irm "https://win11debloat.raphi.re/"))) ~~~~~~~~~…

C++知识点总结(54):复杂模拟综合

复杂模拟综合 例题1. 玩具谜题2. 猴子兄弟爬山3. 浇水4. 数组旋转5. 石头剪刀布6. 巨石滚滚 例题 1. 玩具谜题 小南有一套可爱的玩具小人&#xff0c;它们各有不同的职业。 有一天&#xff0c;这些玩具小人把小南的眼镜藏了起来。 小南发现玩具小人们围成了一个圈&#xff0c…

llm 是泡沫?

这篇文章不谈技术&#xff0c;只想聊聊自己这两年从事 llm 工作的一些感悟。 我个人对 llm 是一种很复杂的态度。毕竟&#xff0c;它真的击碎了我 2023 年之前所有的技术积累&#xff0c;以前在 nlp 苦心钻研的训练经验、模型结构、不同任务类型的不同处理技巧&#xff0c;好像…

个微管理撤回删除的消息都可以查看

有没有经历过误删微信消息的尴尬时刻&#xff1f;&#x1f605;或者想知道撤回的消息到底是什么内容&#xff1f;今天&#xff0c;我要向大家推荐一个多功能微管理神器&#xff0c;帮你轻松解决这些问题&#xff01;&#x1f4aa;&#x1f48c; 1️⃣ 多个账号同时在线 &#x…

nefu暑假集训3 并查集与最小生成树 个人模板+例题汇总

前言&#xff1a; 并查集与最小生成树的训练。 正文&#xff1a; 链接&#xff1a;并查集与最小生成树 - Virtual Judge (vjudge.net) 题目&#xff1a; A - 关押罪犯&#xff1a; #include <bits/stdc.h> using namespace std; const int N200005; int fa[N],d[N]; …

实现一个能设置MaxLine的LayoutManager

实现一个能设置MaxLine的LayoutManager 有时候&#xff0c;我们会遇到这种需求&#xff1a;一个线性的列表布局&#xff0c;当item量很少的时候&#xff0c;就是wrap_content直接展示完所有item&#xff0c;但是当item数量超过某个数时就要固定高度&#xff0c;让其变成可滑动…

AOP 面向切片编程

目录 1. 什么是AOP 2. AOP的应用场景 3. AOP在Java中的实现 4. Spring AOP概述 5. Spring AOP的配置 1.在pom.xml文件中添加Spring AOP的依赖&#xff1a; 2. 定义切面 3. 启用AOP 4. 目标类 5. 测试AOP 6. AOP与其他技术的对比 面向切面编程&#xff08;AOP, Aspec…