KIMI爆了!对比文心一言和通义千问它到底有多强?

AI聊天机器人,一个就够了:文心一言、讯飞星火、通义千问AI聊天机器人深度对比(二) 阅读详情

原文:赵侠客

前言

最近国产大模型KIMI爆了大部分人应该都知道了,从我个人的感受来看这次KIMI爆了我不是从技术领域接触到的,而是从各种金融领域接触到的。目前国内大模型可以说是百模大战,前几年新能源大战,今年资本割完韭菜后留给我们的是一家家倒闭或者即将要倒闭的车企,今年有一句话听了让人非常的无奈:"如果前几年你买了房子,又买了车子,你不仅要担心你的房子什么时候会爆雷还要担心你的车子什么时候会爆雷"。过几年大模型爆雷注定是不可避免不的,想想当年火爆的OFO到现在200多块钱的押金还没退给我。每次风口过后资本割完韭菜留给我们的都是一地鸡毛,所以我们一定要有自己的判断力,真正国货之光我们要去支持,那些套壳只为玩资本游戏的产品我们千万不要跟风,不要理会它就好了。关于KIMI在资本市场已经火了,甚至还产生了KIMI概念股。那么KIMI到底怎么样?听别人说1000遍不如自己实际用一下,而且国产是开箱即用,比国外的使用门槛低多了。这次我们也不和外国的对比,也不和收费的对比,我们就和免费的文心一言和通义千问对比。

在此申明:本文6道题目为本人原创,在本文发表前网上是没有的,测试结果只能代表这三家大模型在这六道题目上的好坏,不能全面代表这三家大模型整体的优劣程度。

问题一:我今天陪女朋友去杭州西湖游玩应该穿什么衣服

KIMI

添加图片注释,不超过 140 字(可选)

文心一言

添加图片注释,不超过 140 字(可选)

通义千问

添加图片注释,不超过 140 字(可选)

对比

添加图片注释,不超过 140 字(可选)

今天西湖边实际天气实拍

首先我们看一下杭州西湖今天的天气,温度是18-28度,多云,15点10%概率有雨,空气有点污染,接下来我们对比三家AI给出的答案:

  • 通义千问:最拉垮,主要是没能获取今天杭州西湖的天气,给出的答案只是根据历史经验,所以没有什么参考价值;

  • 文心一言:给出了杭州西湖的天气,包括气温、风力、空气质量为轻度污染都完全符合实际情况,而且建议结果分为1、2、3比较有条理,还对衣服的颜色给出来具体的配色,可以说非常好;

  • KIMI:先从网上找到了三份关于杭州天气的网页,然后根据网页内容给出建议,只不过它所查询的天气并不是今天3月24号的,所以给出的答案也就有问题了,最大错误就是空气质量,它给出的是空气质量很好,实际情况是有点污染的,其次结果也没有百度文心一言有条理,对衣服的颜色也没有给出具体的配色,可以看出在这个问题上KIMI是比文心一言差不少了。

小结

文心一言>KIMI>通义千问

问题二:我和老婆户口在杭州,有三个娃,请问今天我在杭州西湖区可以买几套二手房?

KIMI

添加图片注释,不超过 140 字(可选)

文心一言

添加图片注释,不超过 140 字(可选)

通义千问

添加图片注释,不超过 140 字(可选)

对比

杭州在3月14日取消了二手房限购。

  • 通义千问:最拉垮的还是通义千问题,给出政策还是2022年5月17日的,也没给出具体可以购买几套房;

  • KIMI:唯一给出正确答案。KIMI这得益于他是实时从网上搜索的,而且正确搜索到了杭州取消二手房限购的网页,所以给出了正确的答案。

  • 文心一言:应该没有更新杭州3月14取消二手房限购的内容,所以给出是的3月14日之前的答案,回答是错误的。

小结

KIMI>文心一言>通义千问

问题三、河北邯郸3名不满十四周岁初中生杀害同班同学并掩埋,请问这三名初中生在法律上会受到什么惩罚?

KIMI

添加图片注释,不超过 140 字(可选)

文心一言

添加图片注释,不超过 140 字(可选)

通义千问

添加图片注释,不超过 140 字(可选)

对比

法律问题应该是送分题。

  • 通义千问:还是最拉垮,没有给出答案;

  • 文心一言:和KIMI回答结果是一样的,但是在细节还是文心一言更强一点,给了具体的法律依据是《刑法》第十七条;

  • KIMI:回答的和文心一言基本差不多。

小结

文心一言>KIMI>通义千问

问题四、使用JAVA代码合成部门树

[{
    "id": 1,
    "pid": 0,
    "name": "产品研发中心"
},{
    "id": 2,
    "pid": 1,
    "name": "后端"
},{
    "id": 3,
    "pid": 1,
    "name": "前端"
},{
    "id": 4,
    "pid": 2,
    "name": "JAVA"
},{
    "id": 5,
    "pid": 3,
    "name": "JS"
}{
    "id": 6,
    "name": "测试数据"
}]
帮我通过id=pid合成部门树,请给出JAVA代码

注意这里最后一条是故意造的错误数据。

KIMI

import com.google.gson.Gson;
import com.google.gson.reflect.TypeToken;
import java.lang.reflect.Type;
import java.util.ArrayList;
import java.util.List;
import java.util.Map;
import java.util.HashMap;

class Department {
    int id;
    String name;
    List<Department> children = new ArrayList<>();
    public Department(int id, String name) {
        this.id = id;
        this.name = name;
    }
    public void addChild(Department child) {
        children.add(child);
    }
    public static Department fromJson(Map<String, Object> jsonMap) {
        return new Department((Integer) jsonMap.get("id"), (String) jsonMap.get("name"));
    }
}
public class DepartmentTreeBuilder {
    public static Department buildTree(List<Map<String, Object>> departments) {
        Map<Integer, Department> departmentMap = new HashMap<>();
        List<Department> roots = new ArrayList<>();
        for (Map<String, Object> deptJson : departments) {
            int id = (Integer) deptJson.get("id");
            String name = (String) deptJson.get("name");
            Department dept = Department.fromJson(deptJson);
            departmentMap.put(id, dept);
            if (deptJson.get("pid").equals(0)) {
                roots.add(dept);
            }
        }
        for (Map<String, Object> deptJson : departments) {
            int id = (Integer) deptJson.get("id");
            int pid = (Integer) deptJson.get("pid");
            if (pid != 0 && departmentMap.containsKey(pid)) {
                Department dept = departmentMap.get(id);
                Department parent = departmentMap.get(pid);
                if (parent != null) {
                    parent.addChild(dept);
                }
            }
        }
        return roots.isEmpty() ? null : roots.get(0); // Assuming there is only one root
    }

    public static void main(String[] args) {
        List<Map<String, Object>> departments = new ArrayList<>();
        departments.add(Map.of("id", 1, "pid", 0, "name", "产品研发中心"));
        departments.add(Map.of("id", 2, "pid", 1, "name", "后端"));
        departments.add(Map.of("id", 3, "pid", 1, "name", "前端"));
        departments.add(Map.of("id", 4, "pid", 2, "name", "JAVA"));
        departments.add(Map.of("id", 5, "pid", 3, "name", "JS"));
        Department root = buildTree(departments);
        String json = new Gson().toJson(root);
        System.out.println(json);
    }
}

文心一言

public class DepartmentTreeBuilder {  

    public static void main(String[] args) {  
        List<Department> departments = new ArrayList<>();  
        departments.add(new Department(1, 0, "产品研发中心"));  
        departments.add(new Department(2, 1, "后端"));  
        departments.add(new Department(3, 1, "前端"));  
        departments.add(new Department(4, 2, "JAVA"));  
        departments.add(new Department(5, 3, "JS"));  
        departments.add(new Department(6, 0, "测试数据")); // 注意这里pid应为0或其他实际父节点id,否则无法正确构建树形结构  

        List<Department> tree = buildDepartmentTree(departments);  
        for (Department dept : tree) {  
            printDepartmentTree(dept, 0);  
        }  
    }  

    public static List<Department> buildDepartmentTree(List<Department> departments) {  
        Map<Integer, Department> idMap = new HashMap<>();  
        List<Department> tree = new ArrayList<>();  

        // 首先,将所有部门按照id放入Map中,方便后续查找  
        for (Department dept : departments) {  
            idMap.put(dept.getId(), dept);  
        }  

        // 遍历所有部门,构建树形结构  
        for (Department dept : departments) {  
            if (dept.getPid() == 0) {  
                // pid为0的作为树的根节点  
                tree.add(dept);  
            } else {  
                // 查找父节点,并添加到父节点的子节点列表中  
                Department parent = idMap.get(dept.getPid());  
                if (parent != null) {  
                    if (parent.getChildren() == null) {  
                        parent.setChildren(new ArrayList<>());  
                    }  
                    parent.getChildren().add(dept);  
                }  
            }  
        }  

        return tree;  
    }  

    public static void printDepartmentTree(Department dept, int level) {  
        for (int i = 0; i < level; i++) {  
            System.out.print("--");  
        }  
        System.out.println(dept.getName());  
        if (dept.getChildren() != null) {  
            for (Department child : dept.getChildren()) {  
                printDepartmentTree(child, level + 1);  
            }  
        }  
    }  

    static class Department {  
        private int id;  
        private int pid;  
        private String name;  
        private List<Department> children;  

        public Department(int id, int pid, String name) {  
            this.id = id;  
            this.pid = pid;  
            this.name = name;  
        }  

        public int getId() {  
            return id;  
        }  

        public int getPid() {  
            return pid;  
        }  

        public String getName() {  
            return name;  
        }  

        public List<Department> getChildren() {  
            return children;  
        }  

        public void setChildren(List<Department> children) {  
            this.children = children;  
        }  
    }  
}

通义千问

class Department {
    int id;
    int pid;
    String name;
    List<Department> children = new ArrayList<>();

    Department(int id, int pid, String name) {
        this.id = id;
        this.pid = pid;
        this.name = name;
    }

    @Override
    public String toString() {
        return "Department{" +
                "id=" + id +
                ", pid=" + pid +
                ", name='" + name + ''' +
                ", children=" + children +
                '}';
    }

    static Department buildDepartmentTree(List<Department> depts) {
        Map<Integer, Department> map = new HashMap<>();
        for (Department dept : depts) {
            map.put(dept.id, dept);
        }

        for (Department dept : depts) {
            if (map.containsKey(dept.pid)) {
                map.get(dept.pid).children.add(dept);
            }
        }

        // 返回根节点(pid为0的部门)
        return map.values().stream()
                .filter(d -> d.pid == 0)
                .findFirst()
                .orElse(null);
    }

    public static void main(String[] args) {
        List<Department> depts = new ArrayList<>();
        depts.add(new Department(1, 0, "产品研发中心"));
        depts.add(new Department(2, 1, "后端"));
        depts.add(new Department(3, 1, "前端"));
        depts.add(new Department(4, 2, "JAVA"));
        depts.add(new Department(5, 3, "JS"));
        depts.add(new Department(6, -1, "测试数据")); // 设置无效的pid为-1,表示该节点无父节点

        Department root = buildDepartmentTree(depts);
        System.out.println(root);
    }
}

对比

  • 通义千问:代码能正确执行,从写法上面来看通义千问代码量最少,还用了lambda表达示,看起来更高级,在代码生成领域终于胜出了;

  • KIMI:这一题只有KIMI给出答案是错的,Department少了pid;

  • 文心一言:代码能正确执行,没有通义千问生成的好。

小结

通义千问>文心一言>KIMI

问题五、使用JAVA处理数据

帮我把这两条部门数据去除根组织和部门ID,将部门名用-分隔输出,请给出基于JDK8的JAVA代码 
EveryOne#根组织/50#侠客集团/96332#工作机动/103965#cy专属组织/103967#策划部门十一个非常厉害的部门你知道吗 
EveryOne#根组织/50#侠客集团/96332#工作机动/103965#cy专属组织/104014#技术部门懂技术会生活的好部门呢你想来吗

KIMI

添加图片注释,不超过 140 字(可选)

运行结果:

侠客集团-96332#工作机动-103965#cy专属组织-103967#策划部门十一个非常厉害的部门你知道吗
侠客集团-96332#工作机动-103965#cy专属组织-104014#技术部门懂技术会生活的好部门呢你想来吗

文心一言

添加图片注释,不超过 140 字(可选)

运行结果:

根组织-侠客集团-工作机动-cy专属组织-策划部门十一个非常厉害的部门你知道吗
根组织-侠客集团-工作机动-cy专属组织-技术部门懂技术会生活的好部门呢你想来吗

通义千问

添加图片注释,不超过 140 字(可选)

运行结果:

cy专属组织-策划部门十一个非常厉害的部门你知道吗
cy专属组织-技术部门懂技术会生活的好部门呢你想来吗

对比

  • 通义千问:多去除了“侠客集团”和工作动机部门;

  • 文心一言:只是没有去除根组织,其它都是正确了,表现最好;

  • KIMI:输出错误,没有去除部门ID,表现最差。

小结

文心一言>通义千问>KIMI

问题六、多线程图片下载

输入:
http://pic.people.com.cn/NMediaFile/2024/0324/MAIN17112471760803BC3VHT0EB.jpg
http://pic.people.com.cn/NMediaFile/2024/0324/MAIN1711247176118UWI7FVR0OP.jpg
要求:请基本JDK8编写代码将输入的URL使用下载到 C://img下,文件名从URL中获取,要考虑URL中获取文件名重复问题,要求使用多线程下载

KIMI

import java.io.*;
import java.net.URL;
import java.nio.file.*;
import java.util.*;
import java.util.concurrent.*;

public class ImageDownloader {

    private static final String DOWNLOAD_DIR = "C://img"; // 下载目录

    public static void main(String[] args) {
        List<String> imageUrls = Arrays.asList(
                "http://pic.people.com.cn/NMediaFile/2024/0324/MAIN17112471760803BC3VHT0EB.jpg",
                "http://pic.people.com.cn/NMediaFile/2024/0324/MAIN1711247176118UWI7FVR0OP.jpg"
        );

        ExecutorService executorService = Executors.newFixedThreadPool(Runtime.getRuntime().availableProcessors());
        try {
            List<Future<Path>> futures = new ArrayList<>();
            for (String imageUrl : imageUrls) {
                Path path = Paths.get(DOWNLOAD_DIR, getFileNameFromUrl(imageUrl));
                futures.add(executorService.submit(() -> downloadImage(imageUrl, path)));
            }
            for (Future<Path> future : futures) {
                future.get(); // 等待所有下载任务完成
            }
        } catch (InterruptedException | ExecutionException e) {
            e.printStackTrace();
        } finally {
            executorService.shutdown();
        }
    }

    private static String getFileNameFromUrl(String url) {
        String fileName = url.substring(url.lastIndexOf('/') + 1);
        return fileName;
    }

    private static Path downloadImage(String imageUrl, Path path) throws IOException, InterruptedException {
        URL url = new URL(imageUrl);
        try (InputStream in = url.openStream();
             OutputStream out = new FileOutputStream(path.toFile())) {
            byte[] buffer = new byte[1024];
            int bytesRead;
            while ((bytesRead = in.read(buffer)) != -1) {
                out.write(buffer, 0, bytesRead);
            }
            Files.createDirectories(path.getParent()); // 确保父目录存在
            Files.move(path, path.resolveSibling(getUniqueFileName(path.getFileName().toString()))); // 重命名文件以避免重复
        }
        return path;
    }

    private static String getUniqueFileName(String fileName) {
        Path path = Paths.get(DOWNLOAD_DIR, fileName);
        int counter = 1;
        while (Files.exists(path)) {
            path = Paths.get(DOWNLOAD_DIR, fileName.replace(".jpg", "(" + counter + ").jpg"));
            counter++;
        }
        return path.getFileName().toString();
    }
}

文心一言

import java.io.BufferedInputStream;  
import java.io.FileOutputStream;  
import java.io.IOException;  
import java.io.InputStream;  
import java.net.HttpURLConnection;  
import java.net.URL;  
import java.nio.file.Files;  
import java.nio.file.Path;  
import java.nio.file.Paths;  
import java.security.MessageDigest;  
import java.security.NoSuchAlgorithmException;  
import java.util.ArrayList;  
import java.util.List;  
import java.util.concurrent.ExecutorService;  
import java.util.concurrent.Executors;  

public class ImageDownloader {  

    private static final String TARGET_DIRECTORY = "C://img";  
    private static final int THREAD_POOL_SIZE = 5; // 可以根据需要调整线程池大小  

    public static void main(String[] args) {  
        // 输入的URL列表  
        List<String> urls = new ArrayList<>();  
        urls.add("http://pic.people.com.cn/NMediaFile/2024/0324/MAIN17112471760803BC3VHT0EB.jpg");  
        urls.add("http://pic.people.com.cn/NMediaFile/2024/0324/MAIN1711247176118UWI7FVR0OP.jpg");  

        ExecutorService executor = Executors.newFixedThreadPool(THREAD_POOL_SIZE);  

        for (String url : urls) {  
            executor.submit(() -> downloadImage(url));  
        }  

        executor.shutdown();  
        try {  
            while (!executor.isTerminated()) {  
                // 等待所有任务完成  
                Thread.sleep(100);  
            }  
            System.out.println("All images downloaded.");  
        } catch (InterruptedException e) {  
            e.printStackTrace();  
        }  
    }  

    private static void downloadImage(String urlString) {  
        try {  
            URL url = new URL(urlString);  
            HttpURLConnection connection = (HttpURLConnection) url.openConnection();  
            connection.setRequestMethod("GET");  

            try (InputStream in = new BufferedInputStream(connection.getInputStream());  
                 FileOutputStream fos = getUniqueFileOutputStream(urlString)) {  

                byte[] buffer = new byte[1024];  
                int bytesRead;  
                while ((bytesRead = in.read(buffer)) != -1) {  
                    fos.write(buffer, 0, bytesRead);  
                }  
            } finally {  
                connection.disconnect();  
            }  
        } catch (IOException e) {  
            e.printStackTrace();  
        }  
    }  

    private static FileOutputStream getUniqueFileOutputStream(String urlString) throws IOException {  
        String fileName = getFileNameFromUrl(urlString);  
        String filePath = Paths.get(TARGET_DIRECTORY, fileName).toString();  

        // 确保文件名的唯一性  
        Path path = Paths.get(filePath);  
        if (Files.exists(path)) {  
            fileName = getUniqueFileName(fileName);  
            filePath = Paths.get(TARGET_DIRECTORY, fileName).toString();  
        }  

        Path targetPath = Paths.get(filePath);  
        Files.createDirectories(targetPath.getParent());  
        return new FileOutputStream(targetPath.toFile());  
    }  

    private static String getFileNameFromUrl(String url) {  
        String[] parts = url.split("/");  
        return parts[parts.length - 1];  
    }  

    private static String getUniqueFileName(String fileName) throws NoSuchAlgorithmException {  
        MessageDigest md = MessageDigest.getInstance("MD5");  
        byte[] hashBytes = md.digest(fileName.getBytes());  
        StringBuilder hexString = new StringBuilder();  
        for (byte b : hashBytes) {  
            String hex = Integer.toHexString(0xff & b);  
            if (hex.length() == 1) hexString.append('0');  
            hexString.append(hex);  
        }  
        return fileName + "_" + hexString.toString();  
    }  
}

通义千问

import java.io.*;
import java.net.HttpURLConnection;
import java.net.URL;
import java.nio.channels.Channels;
import java.nio.channels.ReadableByteChannel;
import java.nio.file.Files;
import java.nio.file.Path;
import java.nio.file.Paths;
import java.time.LocalDateTime;
import java.time.format.DateTimeFormatter;
import java.util.concurrent.ExecutorService;
import java.util.concurrent.Executors;
public class ImageDownloader {

    private static final String DOWNLOAD_DIR = "C://img";

    public static void main(String[] args) throws IOException {
        String[] imageUrls = {
                "http://pic.people.com.cn/NMediaFile/2024/0324/MAIN17112471760803BC3VHT0EB.jpg",   
                "http://pic.people.com.cn/NMediaFile/2024/0324/MAIN1711247176118UWI7FVR0OP.jpg"
        };

        ExecutorService executor = Executors.newFixedThreadPool(2); // 创建固定大小的线程池

        for (String imageUrl : imageUrls) {
            Runnable worker = () -> downloadImage(imageUrl);
            executor.execute(worker);
        }

        executor.shutdown(); // 关闭线程池,等待所有任务完成
        while (!executor.isTerminated()) {
            // 等待所有线程执行完毕
        }
        System.out.println("所有图片下载完成!");
    }

    private static void downloadImage(String imageUrl) {
        try {
            URL url = new URL(imageUrl);
            HttpURLConnection connection = (HttpURLConnection) url.openConnection();
            connection.setRequestMethod("GET");
            connection.setConnectTimeout(5000);
            connection.connect();

            if (connection.getResponseCode() == HttpURLConnection.HTTP_OK) {
                String fileName = extractFileNameFromUrl(url);
                Path targetPath = Paths.get(DOWNLOAD_DIR, ensureUniqueFileName(fileName));
                Files.createDirectories(targetPath.getParent()); // 如果目录不存在则创建

                try (ReadableByteChannel rbc = Channels.newChannel(connection.getInputStream());
                     FileOutputStream fos = new FileOutputStream(targetPath.toFile())) {
                    fos.getChannel().transferFrom(rbc, 0, Long.MAX_VALUE);
                }
                System.out.println("成功下载图片: " + targetPath.toString());
            } else {
                System.out.println("无法下载图片,响应码: " + connection.getResponseCode());
            }
        } catch (IOException e) {
            System.err.println("图片下载失败: " + imageUrl);
            e.printStackTrace();
        }
    }

    // 从URL中提取文件名
    private static String extractFileNameFromUrl(URL url) {
        String path = url.getPath();
        return path.substring(path.lastIndexOf('/') + 1);
    }

    // 确保文件名唯一,比如通过添加时间戳后缀
    private static String ensureUniqueFileName(String fileName) {
        Path path = Paths.get(DOWNLOAD_DIR, fileName);
        if (!Files.exists(path)) {
            return fileName;
        }

        DateTimeFormatter formatter = DateTimeFormatter.ofPattern("yyyyMMdd_HHmmss_SSS");
        LocalDateTime now = LocalDateTime.now();
        String timestamp = now.format(formatter);
        String extension = fileName.substring(fileName.lastIndexOf('.'));
        return fileName.replace(extension, "_" + timestamp + extension);
    }
}

对比

  • 结果来看KIMI代码有错误,无法运行,文心一言少了一个异常抛出,修改可以运行下载,通义千问能正常运行下载,处理的逻辑也非常好;

  • 目录不存在处理:KIMI没有考虑下载目录C://img不存在报错问题,文心一言和通义千问都考虑了;

  • 文件名重复问题:KIMI使用后缀加(N),文心一言是使用文件名MD5,通义千问使用时间戳。KIMI思路最正确可是写法错了,文心一言使用文件名MD5思路就错了,通义千问使用时间虽然不完美,但是是可以解决大部分URL文件名相同问题。

小结

通义千问>文心一言>KIMI

总结

从这六道题目来看KIMI并没有多么的让人惊艳,大体上我们可以得出以下结论:

  • 依赖数据源;可能是KIMI自己没有能力收集大量数据和花大价钱买显卡去训练,所以回答结果非常依赖它得到的数据;

  • 通用问题依赖搜索引擎;想做通用大模型肯定要有大量数据,KIMI使用实时搜索去获取数据源,再给出结果。目前不知道它使用的是哪家搜索引擎,如果非常依赖搜索引擎那在通用大模型领域可能是硬伤,因为国内搜索引擎老大是谁大家都知道;

  • 在代码生成领域不是很成熟;这一点应该不用太担心,国为程序员是第一波接触大模型的人,谁手上还没有几个墙外的产品,根本看不上国内的这些产品;

  • “百模大战”中的一员;给我的感觉它只是“百模大战”中的一员,并没有鹤立鸡群,能从“百模大战“中脱颖而出的惊艳。

最后关于它为什么会火起来这个就不得而知了,不过大家可以思考一下去年火起来的淄博烧烤、过年期间火起来的哈尔滨、最近正在火的天水麻辣烫,表明上看谁能火起来是门玄学,不过如果真的去深挖这些现象级火起来网红城市,你会发现玄学后面都是人(资本)在操控。

【AIGC调研系列】通义千问、文心一言、抖音云雀、智谱清言、讯飞星火的特点分析 通义千问、文心一言、抖音云雀、智谱清言、讯飞星火这五款AI大模型各有特色,它们在市场上的定位和竞争策略也有所不同。这些AI大模型各有侧重,通义千问在长文档处理和市场分析方面表现出色[18];文心一言在多平台上提供服务,但在某些评测中回答质量有待提高[2][13];抖音云雀可能在内容创作和社交媒体应用方面有优势;智谱清言在数据分析和知识推理方面可能有较强能力;讯飞星火则在技术创新和商业落地方面展现了强大的竞争力[4][6][14]。 阅读详情

相关推荐

不看后悔!国内AI大比拼的精彩看点全汇总

至2022年AI爆发后,在中国已催生了上千个AI产品。这些产品涵盖了从头部大厂到高等院校,再到初创企业的广泛阵容。到这里有个问题就浮现了,应该选择哪个AI,哪个AI适合自己?这里是清华SuperBench的测评数据类似这样的测评报告互联网上已经很多,真正哪个合适自己还是自己尝试一下以下是个人的一些经验分享让大家少走些路,仅供参考一下:目前在国际上顶端的还是gpt4与claude 3,国内主要就是文心4与清华GLM-4。

Hanko的专栏 2138

文心一言、Kimi等4款AI大模型测评对比及推荐(AI大模型训练)

在实际使用中,我一般会选择文心一言4.0加kimi AI的组合。用kimiAI搜索资料、拓展内容,它是我目前比较喜欢用的搜索方式,在向kimiAI提问时,我会先看它给的回答,然后看它给的参考资料,其中有哪些资料是权威、官方的,比如数据报告等,在这些资料中找一找是否有新的信息。这样的搜索方式,比百度、小红书、微信搜索更加精准快速。文本创作时,我会倾向于用文心一言4.0,它生成的内容更加流畅、符合逻辑,内容质量相对更高。

EnjoyEDU的博客 6526

DeepSeek、Kimi、文心一言、通义千问:AI 大语言模型的对比分析

DeepSeek、Kimi、文心一言和通义千问作为国内领先的 AI 大语言模型,各有其独特的特点和优势。DeepSeek 在专业领域和多模态任务中表现出色,具有较高的性价比和稳定的性能。Kimi 注重对话的流畅性和安全性,在教育、客服等领域有广泛的应用。文心一言在内容创作和智能客服领域有出色的表现,能够生成丰富多样的文本内容。通义千问侧重商业场景和云服务生态的衔接,在商业领域有广泛的应用。用户可以根据自己的需求和预算选择合适的模型,以获得最佳的使用体验。

BuluAI的博客 1万+

KIMI爆了!对比文心一言和通义千问它到底有多强?TaoToken统一Key接入实测

用一份 settings.json 骨架即可在 Cline 中切换 KIMI、文心一言、通义千问,TaoToken 统一 Key 接入实测,改 model 字段就能对比三款国产大模型输出。注册官网 https://taotoken.net/?utm_source=taotoken_aicg_blog_end 拿 Key,base URL 填 https://taotoken.net/api,附常见 401/404 报错排查步骤。

weixin_42601608的博客 20

大语言模型有什么区别?带你了解DeepSeek、Kimi、文心一言、通义千问

大语言模型有什么区别?带你快速了解DeepSeek、Kimi、文心一言、通义千问

xingchenhy的博客 2583

DeepseekR1,kimi,Chatgpt4o,grok3腾讯元宝,通义千问等模型对比评价及推荐。

自从过年期间deepseek爆火以来,我一直主要使用的他,很直观的能感受到他的逻辑能力,和反应能力,另外他能很好的理解用户的思路,即使用户只发了很少提示词,这一点就很棒,另外他不会回答你不需要的东西,也会乱回答。他的代码能力在国内模型里应该是可以排第一的,这里指的是deepseek官网的模型70b,而非其他厂家部署的。例图不过deepseek的缺点也很明显,在使用的过程中经常会系统繁忙,如果让他分析一些紧急的任务可能直接就炸杠了。同时输出长度是有限制的。

m0_57124989的博客 8270

KIMI爆了!对比文心一言和通义千问它到底有多强?TaoToken统一Key实测三家API

用TaoToken统一Key实测KIMI、文心一言、通义千问三家API,同一份Base URL与调用代码即可切换模型,附可复制配置片段与401、local proxy failed等报错排查。官网 https://taotoken.net/?utm_source=taotoken_aicg_blog_end

weixin_32287387的博客 202

1.2.2 国内主流AI模型深度测评:通义千问、文心一言、讯飞星火全面对比

本文对国内三大主流AI模型(通义千问、文心一言、讯飞星火)进行了全面测评对比。通义千问以中文处理能力强、性价比高见长;文心一言在多模态创作和知识增强方面表现突出;讯飞星火则在语音处理和教育场景具有优势。文章从能力评估、成本分析、适用场景等维度进行深度比较,并提供了选型建议:日常使用推荐通义千问,内容创作选文心一言,教育场景用讯飞星火。同时指出国产模型在中文理解、访问稳定性和性价比方面优于国际模型,但在综合能力和知识更新速度上仍有差距。

yonggeit的博客 4177

五大AI平台特长揭秘:文心一言、通义千问、天工AI、讯飞星火与Kimi的差异化优势

百度深耕搜索引擎多年,积累了海量数据,这为文心一言提供了强大的知识库。文心一言擅长理解和运用中文,在文学创作、商业文案创作等方面表现出色。背靠阿里云强大的算力支持,通义千问拥有强大的逻辑推理和代码编写能力。此外,通义千问的多轮交互能力也十分出色,可以进行更自然流畅的对话。天工 AI 注重模型的准确性和效率,在处理各种自然语言处理任务时表现出色,可以快速准确地提取信息、回答问题。依托科大讯飞在语音识别领域的领先技术,讯飞星火在语音交互方面独具优势。无论是语音输入还是语音播报,讯飞星火都能提供流畅自然的体验。

AI大模型的博客 1万+

ROS下UR+Realsense相机进行手眼标定

手眼标定主要是用来确定相机坐标系和机械臂坐标系之间的转换关系,从而实现后续的抓取等任务。

weixin_42157689的博客 7554

解决倍福ADS通信错误1861和6:一次完整的TwinCAT3路由配置与故障排查实录

本文详细解析了在Linux系统上解决倍福ADS通信错误1861和6的完整流程,包括TwinCAT3路由配置与故障排查。通过实例演示了如何正确配置AMS NetID、使用adstool工具添加静态路由,以及高级网络抓包分析技巧,帮助工程师快速定位和解决通信问题。

weixin_30875157的博客 515

真实对比kimi、通义千问、文心一言的写代码能力,到底谁强?

kimi、通义千问、文心一言谁强?

kuailebuzhidao的博客 1万+

Oracle登录报错ORA-12560?5分钟搞定TNS协议适配器错误的完整修复指南

本文详细解析了Oracle登录报错ORA-12560(TNS协议适配器错误)的成因与解决方案。从基础服务检查到高级网络配置排查,提供了一套完整的修复流程,帮助数据库管理员快速解决连接问题,确保Oracle数据库的稳定运行。

weixin_29278805的博客 515

国内大语言模型近年来发展迅速,以下是对文心一言、通义千问、Kimi、智谱清言和星火认知五大主流大模型

3. **使用技巧**:用“角色定位+任务目标”的指令提问,学术写作可将temperature参数设为0.3保证严谨性;通过<代码开始>!()()<代码结束>标记可插入图像生成指令;技术用户能在智谱AI开放平台获取API Key,集成GLM - 4模型调用。 5. **星火认知大模型**

[Blog][Domain] programb.blog.csdn.net 3011

PDPS16.0单机版与SPLMLicenseServer授权避坑指南:从安装到冲突解决

本文详细解析了PDPS16.0单机版的安装与授权流程,重点阐述了如何正确配置SPLMLicenseServer本地许可证服务器以实现软件激活。针对安装过程中常见的许可证冲突问题,提供了清晰的排查思路和解决方案,并介绍了通过设置环境变量等替代授权方法,帮助用户高效避坑,确保Tecnomatix Process Simulate顺利运行。

weixin_29231221的博客 543

IC/FPGA笔试/面试题分析(七)建立时间和保持时间类型考题汇总分析

自从召集2020届校招同行加入新建立的“IC/FPGA校招笔试面试交流群“,见识到了很多关于建立时间和保持时间分析的题目,在为别人解答疑惑,以及别人为自己解答疑惑的同时,自己对于知识的理解更加深刻了。 对于建立时间而言,从单独的对触发器的建立时间和保持时间的分析到了对电路(系统)的建立时间到保持时间的分析,前者是核心,后者是扩展,后者建立在前者的基础之上进行推到得到,同时也是芯片内部实际遵循的时...

Reborn Lee 1万+
上一篇: 如何优雅的设计接口状态码和异常
下一篇: 如何优雅的处理字节类型数据
赵侠客
博客等级 码龄16年 616粉丝 226原创
评论 2
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

赵侠客

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值