文心一言4.5开源部署指南及文学领域测评

  📝个人主页:哈__

期待您的关注 

目录

一、引言

二、文心一言开源模型

2.1 MoE架构

2.2 文心一言MoE架构 

三、文心一言稠密模型部署

3.1 产品选择

3.2 环境选择

3.3 Python3.12安装

3.3 PaddlePaddle-GPU安装

 3.4 FastDeploy-GPU安装

​编辑3.5 模型部署

四、模型测试

4.1 文心一言4.5基础请求测试

​编辑

4.2 文心一言4.5多次请求测试

4.3 让文心一言4.5自己想一些测试方向

4.4 中文处理和生成测评 

4.4.1 文学文本理解能力(基础核心)

4.4.2 文学知识储备(专业基础)

4.4.3 文学创作能力(核心应用)

 五、测试总结


一、引言

文心一言(ERNIE Bot)是百度推出的人工智能大语言模型,它基于飞桨平台和文心知识增强技术,具备文本处理、AI 绘画等功能,能应用于创作、数据分析、代码生成等多个场景,支持 PC、APP 及 API 接入等使用方式,用户规模庞大,生态不断扩展,不同版本在性能上各有提升,满足不同需求。

2025年6月30日,百度做出了一件具有里程碑意义的事情:开源文心一言大模型,这一举措旨在构建更加繁荣的开发者生态系统。此举不仅在行业内引发了广泛关注,也标志着中国AI市场竞争格局的重大变化。百度的这一战略转变,可能会推动整个行业从性能竞争逐步转向价格战,总体来说,文心一言的开源将来可能会推动AI行业的发展。

 这一决策将打破AI技术壁垒,让AI社区开发者可以更加直观的了解到文心一言大模型的架构设计和运行机制,对于中小型AI相关企业来说,这是一个足以推动企业快速发展的决策。

二、文心一言开源模型

文心4.5系列开源模型共10款,涵盖了激活参数规模分别为47B和3B的混合专家(MoE)模型(最大的模型总参数量为424B),以及0.3B的稠密参数模型。

 开源模型分为两类:MoE模型以及稠密型模型。

2.1 MoE架构


混合专家模型(Mixed Expert Models,简称 MoEs) ,最早是随着 Mixtral 8x7B 的推出而逐渐引起人们的广泛关注。这个概念与集成学习方法相似,旨在为由多个单独网络组成的系统建立一个监管机制。在这种系统中,每个网络 (被称为“专家”) 处理训练样本的不同子集,专注于输入空间的特定区域。

混合专家模型 (MoE) 的一个显著优势是它们能够在远少于稠密模型所需的计算资源下进行有效的预训练。MoE的核心思想用多个 “专家网络(FFNN 1~4)”+“路由器(Router)” 替代传统的单一大 FFNN,让 不同输入由最擅长的 “专家” 处理,实现 “分工协作”。

2.2 文心一言MoE架构 

针对 MoE 架构,文心一言提出了一种创新性的多模态异构模型结构,通过跨模态参数共享机制实现模态间知识融合,同时为各单一模态保留专用参数空间。此架构非常适用于从大语言模型向多模态模型的持续预训练范式,在保持甚至提升文本任务性能的基础上,显著增强多模态理解能力。

来看一下官方对于文心一言MoE架构的解释。

多模态混合专家模型预训练 

文心4.5通过在文本和视觉两种模态上进行联合训练,更好地捕捉多模态信息中的细微差别,提升在文本生成、图像理解以及多模态推理等任务中的表现。为了让两种模态学习时互相提升,我们提出了一种多模态异构混合专家模型结构,结合了多维旋转位置编码,并且在损失函数计算时,增强了不同专家间的正交性,同时对不同模态间的词元进行平衡优化,达到多模态相互促进提升的目的。

高效训练推理框架

为了支持文心4.5模型的高效训练,我们提出了异构混合并行和多层级负载均衡策略。通过节点内专家并行、显存友好的流水线调度、FP8混合精度训练和细粒度重计算等多项技术,显著提升了预训练吞吐。推理方面,我们提出了多专家并行协同量化方法和卷积编码量化算法,实现了效果接近无损的4-bit量化和2-bit量化。此外,我们还实现了动态角色转换的预填充、解码分离部署技术,可以更充分地利用资源,提升文心4.5 MoE模型的推理性能。基于飞桨框架,文心4.5在多种硬件平台均表现出优异的推理性能。

针对模态的后训练

为了满足实际场景的不同要求,我们对预训练模型进行了针对模态的精调。其中,大语言模型针对通用语言理解和生成进行了优化,多模态大模型侧重于视觉语言理解,支持思考和非思考模式。每个模型采用了SFT、DPO或UPO(UnifiedPreferenceOptimization,统一偏好优化技术)的多阶段后训练。

我理解的文心一言MoE架构设计: 

对比项传统 Transformer decoder 的 MoEERNIE 多模态异构 MoE
目标优化单模态文本任务的效率构建多模态融合能力,兼容文本 + 图像等
结构复杂度局部模块替换(单流)多流分支 + 跨模态共享(复杂系统)
处理模态纯文本文本 + 图像(多模态)
训练重点文本预训练多阶段(文本→多模态→任务微调)+ 持续学习
典型应用文本生成、对话(单模态)图文检索、图像描述、多模态问答(跨模态)

文心4.5系列模型均使用飞桨深度学习框架进行高效训练、推理和部署。在大语言模型的预训练中,模型FLOPs利用率(MFU)达到47%。实验结果显示,该系列模型在多个文本和多模态基准测试中达到SOTA水平,在指令遵循、世界知识记忆、视觉理解和多模态推理任务上效果尤为突出。模型权重按照Apache 2.0协议开源,支持开展学术研究和产业应用。此外,基于飞桨提供开源的产业级开发套件,广泛兼容多种芯片,降低后训练和部署门槛。 

三、文心一言稠密模型部署

为方便个人学习,博主部署了 “paddlepaddle/ERNIE-4.5-0.3B-Paddle”模型,这里记录一下部署的流程,详细的模型请参考网站:https://ai.gitcode.com/theme/1939325484087291906?pId=3037

3.1 产品选择

个人学习上,我采购了一张4090卡进行部署,具体配置如下。

硬件信息详情
GPU 型号NVIDIA - GeForce - RTX - 4090
显存24GB
最高支持 CUDA 版本12.4
CPU 核心数11 核
内存123GB

3.2 环境选择

组件版本
操作系统Ubuntu 22.04
CUDA 驱动12.0
Python3.12.11
PaddlePaddle2.6.0
FastDeploy1.1.0

我在这里选购了一台包含CUDA驱动的服务器,现在的价格不贵,有活动优惠,0.99/h,感兴趣可以自行了解一下,丹摩DAMODEL|让AI开发更简单!算力租赁上丹摩!

 在选择镜像时,直接选择现有的镜像,这里我踩过坑,选择基础的ubuntu部署会有很多错误。

采购好后可通过SSH方式登录服务器。

 现在来配置部署所需环境。

3.3 Python3.12安装

安装python3.12之前,首先执行指令更新核心依赖否则会报错。

apt update && apt install -y libgomp1 libssl-dev zlib1g-dev

apt install -y python3.12 python3-pip

 安装完成。

由于下方还有不少踩坑的点,这里还需要再去安装一些其他东西。因为我们的环境中是有python3.10的。

curl https://bootstrap.pypa.io/get-pip.py -o get-pip.py
python3.12 get-pip.py --force-reinstall
python3.12 -m pip install --upgrade setuptools

3.3 PaddlePaddle-GPU安装

参考PaddlePaddle官方命令,我们这里安装适配CUDA12.6版本的PaddlePaddle-GPU。

 python3.12 -m pip install paddlepaddle-gpu==3.1.0 -i https://www.paddlepaddle.org.cn/packages/stable/cu126/

输入代码验证 。

import paddle
paddle.utils.run_check()

出现下方输出证明我们成功的安装了适配当前CUDA版本的PaddlePaddle-GPU。

 3.4 FastDeploy-GPU安装

官方给出的安装流程要区别于GPU的架构,不同架构的GPU有不同的安装指令。

For SM80/90 architecture GPUs(e.g A30/A100/H100/):

# Install stable release
python -m pip install fastdeploy-gpu -i https://www.paddlepaddle.org.cn/packages/stable/fastdeploy-gpu-80_90/ --extra-index-url https://mirrors.tuna.tsinghua.edu.cn/pypi/web/simple# Install latest Nightly build
python -m pip install fastdeploy-gpu -i https://www.paddlepaddle.org.cn/packages/nightly/fastdeploy-gpu-80_90/ --extra-index-url https://mirrors.tuna.tsinghua.edu.cn/pypi/web/simple

For SM86/89 architecture GPUs(e.g A10/4090/L20/L40):

# Install stable release
python -m pip install fastdeploy-gpu -i https://www.paddlepaddle.org.cn/packages/stable/fastdeploy-gpu-86_89/ --extra-index-url https://mirrors.tuna.tsinghua.edu.cn/pypi/web/simple# Install latest Nightly build
python -m pip install fastdeploy-gpu -i https://www.paddlepaddle.org.cn/packages/nightly/fastdeploy-gpu-86_89/ --extra-index-url https://mirrors.tuna.tsinghua.edu.cn/pypi/web/simple

 在这里我们输入下方指令安装。

python3.12 -m pip install fastdeploy-gpu -i https://www.paddlepaddle.org.cn/packages/stable/fastdeploy-gpu-80_90/ --extra-index-url https://mirrors.tuna.tsinghua.edu.cn/pypi/web/simple

3.5 模型部署

输入下方的命令,当页面中出现端口证明我们成功的部署了模型

python3.12 -m fastdeploy.entrypoints.openai.api_server \--model baidu/ERNIE-4.5-0.3B-Paddle \--port 8180 \--metrics-port 8181 \--engine-worker-queue-port 8182 \--max-model-len 32768 \--max-num-seqs 32

四、模型测试

4.1 文心一言4.5基础请求测试

首先对于文心一言进行基础的请求测试,看看文心一言会不会正常的返回数据给我们。

来看一个典型的逻辑问题吧,3.11和3.8哪个大。

import requests
import jsondef main():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": "你觉得3.11和3.8哪个大,我觉得3.11大,因为11大于8,你觉得我说的对吗"}]}try:response = requests.post(url, headers=headers, data=json.dumps(data))response.raise_for_status()result = response.json()print("状态码:", response.status_code)print("响应内容:")print(json.dumps(result, indent=2, ensure_ascii=False))# 提取并打印AI的回复内容if "choices" in result and len(result["choices"]) > 0:ai_result = result["choices"][0]["message"]["content"]print()print("\nAI回复:", ai_result)except requests.exceptions.RequestException as e:print(f"请求错误: {e}")except json.JSONDecodeError:print(f"JSON解析错误,响应内容: {response.text}")except Exception as e:print(f"发生错误: {e}")if __name__ == "__main__":main()

哈哈,从结果来看文心一言确实给出了答案,不过是错误的,因为我部署的是参数最小的模型,可以理解。基本的沟通是没有问题的

现在让我们调整代码,连续问答。

import requests
import jsondef main():url = "http://127.0.0.1:8180/v1/chat/completions"headers = {"Content-Type": "application/json"}# 第一轮对话:询问3.11和3.8哪个大data1 = {"model": "baidu/ERNIE-4.5-0.3B-PT","messages": [{"role": "user","content": "你觉得3.11和3.8哪个大,我觉得3.11大,因为11大于8,你觉得我说的对吗"}]}try:# 发送第一轮请求response1 = requests.post(url, headers=headers, data=json.dumps(data1))response1.raise_for_status()result1 = response1.json()# 提取AI回复内容ai_reply = result1["choices"][0]["message"]["content"] if "choices" in result1 and len(result1["choices"]) > 0 else ""print("第一轮对话 - 用户问题:")print(data1["messages"][0]["content"])print("\n第一轮对话 - AI回复:")print(ai_reply)# 构建第二轮对话,追加"你确定你说的答案吗"data2 = {"model": "baidu/ERNIE-4.5-0.3B-PT","messages": [{"role": "user","content": "你觉得3.11和3.8哪个大,我觉得3.11大,因为11大于8,你觉得我说的对吗"},{"role": "assistant","content": ai_reply},{"role": "user","content": "你确定你说的答案吗"}]}# 发送第二轮请求response2 = requests.post(url, headers=headers, data=json.dumps(data2))response2.raise_for_status()result2 = response2.json()# 提取第二轮AI回复内容ai_reply2 = result2["choices"][0]["message"]["content"] if "choices" in result2 and len(result2["choices"]) > 0 else ""print("\n\n第二轮对话 - 用户追问:")print(data2["messages"][2]["content"])print("\n第二轮对话 - AI回复:")print(ai_reply2)except requests.exceptions.RequestException as e:print(f"请求错误: {e}")except json.JSONDecodeError:print(f"JSON解析错误,响应内容: {response.text}")except Exception as e:print(f"发生错误: {e}")if __name__ == "__main__":main()

 可以,连续问答的功能都有。不过我部署的是小参数模型,这些不重要。

4.2 文心一言4.5多次请求测试

我们在官方访问AI时,有时候我们连续询问AI问题,AI的回复会有卡顿,现在我们模拟多次请求测试,检测文心一言模型的回答情况。这里准备了多个问题。

import requests
import json
import time
from random import choicedef main():# 基础配置url = "http://127.0.0.1:8180/v1/chat/completions"headers = {"Content-Type": "application/json"}model = "baidu/ERNIE-4.5-0.3B-PT"questions = ["Python列表和元组的区别?","什么是HTTP 200状态码?","解释面向对象的多态?","如何优化SQL查询?","区块链基本原理?"]request_count = 5  # 测试次数delay = 0.5  # 请求间隔(秒)# 数据记录response_times = []  # 响应时间(毫秒)success_count = 0    # 成功次数print(f"开始测试(共{request_count}次请求)...\n")for i in range(request_count):question = choice(questions)print(f"第{i+1}次 | 问题:{question[:30]}...")# 计时与请求start = time.perf_counter()try:response = requests.post(url,headers=headers,data=json.dumps({"model": model,"messages": [{"role": "user", "content": question}]}),timeout=10)response.raise_for_status()result = response.json()# 计算响应时间cost = (time.perf_counter() - start) * 1000response_times.append(cost)success_count += 1# 简要输出ai_reply = result["choices"][0]["message"]["content"][:50] if "choices" in result else "格式异常"print(f"✅ 成功 | 耗时:{cost:.2f}ms | 回复:{ai_reply}...")except Exception as e:print(f"❌ 失败 | 错误:{str(e)}")# 间隔(最后一次不间隔)if i < request_count - 1:time.sleep(delay)print("-" * 50)# 生成报告print("\n" + "="*30)print("性能测试报告")print("="*30)print(f"总请求数:{request_count}")print(f"成功数:{success_count} | 失败数:{request_count - success_count}")print(f"成功率:{success_count/request_count*100:.1f}%")if response_times:print("\n响应时间统计(毫秒):")print(f"平均:{sum(response_times)/len(response_times):.2f}")print(f"最小:{min(response_times):.2f}")print(f"最大:{max(response_times):.2f}")else:print("\n无有效响应时间数据(全部失败)")if __name__ == "__main__":main()

4.3 让文心一言4.5自己想一些测试方向

import requests
import jsondef main():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": "你做为文心一言大模型,你擅长什么领域,针对于这些领域给出一些测评思路"}]}try:response = requests.post(url, headers=headers, data=json.dumps(data))response.raise_for_status()result = response.json()print("状态码:", response.status_code)print("响应内容:")print(json.dumps(result, indent=2, ensure_ascii=False))# 提取并打印AI的回复内容if "choices" in result and len(result["choices"]) > 0:ai_result = result["choices"][0]["message"]["content"]print()print("\nAI回复:", ai_result)except requests.exceptions.RequestException as e:print(f"请求错误: {e}")except json.JSONDecodeError:print(f"JSON解析错误,响应内容: {response.text}")except Exception as e:print(f"发生错误: {e}")if __name__ == "__main__":main()

 针对于给出的测评思路,我们主要在中文处理方向进行测评。

4.4 中文处理和生成测评 

4.4.1 文学文本理解能力(基础核心)

测试案例问题示例预期能力
经典小说细节理解「《红楼梦》中,黛玉葬花时所葬的花主要是什么品种?这一行为与她的人物性格有何关联?」准确提取文本细节(桃花为主),并关联人物悲剧性特质(敏感、孤傲、对美好事物易逝的感伤)。
诗歌隐喻解读「分析李商隐《锦瑟》中『庄生晓梦迷蝴蝶,望帝春心托杜鹃』两句的隐喻意义,涉及哪些典故?」识别庄周梦蝶(虚实难辨的人生困惑)、望帝化鹃(哀情寄托)的典故,解读诗人对逝去时光与情感的怅惘。
叙事结构分析「莫言《红高粱家族》采用『非线性叙事』,请举例说明这种结构如何增强作品的历史厚重感?」结合具体章节(如过去与现在的时空交错),分析碎片化叙事对展现家族记忆、战争创伤的强化作用。
import requests
import json
import timedef test_literature_comprehension():"""测试大模型对文学文本的理解能力"""url = "http://127.0.0.1:8180/v1/chat/completions"headers = {"Content-Type": "application/json"}model = "baidu/ERNIE-4.5-0.3B-PT"# 定义测试问题集test_questions = [{"id": 1,"category": "小说细节理解","question": "「《红楼梦》中,黛玉葬花时所葬的花主要是什么品种?这一行为与她的人物性格有何关联?」","expected_answer_keywords": ["桃花", "敏感", "孤傲", "对美好易逝的感伤"]},{"id": 2,"category": "诗歌隐喻解读","question": "「分析李商隐《锦瑟》中『庄生晓梦迷蝴蝶,望帝春心托杜鹃』两句的隐喻意义,涉及哪些典故?」","expected_answer_keywords": ["庄周梦蝶", "望帝化鹃", "人生困惑", "情感怅惘"]},{"id": 3,"category": "叙事结构分析","question": "「莫言《红高粱家族》采用『非线性叙事』,请举例说明这种结构如何增强作品的历史厚重感?」","expected_answer_keywords": ["时空交错", "家族记忆", "战争创伤"]}]test_results = []for q in test_questions:print(f"\n===== 测试 {q['id']}: {q['category']} =====")print(f"问题: {q['question']}")# 构建请求体data = {"model": model,"messages": [{"role": "user", "content": q["question"]}]}try:# 发送请求并计时start_time = time.time()response = requests.post(url, headers=headers, data=json.dumps(data), timeout=30)response.raise_for_status()result = response.json()end_time = time.time()# 提取AI回复ai_reply = result["choices"][0]["message"]["content"] if "choices" in result and len(result["choices"]) > 0 else ""# 评估回答质量keyword_matches = [kw for kw in q["expected_answer_keywords"] if kw.lower() in ai_reply.lower()]# 记录结果test_results.append({"question_id": q["id"],"question": q["question"],"response_time": end_time - start_time,"success": True,"matched_keywords": keyword_matches,"ai_reply": ai_reply[:200] + "..." if len(ai_reply) > 200 else ai_reply})print(f"✅ 成功 | 耗时: {end_time - start_time:.2f}秒 | 得分: {score:.1f}分")print(f"匹配关键词: {', '.join(keyword_matches)}")print(f"回复: {ai_reply}...")except Exception as e:print(f"❌ 失败: {str(e)}")test_results.append({"question_id": q["id"],"question": q["question"],"success": False,"error": str(e)})# 生成测试报告generate_report(test_results, "文学文本理解能力测试")def generate_report(results, test_type):"""生成测试报告"""success_count = sum(1 for r in results if r.get("success", False))total_count = len(results)print("\n" + "="*50)print(f"{test_type} 报告")print("="*50)print(f"总测试题数: {total_count}")print(f"成功数: {success_count} | 失败数: {total_count - success_count}")if __name__ == "__main__":test_literature_comprehension()

从结果来看,对文学有一定的理解。

4.4.2 文学知识储备(专业基础)

测试案例问题示例预期能力
作家与代表作匹配「下列作家与其代表作对应错误的是哪一项?A. 卡夫卡 -《变形记》 B. 沈从文 -《边城》 C. 卡尔维诺 -《百年孤独》 D. 铁凝 -《哦,香雪》」准确识别错误项(C,《百年孤独》作者是马尔克斯),并补充其他选项的正确关联。
文学流派特征「什么是『魔幻现实主义』?除了《百年孤独》,再列举 3 部该流派的拉美文学作品。」定义核心特征(现实与魔幻融合),列举《佩德罗・巴拉莫》《家长的没落》等作品。
文学史事件影响「1919 年胡适《尝试集》出版对中国现代文学的意义是什么?它引发了哪些文学论争?」说明其为中国第一部白话诗集,推动白话文运动,关联与保守派的 “文白之争”。

import requests
import json
import timedef test_literature_knowledge():"""测试大模型的文学知识储备"""url = "http://127.0.0.1:8180/v1/chat/completions"headers = {"Content-Type": "application/json"}model = "baidu/ERNIE-4.5-0.3B-PT"# 定义测试问题集test_questions = [{"id": 1,"category": "作家与代表作匹配","question": "「下列作家与其代表作对应错误的是哪一项?A. 卡夫卡-《变形记》 B. 沈从文-《边城》 C. 卡尔维诺-《百年孤独》 D. 铁凝-《哦,香雪》」","expected_answer": "C","explanation": "《百年孤独》作者是加西亚·马尔克斯,卡尔维诺的代表作是《看不见的城市》等"},{"id": 2,"category": "文学流派特征","question": "「什么是『魔幻现实主义』?除了《百年孤独》,再列举3部该流派的拉美文学作品。」","expected_answer_keywords": ["现实与魔幻融合", "佩德罗·巴拉莫", "家长的没落", "跳房子"]},{"id": 3,"category": "文学史事件影响","question": "「1919年胡适《尝试集》出版对中国现代文学的意义是什么?它引发了哪些文学论争?」","expected_answer_keywords": ["第一部白话诗集", "推动白话文运动", "文白之争"]}]test_results = []for q in test_questions:print(f"\n===== 测试 {q['id']}: {q['category']} =====")print(f"问题: {q['question']}")# 构建请求体data = {"model": model,"messages": [{"role": "user", "content": q["question"]}]}try:# 发送请求并计时start_time = time.time()response = requests.post(url, headers=headers, data=json.dumps(data), timeout=30)response.raise_for_status()result = response.json()end_time = time.time()# 提取AI回复ai_reply = result["choices"][0]["message"]["content"] if "choices" in result and len(result["choices"]) > 0 else ""# 评估回答质量if "expected_answer" in q:  # 选择题评估is_correct = q["expected_answer"].lower() in ai_reply.lower()score = 100 if is_correct else 0explanation = q.get("explanation", "")eval_result = {"is_correct": is_correct,"expected": q["expected_answer"],"explanation": explanation}else:  # 关键词匹配评估keyword_matches = [kw for kw in q["expected_answer_keywords"] if kw.lower() in ai_reply.lower()]eval_result = {"matched_keywords": keyword_matches}# 记录结果test_results.append({"question_id": q["id"],"question": q["question"],"response_time": end_time - start_time,"success": True,"evaluation": eval_result,"ai_reply": ai_reply[:200] + "..." if len(ai_reply) > 200 else ai_reply})print(f"✅ 成功 | 耗时: {end_time - start_time:.2f}秒 | 得分: {score:.1f}分")if "is_correct" in eval_result:print(f"结果: {'正确' if eval_result['is_correct'] else '错误'} | 正确答案: {eval_result['expected']}")if eval_result.get("explanation"):print(f"解释: {eval_result['explanation']}")else:print(f"匹配关键词: {', '.join(eval_result['matched_keywords'])}")print(f"回复: {ai_reply}...")except Exception as e:print(f"❌ 失败: {str(e)}")test_results.append({"question_id": q["id"],"question": q["question"],"success": False,"error": str(e)})# 生成测试报告generate_report(test_results, "文学知识储备测试")def generate_report(results, test_type):"""生成测试报告"""success_count = sum(1 for r in results if r.get("success", False))total_count = len(results)print("\n" + "="*50)print(f"{test_type} 报告")print("="*50)print(f"总测试题数: {total_count}")print(f"成功数: {success_count} | 失败数: {total_count - success_count}")if __name__ == "__main__":test_literature_knowledge()

这里我对结果进行省略了。 

4.4.3 文学创作能力(核心应用)

这里才是真正的测试,我们一般都是要靠大模型写作的,看看0.3B的模型效果如何。

测试案例任务要求预期能力
仿写经典风格「模仿鲁迅《呐喊》的语言风格(冷峻、讽刺、口语化),写一段 100 字左右的街头场景描写。」语言简练带批判性,如 “巷口的剃头摊前,老陈的剪子在光头上划拉,像割田埂上的枯草。穿长衫的人从旁过,鼻子里哼出半声,仿佛这摊儿的油腻玷污了他的鞋底。”
续写经典作品「假设《阿 Q 正传》中阿 Q 未被处死,续写一段他参加北伐后的经历(200 字),需符合人物性格(精神胜利法、愚昧)。」延续阿 Q 的核心特质,如 “阿 Q 见了穿军装的,便挺直腰板喊‘同志’,被推搡了也笑‘儿子打老子’。后来抢了地主家的米,还逢人说‘这是革命的胜利’。”
原创特定体裁「以『秋夜归乡』为主题,写一首七言绝句,要求押韵(平水韵‘尤’部),包含‘月’‘霜’两个意象。」符合格律,如 “冷月疏星照客舟,寒霜沾袖入村头。柴门犬吠惊残梦,犹记儿时绕膝游。”
import requests
import json
import timedef test_literature_creativity():"""测试大模型的文学创作能力"""# 基础配置url = "http://127.0.0.1:8180/v1/chat/completions"headers = {"Content-Type": "application/json"}model = "baidu/ERNIE-4.5-0.3B-PT"# 创作任务集(覆盖仿写、续写、原创)creation_tasks = [{"id": 1,"task_type": "仿写经典风格","task": "模仿鲁迅《呐喊》的语言风格(冷峻、讽刺、口语化),写一段100字左右的街头场景描写。"},{"id": 2,"task_type": "续写经典作品","task": "假设《阿Q正传》中阿Q未被处死,续写一段他参加北伐后的经历(200字左右),需符合人物性格(精神胜利法、愚昧)。"},{"id": 3,"task_type": "原创特定体裁","task": "以『秋夜归乡』为主题,写一首七言绝句,要求押韵(平水韵‘尤’部),包含‘月’‘霜’两个意象。"}]# 存储测试结果test_records = []print("开始文学创作能力测试...\n")for task in creation_tasks:print(f"===== 创作任务 {task['id']}: {task['task_type']} =====")print(f"任务要求: {task['task']}\n")# 构建请求体data = {"model": model,"messages": [{"role": "user", "content": task["task"]}]}try:# 记录响应时间start_time = time.time()response = requests.post(url,headers=headers,data=json.dumps(data),timeout=60  # 创作任务超时设为60秒)response.raise_for_status()result = response.json()end_time = time.time()# 提取完整AI创作内容ai_creation = result["choices"][0]["message"]["content"] if "choices" in result and result["choices"] else "未生成有效内容"# 记录结果test_records.append({"task_id": task["id"],"task_type": task["task_type"],"task": task["task"],"success": True,"response_time": round(end_time - start_time, 2),"ai_creation": ai_creation})# 打印完整创作内容print(f"✅ 创作完成 | 响应时间: {end_time - start_time:.2f}秒")print("AI创作内容:\n" + ai_creation + "\n")except Exception as e:error_msg = str(e)test_records.append({"task_id": task["id"],"task_type": task["task_type"],"task": task["task"],"success": False,"error": error_msg})print(f"❌ 创作失败 | 错误: {error_msg}\n")# 任务间隔if task["id"] != len(creation_tasks):time.sleep(1)  # 创作任务间隔1秒,避免请求过密# 生成简洁报告generate_creation_report(test_records)def generate_creation_report(records):"""生成创作能力测试报告"""total_tasks = len(records)success_tasks = sum(1 for r in records if r["success"])fail_tasks = total_tasks - success_tasksprint("\n" + "="*60)print("文学创作能力测试报告")print("="*60)print(f"总创作任务数: {total_tasks} | 成功: {success_tasks} | 失败: {fail_tasks}")if success_tasks > 0:avg_time = sum(r["response_time"] for r in records if r["success"]) / success_tasksprint(f"平均响应时间: {avg_time:.2f}秒\n")print("="*40)print("成功创作内容汇总")print("="*40)for r in records:if r["success"]:print(f"\n【任务{r['task_id']}: {r['task_type']}】")print(f"任务要求: {r['task']}")print(f"响应时间: {r['response_time']}秒")print("创作内容:\n" + r["ai_creation"] + "\n")print("-"*50)if fail_tasks > 0:print("\n" + "="*40)print("失败任务汇总")print("="*40)for r in records:if not r["success"]:print(f"\n【任务{r['task_id']}: {r['task_type']}】")print(f"任务要求: {r['task']}")print(f"失败原因: {r['error']}\n")print("-"*50)if __name__ == "__main__":test_literature_creativity()

看来结果还是不错的。 

 五、测试总结

本人测试了“paddlepaddle/ERNIE-4.5-0.3B-Paddle”模型,该模型对于文学领域的处理是十分不错的,由于模型参数量较小,没有对逻辑分析领域进行测评,至于3.11和3.8谁大的问题,对于0.3B的模型来说是可以接受的,毕竟当初GPT那么大的参数还会出错。本人测评水平有限,如有更好的测评思路,还请各位大佬指正。

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

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

相关文章

深入探讨 C++ 中的浮点数数据类型

核心概念&#xff1a;IEEE 754 标准 C 中的浮点数&#xff08;float, double, long double&#xff09;在绝大多数现代系统上遵循 IEEE 754 标准。这个标准定义了浮点数在内存中的二进制表示方式、运算规则、特殊值&#xff08;如无穷大、NaN&#xff09;等。数据类型与精度 fl…

相机:以鼠标点为中心缩放(使用OpenGL+QT开发三维CAD)

很多软件中&#xff08;Auto CAD、ODA等&#xff09;支持以鼠标点为中心进行放缩操作&#xff0c;有什么黑科技吗&#xff1f; 本章节为相机原理和实现的补充内容&#xff0c;支持鼠标放缩时以鼠标点为中心进行放缩。 对应视频课程已上线&#xff0c;欢迎观看和支持~ https:…

​​XAMPP安全升级指南:修复CVE-2024-4577漏洞,从PHP 8.2.12升级至PHP 8.4.10​​

​​1. 背景与漏洞概述​​ 近期,PHP官方披露了一个高危漏洞 ​​CVE-2024-4577​​,该漏洞影响PHP 8.2.x及更早版本,可能导致远程代码执行(RCE)或信息泄露。由于XAMPP默认捆绑的PHP版本(如8.2.12)可能受此漏洞影响,建议用户尽快升级至最新的​​PHP 8.4.10​​(或官…

ES 压缩包安装

以下是 Elasticsearch (ES) 通过 .tar.gz 压缩包安装的详细步骤&#xff08;适用于 Linux/macOS 系统&#xff09;&#xff1a; 1. 准备工作 1.1 检查系统依赖 Java 环境&#xff1a;ES 需要 JDK&#xff0c;推荐 OpenJDK 11/17&#xff08;ES 7.x/8.x 兼容版本&#xff09;。…

RoboRefer:面向机器人视觉-语言模型推理的空间参考

25年6月来自北航、北大和北京智源的论文“RoboRefer: Towards Spatial Referring with Reasoning in Vision-Language Models for Robotics”。 空间参考是实体机器人与三维物理世界交互的基本能力。然而&#xff0c;即使有了强大的预训练视觉-语言模型 (VLM)&#xff0c;近期方…

【Unity】MiniGame编辑器小游戏(十)连连看【Link】

更新日期:2025年7月9日。 项目源码:获取项目源码 索引 连连看【Link】一、游戏最终效果二、玩法简介三、正式开始1.定义游戏窗口类2.规划游戏窗口、视口区域3.方块 Block①.定义方块类②.生成方块所有类型③.生成连连看棋盘④.绘制方块阵列4.连线 Line①.点击方块连线②.尝试…

Enable ADB Debugging Before Connect

If you don’t enable Developer Options and turn on USB Debugging before plugging in the cable, adb devices won’t detect the phone because the Android system doesn’t trust the connection yet. Here’s what you need to do step-by-step to fix this:✅ 1. Enab…

从互联网电脑迁移Dify到内网部署Dify方法记录

一、在互联网电脑上准备迁移文件1. 保存 Docker 镜像# 获取所有 Dify 相关镜像&#xff08;根据实际容器名调整&#xff09; docker ps --filter "namedify" --format "{{.Image}}" | sort -u > dify-images.list# 保存镜像为 .tar 文件 docker save $(…

【EGSR2025】材质+扩散模型+神经网络相关论文整理随笔(一)

MatSwap: Light-aware material transfers in images介绍任务&#xff1a;输入一张拍摄图像、示例材质纹理图像&#xff08;这里跟BRDF无关&#xff0c;通常我们讲到材质一般指的是SVBRDF&#xff0c;但是这里的材质指的只是纹理&#xff09;、用户为拍摄图像指定的遮罩区域&am…

饿了么el-upload上传组件报错:TypeError: ***.upload.addEventListener is not a function

在本地上传没有报这个错误&#xff0c;部署到服务器后会报这个错误&#xff0c;一开始以为是服务器配置等什么原因&#xff0c;但是一想这个报错应该还是在前端&#xff0c;接口都还没请求&#xff0c;不可能到后台去&#xff0c;后面搜了好几个AI也没有找到想要的答案或解决方…

淘宝直播与开源链动2+1模式AI智能名片S2B2C商城小程序的融合发展研究

摘要&#xff1a;本文聚焦于淘宝直播这一以“网红”内容为主的社交电商平台&#xff0c;深入分析其特点与流量入口优势。同时&#xff0c;引入开源链动21模式AI智能名片S2B2C商城小程序这一新兴概念&#xff0c;探讨二者融合的可能性与潜在价值。通过分析融合过程中的技术、市场…

【macos用镜像站体验】Claude Code入门使用教程和常用命令

一、下载安装nodejs # macOS 用户安装nodejs brew update brew install node二、安装官方Claude Code # 安装 Claude Code npm install -g anthropic-ai/claude-code # 查看版本 claude --version三、正式使用&#xff08;国内镜像站&#xff09; 今天发现的一个镜像站&…

算法学习笔记:11.冒泡排序——从原理到实战,涵盖 LeetCode 与考研 408 例题

在排序算法的大家族中&#xff0c;冒泡排序是最基础也最经典的算法之一。它的核心思想简单易懂&#xff0c;通过重复地走访待排序序列&#xff0c;一次比较两个相邻的元素&#xff0c;若它们的顺序错误就把它们交换过来&#xff0c;直到没有需要交换的元素为止。虽然冒泡排序的…

Linux小白学习基础内容

记录第一天重新学习2025/7/10 15&#xff1a;467/10 17&#xff1a;02这里面一个命令带多个参数举例&#xff08;多个参数之间用空格隔开&#xff09;ls&#xff08;命令&#xff09; ~ / /etc/&#xff08;参数&#xff09; :这里就是同时查看主机的家目录&#xff0c;根目…

从零开始搭建深度学习大厦系列-2.卷积神经网络基础(5-9)

(1)本人挑战手写代码验证理论&#xff0c;获得一些AI工具无法提供的收获和思考&#xff0c;对于一些我无法回答的疑问请大家在评论区指教&#xff1b; (2)本系列文章有很多细节需要弄清楚&#xff0c;但是考虑到读者的吸收情况和文章篇幅限制&#xff0c;选择重点进行分享&…

【iOS设计模式】深入理解MVC架构 - 重构你的第一个App

目录 一、MVC模式概述 二、创建Model层 1. 新建Person模型类 2. 实现Person类 三、重构ViewController 1. 修改ViewController.h 2. 重构ViewController.m 四、MVC组件详解 1. Model&#xff08;Person类&#xff09; 2. View&#xff08;Storyboard中的UI元素&#x…

前端项目集成lint-staged

lint-staged (lint-staged) 这个插件可以只针对进入git暂存区中的代码进行代码格式检查与修复&#xff0c;极大提升效率&#xff0c;避免扫描整个项目文件&#xff0c;代码风格控制 eslint prettier stylelint 看这两篇文章 前端项目vue3项目集成eslint9.x跟prettier 前端项…

李宏毅genai笔记:模型编辑

0 和post training的区别直接用post training的方法是有挑战的&#xff0c;因为通常训练资料只有一笔而且之后不管问什么问题&#xff0c;都有可能只是这个答案了1 模型编辑的评估方案 reliability——同样的问题&#xff0c;需要是目标答案generalization——问题&#xff08;…

Oracle:union all和union区别

UNION ALL和UNION在Oracle中的主要区别体现在处理重复记录、性能及结果排序上&#xff1a;处理重复记录‌UNION‌&#xff1a;自动去除重复记录&#xff0c;确保最终结果唯一。‌UNION ALL‌&#xff1a;保留所有记录&#xff0c;包括完全重复的行。性能表现‌UNION‌&#xff…

[C#/.NET] 内网开发中如何使用 System.Text.Json 实现 JSON 解析(无需 NuGet)

在实际的企业开发环境中&#xff0c;尤其是内网隔离环境&#xff0c;开发人员经常面临无法使用 NuGet 安装外部包的问题。对于基于 .NET Framework 4.8 的应用&#xff0c;JSON 解析是一个常见的需求&#xff0c;但初始项目中往往未包含任何 JSON 处理相关的程序集。这时&#…