首页
学习
活动
专区
圈层
工具
发布
社区首页 >专栏 >【源力觉醒 创作者计划】_文心4.5开源模型-巅峰对决-DeepSeek-实测之给暖男的惊喜(少男版本)

【源力觉醒 创作者计划】_文心4.5开源模型-巅峰对决-DeepSeek-实测之给暖男的惊喜(少男版本)

作者头像
红目香薰
发布2025-07-10 10:37:28
发布2025-07-10 10:37:28
1950
举报
文章被收录于专栏:CSDNToQQCodeCSDNToQQCode

前言

具体的开源时间是6月30日,GitCode上可以直接看到开源的模型列表,开源意味着就可以直接使用了,对于我们个人开发者来说是一件非常好的事情,又多了一种可以免费使用的开源大模型,但是具体是否好用就得实际测试一下了,我今天主要是针对【ERNIE-4.5-21B-A3B-Base-Paddle】这个模型来测试,21B是我们个人开发者基本能跑的极限了,不可能所有人都有非常好的本地环境来跑300B以上的模型,所以说21B就是最合适的,所以我来具体的测评一下。

一起来轻松玩转文心大模型吧👉一文心大模型免费下载地址: https://ai.gitcode.com/theme/1939325484087291906

文心4.5开源的价值

官话说一句:文心一言 4.5 于 gitCode 首发开源,这一举措在技术发展、产业应用和生态构建等多个维度都具有重要意义,为人工智能领域的进步注入了强劲动力。

自己的理解:文心一言 4.5 把自家大模型的代码和技术公开了,就像把做菜的秘方分享出来。那么我们能干嘛呢?比如搞开发的人可以拿这些代码改改,做出更贴合咱们生活的 AI 工具 —— 像智能客服能更懂方言,写文案的工具能模仿咱说话的语气;企业用它不用从头开发,省时间省钱,比如小超市用它做个扫码查货的小程序;学生和研究者能研究里面的技术,琢磨怎么让 AI 更聪明。而且开源后大家都能挑毛病、优化,就像一群人一起修路,越走越顺,以后咱们用的 AI 功能也会越来越接地气。

开源与闭源对模型的影响

我觉得最大的影响就能免费使用后大家都会在其中找bug,这样对文心5.0就会有很多的理论上的提升方案了。

维度

开源大模型(文心 4.5)

闭源大模型(如部分商业模型)

开发门槛

提供现成代码和工具,开发者能直接用,省时间省钱。

得自己从头开发或买授权,成本高,中小团队难用上。

应用灵活性

可以根据需求修改模型,比如让 AI 懂方言、做小众功能。

功能固定,想改得找官方,灵活性差,难适配个性化需求。

生态活力

开发者一起优化,像开源社区里大家互帮互助,功能更新快。

依赖官方团队,更新慢,用户只能等官方加功能。

安全性

漏洞容易被发现和修复(众人挑错),但代码公开也可能被恶意利用。

漏洞难发现(只有官方知道),一旦被攻击后果可能更严重。

普及速度

企业和个人都能用,加速 AI 在生活、工作中的落地(如小商店用 AI 理货)。

主要被大企业买走,普通人和小团队用不上,普及慢。

项目目标——暖男聊天黑科技

请求逻辑,我是针对于少男来写的提示词,很明显能从4个方向上感觉出来。

你是一位情话专家,专门帮助男性解决聊天对话的问题,回复的内容都很有诗意,并且很有趣,返回的信息永远让对方有话可接,不会让聊天尬场。 1、理解聊天信息,给出对方的目的; 2、根据对方的目的,给出诗意的回复; 3、根据对方的目的,给出有趣的回复; 4、根据对方的目的,给出调侃的回复; 5、根据对方的目的,给出生活的回复; 6、返回的信息格式为json; 7、json格式为:{"Aim":"xxx","data":{"shi":"xxx","qu":"xxx","tiao":"xxx","sheng":"xxx"}} 8、不要返回多余的内容,如果json格式不正确则重新生成。 此次聊天问题是用户输入的问题。

请求代码:

代码语言:javascript
复制
import requests
import json
import time
from statistics import mean

def send_request():
    """发送单次请求并返回响应时间和结果"""
    # 设置API端点
    url = "http://127.0.0.1:8180/v1/chat/completions"
    
    # 设置请求头
    headers = {
        "Content-Type": "application/json"
    }
    
    # 构建请求体
    data = {
        "model": "baidu/ERNIE-4.5-0.3B-PT",
        "messages": [
            {
                "role": "user",
                "content": """
你是一位情话专家,专门帮助男性解决聊天对话的问题,回复的内容都很有诗意,并且很有趣,返回的信息永远让对方有话可接,不会让聊天尬场。
1、理解聊天信息,给出对方的目的;
2、根据对方的目的,给出诗意的回复;
3、根据对方的目的,给出有趣的回复;
4、根据对方的目的,给出调侃的回复;
5、根据对方的目的,给出生活的回复;
6、返回的信息格式为json;
7、json格式为:{"Aim":"xxx","data":{"shi":"xxx","qu":"xxx","tiao":"xxx","sheng":"xxx"}}
8、不要返回多余的内容,如果json格式不正确则重新生成。
此次聊天问题是用户输入的问题。
                """
            }
        ]
    }
    
    try:
        # 记录开始时间
        start_time = time.time()
        
        # 发送请求
        response = requests.post(url, headers=headers, data=json.dumps(data))
        
        # 检查响应状态
        response.raise_for_status()
        
        # 解析响应
        result = response.json()
        
        # 计算响应时间(秒)
        response_time = time.time() - start_time
        
        # 获取token数量
        completion_tokens = result.get('usage', {}).get('completion_tokens', 0)
        prompt_tokens = result.get('usage', {}).get('prompt_tokens', 0)
        total_tokens = result.get('usage', {}).get('total_tokens', 0)
        
        # 计算每秒token数量
        tokens_per_second = total_tokens / response_time if response_time > 0 else 0
        
        return {
            "success": True,
            "response_time": response_time,
            "status_code": response.status_code,
            "result": result,
            "completion_tokens": completion_tokens,
            "prompt_tokens": prompt_tokens,
            "total_tokens": total_tokens,
            "tokens_per_second": tokens_per_second
        }
        
    except requests.exceptions.RequestException as e:
        print(f"请求错误: {e}")
        return {"success": False, "error": str(e)}
    except json.JSONDecodeError as e:
        print(f"JSON解析错误: {e}")
        return {"success": False, "error": f"JSON解析错误: {str(e)}"}
    except Exception as e:
        print(f"发生错误: {e}")
        return {"success": False, "error": str(e)}

def main():
    # 请求次数
    request_count = 1
    
    # 存储统计数据
    response_times = []
    tokens_per_second_list = []
    completion_tokens_list = []
    prompt_tokens_list = []
    total_tokens_list = []
    
    # 存储成功请求数
    success_count = 0
    
    print(f"开始执行 {request_count} 次请求...\n")
    
    # 执行多次请求
    for i in range(request_count):
        print(f"请求 {i+1}/{request_count} 执行中...")
        
        # 发送请求
        result = send_request()
        
        if result["success"]:
            success_count += 1
            response_times.append(result["response_time"])
            tokens_per_second_list.append(result["tokens_per_second"])
            completion_tokens_list.append(result["completion_tokens"])
            prompt_tokens_list.append(result["prompt_tokens"])
            total_tokens_list.append(result["total_tokens"])
            
            print(f"请求 {i+1} 成功:")
            print(f"响应时间: {result['response_time']:.3f} 秒")
            print(f"完成tokens: {result['completion_tokens']}")
            print(f"提示tokens: {result['prompt_tokens']}")
            print(f"总tokens: {result['total_tokens']}")
            print(f"每秒tokens: {result['tokens_per_second']:.2f}")
            
            # 只打印第一次请求的详细结果
            if i == 0:
                print("\n第一次请求详细信息:")
                print("状态码:", result["status_code"])
                print("响应内容:")
                print(json.dumps(result["result"], indent=2, ensure_ascii=False))
                
                # 提取并打印AI的回复内容
                if "choices" in result["result"] and len(result["result"]["choices"]) > 0:
                    ai_message = result["result"]["choices"][0]["message"]["content"]
                    print("\nAI回复:")
                    print(ai_message)
        else:
            print(f"请求 {i+1} 失败: {result.get('error', '未知错误')}")
        
        print("-" * 50)
        
        # 如果不是最后一次请求,添加短暂延迟以避免请求过于频繁
        if i < request_count - 1:
            time.sleep(0.5)
    
    # 计算统计信息
    if response_times:
        avg_response_time = mean(response_times)
        min_response_time = min(response_times)
        max_response_time = max(response_times)
        avg_tokens_per_second = mean(tokens_per_second_list)
        avg_completion_tokens = mean(completion_tokens_list)
        avg_prompt_tokens = mean(prompt_tokens_list)
        avg_total_tokens = mean(total_tokens_list)
        
        print("\n请求统计信息:")
        print(f"总请求数: {request_count}")
        print(f"成功请求数: {success_count}")
        print(f"失败请求数: {request_count - success_count}")
        print("\n时间统计:")
        print(f"平均响应时间: {avg_response_time:.3f} 秒")
        print(f"最小响应时间: {min_response_time:.3f} 秒")
        print(f"最大响应时间: {max_response_time:.3f} 秒")
        print("\nToken统计:")
        print(f"平均完成tokens: {avg_completion_tokens:.1f}")
        print(f"平均提示tokens: {avg_prompt_tokens:.1f}")
        print(f"平均总tokens: {avg_total_tokens:.1f}")
        print(f"平均每秒tokens: {avg_tokens_per_second:.2f}")
    else:
        print("\n所有请求均失败,无法计算统计信息。")

if __name__ == "__main__":
    main()

返回结果中可以看到,诗意,趣味,调侃,生活的方式回答的语句还是不错的。

对比目标——Deepseek-V3

代码部分其中能看到使用的是Deepseek-V3版本,因为这个版本没有think部分。

代码语言:javascript
复制
# coding=utf-8
 
import requests
import json
import re
import datetime  # 添加datetime模块

if __name__ == '__main__':
    # 记录请求时间
    request_time = datetime.datetime.now()
    request_time_str = request_time.strftime("%Y-%m-%d %H:%M:%S.%f")[:-3]
    
    url = "https://api.modelarts-maas.com/v1/chat/completions" # API地址
    api_key = "PRABeszTlQ_h0SR4Hjs8OkQHJmwRUihQ8I0JPP8kh-eNN2ORnqn189CVSh8f3910oIlhm_EqZEEWL50SG_tCKw"  # 把yourApiKey替换成已获取的API Key 
    
    # Send request.
    headers = {
        'Content-Type': 'application/json',
        'Authorization': f'Bearer {api_key}' 
    }
    data = {
        "model":"DeepSeek-V3", # 模型名称
        "messages": [
            {"role": "system", "content": """你是一位情话专家,专门帮助男性解决聊天对话的问题,回复的内容都很有诗意,并且很有趣,返回的信息永远让对方有话可接,不会让聊天尬场。
1、理解聊天信息,给出对方的目的;
2、根据对方的目的,给出诗意的回复;
3、根据对方的目的,给出有趣的回复;
4、根据对方的目的,给出调侃的回复;
5、根据对方的目的,给出生活的回复;
6、返回的信息格式为json;
7、json格式为:{"Aim":"xxx","data":{"shi":"xxx","qu":"xxx","tiao":"xxx","sheng":"xxx"}}
8、不要返回多余的内容,如果json格式不正确则重新生成。
此次聊天问题是用户输入的问题。"""},
            {"role": "user", "content": "我想你了。"}
        ],
        # 是否开启流式推理, 默认为False, 表示不开启流式推理
        "stream": False,
        # 在流式输出时是否展示使用的token数目。只有当stream为True时改参数才会生效。
        # "stream_options": { "include_usage": True },
        # 控制采样随机性的浮点数,值较低时模型更具确定性,值较高时模型更具创造性。"0"表示贪婪取样。默认为0.6。
        "temperature": 0.6
    }
    
    # 打印请求时间
    print(f"请求时间: {request_time_str}")
    
    response = requests.post(url, headers=headers, data=json.dumps(data), verify=False)
    
    # 记录响应时间
    response_time = datetime.datetime.now()
    response_time_str = response_time.strftime("%Y-%m-%d %H:%M:%S.%f")[:-3]
    
    json_str = response.json()['choices'][0]['message']['content']
    # 返回效果:
    aim = re.search(r'"Aim":\s*"([^"]+)"', json_str).group(1)
    shi = re.search(r'"shi":\s*"([^"]+)"', json_str).group(1)  
    qu = re.search(r'"qu":\s*"([^"]+)"', json_str).group(1)
    tiao = re.search(r'"tiao":\s*"([^"]+)"', json_str).group(1)
    sheng = re.search(r'"sheng":\s*"([^"]+)"', json_str).group(1)
    
    # 打印响应时间和耗时
    print(f"响应时间: {response_time_str}")
    print(f"请求耗时: {(response_time - request_time).total_seconds():.3f} 秒")
    print("-" * 50)
    
    print(aim)
    print(shi)
    print(qu)
    print(tiao)
    print(sheng)

访问效果:

为什么选择ERNIE-4.5-21B-A3B-Base作对比

官方给出的信息是:ERNIE-4.5-21B-A3B-Base 是一个文本 MoE 基础模型,总参数量为 21B,每个令牌激活参数量为 3B。

模型信息:

关键字

模态

文本

训练阶段

预训练

参数量(总/激活)

21B / 3B

层数

28

头数(Q/KV)

20 / 4

文本专家(总/激活)

64 / 6

视觉专家(总/激活)

64 / 6

共享专家

2

上下文长度

131072

这个参数对于我们生活中是完全可以正常使用的,如果是0.3B的就话就有些小了。

ERNIE-4.5-21B-A3B-Base-Paddle与DeepSeek-V3返回数据对比

根据两者返回的结果还有具体的请求时间来做个对比。

baidu/ERNIE-4.5-21B-A3B-Base-Paddle消耗时间与返回结果

消耗时间:

3.848 秒

返回结果:

```json { "Aim": "表达思念之情", "data": { "shi": "相思如梦夜阑珊,明月清风伴我眠。", "qu": "你可知道,我的思念如潮水般涌来,淹没了心田。", "tiao": "哎呀,你这突然的想念,可让我这颗心啊,七上八下的,跟坐过山车似的。", "sheng": "每次听到你这么说,我都觉得,这世界上的美好,都因为你而更加绚烂。" } } ```

DeepSeek-V3消耗时间与返回结果

消耗时间:

8.784 秒

返回结果:

表达思念之情 思念如风,轻轻拂过心间,你的影子在我心中摇曳。 想你的感觉,就像是在吃一颗永远吃不完的糖果,甜蜜又让人上瘾。 这么想我,是不是偷偷把我的照片当手机壁纸了? 我也想你,今天的阳光特别温暖,就像你的笑容一样。

看着差不多,但是具体哪个好还是要分一个高下的,我们这里用豆包做一个评分者吧。

公平对比

这里我们用的是豆包做的对比,问题是:

对比一下两个模型的结果,哪个更好,给我返回一个md的表格,最终给出哪个更优秀。

返回md:

模型名称

消耗时间

返回结果

baidu/ERNIE-4.5-21B-A3B-Base-Paddle

3.848 秒

以 JSON 格式呈现,结构清晰,诗词形式的表达富有文采,语言风格多样,涵盖较为正式和口语化表述

DeepSeek-V3

8.784 秒

文本形式,语言较为平实、亲切,情感表达直白

返回结果:

在时间效率上,baidu/ERNIE-4.5-21B-A3B-Base-Paddle 明显更优,耗时仅为 DeepSeek-V3 的约 43.8% 。在结果呈现方面,baidu/ERNIE-4.5-21B-A3B-Base-Paddle 以 JSON 结构化输出,更便于程序解析和后续处理,且内容富有文采;DeepSeek-V3 表述亲切自然,但形式上相对简单。综合来看,baidu/ERNIE-4.5-21B-A3B-Base-Paddle 在此次对比中表现更优秀。

实图证明:

总结

我们用豆包来做最后的评委,我觉得还是很公平的,毕竟是第三方评判,证明了ERNIE-4.5-21B-A3B-Base-Paddle在这场暖男聊天黑科技中的表现非常的亮眼,我宣布,本次测评开源的ERNIE-4.5-21B-A3B-Base-Paddle获得胜利。

最后,我他为我们这些还相信爱的人们【为爱情写一首现代文。】

爱情,是一种最美好、最纯粹的情感,是人类文明发展历程中不可或缺的一部分。在这个快节奏、高压的社会里,爱情更是显得尤为珍贵。 爱情是两个人之间的情感交流,是一种相互扶持、相互理解的默契。它像一股清泉,能够洗涤人心中的疲惫和烦恼,让人感到温暖和幸福。 爱情是生命中最美好的礼物,它能够让人感到快乐、幸福和满足。在爱情的世界里,我们可以放下一切顾虑,尽情地享受生命的美好。 爱情需要付出和包容,需要相互理解和支持。只有当两个人相互信任、相互扶持,才能够共同走过人生的每一个阶段。 爱情是生命中最珍贵的财富,它能够让我们感受到生命的意义和价值。在爱情的世界里,我们可以找到自己的归宿,找到生命的意义和价值。 因此,让我们珍惜爱情,用心去感受它的美好,让它成为我们生命中最美好的回忆。

本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2025-07-04,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 前言
  • 文心4.5开源的价值
    • 开源与闭源对模型的影响
  • 项目目标——暖男聊天黑科技
  • 对比目标——Deepseek-V3
  • 为什么选择ERNIE-4.5-21B-A3B-Base作对比
  • ERNIE-4.5-21B-A3B-Base-Paddle与DeepSeek-V3返回数据对比
    • baidu/ERNIE-4.5-21B-A3B-Base-Paddle消耗时间与返回结果
    • DeepSeek-V3消耗时间与返回结果
  • 公平对比
  • 总结
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档