国产大模型对比,谁家AI更聪明

简介: 近年来,国内的人工智能领域取得了显著的进展,其中大规模预训练模型在各个领域发挥着重要作用。本文将测试国内几款大模型,看看他们在同一需求下的表现如何?

近年来,国内的人工智能领域取得了显著的进展,其中大规模预训练模型在各个领域发挥着重要作用。本文将测试国内几款大模型,看看他们在同一需求下的表现如何?
需求:写一个java函数BigDecimal的表达式运算

文心一言:
import java.math.BigDecimal;
import java.math.RoundingMode;

public class BigDecimalCalculator {

public static BigDecimal calculate(String expression) {  
    String[] operators = {"+", "-", "\*", "/"};  
    BigDecimal[] numbers = expression.split("\\s+");  
    BigDecimal result = new BigDecimal(numbers[0]);  

    for (int i = 1; i < numbers.length; i++) {  
        for (String operator : operators) {  
            if (numbers[i].contains(operator)) {  
                BigDecimal operand1 = new BigDecimal(numbers[i].split(operator)[0]);  
                BigDecimal operand2 = new BigDecimal(numbers[i].split(operator)[1]);  
                switch (operator) {  
                    case "+":  
                        result = result.add(operand1).add(operand2);  
                        break;  
                    case "-":  
                        result = result.subtract(operand1).subtract(operand2);  
                        break;  
                    case "\*":  
                        result = result.multiply(operand1).multiply(operand2);  
                        break;  
                    case "/":  
                        result = result.divide(operand1, 2, RoundingMode.HALF_UP).multiply(operand2);  
                        break;  
                }  
            } else {  
                result = result.add(new BigDecimal(numbers[i]));  
            }  
        }  
    }  
    return result;  
}  

}

讯飞星火大模型:

import java.math.BigDecimal;

public class BigDecimalExample {

public static void main(String[] args) {
    BigDecimal num1 = new BigDecimal("10.5");
    BigDecimal num2 = new BigDecimal("2.3");
    BigDecimal result = add(num1, num2);
    System.out.println("相加结果: " + result);
}

public static BigDecimal add(BigDecimal num1, BigDecimal num2) {
    return num1.add(num2);
}

}

FuncGPT(慧函数):

// 类名:BigDecimalCalculator
// 函数名:calculateExpression
// 函数功能:使用BigDecimal计算表达式的结果
// POM依赖包:
//
// org.apache.commons
// commons-lang3
// 3.12.0
//

import org.apache.commons.lang3.StringUtils;

import java.math.BigDecimal;
import java.math.RoundingMode;
import java.util.Stack;

public class BigDecimalCalculator {
/**

 * 使用BigDecimal计算表达式的结果
 * @param expression 要计算的表达式
 * @return 计算结果
 */
public static BigDecimal calculateExpression(String expression) {
    if (StringUtils.isBlank(expression)) {
        throw new IllegalArgumentException("Expression cannot be blank");
    }

    Stack<BigDecimal> numberStack = new Stack<>();
    Stack<Character> operatorStack = new Stack<>();

    for (int i = 0; i < expression.length(); i++) {
        char ch = expression.charAt(i);
        if (Character.isDigit(ch)) {
            StringBuilder sb = new StringBuilder();
            while (i < expression.length() && (Character.isDigit(expression.charAt(i)) || expression.charAt(i) == '.')) {
                sb.append(expression.charAt(i));
                i++;
            }
            i--;

            BigDecimal number = new BigDecimal(sb.toString());
            numberStack.push(number);
        } else if (ch == '(') {
            operatorStack.push(ch);
        } else if (ch == ')') {
            while (!operatorStack.isEmpty() && operatorStack.peek() != '(') {
                BigDecimal result = performOperation(numberStack, operatorStack);
                numberStack.push(result);
            }
            if (!operatorStack.isEmpty() && operatorStack.peek() == '(') {
                operatorStack.pop();
            }
        } else if (isOperator(ch)) {
            while (!operatorStack.isEmpty() && hasHigherPrecedence(ch, operatorStack.peek())) {
                BigDecimal result = performOperation(numberStack, operatorStack);
                numberStack.push(result);
            }
            operatorStack.push(ch);
        }
    }

    while (!operatorStack.isEmpty()) {
        BigDecimal result = performOperation(numberStack, operatorStack);
        numberStack.push(result);
    }

    return numberStack.pop();
}

private static boolean isOperator(char ch) {
    return ch == '+' || ch == '-' || ch == '*' || ch == '/';
}

private static boolean hasHigherPrecedence(char op1, char op2) {
    if ((op1 == '*' || op1 == '/') && (op2 == '+' || op2 == '-')) {
        return true;
    }
    return false;
}

private static BigDecimal performOperation(Stack<BigDecimal> numberStack, Stack<Character> operatorStack) {
    BigDecimal num2 = numberStack.pop();
    BigDecimal num1 = numberStack.pop();
    char operator = operatorStack.pop();

    BigDecimal result;
    switch (operator) {
        case '+':
            result = num1.add(num2);
            break;
        case '-':
            result = num1.subtract(num2);
            break;
        case '*':
            result = num1.multiply(num2);
            break;
        case '/':
            result = num1.divide(num2, 2, RoundingMode.HALF_UP);
            break;
        default:
            throw new IllegalArgumentException("Invalid operator");
    }

    return result;
}

}

// 函数示例
// 使用BigDecimal计算表达式的结果示例
// 入参:expression,要计算的表达式
// 出参:result,计算结果
// 调用示例:
// String expression = "2.5 + 3 (4 - 1)";
// BigDecimal result = BigDecimalCalculator.calculateExpression(expression);
// System.out.println(result);
// 输出结果:例如,计算表达式"2.5 + 3
(4 - 1)"的结果为:11.5
// 则输出结果为:11.5
来看看多维度的对比结果

  1. 文心一言 vs 慧函数
    文心一言 慧函数
    生成时间:1分钟 生成时间:25秒
    不够灵活,可扩展性差

使用字符串分割和循环的方式逐步计算表达式 更加灵活和可扩展

慧函数使用栈的数据结构来处理表达式中的操作符和数字,通过读取每一个字符,并根据情况进行相应的处理。
运算误差更大

在处理除法时使用了
RoundingMode.HALF_UP进行四舍五入 运算误差更小

默认进行了两位小数精度的保留,可以在计算结果中直接得到保留两位小数的精确结果
代码健壮性不足 代码健壮性更好

利用了Apache Commons Lang库中的StringUtils工具类判断表达式是否为空或空格。
总结:慧函数生成的代码更加模块化、可读性和可扩展性更好,同时也减少了一些运算过程中的误差

  1. ChatGPT vs 慧函数
    ChatGPT 慧函数
    生成时间:21秒 生成时间:25秒
    方法繁琐,存在漏洞

虽然使用了递归方法来计算表达式,但递归实现的过程较为繁琐,容易出错。对于较复杂的表达式,代码2的递归方法可能会导致栈溢出或性能问题。
代码结构清晰,易于理解和维护

使用了栈的数据结构来处理表达式的计算,这样可以准确地处理运算符的优先级和括号的嵌套。代码实现清晰明了,将不同的逻辑功能封装成了独立的函数,使得代码的结构更加清晰,易于理解和维护。
代码健壮性不足 代码健壮性更好

提供了异常处理机制,通过抛出IllegalArgumentException来处理非法输入,增加了代码的健壮性。
总结:慧函数生成的代码在可读性、可维护性和健壮性方面更好。

那么这三组代码哪个好呢,看看第三方的大模型怎么说
讯飞星火大模型:

image.png

Ps:第一组文心一言、第二组讯飞星火、第三组FuncGPT(慧函数)

据了解:FuncGPT(慧函数)能够极大地提高开发者的编程效率,让开发者从日常简单重复的“写代码”中抽离出来,原来需要花费 80% 的编码时间,交给 AI 工具来完成,同时配以代码实时可见,人机交互-智脑等特色功能,在助力开发人员效率和质量双提升的基础上,解放自己能够更加专注于 20% 的工作,站在更高的角度深入思考问题,从“程序员”变成“架构师”,从“写代码”变成“设计程序”,彻底释放每个开发者的创新潜能。
感兴趣的小伙伴也可以免费使用一波:https://c.suo.nz/a54q4

相关文章
|
24天前
|
人工智能 并行计算 安全
从零到一,打造专属AI王国!大模型私有化部署全攻略,手把手教你搭建、优化与安全设置
【10月更文挑战第24天】本文详细介绍从零开始的大模型私有化部署流程,涵盖需求分析、环境搭建、模型准备、模型部署、性能优化和安全设置六个关键步骤,并提供相应的示例代码,确保企业能够高效、安全地将大型AI模型部署在本地或私有云上。
214 7
|
9天前
|
机器学习/深度学习 人工智能 自然语言处理
当前AI大模型在软件开发中的创新应用与挑战
2024年,AI大模型在软件开发领域的应用正重塑传统流程,从自动化编码、智能协作到代码审查和测试,显著提升了开发效率和代码质量。然而,技术挑战、伦理安全及模型可解释性等问题仍需解决。未来,AI将继续推动软件开发向更高效、智能化方向发展。
|
10天前
|
人工智能 自然语言处理 机器人
文档智能与RAG技术如何提升AI大模型的业务理解能力
随着人工智能的发展,AI大模型在自然语言处理中的应用日益广泛。文档智能和检索增强生成(RAG)技术的兴起,为模型更好地理解和适应特定业务场景提供了新方案。文档智能通过自动化提取和分析非结构化文档中的信息,提高工作效率和准确性。RAG结合检索机制和生成模型,利用外部知识库提高生成内容的相关性和准确性。两者的结合进一步增强了AI大模型的业务理解能力,助力企业数字化转型。
48 3
|
20天前
|
人工智能 JSON API
阿里云文档智能 & RAG解决方案:提升AI大模型业务理解与应用
阿里云推出的文档智能 & RAG解决方案,旨在通过先进的文档解析技术和检索增强生成(RAG)方法,显著提升人工智能大模型在业务场景中的应用效果。该方案通过文档智能(Document Mind)技术将非结构化文档内容转换为结构化数据,提取文档的层级树、样式和版面信息,并输出为Markdown和Json格式,为RAG提供语义分块策略。这一过程不仅解决了文档内容解析错误和切块丢失语义信息的问题,还优化了输出LLM友好的Markdown信息。方案的优势在于其多格式支持能力,能够处理包括Office文档、PDF、Html、图片在内的主流文件类型,返回文档的样式、版面信息和层级树结构。
88 2
|
13天前
|
人工智能 弹性计算 Serverless
触手可及,函数计算玩转 AI 大模型 | 简单几步,轻松实现AI绘图
本文介绍了零售业中“人—货—场”三要素的变化,指出传统营销方式已难以吸引消费者。现代消费者更注重个性化体验,因此需要提供超出预期的内容。文章还介绍了阿里云基于函数计算的AI大模型,特别是Stable Diffusion WebUI,帮助非专业人士轻松制作高质量的促销海报。通过详细的部署步骤和实践经验,展示了该方案在实际生产环境中的应用价值。
45 6
触手可及,函数计算玩转 AI 大模型 | 简单几步,轻松实现AI绘图
|
24天前
|
存储 人工智能 数据可视化
高效率,低成本!且看阿里云AI大模型如何帮助企业提升客服质量和销售转化率
在数字化时代,企业面临海量客户对话数据处理的挑战。阿里云推出的“AI大模型助力客户对话分析”解决方案,通过先进的AI技术和智能化分析,帮助企业精准识别客户意图、发现服务质量问题,并生成详尽的分析报告和可视化数据。该方案采用按需付费模式,有效降低企业运营成本,提升客服质量和销售转化率。
高效率,低成本!且看阿里云AI大模型如何帮助企业提升客服质量和销售转化率
|
9天前
|
人工智能 新制造 芯片
2024年中国AI大模型产业发展报告解读
2024年,中国AI大模型产业迎来蓬勃发展,成为科技和经济增长的新引擎。本文解读《2024年中国AI大模型产业发展报告》,探讨产业发展背景、现状、挑战与未来趋势。技术进步显著,应用广泛,但算力瓶颈、资源消耗和训练数据不足仍是主要挑战。未来,云侧与端侧模型分化、通用与专用模型并存、大模型开源和芯片技术升级将是主要发展方向。
|
15天前
|
机器学习/深度学习 人工智能 自然语言处理
当前AI大模型在软件开发中的创新应用与挑战
【10月更文挑战第31天】2024年,AI大模型在软件开发领域的应用取得了显著进展,从自动化代码生成、智能代码审查到智能化测试,极大地提升了开发效率和代码质量。然而,技术挑战、伦理与安全问题以及模型可解释性仍是亟待解决的关键问题。开发者需不断学习和适应,以充分利用AI的优势。
|
17天前
|
人工智能 JSON 自然语言处理
基于文档智能&RAG搭建更懂业务的AI大模型
本文介绍了一种结合文档智能和检索增强生成(RAG)技术,构建强大LLM知识库的方法。通过清洗文档内容、向量化处理和特定Prompt,提供足够的上下文信息,实现对企业级文档的智能问答。文档智能(Document Mind)能够高效解析多种文档格式,确保语义的连贯性和准确性。整个部署过程简单快捷,适合处理复杂的企业文档,提升信息提取和利用效率。
|
14天前
|
人工智能 自然语言处理 算法
企业内训|AI/大模型/智能体的测评/评估技术-某电信运营商互联网研发中心
本课程是TsingtaoAI专为某电信运营商的互联网研发中心的AI算法工程师设计,已于近日在广州对客户团队完成交付。课程聚焦AI算法工程师在AI、大模型和智能体的测评/评估技术中的关键能力建设,深入探讨如何基于当前先进的AI、大模型与智能体技术,构建符合实际场景需求的科学测评体系。课程内容涵盖大模型及智能体的基础理论、测评集构建、评分标准、自动化与人工测评方法,以及特定垂直场景下的测评实战等方面。
71 4

热门文章

最新文章