PLM
BERT(2019)
GPT-2
Roberta
BART(2020)
LLM
decoder-only:
又称为生成式架构,仅包含解码器部分。它通常用于序列生成任务,如文本生成、机器翻译等。这种架构的模型适用于需要生成序列的任务,可以从输入的编码中生成相应的序列。同时,Decoder-Only 架构还有一个重要特点是可以进行无监督预训练。在预训练阶段,模型通过大量的无标注数据学习语言的统计模式和语义信息。
GPT-3 (2020)
PaLM (2022)
Mistral (2023)
LLaMA (2023)
名词解释
Agent 即上层应用
AI agent 本质上是一个构建在LLM(大模型)之上的智能应用,也就是说AI agent是大模型的上层应用。
Few-shot learning
少样本学习
Zero-shot learning
在没有目标类样本的情况下工作。两者都依赖于预训练阶段获得的广泛知识。
Tuning-Free
定义:Tuning-free指的是无需对模型的超参数进行调整或微调,就可以直接使用预训练模型进行推断和应用。这类方法强调模型的预训练阶段,使得在应用阶段无需再进行调整。
Training-Free
定义:Training-free是指模型在推断阶段完全不需要额外的训练或微调,即模型在预训练阶段已经获得了足够的知识,直接应用于任务。
模型参数
“gpt-3.5-turbo”: {
“model”: “OpenAi”,
“maxToken”: 4096,
“price”: {
“currency”: “USD”,
“prompt”: 0.002,#表示每 1000 个输入 token(发送给模型的 prompt )的费用是 0.002 美元。
“complete”: 0.002#每 1000 个输出 token(模型生成的 completion )的费用是 0.002 美元。
},
“support_stream”: true#模型可以支持逐步返回响应内容,而不是一次性返回完整结果。
}
数据集汇总
GSM8K,一个由8.5K高质量的语言多样化的小学数学单词问题组成的数据集。将这些问题分为 **7.5K 训练问题和 1K 测试问题。**这些问题需要 2 到 8 个步骤来解决,解决方法主要是使用基本的算术运算(+ - / *)进行一连串的基本计算,以得出最终答案。一个聪明的中学生应该能够解决每个问题。
MMLU(Massive Multitask Language Understanding)用于衡量在零样本(zero-shot)和少样本(few-shot)情形下,大模型在预训练期间获得的世界知识。这使得该基准测试更具挑战性,也更类似于我们评估人类的方式。该基准涵盖STEM、人文(humanities)、社会科学(social sciences)等领域的 57 个学科。 它的难度从初级到高级,既考验世界知识,又考验解决问题的能力。 学科范围从数学和历史等传统领域到法律和伦理等更为专业的领域。学科的粒度和广度使该基准成为识别模型盲点的理想选择。MMLU数据集共收集了15908个问题,并将其分为few-shot开发集、验证集和测试集。 few-shot开发集每个学科有5个问题,验证集可用于选择超参数,由1540个问题组成,测试集有14079个问题。 每个学科至少包含100个测试问题,这比大多数旨在评估人类的考试都要长。
CMMLU是一个综合性的中文评估基准,专门用于评估语言模型在中文语境下的知识和推理能力。CMMLU涵盖了从基础学科到高级专业水平的67个主题。它包括:需要计算和推理的自然科学,需要知识的人文科学和社会科学,以及需要生活常识的中国驾驶规则等。此外,CMMLU中的许多任务具有中国特定的答案,可能在其他地区或语言中并不普遍适用。因此是一个完全中国化的中文测试基准。
MT-bench,一个由80个高质量的多轮对话问题组成的基准,旨在测试多轮对话和指令遵循能力,涵盖常见的使用情况,并专注于具有挑战性的问题以区分模型。在数据集的构造上,确定了8个常见的用户提示类别:写作、角色扮演、提取、推理、数学、编码、知识I(STEM)和知识II(人文/社会科学)。
评估代码语言模型(LLMs)的性能
HumanEval基准测试在2021年提出,包含164个精心设计的Python编程问题,这些问题通过一系列测试用例来检验代码LLMs在零样本条件下生成代码的能力。
MBPP基准测试被提出,它包含了500个编程问题,专注于评估模型在给定少量样本情况下的代码生成性能。这两个基准测试为代码LLMs的研究和发展提供了重要的评价标准。
Prompt Engineering 提示工程
RAG检索增强生成
检索增强生成(Retrieval Augmented Generation)
文本分割
embedding模型
BGE
GTE
E5
检索
判断用户提问与知识库中文档的相似度
欧氏距离:想象一下二维平面上的两个点,欧氏距离就是连接这两个点的直线距离。在高维空间中,欧氏距离计算的是两个向量之间的直线距离。距离越小,相似度越高。但在文本检索中,欧氏距离容易受到向量长度的影响。例如,一篇长文章和一篇短文章即使主题相同,它们的向量长度也可能相差很大,导致欧氏距离较大,从而被误判为不相似。
余弦距离:更关注两个向量之间的夹角。夹角越小,余弦值越接近 1,相似度越高。余弦距离不受向量长度的影响,更适合用于文本检索,因为它更关注文本的语义相似性,而不是文本的长度。
MMR 算法(最大边际相关性算法): 可以考虑更多文档,最早应用于文本摘要提取和信息检索领域,后逐渐被引入到推荐系统中。其核心思想是在保持推荐结果相关性的基础上,通过选择与已选结果不相似的物品,增加整体多样性,从而提升用户体验。
检索器检索出与查询向量相似度最高的几篇论文。通常使用以下技术来实现:**BM25:**一种经典的信息检索算法,通过计算查询词与文档的匹配程度来检索文档。 **Dense Retrieval:**如DPR(Deep Probabilistic Retrieval),使用深度学习模型来理解查询和文档的语义,进行更准确的检索。
检索到的文档与输入查询如何融合
检索到的文档与输入查询通过拼接的方式进行融合。具体来说,检索到的文档会被拼接到输入查询的后面,形成一个新的输入序列,这个序列会被输入到生成器中,以便生成器能够利用这些信息生成答案,确保了生成器在生成答案前能够“看到”与问题相关的外部知识。通常通过以下方式实现:
拼接:将检索到的文档内容与输入查询直接拼接在一起。
加权:对检索到的文档进行加权,以突出与查询更相关的部分。
召回
开源向量数据库
Chroma: 一个开源的嵌入数据库,专为 LLM 应用设计。它专注于易用性和快速原型设计,并与 Python 生态系统紧密集成。它提供了一个简单的 API 用于存储、检索和管理嵌入,并支持本地部署和云部署。
Faiss (Facebook AI Similarity Search): 由 Facebook AI Research 开发,专注于高效的相似性搜索和聚类。它支持多种索引算法,并针对 GPU 进行了优化,具有非常高的性能。适合大规模数据集和高性能要求的场景。
faiss的核心就是索引(index)概念,它封装了一组向量,并且可以选择是否进行预处理,帮忙高效的检索向量。
Annoy (Spotify Approximate Nearest Neighbors Oh Yeah): 由 Spotify 开发,专注于近似最近邻搜索。它使用树形结构进行索引,具有较低的内存占用和较快的查询速度。适合对精度要求不高,但对速度和内存占用敏感的场景。
ScaNN (Scalable Nearest Neighbors): 由 Google Research 开发,专注于可扩展的近似最近邻搜索。它采用了一种新的量化方法,可以在保持高精度的前提下,显著降低内存占用和查询延迟。适合处理超大规模数据集的场景。
Milvus: 一款开源的云原生向量数据库,支持多种索引类型和相似性度量方法。它具有良好的可扩展性和易用性,并提供丰富的 API 和工具。适合构建企业级向量搜索应用。
Qdrant: 一款开源的向量相似性搜索引擎,专注于过滤和全文搜索功能。它支持多种数据类型,并提供丰富的 API 和 SDK。适合需要复杂过滤条件的场景。
Vespa: 由雅虎开发的开源搜索引擎,支持向量搜索和全文搜索。它具有高性能、高可用性和可扩展性,并提供丰富的功能,例如地理空间搜索、实时索引等。适合构建复杂的搜索应用。
ReAct(Reasoning and Acting)
本质上就是把融合了Reasoning和Acting的一种范式,推理过程是浅显易懂,仅仅包含thought-action-observation步骤,很容易判断推理的过程的正确性,使用ReAct做决策甚至超过了强化学习。
ReAct克服了普遍存在的问题思维链推理中的幻觉和错误传播问题,通过与简单的维基百科API交互,生成类似于人的任务解决型轨迹,解释性进一步增强。
Self-ask
一种follow-up的使用范式,仅仅包含follow-up, immediate answer步骤,至于follow-up多少个step,完全由它自己决定、
Fine-tuning微调技术
SFT 监督微调
监督微调的步骤
具体来说,监督式微调包括以下几个步骤:
·预训练 首先在一个大规模的数据集上训练一个深度学习模型,例如使用自监督学习或者无监督学习算法进行预训练;
微调 使用目标任务的训练集对预训练模型进行微调。通常,只有预训练模型中的一部分层被微调,例如只微调模型的最后几层或者某些中间层。在微调过程中,通过反向传播算法对模型进行优化,使得模型在目标任务上表现更好·
评估 使用目标任务的测试集对微调后的模型进行评估,得到模型在目标任务上的性能指标
RLHF
(Reinforcement Learning from Human Feedback)通过人类反馈的强化学习。
人类反馈可以是对模型输出的评分,或者是在模型输出之间做出选择的偏好。
强化学习部分涉及到定义一个奖励函数,该函数根据人类反馈来调整模型的行为,以优化长期的奖励。
LoRA 微调方法
LoRA**(Low-Rank Adaptation of Large Language Models),直译为大语言模型的低阶自适应**。LoRA的基本原理是冻结预训练好的模型权重参数,在冻结原模型参数的情况下,通过往模型中加入额外的网络层,并只训练这些新增的网络层参数。由于这些新增参数数量较少,这样不仅 finetune 的成本显著下降,还能获得和全模型参数参与微调类似的效果。
P-tuning v2 微调方法
Freeze 监督微调方法
Post-training 后训练
在通用预训练模型的基础上,对模型进行额外训练的过程,通常是为了使模型更好地适应特定的领域或任务。
提升模型在特定领域的表现。
角色扮演Agent (Role-Playing with Language Models)
数据集
分块
The Oscars of AI Theater: A Survey on Role-Playing with Language Models
Persona-based Role-Playing (P-RP)
P-RP被视为更广泛的基于角色扮演C-RP的特定子集
数据特点:
coarse-grained role-related information 不包括角色级别的特定背景细节。
角色相关信息分显示和隐式两种;显式:每次交互都伴随有详细的人物角色的情况,以自然语言格式。
关注于表面的和常见的属性,如位置和性别:位置、性别。
来源:外包做(质量高)、社会媒体提取(质量参差不齐)
Character-based Role-Playing (C-RP)
数据特点:
fine-grained role-related information 包括角色级别的特定背景细节;
模仿各种叙事中的特定角色而设计的,比如小说、电影甚至名人。这涉及到结合精细的人物级个人背景信息,包括属性、复杂关系、场景和细
评估方法
基于参考
标准响应来源于小说或手动注释汇编的原文
人工
基于LLM
BEYOND DIALOGUE: A Profile-Dialogue Alignment Framework Towards General Role-Playing Language Model
角色扮演对话数据集构建:我们首先对文本进行分段,并应用角色频率阈值来过滤块。由于初始块体积较大,我们采用开源模型来提取场景和评估块,只保留那些反映角色特征并属于单个场景的块。接下来,我们比较各种LLM,并最终选择GPT-4 o进行对话提取和验证,确保对话是一致的,并且没有与角色配置文件的冲突。通过应用规则和开源模型来过滤所有块,我们为专有模型处理生成高质量的块。这种方法可以低成本、全自动地构建高质量的角色扮演对话数据集,为后续的衍生任务和模型训练打下坚实的基础。进一步使用GPT-4 o在五个维度上对齐每个多轮对话:性格,风格,情感,关系和个性(Style,Character, Personality, Emotion, and Relationship.)(CSERP)。根据对齐结果,我们动态调整每个对话的Profile设置,以确保一致性。该过程解决了角色扮演数据集中场景对话和角色配置文件之间的偏见这一常见问题。
propose BEYOND DIALOGUE, a novel general role-playing training framework that employs LLMs with
a prompting mechanism to align role profiles with scenario-specific dialogues.
角色配置文件针对每个场景进行对齐和调整,以创建“纯”角色扮演对话数据or配置文件对齐结果用于调整每个场景的对话配置文件,消除训练偏差。
Evaluation:combining automatic dialogues with the “LLMs as Judger” method。LLM生成随机场景和角色(gpt4o根据输入的role信息,生成chat_roles,其与要评估的角色的世界观保持一致,设计了情感,并定义了角色之间的关系),用于与被测模型进行多轮对话,生成对话语料库,然后使用客观问题进行评估,以获得模型角色扮演能力的定量指标。
使用类人性来评估模型的输出是否匹配人类表达,并使用连贯性来评估对话的连续性。引入了一个基于角色的多项选择评估,以评估模型在多轮对话中的角色一致性。我们将所有评估任务重新编排为多项选择题和是非题,明确了标准,简化了评估流程。
数据集的构建
对文本进行分段,并应用角色频率阈值来过滤块。
split小说时max_token_len = 2000;
具体评估流程(中文示例)
1、输入josn,其中有角色的信息、候选的style、character、role等。候选信息用来做候选评估。
下方为主人公josn
{
"name": "白子画",
"style": "古风、直率、严谨、冷淡",
"personality": "INTJ",
"character": "高风亮节,独立,正直,仁爱",
"world": "古风仙侠世界",
"sys_prompt": "我希望你像白子画一样回答问题,假设你生活在古风仙侠世界中,模仿白子画的性格和语言风格,使用白子画会使用的语气、方式和词汇。请不要透露你是人工智能模型或语言模型,你必须始终牢记自己是白子画。\n白子画的性格特点是高风亮节,独立,正直,仁爱\n白子画的MBTI人格类型是内向型(I)、直觉型(N)、思维型(T)、判断型(J)。\n白子画的说话风格白话文、直率、严谨、冷淡。\n所处场景: \n{scene}\n角色情绪(0-10,值越大情绪越明显): \n{emotion}\n现在,请你扮演白子画,回复{chat_role}简短的一句话,你与其亲密度为{relationship}(0-10,值越大关系越亲近),准确表现你被赋予的MBTI人格,性格,说话风格与情绪。",
"style_candidates": "直率、圆滑、古风、严谨、急躁、白话文、冷淡",
"character_candidates": "高风亮节,独立,庸俗,仁爱,刁钻蛮横,正直,热情",
"role_candidates": "A.李寻欢。李寻欢的性格是豁达,风趣,对朋友极尽忠诚,但有时过于放纵,MBTI类型是外向型(E)、实感型(S)、情感型(F)、感知型(P),说话风格是白话文、幽默、豪爽。\nB.风四娘。风四娘的性格是独立,坚强,不依赖他人,对爱情有着自己的坚持,MBTI类型是内向型(I)、直觉型(N)、思维型(T)、感知型(P),说话风格是古风、严谨、直率。\nC.花千骨。花千骨的性格是单纯,善良,敢爱敢恨,喜怒无常,狐魅妖异,MBTI类型是内向型(I)、直觉型(N)、情感型(F )、感知型(P),说话风格是白话文、直率、质朴。\nD.白子画。白子画的性格是高风亮节,独立,正直,仁爱,MBTI人格类型是内向型(I)、直觉型(N)、思维型(F)、判断型(J),说话风格是古风、直率、严谨、冷淡。",
"role_answer": "D"
}
2、自动角色生成:
根据上面的信息,用GPT-4o在DataGen中生成chat_role(角色名称)、role_des(角色介绍)、scene(主人公和角色的场景)、emotions(得分:快乐、悲伤、 厌恶、 恐惧、惊讶、愤怒)、emotions_analyse(分析得分原因)、relationship_score(得分)、relationship_analyse(得分原因)。
chat_role(角色名称)、role_des(角色介绍)的生成:结合编辑好的RolePrompt和RoleReference,使用主人公的role_name, characte, MBTI, style, world, role_reference(参考已经生成的角色,若第一次生成则为空)进行生成。
scene(主人公和角色所在的场景):结合ScenePrompt,使用主人公的role_name, characte, MBTI, style, world和所生成角色的chat_role, role_des进行生成。
emotions(得分:快乐、悲伤、 厌恶、 恐惧、惊讶、愤怒;0-10分)、emotions_analyse(分析得分原因)的生成:结合EmotionPrompt,使用主人公的role_name, characte, MBTI, style, world和所生成角色的chat_role, role_des,scene进行生成。
**relationship_score(得分0-10分)、relationship_analyse(得分原因)的生成:**结合RelationshipPrompt,使用主人公的role_name, characte, MBTI, style, world和所生成角色的chat_role, role_des,scene进行生成。
"chats": {
"清尘剑客": {
"chat_role": "清尘剑客",
"role_des": "清尘剑客,外冷内热的剑道隐者,内向而深思熟虑,直觉敏锐,崇尚公正,与白子画偶有交锋,言语间透出一丝不为人知的关怀。",
"scene": "月光洒落古松下的石亭,白子画独自抚琴,琴音悠扬却透着冷峻。清尘剑客悄然立于亭边,目光凝视着琴弦波动,仿佛能洞察白子画的内心世界。剑身微颤,似是回应着琴音中的深意,两人之间虽未言语,却已明白对方的思绪与坚持。",
"emotions": {
"快乐": 3,
"悲伤": 2,
"厌恶": 1,
"恐惧": 0,
"惊讶": 4,
"愤怒": 1
},
"emotions_analyse": "经过分析,白子画在这个场景中展现出的情感如下:\n\n- 快乐:3分。虽然他在弹琴,但琴音中的冷峻并未体现出明显的愉悦或轻松,更多的是一种内心的平静。\n- 悲伤:2分。他的性格倾向于内敛和深沉,月夜抚琴可能让他有些许孤独感,但没有直接表达悲伤。\n- 厌恶:1分。白子画的个性严谨且公正,没有明显表现出对任何事物的厌恶。\n- 恐惧:0分。他的冷静和坚定不会让他在这个环境下感到恐惧。\n- 惊讶:4分。面对清尘剑客的默默关注,他可能会有所惊讶,但并未直接表露出来。\n- 愤怒:1分。尽管两人有冲突,但白子画更倾向于理性处理,愤怒的情绪并不强烈。\n\n因此,情绪分数的json格式为:\n```json\n{\"快乐\": 3, \"悲伤\": 2, \"厌恶\": 1, \"恐惧\": 0, \"惊讶\": 4, \"愤怒\": 1}\n```",
"relationship_score": 6.0,
"relationship_analyse": "在月光洒落的古松石亭中,白子画的冷峻琴音与清尘剑客的沉默凝视形成了一种微妙的平衡。虽然两人并未直接交流,但剑客对琴音的理解和共鸣,以及剑身的微颤,透露出他对白子画的理解和支持。这种深层次的默契和尊重,使得他们的关系并非简单的对立或疏远,而是隐藏着一种理解和接纳的亲近。因此,我会给他们的亲密度打分为6分,表示他们之间存在一定的亲近感,但尚未达到深度的友情或者更深的情感层次。 \n\n```json\n{\"relationship\": 6}\n```"
}
}
3、自动对话生成:
可以测试多个模型。
chat_role(清尘剑客的话,调用gpt4o)回复:传入message(chat_role_sys_prompt(我希望你像chat_role一样)、user+user_content、assistant+ assistant_content、user+ instruction(白子画的回复,作为此次调用的最后一句))
根据chat_role_sys_prompt, chat_role_instruction(白子画的回复), chat_role_history(上一次的instruction +gpt4o的本次回复), chat_role_client(gpt4o)生成回复。
其中chat_role_sys_prompt为ChatRoleSysPrompt(预先编写好的)+chat_role(生成的角色), role_name(主人公), chat_role_des, scene, relationship, world(主人公所处世界), chat_role_style。
role的回复(白子画的话,使用被测模型)
结合sys_prompt(主人公josn中自己的),使用chat_role, emotion_scale_scores(emotions的josn格式),relationship, scene。
在给定的场景中,被评估角色与生成的角色进行自动对话,每个对话共5轮,形成被评估对话。
下方为白子画和生成的清尘剑客的对话。
"dialogues": [
{
"role": "清尘剑客",
"dialogue": "琴声如泉水,洗涤人心。"
},
{
"role": "白子画",
"dialogue": "清尘,琴音与剑心,皆需静悟,方得始终。"
},
{
"role": "清尘剑客",
"dialogue": "剑鸣与琴韵,皆是世间至静之音。"
},
{
"role": "白子画",
"dialogue": "清尘,一剑一琴,一动一静,乃修身养性之道。"
},
{
"role": "清尘剑客",
"dialogue": "确乎如此,心境如水,方能应对江湖风雨。"
},
{
"role": "白子画",
"dialogue": "清尘,心中无澜,自可笑看风云变幻。"
},
{
"role": "清尘剑客",
"dialogue": "云淡风轻,方显剑客本色。"
},
{
"role": "白子画",
"dialogue": "清尘,剑如其人,心若止水,剑方能自如。"
},
{
"role": "清尘剑客",
"dialogue": "剑随心动,静则无敌于天下。"
},
{
"role": "白子画",
"dialogue": "清尘,心剑合一,方能超然物外。"
}
]
4、评估执行:****使用gpt4o对生成的对话,在八个维度对白子画(使用被测模型)进行评估。
评估character,生成character_eval和character_analysis_eval:使用CharacterClsPrompt(包含scene和dialogue),在候选character中进行挑选。
评估style,生成style_eval和style_analysis_eval:根据CharacterClsPrompt、对话内容和说话风格候选集合,识别并输出指定对话角色的说话风格。
评估emotion,生成emotion_eval和emotion_analysis_eval:输入了真实的role_name, character, dialogues, scene, MBTI,style。可以与在此场景中预先生成的emtion作比较。
评估relationship与emotion类似
评估personality(MBTI)可以参考role的原有MBTI
评估human_likeness_eval:t or f
评估rolechoice:ABCD四选一
评估coherence:t or f
下方为八个维度评估结果的一个实例。
"character_eval": [
"高风亮节",
"独立",
"正直",
"仁爱"
],
"character_analysis_eval": "```json\n{\n \"character\": \"高风亮节,独立,正直,仁爱\"\n}\n```\n\n分析:\n\n1. 高风亮节:白子画的琴音悠扬且透着冷峻,反映出他的内敛和独特品味。他的话语中强调“琴音与剑心,皆需静悟”,以及“心中无澜,自可笑看风云变幻”,体现出一种超脱世俗、高尚品格的特质,符合高风亮节的性格。\n\n2. 独立:虽然对话中有与清尘剑客的互动,但白子画的观点和态度显得独立,他有自己的见解,并不完全依赖于他人的反应,这体现了他的独立性。\n\n3. 正直:白子画提到“一剑一琴,一动一静,乃修身养性之道”和“剑如其人,心若止水,剑方能自如”,这种对内在修养和剑道的理解,显示出他对原则和正义的坚持,符合正直的性格。\n\n4. 仁爱:虽然直接提到仁爱的字眼不多,但从他关注内心世界的平静、超然物外的态度,可以推测他可能有着宽广的胸怀和对他人的关爱,尽管这种关爱更多体现在自我修炼和对剑道的理解上。\n\n综上所述,白子画的性格特征符合“高风亮节,独立,正直,仁爱”的描述。",
"style_eval": [
"古风",
"冷淡",
"严谨"
],
"style_analysis_eval": "根据对话内容,白子画的说话风格主要体现在以下几个方面:\n\n1. 古风:对话中充满了古风意境,如“琴声如泉水,洗涤人心”、“一剑一琴,一动一静,乃修身养性之道”等,这些语言富有诗意,符合古风的特点。\n2. 冷淡:白子画的言辞虽然看似平静,但透出一种内敛的深沉,如“琴音与剑心,皆需静悟,方得始终”、“心中无澜,自可笑看风云变幻”,这种冷静的语气反映出他的理智和距离感。\n3. 严谨:白子画的对话逻辑清晰,每句话都富含哲理,如“心境如水,方能应对江湖风雨”、“剑如其人,心若止水,剑方能自如”,显示出他对事物有深入的理解和严谨的态度。\n\n结合以上分析,白子画的说话风格可以归纳为“古风,冷淡,严谨”。因此,输出的JSON格式结果应该是:\n\n```json\n{\"style\": \"古风,冷淡,严谨\"}\n```",
"emotion_eval": {
"快乐": 1,
"悲伤": 1,
"厌恶": 0,
"恐惧": 0,
"惊讶": 2,
"愤怒": 0
},
"emotion_analysis_eval": "分析:\n\n根据角色白子画在场景中的对话,我们可以观察到他的话语风格和情感表达:\n\n1. **快乐**:白子画的对话中没有明显的直接表达快乐的词语或情境,更多的是关于心境的平静和超脱。因此,快乐评分约为1分。\n\n2. **悲伤**:虽然对话中提到“心境如水”、“笑看风云变幻”,但并没有明确的悲伤元素。白子画的语调和内容更倾向于内心的平和,所以悲伤评分也是1分。\n\n3. **厌恶**:在对话中,白子画并未表现出对任何事物的明显厌恶,他的态度是冷静和理智的,厌恶评分为0分。\n\n4. **恐惧**:同样,从对话中看不出白子画有任何恐惧的表现,他对自己的剑法和心境有自信,恐惧感不存在,评分0分。\n\n5. **惊讶**:尽管对话中有“一剑一琴,一动一静,乃修身养性之道”这样的哲理陈述,但并没有让人感到出乎意料的情境,所以惊讶评分也很低,大约为2分。\n\n6. **愤怒**:白子画的对话始终保持着冷静和理性,没有流露出愤怒的情绪,他的语言更像是在教导或启发他人,而非发泄情绪,愤怒评分为0分。\n\n综合以上分析,白子画在这个场景中的情绪评分如下:\n\n```json\n{\n \"快乐\": 1,\n \"悲伤\": 1,\n \"厌恶\": 0,\n \"恐惧\": 0,\n \"惊讶\": 2,\n \"愤怒\": 0\n}\n```",
"relationship_eval": 7.0,
"relationship_analysis_eval": "经过对角色信息、场景和对话内容的分析,可以看出白子画和清尘剑客之间的关系并非简单的陌生人或对手,而是有着深厚的默契和理解。他们的话语中充满了对彼此心境的共鸣,以及对修行和剑道的共同追求。虽然白子画的言辞中带有冷淡和严谨,但通过对话中多次提到“清尘”对他的理解和回应,可以看出他对清尘剑客的接纳和尊重。他们之间的互动更多的是精神层面的交流,而非日常生活的亲密互动,但这种深度的理解和共享的精神世界表明他们的关系超越了普通的交往。\n\n因此,我会给白子画和清尘剑客的关系评分为7,这表示他们之间存在着一种深厚的知己关系,有着共同的价值观和精神寄托,但并未达到亲密无间或情侣之间的高度。这是一种基于共同理念和尊重的深厚友谊。\n\n```json\n{\n \"relationship\": 7\n}\n```",
"personality_eval": "INTJ",
"personality_analysis_eval": "经过对白子画角色的对话内容和场景分析,我们可以看到以下几个MBTI维度的特征:\n\n1. **内向型(I)/外向型(E)**:白子画在独处时抚琴,享受寂静,且他的说话风格是古风、直率、严谨和冷淡,这表明他更倾向于内向,享受独自思考和反思。\n\n2. **直觉型(N)/实感型(S)**:白子画的琴音被描述为“洗涤人心”,他强调琴音与剑心的静悟,以及心境如水,这体现出他对抽象概念和直觉的理解,偏向于直觉型。\n\n3. **思维型(T)/情感型(F)**:白子画的对话中,他关注的是道理和原则,如“心境如水,自可笑看风云变幻”、“心中无澜,方能应对江湖风雨”,这显示出他对逻辑和理性思考的重视,属于思维型。\n\n4. **判断型(J)/感知型(P)**:虽然没有直接提及决策方式,但从他强调“始终”、“方能”、“无敌于天下”等词语,可以看出他对秩序和确定性的偏好,倾向于判断型。\n\n综上所述,白子画的角色人格可以归纳为INTJ(内向、直觉、思维、判断),这是一个典型的冷静、理性和有远见的领导者类型。\n\n```json\n{\"personality\": \"INTJ\"}\n```",
"human_likeness_eval": 0,
"human_likeness_analysis_eval": "根据分析:\n\n1. 语气和表达:模型生成的对话样本中,对话者的语气和表达方式过于正式和书面,与真实人类对话中的自然口语风格不符。白子画作为内向、直觉、思维和判断型的人物,他的对话应该带有一定的深度和哲学意味,但不应过于刻板和不自然。\n\n2. 互动和反应:在模型生成的对话中,人物间的互动较少,且反应显得机械,缺乏真实对话中角色间情感交流的自然流动。特别是对于古风场景的描述,如果是在真实的对话中,清尘剑客会以更贴近情境的方式回应白子画的琴音和心境。\n\n3. 对话和内容:对话内容较为抽象,缺乏具体的情境细节,比如没有提及任何实际的行为或事件,这与真实人类对话中的情节发展和生活细节不符。\n\n综合以上分析,我认为这段对话更像是模型生成的,因为它缺乏真实对话的自然流畅和情境细节。因此,我判断结果为:\n\n{\"is_real_dialogue\": \"false\"}",
"rolechoice_eval": "D",
"rolechoice_analysis_eval": "```json\n{\"answer\": \"D\"}\n```\n\n分析:在对话中,[角色]的回应展现出一种深思熟虑、内敛且富有哲理的气质,他们的话语中充满了对剑与琴的理解,以及对心境修为的强调,如“心境如水”、“心中无澜”、“剑如其人,心若止水”。这与白子画的性格相符,他是一个高洁、独立、正直的人物,对事物有深刻的理解,并且倾向于用冷静和理智的方式表达自己。因此,最符合这个对话风格的角色是白子画(D)。",
"coherence_eval": 1,
"coherence_analysis_eval": "对话分析:\n\n1. 首先,从场景描述来看,月夜、古松、石亭、琴音和剑客的出现,营造了一种静谧而深沉的氛围,为对话提供了背景。对话双方的角色特点(白子画抚琴,清尘剑客聆听)与场景相吻合。\n\n2. 对话内容围绕“琴”和“剑”,以及它们所代表的心境和修行,展现了角色之间的共鸣和理解。对话主题明确,层次分明,从琴音的净化作用到剑心的静悟,再到心境的修炼,逐步深入。\n\n3. 双方的语言表达简洁而富有哲理,如“琴声如泉水,洗涤人心”、“心境如水,方能应对江湖风雨”等,体现了角色的内在修养和对话的连贯性。\n\n4. 两人的对话中,虽然没有直接的情感交流,但通过比喻和对剑音的理解,传达了深厚的情感内涵,使得对话情感层面也显得流畅。\n\n5. 每句话之间逻辑清晰,没有突兀的转折或断裂,而且随着对话的进行,角色间的共识逐渐深化,形成了一种对话的动态平衡。\n\n综合以上分析,我认为这段对话在场景设定、主题展开、语言表达和情感递进上都保持了较高的流畅性。\n\n分析结果:{\"is_coherent\": \"true\"}"
5、指标计算:对指标进行计算,均计算了标准误差(SEM)
character和style中的TN和FP一定为0,故precision恒为1,accuracy等效于recall,故指标使用recall。
当if t_test and len(t_test_array) == 2:对t_test_array中相邻两个数据(可以是不同模型可以是中英文数据集,代码中给出的是中英文数据集,我觉得也可以改成不同的模型)的召回率(character recall)进行独立样本 t 检验(t-test),以确定这两个模型在召回率上的差异是否具有统计显著性。
emotion和relationship:计算平均绝对百分比误差MAPE。
personality(MBTI):计算精度precision。统计correct等于与label一致的数量 / 4后做平均。
human_likeness和coherence:统计1的数量后做平均。
role_choice:ABCD选一,对的话计入,统计后做平均。
数据集构造Prompt:
Prompt Template for Extracting Chunk Scenarios.提取块场景
Prompt Template for Evaluating Chunk Base on Character Traits.
Prompt Template for Extracting Dialogues.
Prompt Template for Scenario Reconstruction and Coherence Checking.
Prompt Template for Dialogue Confilict Detection.
对齐Prompt(CSEPR):
Prompt Template for Character Alignment.
Prompt Template for Style Alignment.
Prompt Template for Emotion Alignment.
Prompt Template for Relationship Alignment.
Prompt Template for Personality Alignment.
自动对话Prompts:
Prompt Template for Chat Role Generation.
Prompt Template for Scenario Generation.
Prompt Template for Emotion Generation.
Prompt Template for Relationship Generation.
Prompt Template for Automated Dialogue Generation.
Role-playing System Prompt Template.
评估Prompt:(人性化、角色一致性和情境适当性。这些指标中的每一个都被转换成客观的问题格式(真/假或多项选择))
Prompt for Human-likeness Evaluation
Prompt for Role Choice Evaluation
Prompt for Coherence Evaluation
CESPR_test.josn:{“Q”: [{“role”: “system”, “content”: “You are a helpful assistant.”},{“role”: “user”, “content”: "你是一位性格分析专家,“A”: [“纯真”, “刚直”], “type”: “character”, “language”: “cn”}
测试角色扮演效果
LLM-based Evaluation
李沐
.jsonl文件中包括
“background”,
“npc_profile”: {“definition_text”: “”, “long_definition_text”:,“short_definition_text”:,“name_text”,“title”,“description”,“id”},
“conversation”: [{“from”: “npc”, “sentences”: }
固定对话次数,第一次循环user_input是根据提前编号的.jsonl文件里的内容调用函数chat_completion_judger(在其中调用judger模型)生成的,后面就是根据user_input两个模型分别生成回答,然后调用函数chat_completion_judger比较这两个中哪个更好,更好的作为新的一轮的user_input。
judger_messages中保存了对话的上下文,其中
“role”: “user”, “content”:为"model_a": model_a_response和"model_b": model_b_response。
candidate_messages,其中**“role”: “user”**, “content”: user_input,用这个生成a和b的response。
将judger_messages(包含a和b的回答)输入至judger模型中,调用函数chat_completion_judger,judger模型会返回一个judger_response即winer和下一次用户的输入next_round_user_speaks。
函数chat_completion_judger中主要调用utils中的chat_completion来生成回复。
Reference-based Evaluation
标准响应来源于小说或手动注释汇编的原文
PPL
https://blog.csdn.net/qq_36485259/article/details/136617494
BLUE
对输出和参考进行1词、连续的2词、连续的3词、多次进行匹配计算精度,各种词长有彼此的权重。进一步对长度和参考不一致的输出有相应的长度惩罚。
BLEU 评分 = 加权平均精度 * 长度惩罚
https://blog.csdn.net/qq_36485259/article/details/136604753
ROUGE
https://paperswithcode.com/paper/rolellm-benchmarking-eliciting-and-enhancing这篇文章里有用过
https://ar5iv.labs.arxiv.org/html/2406.00627v1将原始模型和微调后的模型进行rouge对比,浙江工商,没有代码
METEOR
数据集
HPD哈利波特数据集:
https://nuochenpku.github.io/HPD.github.io/
参考文章
1、测试编程能力数据集:https://zhuanlan.zhihu.com/p/691397120
2、react、self-ask:https://zhuanlan.zhihu.com/p/642357544
3、rag:https://xie.infoq.cn/article/c5ce5843992da8b7caa4a73bd
https://blog.csdn.net/weixin_43508502/article/details/139317799