LLM自动化评测

使用的数据集:ceval-exam

import requests
from datasets import load_dataset, concatenate_datasets
import re
from tqdm import tqdm
import re, time, tiktoken, ollama
from ollama import ChatResponse
from ollama import Optionsdef llm(model, query, temperature=0.6, stream=False, encoding=tiktoken.encoding_for_model("gpt-4"), max_tokens=None):# return "A"options = Options(temperature=temperature,num_gpu=0, # num_gpu=0即使用CPU计算# num_thread=32,# num_ctx=4096, # 上下文窗口大小)# 流式输出response = ollama.chat(model=model,messages=[{"role": "system","content": "你是一个做题专家。请完成下列单项选择题。\n\n## output format\n只能输出一个选项编号字母,不要有解析等其他任何内容。",},{"role": "user","content": query,},],options=options,stream=stream,keep_alive=0)if stream:chunks = ""# 逐块打印响应内容for chunk in response:chunks += chunk["message"]["content"]# print(chunk["message"]["content"], end="", flush=True)if max_tokens != None and len(encoding.encode(chunks)) > max_tokens:breakresponse = chunkselse:# print(response["message"]["content"])response = response["message"]["content"]# stream=True时无效# with open("tmp.txt", "a", encoding="utf-8") as f:#     f.write(response + "\n"+ 100*'*' + '\n')if '<think>' in response and '</think>' in response:response = re.sub(r'<think>.*?</think>', '', response, flags=re.DOTALL)return response.strip()task_list = ["computer_network","operating_system","computer_architecture","college_programming","college_physics","college_chemistry","advanced_mathematics","probability_and_statistics","discrete_mathematics","electrical_engineer","metrology_engineer","high_school_mathematics","high_school_physics","high_school_chemistry","high_school_biology","middle_school_mathematics","middle_school_biology","middle_school_physics","middle_school_chemistry","veterinary_medicine","college_economics","business_administration","marxism","mao_zedong_thought","education_science","teacher_qualification","high_school_politics","high_school_geography","middle_school_politics","middle_school_geography","modern_chinese_history","ideological_and_moral_cultivation","logic","law","chinese_language_and_literature","art_studies","professional_tour_guide","legal_professional","high_school_chinese","high_school_history","middle_school_history","civil_servant","sports_science","plant_protection","basic_medicine","clinical_medicine","urban_and_rural_planner","accountant","fire_engineer","environmental_impact_assessment_engineer","tax_accountant","physician",
]
task_chinese_name_list = ["计算机网络","操作系统","计算机架构","大学编程","大学物理","大学化学","高等数学","概率与统计","离散数学","电气工程师","计量工程师","高中数学","高中物理","高中化学","高中生物学","中学数学","中学生物学","中学物理","中学化学","兽医学","大学经济学","工商管理","马克思主义","毛泽东思想","教育科学","教师资格","高中政治","高中地理","中学政治","中学地理","现代中国史","思想道德修养","逻辑","法律","汉语与文学","艺术研究","专业旅游指南","法律专业","高中汉语","高中历史","中学历史","公务员","体育科学","植物保护","基础医学","临床医学","城市与农村规划","会计","消防工程师","环境影响评估工程师","税务会计","医生",
]def test_split(model_name):encoding = tiktoken.encoding_for_model("gpt-4")model_name_write = model_name.replace(":", "_").replace("/", "_")# with open(f"{model_name_write}.txt", "w", encoding="utf-8") as f:#     f.write(f"")# 加载数据集sum_total = 0sum_correct = 0for i in range(26, len(task_list)):try:dataset_tmp = load_dataset(r"ceval/data", name=task_list[i])dataset = concatenate_datasets([dataset_tmp["dev"], dataset_tmp["val"]])print(f"\nNo.{i}: {task_list[i]}({task_chinese_name_list[i]})数据集加载完成, len(dataset)={len(dataset)}")except:print(f"\nNo.{i}: {task_list[i]}({task_chinese_name_list[i]})数据集加载失败")continue# 初始化统计变量correct = 0total = len(dataset)for item in tqdm(dataset, desc=f"No.{i}: Processing"):# for item in dataset:try:# 构造完整问题user_prompt = f"{item['question']}\nA. {item['A']}\nB. {item['B']}\nC. {item['C']}\nD. {item['D']}\n答案:"# 调用Ollama APImodel_answer = llm(model_name, user_prompt, stream=True, encoding=encoding, max_tokens=4096)# 提取并验证答案"""从模型输出中提取答案选项(A/B/C/D)"""match = re.search(r"[A-D]", model_answer.upper())extracted = match.group(0) if match else Noneif extracted and extracted == item["answer"]:correct += 1except:print("\nerror.")# 输出结果sum_total += totalsum_correct += correctprint(f"No.{i}: {task_list[i]}({task_chinese_name_list[i]})数据集准确率: {correct}/{total} = {correct/total:.2%}")with open(f"{model_name_write}.txt", "a", encoding="utf-8") as f:f.write(f"No.{i}: {task_list[i]}({task_chinese_name_list[i]})数据集准确率: {correct}/{total} = {correct/total:.2%}\n\n")with open(f"{model_name_write}.txt", "a", encoding="utf-8") as f:f.write(f"总准确率: {sum_correct}/{sum_total} = {sum_correct/sum_total:.2%}\n\n")print(f"总准确率: {sum_correct}/{sum_total} = {sum_correct/sum_total:.2%}")# huihui_ai/qwen2.5-abliterate:7b-instruct-q4_K_M    
# qwen2.5:3b-instruct-q8_0                           
# qwen2.5:7b-instruct-q5_K_M                         
# deepseek-r1-7b:latest 
# test_split(model_name="qwen2.5:3b-instruct-q8_0")
# test_split(model_name="qwen2.5:7b-instruct-q5_K_M")
# test_split(model_name="huihui_ai/qwen2.5-abliterate:7b-instruct-q4_K_M")
# test_split(model_name="qwen2.5:1.5b")
# test_split(model_name="qwen2.5:1.5b-instruct-fp16")
# test_split(model_name="qwen2.5:3b")
# test_split(model_name="gemma3:4b")
# test_split(model_name="qwen2.5:7b")
# test_split(model_name="gemma3:4b-it-q8_0")
# test_split(model_name="qwen2.5:0.5b-instruct-fp16")
# test_split(model_name="qwen2.5:0.5b")test_split(model_name="deepseek-r1:1.5b")
# test_split(model_name="deepseek-r1:1.5b-qwen-distill-fp16")
# test_split(model_name="deepseek-r1:7b")

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

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

相关文章

微软开源神器OmniParser V2.0 介绍

微软开源的OmniParser V2.0是一款基于纯视觉技术的GUI智能体解析工具&#xff0c;旨在将用户界面&#xff08;UI&#xff09;截图转换为结构化数据&#xff0c;从而实现对计算机屏幕上的可交互元素的高效识别和操控。这一工具通过结合先进的视觉解析技术和大型语言模型&#xf…

用python代码将excel中的数据批量写入Json中的某个字段,生成新的Json文件

需求 需求&#xff1a; 1.将execl文件中的A列赋值给json中的TrackId&#xff0c;B列赋值给json中的OId 要求 execl的每一行&#xff0c;对应json中的每一个OId json 如下&#xff1a; {"List": [{"BatchNumber": "181-{{var}}",// "Bat…

实验篇| Nginx环境搭建-安全配置

在前面的文章里&#xff0c;阿祥详细介绍了在 Windows 系统中安装 Nginx 服务器的具体操作步骤&#xff0c;感兴趣的朋友可以参考&#xff1a;实验篇 | Nginx 反向代理 - 7 层代理 。完成 Nginx 的安装只是搭建 Web 服务的第一步&#xff0c;为了保障服务器的稳定运行以及数据安…

理解我们单片机拥有的资源

目录 为什么要查询单片机拥有的资源 所以&#xff0c;去哪些地方可以找数据手册 一个例子&#xff1a;STM32F103C8T6 前言 本文章隶属于项目&#xff1a; Charliechen114514/BetterATK: This is a repo that helps rewrite STM32 Common Repositorieshttps://github.com/C…

从零开始 | C语言基础刷题DAY3

❤个人主页&#xff1a;折枝寄北的博客 目录 1.打印3的倍数的数2.从大到小输出3. 打印素数4.打印闰年5.最大公约数 1.打印3的倍数的数 题目&#xff1a; 写一个代码打印1-100之间所有3的倍数的数字 代码&#xff1a; int main(){int i 0;for (i 1; i < 100; i){if (i % …

Blender材质 - 层权重

层权重 混合着色器 可以让 面朝向的一面显示一种材质 另一面显示另一种材质 就能实现挺不错的材质效果 移动视角 材质会跟着变化 有点类似虚幻的视差节点BumpOffset

3个 Vue $set 的应用场景

大家好&#xff0c;我是大澈&#xff01;一个喜欢结交朋友、喜欢编程技术和科技前沿的老程序员&#x1f468;&#x1f3fb;‍&#x1f4bb;&#xff0c;关注我&#xff0c;科技未来或许我能帮到你&#xff01; 在 Vue2 中&#xff0c;由于 Object.defineProperty 的限制&#…

Flutter_学习记录_ ImagePicker拍照、录制视频、相册选择照片和视频、上传文件

插件地址&#xff1a;https://pub.dev/packages/image_picker 添加插件 添加配置 android无需配置开箱即用&#xff0c;ios还需要配置info.plist <key>NSPhotoLibraryUsageDescription</key> <string>应用需要访问相册读取文件</string> <key>N…

LeetCode 解题思路 19(Hot 100)

解题思路&#xff08;递归&#xff09;&#xff1a; 终止条件&#xff1a; 若节点为空&#xff0c;返回深度0。递归步骤&#xff1a; 分别计算左子树和右子树的最大深度&#xff0c;取较大者并加1&#xff08;当前节点&#xff09;。 Java代码&#xff1a; class Solution {…

如何启用 HTTPS 并配置免费的 SSL 证书

引言 HTTPS 已成为现代网站安全性的基础要求。通过 SSL/TLS 证书对数据进行加密&#xff0c;不仅可以保护用户隐私&#xff0c;还能提升搜索引擎排名并增强用户信任。本指南将详细介绍如何通过 Lets Encrypt&#xff08;免费、自动化的证书颁发机构&#xff09;为您的网站启用…

element-plus中Popconfirm气泡确认框组件的使用

1、基本使用 从element-plus官网复制代码&#xff1a; <template><el-popconfirm title"Are you sure to delete this?"><template #reference><el-button>Delete</el-button></template></el-popconfirm> </template…

软件需求分类、需求获取(高软46)

系列文章目录 软件需求分类&#xff0c;需求获取 文章目录 系列文章目录前言一、软件需求二、获取需求三、真题总结 前言 本节讲明软件需求分类、需求获取的相关知识。 一、软件需求 二、获取需求 三、真题 总结 就是高软笔记&#xff0c;大佬请略过&#xff01;

10、基于osg引擎生成热力图高度图实现3D热力图可视化、3D热力图实时更新(带过渡效果)

1、结果 2、完整C代码 #include <sstream> #include <iomanip> #include <iostream> #include <vector> #include <random> #include <cmath> #include <functional> #include <osgViewer/viewer> #include <osgDB/Read…

鸿蒙应用程序包HAP的开发与使用

1、HAP是什么&#xff1f; HAP&#xff08;Harmony Ability Package&#xff09;是应用安装和运行的基本单元。HAP包是由代码、资源、第三方库、配置文件等打包生成的模块包&#xff0c;其主要分为两种类型&#xff1a;entry和feature。 entry&#xff1a;应用的主模块&#x…

【Mac】安装 Parallels Desktop、Windows、Rocky Linux

一、安装PD 理论上&#xff0c;PD只支持试用15天&#xff01;当然&#xff0c;你懂的。 第一步&#xff0c;在 Parallels Desktop for Mac 官网 下载 Install Parallels Desktop.dmg第二步&#xff0c;双击 Install Parallels Desktop.dmg 第三步&#xff0c;双击安装Paralle…

matlab 自适应模糊PID在反应釜温度控制中的应用

1、内容简介 matlab163-自适应模糊PID在反应釜温度控制中的应用 可以交流、咨询、答疑 2、内容说明 略摘要:针对工业过程控制具有时变、滞后、非线性等特点,在传统 PID 控制中融入模糊控制的功能,形成了新的参数自 适应模糊 PID 控制器,并把它应用在化工制药中常用的反应釜温度…

基于FPGA的3U机箱温度采集板PT100,应用于轨道交通/电力储能等

板卡简介&#xff1a; 本板为温度采集板&#xff08;PT100&#xff09;&#xff0c;对目标进行测温&#xff0c;然后将温度转换成处理器可识别的电流信号。 性能规格&#xff1a; 电源&#xff1a;DC5V&#xff0c;DC15V 4线制PT100&#xff1a;7路&#xff08;标称测温范围…

管家婆实用贴-如何设置打印机共享

很多商家在使用管家婆软件经营日常业务时会有多个操作员多台电脑需要打印&#xff0c;但是不想每台电脑配置一台打印机&#xff0c;一台电脑专门用来打印又浪费设备。遇到这种情况时可以将插线电脑上的打印机共享给其他的电脑一起使用&#xff0c;方便又高效。今天来和小编一起…

Qt QML实现视频帧提取

## 前言 视频帧率&#xff08;Frame Rate&#xff09;是指视频播放时每秒显示的画面帧数&#xff0c;通常用fps&#xff08;Frames Per Second&#xff09;来表示。视频是由一系列静止的图像帧组成的&#xff0c;而视频帧率则决定了这些图像帧在单位时间内播放的速度。较高的视…

LabVIEW压比调节器动态试验台

本案介绍了一种基于LabVIEW的压比调节器动态试验台的设计&#xff0c;通过实用的LabVIEW图形化编程语言&#xff0c;优化了数据采集与处理的整个流程。案例通过实际应用展示了设计的专业性与高效性&#xff0c;以及如何通过系统化的方法实现精确的动态测试和结果分析。 ​ 项目…