0


自己开源的一个jsonl多轮对话数据集创建器(HTML形式)

详细各位尝试精调大模型的小伙伴们都遇到过难以制作jsonl格式的数据集的问题吧?一个jsonl格式be like:

[{"prompt": "生成一个关于人工智能的标题吧。", "response": "好的,给您生成一些标题:1) 人工智能的未来与挑战; 2) 机器学习在现代生活中的应用; 3) 从AI发展历程看未来发展趋势。", "weight": 1}, {"prompt": "可以再给我一些具体的例子吗?", "response": "当然可以,例如自然语言处理技术的应用、医疗领域的智能诊断、智能家居的智能化控制等等。这些都是人工智能在现实中的具体应用。", "weight": 1}, {"prompt": "我想了解一下机器学习是什么。", "response": "机器学习是人工智能的一个分支,它是指让机器从数据中学习和识别模式、规律,进而提高其自身的能力,而不是直接进行编程或人工干预。例如,你收到的垃圾邮件在你提交给系统进行训练后,系统就能够自动判断是否为垃圾邮件。这就是机器学习中的一个例子。", "weight": 1}]
[{"prompt": "生成一个有趣的故事给我听。", "response": "好的,故事的主人公是谁?他发生了什么事情?", "weight": 1}, {"prompt": "讲一个小动物的故事,它在森林里冒险。", "response": "有一天,一只小松鼠决定冒险去探索森林。在森林中,它遇到了许多有趣的事情,比如说看到了漂亮的花朵、飞舞的蝴蝶、还有巨大的老树。但是,在探索过程中它遇到了一只狐狸,狐狸看上去很善良,与小松鼠成为了好朋友。", "weight": 1}, {"prompt": "挑战一下我的智力,出一道数学难题给我解决。", "response": "好的,有六个球,其中一个有重量不同于其他球,你只有一次称重的机会,如何称重可以找出那个重量不同的球?", "weight": 1}, {"prompt": "我不太会做这个题,可以给我解释一下吗?", "response": "当然可以。做这道题需要用到二分法,我们可以将六个球分成两部分,每部分三个球,先将两堆都称一下,如果两堆重量相等,说明重的那个球在另外三个球中。接着我们将那三个球分成两堆,分别取两堆中的两个球出来称重,如果是一样重,则剩下一个球是重的;如果不一样重,则按照上面的方法,找到哪个球是重的。", "weight": 1}, {"prompt": "请告诉我一首好听的歌曲。", "response": "听说\"世界这么大还是遇见你\"很受欢迎,在抖音、快手等短视频平台上也是很火的。", "weight": 1}]
[{"prompt": "写一篇关于科技对社会发展的影响的文章。", "response": "科技是推动社会发展的重要力量,它改变了人们的生活方式,提高了生产力和生活质量。从古至今,科技一直在不断的发展和进化,对人类社会产生了深远的影响。\n\n科技对生产力的影响是显而易见的。新的科技成果不断地涌现,大大提高了生产效率,加快了经济的发展。例如,工业革命通过使用新的生产技术,将手工劳动变成了机器操作,从而大大提高了生产力。信息技术的发展也使得远程办公成为可能,人们可以在家中工作,从而提高了工作效率。\n\n科技对社会活动的影响也是不可忽视的。科技的发展改变了人们的交流方式,使得人们可以更加方便地联系彼此。例如,互联网的普及,使得人们可以更加方便地获取信息,交流意见,促进了社会的进步。此外,科技还推动了商业和金融业的变革,例如电子商务和移动支付等新的商业模式,给人们的生活带来了极大的便利。\n\n科技对文化传承也有着重要的影响。科技的发展使得文化遗产的保护变得更加容易,例如数字图书馆和数字博物馆等新的文化传承方式,使得文化遗产可以得到更加长期的保护。此外,科技还促进了不同文化之间的交流和融合,使得文化传承变得更加的多元化和丰富化。\n\n当然,科技也带来了一些挑战和风险。例如,科技的发展可能会带来就业问题,因为机器代替了部分人力工作。此外,科技也带来了隐私和安全方面的问题,例如个人信息泄露和网络安全等问题,需要我们采取措施加以解决。\n\n总之,科技对社会的发展有着重要的影响。我们应该积极地利用科技的优势,同时也要注意应对其带来的挑战和风险。只有这样,才能更好地推动社会的发展和进步。", "weight": 1}, {"prompt": "请从这篇文章中提取出所有的关键词。", "response": "关键词:\n1. 科技\n2. 社会发展\n3. 生产力\n4. 工业革命\n5. 远程办公\n6. 交流方式\n7. 互联网\n8. 电子商务\n9. 移动支付\n10. 文化传承\n11. 数字图书馆\n12. 数字博物馆\n13. 就业问题\n14. 隐私和安全问题\n15. 机器代替人力\n16. 人工智能", "weight": 1}]

如何构建多轮对话数据集,也成为了一个难题,直接编辑jsonl文本会显得很麻烦,用python格式化的话也要在复制粘贴一堆聊天内容时很不方便

因此,我自己开源了一个jsonl数据集创建器:
在这里插入图片描述
可以在这个聊天框中以user或assistant的身份”发送消息“,比如:
在这里插入图片描述
通过切换user和assistant的角色,并在输入框输入聊天信息,点击send,就可以构建一个多轮对话。

它可以自动导出为jsonl格式中的一行,比如

[{"prompt":"生成一个情人节祝福语吧。","response":"当全球各地的情侣纷纷交换信物、相互表达你我之间的情感,愿你在这个特别的日子里,感受到无处不在的爱,你我的距离,因爱而缩短,祝你情人节快乐!","weight":1},{"prompt":"给我一些写作灵感吧。","response":"好的,您需要的是什么类型的灵感呢?科幻、爱情、惊悚还是其他?","weight":1}]

为了让它更方便,我还加入了send to server功能,通过自定义server url(这里是153行的example.com)。它可以以json的格式把这个jsonl给POST到指定URL,再由服务器那边自己处理

源代码:

<!DOCTYPEhtml><htmllang="en"><head><metacharset="UTF-8"><metaname="viewport"content="width=device-width, initial-scale=1.0"><title>Chat Interface</title><style>body{font-family: Arial, sans-serif;background-color: #f4f4f4;display: flex;justify-content: center;align-items: center;height: 100vh;margin: 0;}.chat-container{width: 400px;max-width: 100%;background-color: #fff;box-shadow: 0 0 10px rgba(0, 0, 0, 0.1);border-radius: 5px;overflow: hidden;}.chat-header{background-color: #007bff;color: white;padding: 10px;text-align: center;}.chat-messages{padding: 10px;height: 300px;overflow-y: auto;border-bottom: 1px solid #ccc;}.chat-input{display: flex;border-top: 1px solid #ccc;}.chat-input select{padding: 10px;border: none;border-top: 1px solid #ccc;}.chat-input input{flex: 1;padding: 10px;border: none;border-top: 1px solid #ccc;}.chat-input button{padding: 10px;background-color: #007bff;color: white;border: none;cursor: pointer;}.chat-message{margin-bottom: 10px;}.chat-message.user{text-align: right;}.chat-message.assistant{text-align: left;}.error-message{color: red;text-align: center;margin-top: 10px;}</style></head><body><divclass="chat-container"><divclass="chat-header">
            Chat Interface
        </div><divclass="chat-messages"id="chat-messages"></div><divclass="chat-input"><selectid="role-select"><optionvalue="user">User</option><optionvalue="assistant">Assistant</option></select><inputtype="text"id="message-input"placeholder="Type a message..."><buttononclick="sendMessage()">Send</button></div><divid="error-message"class="error-message"></div></div><script>const chatMessages = document.getElementById('chat-messages');const messageInput = document.getElementById('message-input');const roleSelect = document.getElementById('role-select');const errorMessage = document.getElementById('error-message');const chatData =[];let currentConversation ={};var lastrole="assistant";functionsendMessage(){const message = messageInput.value.trim();const role = roleSelect.value;
            console.log(lastrole)if(message ===''){showError('Message cannot be empty');return;}if(chatData.length >0){const lastMessage = chatData[chatData.length -1];if(lastrole==role){showError('User and assistant messages must alternate');return;}}if(role ==='user'){
                currentConversation ={prompt: message,response:''};
                chatData.push(currentConversation);
                lastrole='user'}else{
                lastrole='assistant'if(currentConversation){
                    currentConversation.response = message;}}displayMessage(message, role);
            messageInput.value ='';clearError();}functiondisplayMessage(message, sender){const messageElement = document.createElement('div');
            messageElement.classList.add('chat-message', sender);
            messageElement.textContent = message;
            chatMessages.appendChild(messageElement);
            chatMessages.scrollTop = chatMessages.scrollHeight;}functionshowError(msg){
            errorMessage.textContent = msg;}functionclearError(){
            errorMessage.textContent ='';}functiondownloadJSONL(){fetch('https://example/com',{method:'POST',headers:{'Content-Type':'application/json',},body:JSON.stringify(chatData),}).then(response=> response.json()).then(data=>{if(data.status ==='success'){alert('Data successfully sent to the server and appended to the file.');}else{alert('Error: '+ data.error);}}).catch((error)=>{
                console.error('Error:', error);});}// Add a button to download the dataconst downloadButton = document.createElement('button');
        downloadButton.textContent ='Send Data to server';
        downloadButton.onclick = downloadJSONL;
        document.body.appendChild(downloadButton);</script></body></html>

本文转载自: https://blog.csdn.net/weixin_47231914/article/details/140739642
版权归原作者 虫虫blabla 所有, 如有侵权,请联系我们删除。

“自己开源的一个jsonl多轮对话数据集创建器(HTML形式)”的评论:

还没有评论