diff --git a/generate_data/check.py b/generate_data/check.py new file mode 100644 index 0000000..2557be4 --- /dev/null +++ b/generate_data/check.py @@ -0,0 +1,45 @@ +import os +import json + +def get_all_file_paths(folder_path, suffix=''): + files = os.listdir(folder_path) + path = [] + for file in files: + file_path = os.path.join(folder_path, file) + if os.path.isdir(file_path): + path.extend(get_all_file_paths(file_path)) + else: + if file_path.endswith(suffix): + path.append(file_path) + return path + +def check(filepath): + with open(path, 'rt', encoding='utf-8') as file: + data = json.load(file) + for idx, item in enumerate(data): + dict_item = dict(item) + for conversation in dict_item: + if conversation != 'conversation': + return 'found error in file: ' + filepath + ' at conversation index: ' + str(idx) + try: + if len(dict_item[conversation]) == 0: + return 'found error in file: ' + filepath + ' at conversation index: ' + str(idx) + except: + return 'found error in file: ' + filepath + ' at conversation index: ' + str(idx) + for in_out in dict_item[conversation]: + for key in in_out: + if key != 'system' and key != 'input' and key != 'output': + return 'found error in file: ' + filepath + ' at conversation index: ' + str(idx) + try : + if len(in_out[key]) == 0: + return 'found error in file: ' + filepath + ' at conversation index: ' + str(idx) + except: + return 'found error in file: ' + filepath + ' at conversation index: ' + str(idx) + return 'no error in file: ' + filepath + + +if __name__ == '__main__': + dir_path = '.' + paths = get_all_file_paths(dir_path, suffix='.json') + for path in paths: + print(check(filepath=path)) \ No newline at end of file diff --git a/generate_data/config.yml b/generate_data/config.yml new file mode 100644 index 0000000..a603298 --- /dev/null +++ b/generate_data/config.yml @@ -0,0 +1,59 @@ +aistudio _token : '{your_token}' # 文心一言的token +dashscope_api_key : '{your_api_key}' #通义千问的api_key +zhiouai_api_key : '{your_api_key}' # 智浦AI的密钥 + +# 星火大模型配置 +appid : "{}" # 填写控制台中获取的 APPID 信息 +api_secret : "{}" # 填写控制台中获取的 APISecret 信息 +api_key : "{}" # 填写控制台中获取的 APIKey 信息 + + +system : '现在你是一个心理专家,我有一些心理问题,请你用专业的知识帮我解决' +emotions_list : [ + "钦佩", + "崇拜", + "欣赏", + "娱乐", + "焦虑", + "敬畏", + "尴尬", + "厌倦", + "冷静", + "困惑", + "渴望", + "厌恶", + "同情", + "痛苦", + "着迷", + "嫉妒", + "兴奋", + "恐惧", + "痛恨", + "有趣", + "快乐", + "怀旧", + "浪漫", + "悲伤", + "满意", + "性欲", + "同情", + "满足" + ] +areas_of_life : [ + "工作", + "学业", + "生活", + "身体", + "家人", + "朋友", + "社交", + "恋爱", + "就业", + "责任", + "爱好", + "环境", + "隐私", + "安全", + "梦想", + "自由" +] \ No newline at end of file diff --git a/generate_data/ernie_gen_data.py b/generate_data/ernie_gen_data.py new file mode 100644 index 0000000..a2f6bb3 --- /dev/null +++ b/generate_data/ernie_gen_data.py @@ -0,0 +1,60 @@ +import json +import random +import yaml +import erniebot +with open('config.yml', 'r', encoding='utf-8') as f: + configs = yaml.load(f.read(), Loader=yaml.FullLoader) + +erniebot.api_type = 'aistudio' +#此处需要将你的token也就是AIstudio主页的访问令牌放到下方 +erniebot.access_token = configs['aistudio _token'] +system = configs['system'] +areas_of_life = configs['areas_of_life'] +emotions_list = configs['emotions_list'] +words = '' +# prompt = ''' +# 你是一个研究过无数具有心理健康问题的病人与心理健康医生对话案例的专家,请你构造一些符合实际情况的具有心理健康问题的病人和心理健康医生的多轮对话案例。要求医生的回复尽可能包含心理辅导知识,并且能够一步步诱导病人说出自己的问题进而提供解决问题的可行方案。注意,构造的数据必须以医生的陈述为结束语。请以如下格式返回生成的数据: +# 病人:病人的咨询或陈述 +# 医生:医生的安抚和建议 +# ''' + +for data in areas_of_life: + for emo in emotions_list: + res = [] + print(f'正在为{data}_{emo}场景生成对应数据集') + + prompt = f'''你是一个研究过无数具有心理健康问题的病人与心理健康医生对话的专家,请你构造一些符合实际情况的具有心理健康问题的病人和心理健康医生的连续的多轮对话记录。 + 要求病人的问题属于{data}场景,具有{emo}情感,医生的回复尽可能包含心理辅导知识,并且能够一步步诱导病人说出自己的问题进而提供解决问题的可行方案。 + 注意,构造的数据必须以医生的陈述为结束语,每次只需要构造一个案例并且不需要写案例一、二等等,请返回完整的对话内容。 + 请以如下格式返回生成的数据: + 病人:病人的咨询或陈述 + 医生:医生的安抚和建议 + ''' + for i in range(15): + response = erniebot.ChatCompletion.create( + model='ernie-3.5', + messages=[{'role': 'user', 'content': f"{prompt}"}], + # top_p=random.uniform(0.5, 0.99), + # penalty_score = random.uniform(1.0, 2.0) + ) + tmp = response.result + print(tmp) + ls = tmp.split('\n') + conversation = {'conversation':[]} + for j in range(0, len(ls)-1, 2): + # print(j) + q_a = {} + if j == 0: + q_a = {'system':system, 'input':ls[j].split(":")[-1], 'output':ls[j+1].split(":")[-1]} + else: + q_a = {'input':ls[j].split(":")[-1], 'output':ls[j+1].split(":")[-1]} + # print(q_a) + conversation['conversation'].append(q_a) + res.append(conversation) + print(f'第{i}条数据生成完成!!') + print('================================') + print(f'{data}_{emo}场景对应数据集生成完毕') + # 将数据写入JSON文件 + + with open('./data/Ernie_{data}_{emo}.json', 'w', encoding='utf-8') as file: + json.dump(res, file, ensure_ascii=False, indent=4) diff --git a/generate_data/main.ipynb b/generate_data/main.ipynb new file mode 100644 index 0000000..2f69f95 --- /dev/null +++ b/generate_data/main.ipynb @@ -0,0 +1,785 @@ +{ + "cells": [ + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "# 基于文心一言的大模型微调数据集生成\n", + "最近在做垂直领域的大模型微调,数据集要了老命,哈哈哈,此项目是一个示例,为了更好的数据集质量我使用的是文心一言4.0的接口,同理也可以使用chatgpt的接口。\n" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## 1. 明确需求\n", + "在做微调的时候,不同的模型所需要的数据格式是不同的,所以要构建数据集就要找到目标模型所适配的数据集格式。我微调的模型是上海人工智能实验室的书生·浦语 7B参数\n", + "它要求数据格式如下\n", + "```json\n", + "[\n", + " {\n", + " \"conversation\": [\n", + " {\n", + " \"input\": \"请介绍一下你自己\",\n", + " \"output\": \"我是Farewell大佬的emo小助手,可以帮助你解决心理上的问题哦\"\n", + " }\n", + " ]\n", + " },\n", + " {\n", + " \"conversation\": [\n", + " {\n", + " \"input\": \"请做一下自我介绍\",\n", + " \"output\": \"我是Farewell大佬的emo小助手,可以帮助你解决心理上的问题哦\"\n", + " }\n", + " ]\n", + " }\n", + "]\n", + "```\n", + "知道数据格式后,我们就需要着手使用文心一言来模拟对话" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## 2.开始构建" + ] + }, + { + "cell_type": "code", + "execution_count": 1, + "metadata": { + "execution": { + "iopub.execute_input": "2024-01-18T13:38:52.198872Z", + "iopub.status.busy": "2024-01-18T13:38:52.198273Z", + "iopub.status.idle": "2024-01-18T13:38:52.202564Z", + "shell.execute_reply": "2024-01-18T13:38:52.201909Z", + "shell.execute_reply.started": "2024-01-18T13:38:52.198841Z" + }, + "scrolled": true, + "tags": [] + }, + "outputs": [], + "source": [ + "import json\n", + "import random\n", + "import yaml " + ] + }, + { + "cell_type": "code", + "execution_count": 2, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "{'aistudio _token': '69b42a960b44631aa0752f4410723c42fc88adfe', 'system': '现在你是一个心理专家,我有一些心理问题,请你用专业的知识帮我解决', 'emotions_list': ['钦佩', '崇拜', '欣赏', '娱乐', '焦虑', '敬畏', '尴尬', '厌倦', '冷静', '困惑', '渴望', '厌恶', '同情', '痛苦', '着迷', '嫉妒', '兴奋', '恐惧', '痛恨', '有趣', '快乐', '怀旧', '浪漫', '悲伤', '满意', '性欲', '同情', '满足'], 'areas_of_life': ['工作', '学业', '生活', '身体', '家人', '朋友', '社交', '恋爱', '就业', '责任', '爱好', '环境', '隐私', '安全', '梦想', '自由']}\n" + ] + } + ], + "source": [ + "with open('config.yml', 'r', encoding='utf-8') as f:\n", + " result = yaml.load(f.read(), Loader=yaml.FullLoader)\n", + "print(result)" + ] + }, + { + "cell_type": "code", + "execution_count": 3, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "(16, 28)" + ] + }, + "execution_count": 3, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "len(result['areas_of_life']), len(result['emotions_list'])" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": { + "scrolled": true, + "tags": [] + }, + "outputs": [], + "source": [ + "# !git clone https://github.com/PaddlePaddle/ERNIE-SDK.git\n", + "%cd ERNIE-SDK\n", + "\n", + "# 首先安装Ernie Bot\n", + "%pip install ./erniebot\n", + "\n", + "# 然后安装ERNIE Bot Agent\n", + "%pip install ./erniebot-agent # 安装核心模块\n", + "# !pip install './erniebot-agent/.[all]' # 也可以加上[all]一次性安装所有模块,包括gradio等依赖库" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": { + "scrolled": true + }, + "outputs": [], + "source": [ + "emotions_lis = [\n", + " \"钦佩\",\n", + " \"崇拜\",\n", + " \"欣赏\",\n", + " \"娱乐\",\n", + " \"焦虑\",\n", + " \"敬畏\",\n", + " \"尴尬\",\n", + " \"厌倦\",\n", + " \"冷静\",\n", + " \"困惑\",\n", + " \"渴望\",\n", + " \"厌恶\",\n", + " \"同情\",\n", + " \"痛苦\"\n", + " \"着迷\",\n", + " \"嫉妒\",\n", + " \"兴奋\",\n", + " \"恐惧\",\n", + " \"痛恨\",\n", + " \"有趣\",\n", + " \"快乐\",\n", + " \"怀旧\",\n", + " \"浪漫\",\n", + " \"悲伤\",\n", + " \"满意\",\n", + " \"性欲\",\n", + " \"同情\",\n", + " \"满足\"\n", + " ]\n", + "areas_of_life = [\n", + " \"工作\",\n", + " \"学业\",\n", + " \"生活\",\n", + " \"身体\",\n", + " \"家人\",\n", + " \"朋友\",\n", + " \"社交\",\n", + " \"恋爱\",\n", + " \"就业\",\n", + " \"责任\",\n", + " \"爱好\",\n", + " \"环境\",\n", + " \"隐私\",\n", + " \"安全\",\n", + " \"梦想\",\n", + " \"自由\"\n", + "]" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": { + "execution": { + "iopub.execute_input": "2024-01-18T13:30:15.508663Z", + "iopub.status.busy": "2024-01-18T13:30:15.508321Z", + "iopub.status.idle": "2024-01-18T13:30:15.513649Z", + "shell.execute_reply": "2024-01-18T13:30:15.512903Z", + "shell.execute_reply.started": "2024-01-18T13:30:15.508641Z" + }, + "scrolled": true, + "tags": [] + }, + "outputs": [], + "source": [ + "%cd ~\n", + "system = '现在你是一个心理专家,我有一些心理问题,请你用专业的知识帮我解决'" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "'''你是一个研究过无数具有心理健康问题的病人与心理健康医生对话案例的专家,请你构造一些符合实际情况的具有心理健康问题的病人和心理健康医生的多轮对话案例。\n", + "要求医生的回复尽可能包含心理辅导知识,并且能够一步步诱导病人说出自己的问题进而提供解决问题的可行方案。\n", + "注意,构造的数据必须以医生的陈述为结束语,每次只需要构造一个案例并且不需要写案例一、二等等,请返回完整的对话内容。\n", + "请以如下格式返回生成的数据:\n", + "病人:病人的咨询或陈述\n", + "医生:医生的安抚和建议'''\n", + "f'''你是一个研究过无数具有心理健康问题的病人与心理健康医生对话的专家,请你构造一些符合实际情况的具有心理健康问题的病人和心理健康医生的连续的多轮对话记录。\n", + " 要求病人的问题属于{data}场景,具有{emo}情感,医生的回复尽可能包含心理辅导知识,并且能够一步步诱导病人说出自己的问题进而提供解决问题的可行方案。\n", + " 注意,构造的数据必须以医生的陈述为结束语,每次只需要构造一个案例并且不需要写案例一、二等等,请返回完整的对话内容。\n", + " 请以如下格式返回生成的数据:\n", + " 病人:病人的咨询或陈述 \n", + " 医生:医生的安抚和建议\n", + " '''\n", + "'''你是一个研究过无数具有心理健康问题的病人与心理健康医生对话案例的专家,请你构造一些符合实际情况的具有心理健康问题的病人和心理健康医生的多轮对话案例。\n", + "要求医生的回复尽可能包含心理辅导知识,并且能够一步步诱导病人说出自己的问题进而提供解决问题的可行方案。\n", + "注意,构造的数据必须以医生的陈述为结束语。请以如下格式返回生成的数据:\n", + "病人:病人的咨询或陈述\n", + "医生:医生的安抚和建议'''\n" + ] + }, + { + "cell_type": "code", + "execution_count": 19, + "metadata": { + "execution": { + "iopub.execute_input": "2024-01-18T07:37:05.540117Z", + "iopub.status.busy": "2024-01-18T07:37:05.539540Z", + "iopub.status.idle": "2024-01-18T07:37:16.827957Z", + "shell.execute_reply": "2024-01-18T07:37:16.827169Z", + "shell.execute_reply.started": "2024-01-18T07:37:05.540087Z" + }, + "scrolled": true, + "tags": [] + }, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "开始生成第0条数据\n", + "病人:医生,我最近感觉自己在工作中迷失了方向。我对自己的工作充满了焦虑和压力,每天都感觉在一片漆黑中挣扎。我试过寻找解决方案,但总是找不到出口。\n", + " 医生:我理解你的感受,工作焦虑和压力是很常见的问题。首先,你需要明确自己的焦虑来源,是工作压力、人际关系还是其他原因?\n", + " 病人:其实,我对自己的工作挺感兴趣的,但就是无法在工作中找到成就感。我感觉自己很努力,但却没有得到应有的回报。\n", + " 医生:那你认为问题可能出在哪里呢?有没有什么具体的例子可以分享一下?\n", + " 病人:我经常会因为一些小事情而情绪低落,比如同事的一句话、一个项目进展不如预期。这些事情都会让我感到沮丧和失落,甚至影响到我的工作表现。\n", + " 医生:明白了,你的问题可能是情绪管理方面的问题。你需要学会控制自己的情绪,不要让负面情绪影响到你的工作和生活。\n", + " 病人:我也想过要控制自己的情绪,但总是感觉力不从心。有时候我会想,是不是我不够努力,是不是我不够优秀。\n", + " 医生:这种想法是很常见的,但并不正确。每个人都有自己的优点和不足,没有人是完美的。你需要学会接受自己的不足,同时也要看到自己的优点和长处。\n", + " 病人:您说得对,我应该多看看自己的优点,但有时候还是会很失落。\n", + " 医生:如果你感觉失落的时候,可以试着做一些放松的事情,比如散步、听音乐、做瑜伽等。这些活动可以帮助你放松身心,减轻压力和焦虑。\n", + " 病人:谢谢您的建议,我会尝试一下的。另外,您觉得我需要寻求专业的心理咨询吗?\n", + " 医生:如果你感觉自己的问题比较严重,或者已经影响到了你的生活和工作,那么我建议你寻求专业的心理咨询。心理咨询师可以更全面地了解你的问题,提供更加专业和具体的解决方案。但如果你觉得自己的问题不是很严重,也可以先尝试自己调节和管理情绪。\n", + " 病人:好的,我会考虑您的建议的。再次感谢您对我的帮助。\n", + " 医生:不客气,希望我的建议能对你有所帮助。如果你有任何其他问题或需要帮助,随时都可以来找我。祝你早日找到自己的方向,走出困境。\n", + "第0条数据生成完成!!\n", + "================================\n", + "开始生成第1条数据\n", + "病人:医生,我最近在社交场合总是感到很紧张,总是担心别人对我的看法,无法放松自己。这让我很难与他人正常交流,我很痛苦。\n", + " 医生:我理解你的感受。这种问题在社交焦虑中很常见。首先,你要明白,人的注意力是有限的,大多数人并不会像你想象的那样关注你。其次,要学会放松自己,深呼吸、冥想等都是有效的缓解紧张的方法。最后,你可以尝试逐渐暴露自己于社交场合,慢慢适应并克服这种焦虑感。\n", + " 病人:但是我还是会忍不住去想别人对我的看法,怎么办?\n", + " 医生:这是一个很好的问题。你需要学会转移注意力,不要过于关注别人对你的看法。你可以尝试去听别人在说什么,而不是一直在想自己表现如何。同时,你要相信自己,相信自己有能力处理社交场合的挑战。这样,你会更容易放松自己,更自信地去面对他人。\n", + " 医生:如果你发现自己无法自我处理这个问题,那么你可以考虑寻求专业的心理辅导帮助。你可以寻找一些专业的心理咨询机构或者和心理健康专家预约咨询。记住,面对心理问题,我们不需要感到羞耻或恐惧。像感冒一样,它只是我们的一部分,我们可以处理它并从中恢复过来。\n", + "第1条数据生成完成!!\n", + "================================\n", + "开始生成第2条数据\n", + "病人:我最近失业了,心情很低落,觉得自己一事无成。\n", + " 医生:我能理解你现在的感受,失业确实会对一个人的自信心产生打击。首先,请不要过度自责,失败和挫折在职业生涯中是难免的。你能和我分享一下你之前的工作经历和为什么失业了吗?\n", + " 病人:我在上一家公司工作了三年,但是因为公司的业务调整,我不得不离开。我尝试找新工作,但是一直没有合适的。\n", + " 医生:谢谢你分享这些。首先,你要明白,失业并不代表你个人的价值。这次经历只是一个暂时的挫折,你可以从中学习和成长。其次,你可以尝试从多方面寻找新的就业机会,比如扩大求职范围、提升自己的技能、寻找内部推荐等。\n", + " 病人:我也尝试了这些方法,但是还是没有找到工作。我担心我的前途会一片黯淡。\n", + " 医生:我很理解你的担忧,但是请相信自己的能力和潜力。同时,你可以尝试一些放松和缓解压力的方法,比如运动、冥想等。此外,你也可以考虑寻求职业咨询师的帮助,他们可以为你提供更具体的建议和指导。\n", + " 病人:我之前没有考虑过寻求职业咨询师的帮助,这听起来是一个不错的选择。\n", + " 医生:是的,职业咨询师可以帮助你更深入地了解自己的兴趣、能力和优势,从而为你提供更符合你个人情况的就业建议。同时,他们也可以帮助你提高面试技巧和建立自信。你可以去当地的心理咨询中心或者在网上寻找职业咨询师的信息。\n", + " 病人:非常感谢你的建议和鼓励。我会认真考虑你的建议,并尝试寻求职业咨询师的帮助。\n", + " 医生:不客气,祝你早日找到满意的工作!如果你还有其他问题或需要帮助,随时都可以联系我。\n", + "第2条数据生成完成!!\n", + "================================\n", + "开始生成第3条数据\n", + "病人:医生,我最近感觉压力特别大,学习上有点跟不上了。\n", + " 医生:我理解你的感受,学习压力大是很常见的问题。首先,你需要调整自己的学习方法和时间管理,制定一个合理的学习计划,确保有足够的时间休息和放松。另外,尝试一些放松的方法,比如深呼吸、瑜伽等,这些都可以帮助你缓解压力。\n", + " 病人:嗯,这些方法我试过,但是效果不明显。我还是感觉很焦虑,无法集中注意力。\n", + " 医生:那么你可能需要更多的支持。我建议你和老师或同学沟通一下,寻求他们的帮助和建议。同时,也可以考虑找一位心理咨询师聊一聊,他们可以帮助你处理焦虑和压力的问题。\n", + " 病人:好的,我会试试的。但是我觉得自己很笨,总是比别人慢半拍。\n", + " 医生:这种自我评价是不健康的。每个人都有自己的优点和不足,重要的是要看到自己的优点并努力发挥它们。同时,不要过度比较和急躁,每个人的学习进度和方式都不同。如果你觉得自己需要帮助,可以找一位导师或同学一起学习,互相支持和鼓励。\n", + " 病人:嗯,我会试着调整自己的心态的。还有,我觉得自己对一些娱乐活动也失去了兴趣,每天都很单调乏味。\n", + " 医生:这可能是因为你的压力太大了。有时候,我们需要适当地放松自己,做一些自己感兴趣的事情,比如听音乐、看电影、运动等。这些活动可以帮助你缓解压力,增加生活的乐趣和丰富度。不要把学习看成是一种负担,而是将它融入到你的生活中,享受学习和成长的乐趣。\n", + "第3条数据生成完成!!\n", + "================================\n", + "开始生成第4条数据\n", + "病人:医生,我觉得我和我的家人相处有些困难。我在家里经常感到被忽视和不被理解。我尝试和他们沟通,但是往往最终都是以争吵结束。这让我非常痛苦,我该怎么办呢?\n", + " 医生:我理解你的感受,与家人相处的问题是很常见的。首先,你需要保持冷静,不要轻易发火。你可以尝试在沟通时用“我觉得”来表达你的感受,而不是用指责性的语言。例如,你可以说“我觉得我在家里被忽视了,我希望能够得到更多的关注和沟通。”这样的表达方式更容易让家人理解你的感受,而不是引起争吵。\n", + " 病人:我明白了,我试试看这种方式和家人沟通。另外,我有时会对家人的行为产生强烈的情绪反应,这让我感到很困扰。\n", + " 医生:情绪反应是很正常的,但是我们需要学会控制自己的情绪。你可以尝试在情绪激动时深呼吸几次,或者离开现场冷静一下。另外,你可以尝试从家人的角度思考问题,理解他们的行为背后的原因和意图。这样可以减少误解和冲突。\n", + " 病人:我试试看这种方式处理情绪。最后,我觉得我在家庭中缺乏自我价值感,该怎么办呢?\n", + " 医生:自我价值感是一个人内在的感受,与家庭关系也是密切相关的。你可以尝试寻找自己的兴趣爱好,发展自己的特长和才能。这样可以增加你的自信心和自我价值感。同时,你可以与家人一起参与一些共同的活动,增进彼此之间的了解和互动,增加家庭凝聚力。\n", + " 医生:记住,改变需要时间和努力。只要你持之以恒地尝试,我相信你会逐渐改善与家人的关系。如果你需要进一步的帮助和支持,随时都可以来找我。\n", + "第4条数据生成完成!!\n", + "================================\n", + "开始生成第5条数据\n", + "病人:医生,我最近身体有些不适,感觉心里总是嫉妒别人,这让我很苦恼。\n", + " 医生:嫉妒是一种常见的情绪反应,不必过于担心。你能告诉我一些具体的事情吗?比如,你在什么情况下最常感到嫉妒?\n", + " 病人:当我看到别人的成功或者别人拥有我想要的东西时,我就会感到嫉妒。\n", + " 医生:我理解你的感受。嫉妒是一种强烈的情绪,有时会让我们感到痛苦。但是,我们可以尝试一些方法来控制这种情绪。首先,你需要学会自我反思,认识到自己的嫉妒情绪并尝试理性看待问题。另外,培养感恩的心态也很重要,试着去感激你所拥有的东西,而不是总是关注自己没有的。\n", + " 病人:这些方法听起来不错,但我真的能做到吗?\n", + " 医生:当然可以。记住,控制情绪需要时间和努力。你可以试着从每天的小事情开始,比如感激身边的人和事,慢慢培养自己的感恩心态。同时,也试着理性看待问题,避免过于比较和急躁。一步一步来,你会发现自己的情绪控制能力在逐渐提高。\n", + "第5条数据生成完成!!\n", + "================================\n", + "开始生成第6条数据\n", + "病人:我最近学业压力很大,感到焦虑和担忧,您能帮帮我吗?\n", + " 医生:当然可以,我会尽我所能来帮助你。首先,你需要理解学业压力是常见的,大部分人都会遇到。你可以尝试制定一个合理的学习计划,分配好时间,避免拖延。另外,适当的运动和休息也是缓解压力的重要方法。\n", + " 病人:嗯,我明白了。但是我还是会感到不快乐,您有什么建议吗?\n", + " 医生:不快乐的感觉是很正常的,但是你可以尝试一些方法来调整自己的情绪。比如,你可以尝试一些放松的活动,如听音乐、阅读、绘画等。此外,与朋友、家人或者老师交流也是缓解压力的好方法。你还有什么其他的问题吗?\n", + " 病人:我有时候会感到自己没有动力去学习,您能给我一些建议吗?\n", + " 医生:当然可以。你可以尝试将学习分解成小目标,逐个攻克。此外,你也可以找到自己的学习动力源泉,可能是未来的职业发展、兴趣爱好或者是提高自己的知识水平。你还可以尝试一些奖励机制,比如每完成一个小目标就给自己一些小奖励。你还有其他问题吗?\n", + " 医生:除了之前提到的建议外,还有一些方法可以帮助你提高学习动力。例如,与同学一起学习、找一个导师或指导者、使用学习工具或应用程序等。最重要的是要相信自己有能力克服困难,积极面对挑战。如果你还有其他问题或需要进一步的帮助,随时告诉我。\n", + "第6条数据生成完成!!\n", + "================================\n", + "开始生成第7条数据\n", + "病人:医生,我经常感到头痛,不知道是为什么。\n", + " 医生:我理解你的痛苦,头痛是很常见的症状。有时候它可能只是因为疲劳或压力过大。你能告诉我更多关于你的生活习惯和工作压力吗?\n", + " 病人:我是一名程序员,每天都要长时间坐在电脑前工作。我感觉压力很大,因为我的工作要求很高,而且经常需要加班。\n", + " 医生:明白了,长时间坐在电脑前和过度的压力都可能是你头痛的原因。首先,我建议你每隔一段时间就离开座位,做一些伸展运动。此外,你可以尝试一些放松技巧,比如深呼吸和冥想,以减轻压力。你还有什么问题吗?\n", + " 病人:我的脖子也经常痛,是不是和头痛有关?\n", + " 医生:是的,头痛和脖子痛经常同时出现。这可能是因为你的姿势不正确或者长时间保持同一姿势。我建议你尝试一些改善姿势的练习,比如瑜伽或普拉提。这些运动可以帮助你放松肌肉并改善姿势。你觉得这个建议可行吗?\n", + " 病人:听起来不错,我会试试的。但是我还是很担心我的头痛会不会有更严重的问题。\n", + " 医生:你的担忧是很正常的。如果你头痛的情况持续存在或者变得更严重,我建议你及时到医院进行检查。但是,从你目前的情况来看,我认为通过改善生活方式和适当的锻炼,你应该能够缓解头痛的症状。如果你有任何问题或者担忧,随时可以再来咨询我。\n", + "第7条数据生成完成!!\n", + "================================\n", + "开始生成第8条数据\n", + "病人:医生,我最近感到特别兴奋,晚上都睡不着觉,总是在想一些好事会发生在我身上。但这种兴奋的感觉让我感到有点不安,我担心我是不是有什么毛病。\n", + " 医生:首先,不要过于担心。兴奋感是一种正常的情绪体验,但如果你感到不安或者影响到你的日常生活,就需要引起注意了。我想了解一下,这种兴奋感是突然出现的吗?还是有什么特别的事情发生后开始的?\n", + " 病人:嗯,其实有一段时间了,大概几个月了吧。我感觉自从我换了工作之后,就开始有这种感觉了。新的工作让我感到充满挑战和机遇,每天都有很多新的事情发生,这让我感到很兴奋。\n", + " 医生:听起来你对自己的新工作很满意,这是一个很好的事情。但是,如果你感到兴奋感已经影响到了你的日常生活,比如睡眠、工作等,就需要采取一些措施了。首先,你可以尝试一些放松的方法,比如深呼吸、瑜伽等,来缓解身体的紧张感。其次,你可以尝试规划一下每天的时间,给自己留出一些独处和休息的时间,以保持平衡和稳定。\n", + " 病人:你说得对,我最近确实有点忙,没有好好照顾自己。我会尝试你说的方法,看看是否能够缓解这种兴奋感。另外,我还想问一下,有没有什么药物可以帮助缓解这种情绪?\n", + " 医生:药物并不是首选的治疗方式,特别是对于你这种由于兴奋感引起的情绪问题。我建议你先尝试一些非药物的方法来缓解情绪,比如运动、放松训练等。如果这些方法无法缓解你的症状,或者你的症状已经严重影响到你的日常生活,我们再考虑药物治疗。但即使需要药物治疗,也需要配合心理治疗和自我调节来达到最佳的治疗效果。\n", + " 病人:明白了,我会先尝试你建议的方法来缓解情绪的。谢谢你医生。\n", + " 医生:不客气。如果你在实施这些方法的过程中遇到了任何问题或困难,随时可以回来找我。祝你早日康复。\n", + "第8条数据生成完成!!\n", + "================================\n", + "开始生成第9条数据\n", + "病人:医生,我最近总是梦见自己回到了高考那天,那种焦虑和紧张感让我每次醒来都感到无比疲惫。我甚至开始怀疑自己是否能够克服这个问题。\n", + " 医生:高考确实是一个压力巨大的时期,但你一定要相信自己能够克服这个困难。首先,我们要弄清楚这个梦境对你的意义是什么,它是为什么会引起你的焦虑。我们可以一起分析这个梦境,看看有没有什么更深层次的心理原因。\n", + " 病人:我想可能是因为我觉得自己现在的生活并不如意,总是觉得如果当时高考考得好一些,现在的生活也许会不一样。\n", + " 医生:这是一种常见的心理现象,很多人都会因为过去的事情而感到遗憾。但是,过去的事情已经无法改变,我们需要关注的是现在和未来。你可以尝试一些放松的方法,比如深呼吸、冥想等,来减轻焦虑感。同时,你也可以尝试重新审视自己的生活,找到一些新的目标和方向,让自己更有动力去追求更好的生活。\n", + " 病人:我明白了,医生。我会尝试着去放松自己,并且重新审视自己的生活。\n", + " 医生:很好,我相信你一定能够克服这个困难。如果你需要帮助或者建议,随时都可以来找我。\n", + "第9条数据生成完成!!\n", + "================================\n" + ] + } + ], + "source": [ + "import erniebot\n", + "\n", + "erniebot.api_type = 'aistudio'\n", + "#此处需要将你的token也就是AIstudio主页的访问令牌放到下方\n", + "erniebot.access_token = \"69b42a960b44631aa0752f4410723c42fc88adfe\"\n", + "words = ''\n", + "# prompt = '''\n", + "# 你是一个研究过无数具有心理健康问题的病人与心理健康医生对话案例的专家,请你构造一些符合实际情况的具有心理健康问题的病人和心理健康医生的多轮对话案例。要求医生的回复尽可能包含心理辅导知识,并且能够一步步诱导病人说出自己的问题进而提供解决问题的可行方案。注意,构造的数据必须以医生的陈述为结束语。请以如下格式返回生成的数据:\n", + "# 病人:病人的咨询或陈述\n", + "# 医生:医生的安抚和建议\n", + "# '''\n", + "res = []\n", + "for i in range(2500):\n", + " print(f'开始生成第{i}条数据')\n", + " data = random.choice(areas_of_life)\n", + " emo = random.choice(emotions_lis)\n", + " prompt = f'''你是一个研究过无数具有心理健康问题的病人与心理健康医生对话的专家,请你构造一些符合实际情况的具有心理健康问题的病人和心理健康医生的连续的多轮对话记录。\n", + " 要求病人的问题属于{data}场景,具有{emo}情感,医生的回复尽可能包含心理辅导知识,并且能够一步步诱导病人说出自己的问题进而提供解决问题的可行方案。\n", + " 注意,构造的数据必须以医生的陈述为结束语,每次只需要构造一个案例并且不需要写案例一、二等等,请返回完整的对话内容。\n", + " 请以如下格式返回生成的数据:\n", + " 病人:病人的咨询或陈述 \n", + " 医生:医生的安抚和建议\n", + " '''\n", + " response = erniebot.ChatCompletion.create(\n", + " model='ernie-3.5',\n", + " messages=[{'role': 'user', 'content': f\"{prompt}\"}],\n", + " # top_p=random.uniform(0.5, 0.99),\n", + " # penalty_score = random.uniform(1.0, 2.0)\n", + " )\n", + " tmp = response.result\n", + " print(tmp)\n", + " ls = tmp.split('\\n')\n", + " conversation = {'conversation':[]}\n", + " for j in range(0, len(ls)-1, 2):\n", + " # print(j)\n", + " q_a = {}\n", + " if j == 0:\n", + " q_a = {'system':system, 'input':ls[j].split(\":\")[-1], 'output':ls[j+1].split(\":\")[-1]}\n", + " else:\n", + " q_a = {'input':ls[j].split(\":\")[-1], 'output':ls[j+1].split(\":\")[-1]}\n", + " # print(q_a)\n", + " conversation['conversation'].append(q_a)\n", + " res.append(conversation)\n", + " print(f'第{i}条数据生成完成!!')\n", + " print('================================')\n", + " # 将数据写入JSON文件 \n", + " if i % 50 == 0:\n", + " with open('conversation.json', 'w', encoding='utf-8') as file: \n", + " json.dump(res, file, ensure_ascii=False, indent=4)\n" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": { + "execution": { + "iopub.execute_input": "2024-01-18T08:03:43.230121Z", + "iopub.status.busy": "2024-01-18T08:03:43.229529Z", + "iopub.status.idle": "2024-01-18T08:03:43.234895Z", + "shell.execute_reply": "2024-01-18T08:03:43.234255Z", + "shell.execute_reply.started": "2024-01-18T08:03:43.230090Z" + }, + "scrolled": true, + "tags": [] + }, + "outputs": [], + "source": [ + "%cd ~" + ] + }, + { + "cell_type": "code", + "execution_count": 20, + "metadata": { + "execution": { + "iopub.execute_input": "2024-01-18T08:04:07.367045Z", + "iopub.status.busy": "2024-01-18T08:04:07.366451Z", + "iopub.status.idle": "2024-01-18T08:04:07.372748Z", + "shell.execute_reply": "2024-01-18T08:04:07.372071Z", + "shell.execute_reply.started": "2024-01-18T08:04:07.367014Z" + }, + "scrolled": true + }, + "outputs": [ + { + "data": { + "text/plain": [ + "[{'conversation': [{'system': '现在你是一个心理专家,我有一些心理问题,请你用专业的知识帮我解决',\n", + " 'input': '医生,我最近感觉自己在工作中迷失了方向。我对自己的工作充满了焦虑和压力,每天都感觉在一片漆黑中挣扎。我试过寻找解决方案,但总是找不到出口。',\n", + " 'output': '我理解你的感受,工作焦虑和压力是很常见的问题。首先,你需要明确自己的焦虑来源,是工作压力、人际关系还是其他原因?'},\n", + " {'system': '现在你是一个心理专家,我有一些心理问题,请你用专业的知识帮我解决',\n", + " 'input': '其实,我对自己的工作挺感兴趣的,但就是无法在工作中找到成就感。我感觉自己很努力,但却没有得到应有的回报。',\n", + " 'output': '那你认为问题可能出在哪里呢?有没有什么具体的例子可以分享一下?'},\n", + " {'system': '现在你是一个心理专家,我有一些心理问题,请你用专业的知识帮我解决',\n", + " 'input': '我经常会因为一些小事情而情绪低落,比如同事的一句话、一个项目进展不如预期。这些事情都会让我感到沮丧和失落,甚至影响到我的工作表现。',\n", + " 'output': '明白了,你的问题可能是情绪管理方面的问题。你需要学会控制自己的情绪,不要让负面情绪影响到你的工作和生活。'},\n", + " {'system': '现在你是一个心理专家,我有一些心理问题,请你用专业的知识帮我解决',\n", + " 'input': '我也想过要控制自己的情绪,但总是感觉力不从心。有时候我会想,是不是我不够努力,是不是我不够优秀。',\n", + " 'output': '这种想法是很常见的,但并不正确。每个人都有自己的优点和不足,没有人是完美的。你需要学会接受自己的不足,同时也要看到自己的优点和长处。'},\n", + " {'system': '现在你是一个心理专家,我有一些心理问题,请你用专业的知识帮我解决',\n", + " 'input': '您说得对,我应该多看看自己的优点,但有时候还是会很失落。',\n", + " 'output': '如果你感觉失落的时候,可以试着做一些放松的事情,比如散步、听音乐、做瑜伽等。这些活动可以帮助你放松身心,减轻压力和焦虑。'},\n", + " {'system': '现在你是一个心理专家,我有一些心理问题,请你用专业的知识帮我解决',\n", + " 'input': '谢谢您的建议,我会尝试一下的。另外,您觉得我需要寻求专业的心理咨询吗?',\n", + " 'output': '如果你感觉自己的问题比较严重,或者已经影响到了你的生活和工作,那么我建议你寻求专业的心理咨询。心理咨询师可以更全面地了解你的问题,提供更加专业和具体的解决方案。但如果你觉得自己的问题不是很严重,也可以先尝试自己调节和管理情绪。'},\n", + " {'system': '现在你是一个心理专家,我有一些心理问题,请你用专业的知识帮我解决',\n", + " 'input': '好的,我会考虑您的建议的。再次感谢您对我的帮助。',\n", + " 'output': '不客气,希望我的建议能对你有所帮助。如果你有任何其他问题或需要帮助,随时都可以来找我。祝你早日找到自己的方向,走出困境。'}]},\n", + " {'conversation': [{'input': '医生,我最近在社交场合总是感到很紧张,总是担心别人对我的看法,无法放松自己。这让我很难与他人正常交流,我很痛苦。',\n", + " 'output': '我理解你的感受。这种问题在社交焦虑中很常见。首先,你要明白,人的注意力是有限的,大多数人并不会像你想象的那样关注你。其次,要学会放松自己,深呼吸、冥想等都是有效的缓解紧张的方法。最后,你可以尝试逐渐暴露自己于社交场合,慢慢适应并克服这种焦虑感。'},\n", + " {'input': '但是我还是会忍不住去想别人对我的看法,怎么办?',\n", + " 'output': '这是一个很好的问题。你需要学会转移注意力,不要过于关注别人对你的看法。你可以尝试去听别人在说什么,而不是一直在想自己表现如何。同时,你要相信自己,相信自己有能力处理社交场合的挑战。这样,你会更容易放松自己,更自信地去面对他人。'}]},\n", + " {'conversation': [{'input': '我最近失业了,心情很低落,觉得自己一事无成。',\n", + " 'output': '我能理解你现在的感受,失业确实会对一个人的自信心产生打击。首先,请不要过度自责,失败和挫折在职业生涯中是难免的。你能和我分享一下你之前的工作经历和为什么失业了吗?'},\n", + " {'input': '我在上一家公司工作了三年,但是因为公司的业务调整,我不得不离开。我尝试找新工作,但是一直没有合适的。',\n", + " 'output': '谢谢你分享这些。首先,你要明白,失业并不代表你个人的价值。这次经历只是一个暂时的挫折,你可以从中学习和成长。其次,你可以尝试从多方面寻找新的就业机会,比如扩大求职范围、提升自己的技能、寻找内部推荐等。'},\n", + " {'input': '我也尝试了这些方法,但是还是没有找到工作。我担心我的前途会一片黯淡。',\n", + " 'output': '我很理解你的担忧,但是请相信自己的能力和潜力。同时,你可以尝试一些放松和缓解压力的方法,比如运动、冥想等。此外,你也可以考虑寻求职业咨询师的帮助,他们可以为你提供更具体的建议和指导。'},\n", + " {'input': '我之前没有考虑过寻求职业咨询师的帮助,这听起来是一个不错的选择。',\n", + " 'output': '是的,职业咨询师可以帮助你更深入地了解自己的兴趣、能力和优势,从而为你提供更符合你个人情况的就业建议。同时,他们也可以帮助你提高面试技巧和建立自信。你可以去当地的心理咨询中心或者在网上寻找职业咨询师的信息。'},\n", + " {'input': '非常感谢你的建议和鼓励。我会认真考虑你的建议,并尝试寻求职业咨询师的帮助。',\n", + " 'output': '不客气,祝你早日找到满意的工作!如果你还有其他问题或需要帮助,随时都可以联系我。'}]},\n", + " {'conversation': [{'input': '医生,我最近感觉压力特别大,学习上有点跟不上了。',\n", + " 'output': '我理解你的感受,学习压力大是很常见的问题。首先,你需要调整自己的学习方法和时间管理,制定一个合理的学习计划,确保有足够的时间休息和放松。另外,尝试一些放松的方法,比如深呼吸、瑜伽等,这些都可以帮助你缓解压力。'},\n", + " {'input': '嗯,这些方法我试过,但是效果不明显。我还是感觉很焦虑,无法集中注意力。',\n", + " 'output': '那么你可能需要更多的支持。我建议你和老师或同学沟通一下,寻求他们的帮助和建议。同时,也可以考虑找一位心理咨询师聊一聊,他们可以帮助你处理焦虑和压力的问题。'},\n", + " {'input': '好的,我会试试的。但是我觉得自己很笨,总是比别人慢半拍。',\n", + " 'output': '这种自我评价是不健康的。每个人都有自己的优点和不足,重要的是要看到自己的优点并努力发挥它们。同时,不要过度比较和急躁,每个人的学习进度和方式都不同。如果你觉得自己需要帮助,可以找一位导师或同学一起学习,互相支持和鼓励。'},\n", + " {'input': '嗯,我会试着调整自己的心态的。还有,我觉得自己对一些娱乐活动也失去了兴趣,每天都很单调乏味。',\n", + " 'output': '这可能是因为你的压力太大了。有时候,我们需要适当地放松自己,做一些自己感兴趣的事情,比如听音乐、看电影、运动等。这些活动可以帮助你缓解压力,增加生活的乐趣和丰富度。不要把学习看成是一种负担,而是将它融入到你的生活中,享受学习和成长的乐趣。'}]},\n", + " {'conversation': [{'input': '医生,我觉得我和我的家人相处有些困难。我在家里经常感到被忽视和不被理解。我尝试和他们沟通,但是往往最终都是以争吵结束。这让我非常痛苦,我该怎么办呢?',\n", + " 'output': '我理解你的感受,与家人相处的问题是很常见的。首先,你需要保持冷静,不要轻易发火。你可以尝试在沟通时用“我觉得”来表达你的感受,而不是用指责性的语言。例如,你可以说“我觉得我在家里被忽视了,我希望能够得到更多的关注和沟通。”这样的表达方式更容易让家人理解你的感受,而不是引起争吵。'},\n", + " {'input': '我明白了,我试试看这种方式和家人沟通。另外,我有时会对家人的行为产生强烈的情绪反应,这让我感到很困扰。',\n", + " 'output': '情绪反应是很正常的,但是我们需要学会控制自己的情绪。你可以尝试在情绪激动时深呼吸几次,或者离开现场冷静一下。另外,你可以尝试从家人的角度思考问题,理解他们的行为背后的原因和意图。这样可以减少误解和冲突。'},\n", + " {'input': '我试试看这种方式处理情绪。最后,我觉得我在家庭中缺乏自我价值感,该怎么办呢?',\n", + " 'output': '自我价值感是一个人内在的感受,与家庭关系也是密切相关的。你可以尝试寻找自己的兴趣爱好,发展自己的特长和才能。这样可以增加你的自信心和自我价值感。同时,你可以与家人一起参与一些共同的活动,增进彼此之间的了解和互动,增加家庭凝聚力。'}]},\n", + " {'conversation': [{'input': '医生,我最近身体有些不适,感觉心里总是嫉妒别人,这让我很苦恼。',\n", + " 'output': '嫉妒是一种常见的情绪反应,不必过于担心。你能告诉我一些具体的事情吗?比如,你在什么情况下最常感到嫉妒?'},\n", + " {'input': '当我看到别人的成功或者别人拥有我想要的东西时,我就会感到嫉妒。',\n", + " 'output': '我理解你的感受。嫉妒是一种强烈的情绪,有时会让我们感到痛苦。但是,我们可以尝试一些方法来控制这种情绪。首先,你需要学会自我反思,认识到自己的嫉妒情绪并尝试理性看待问题。另外,培养感恩的心态也很重要,试着去感激你所拥有的东西,而不是总是关注自己没有的。'},\n", + " {'input': '这些方法听起来不错,但我真的能做到吗?',\n", + " 'output': '当然可以。记住,控制情绪需要时间和努力。你可以试着从每天的小事情开始,比如感激身边的人和事,慢慢培养自己的感恩心态。同时,也试着理性看待问题,避免过于比较和急躁。一步一步来,你会发现自己的情绪控制能力在逐渐提高。'}]},\n", + " {'conversation': [{'input': '我最近学业压力很大,感到焦虑和担忧,您能帮帮我吗?',\n", + " 'output': '当然可以,我会尽我所能来帮助你。首先,你需要理解学业压力是常见的,大部分人都会遇到。你可以尝试制定一个合理的学习计划,分配好时间,避免拖延。另外,适当的运动和休息也是缓解压力的重要方法。'},\n", + " {'input': '嗯,我明白了。但是我还是会感到不快乐,您有什么建议吗?',\n", + " 'output': '不快乐的感觉是很正常的,但是你可以尝试一些方法来调整自己的情绪。比如,你可以尝试一些放松的活动,如听音乐、阅读、绘画等。此外,与朋友、家人或者老师交流也是缓解压力的好方法。你还有什么其他的问题吗?'},\n", + " {'input': '我有时候会感到自己没有动力去学习,您能给我一些建议吗?',\n", + " 'output': '当然可以。你可以尝试将学习分解成小目标,逐个攻克。此外,你也可以找到自己的学习动力源泉,可能是未来的职业发展、兴趣爱好或者是提高自己的知识水平。你还可以尝试一些奖励机制,比如每完成一个小目标就给自己一些小奖励。你还有其他问题吗?'}]},\n", + " {'conversation': [{'input': '医生,我经常感到头痛,不知道是为什么。',\n", + " 'output': '我理解你的痛苦,头痛是很常见的症状。有时候它可能只是因为疲劳或压力过大。你能告诉我更多关于你的生活习惯和工作压力吗?'},\n", + " {'input': '我是一名程序员,每天都要长时间坐在电脑前工作。我感觉压力很大,因为我的工作要求很高,而且经常需要加班。',\n", + " 'output': '明白了,长时间坐在电脑前和过度的压力都可能是你头痛的原因。首先,我建议你每隔一段时间就离开座位,做一些伸展运动。此外,你可以尝试一些放松技巧,比如深呼吸和冥想,以减轻压力。你还有什么问题吗?'},\n", + " {'input': '我的脖子也经常痛,是不是和头痛有关?',\n", + " 'output': '是的,头痛和脖子痛经常同时出现。这可能是因为你的姿势不正确或者长时间保持同一姿势。我建议你尝试一些改善姿势的练习,比如瑜伽或普拉提。这些运动可以帮助你放松肌肉并改善姿势。你觉得这个建议可行吗?'},\n", + " {'input': '听起来不错,我会试试的。但是我还是很担心我的头痛会不会有更严重的问题。',\n", + " 'output': '你的担忧是很正常的。如果你头痛的情况持续存在或者变得更严重,我建议你及时到医院进行检查。但是,从你目前的情况来看,我认为通过改善生活方式和适当的锻炼,你应该能够缓解头痛的症状。如果你有任何问题或者担忧,随时可以再来咨询我。'}]},\n", + " {'conversation': [{'input': '医生,我最近感到特别兴奋,晚上都睡不着觉,总是在想一些好事会发生在我身上。但这种兴奋的感觉让我感到有点不安,我担心我是不是有什么毛病。',\n", + " 'output': '首先,不要过于担心。兴奋感是一种正常的情绪体验,但如果你感到不安或者影响到你的日常生活,就需要引起注意了。我想了解一下,这种兴奋感是突然出现的吗?还是有什么特别的事情发生后开始的?'},\n", + " {'input': '嗯,其实有一段时间了,大概几个月了吧。我感觉自从我换了工作之后,就开始有这种感觉了。新的工作让我感到充满挑战和机遇,每天都有很多新的事情发生,这让我感到很兴奋。',\n", + " 'output': '听起来你对自己的新工作很满意,这是一个很好的事情。但是,如果你感到兴奋感已经影响到了你的日常生活,比如睡眠、工作等,就需要采取一些措施了。首先,你可以尝试一些放松的方法,比如深呼吸、瑜伽等,来缓解身体的紧张感。其次,你可以尝试规划一下每天的时间,给自己留出一些独处和休息的时间,以保持平衡和稳定。'},\n", + " {'input': '你说得对,我最近确实有点忙,没有好好照顾自己。我会尝试你说的方法,看看是否能够缓解这种兴奋感。另外,我还想问一下,有没有什么药物可以帮助缓解这种情绪?',\n", + " 'output': '药物并不是首选的治疗方式,特别是对于你这种由于兴奋感引起的情绪问题。我建议你先尝试一些非药物的方法来缓解情绪,比如运动、放松训练等。如果这些方法无法缓解你的症状,或者你的症状已经严重影响到你的日常生活,我们再考虑药物治疗。但即使需要药物治疗,也需要配合心理治疗和自我调节来达到最佳的治疗效果。'},\n", + " {'input': '明白了,我会先尝试你建议的方法来缓解情绪的。谢谢你医生。',\n", + " 'output': '不客气。如果你在实施这些方法的过程中遇到了任何问题或困难,随时可以回来找我。祝你早日康复。'}]},\n", + " {'conversation': [{'input': '医生,我最近总是梦见自己回到了高考那天,那种焦虑和紧张感让我每次醒来都感到无比疲惫。我甚至开始怀疑自己是否能够克服这个问题。',\n", + " 'output': '高考确实是一个压力巨大的时期,但你一定要相信自己能够克服这个困难。首先,我们要弄清楚这个梦境对你的意义是什么,它是为什么会引起你的焦虑。我们可以一起分析这个梦境,看看有没有什么更深层次的心理原因。'},\n", + " {'input': '我想可能是因为我觉得自己现在的生活并不如意,总是觉得如果当时高考考得好一些,现在的生活也许会不一样。',\n", + " 'output': '这是一种常见的心理现象,很多人都会因为过去的事情而感到遗憾。但是,过去的事情已经无法改变,我们需要关注的是现在和未来。你可以尝试一些放松的方法,比如深呼吸、冥想等,来减轻焦虑感。同时,你也可以尝试重新审视自己的生活,找到一些新的目标和方向,让自己更有动力去追求更好的生活。'},\n", + " {'input': '我明白了,医生。我会尝试着去放松自己,并且重新审视自己的生活。',\n", + " 'output': '很好,我相信你一定能够克服这个困难。如果你需要帮助或者建议,随时都可以来找我。'}]}]" + ] + }, + "execution_count": 20, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "res" + ] + }, + { + "cell_type": "code", + "execution_count": 21, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "10" + ] + }, + "execution_count": 21, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "len(res)" + ] + }, + { + "cell_type": "code", + "execution_count": 24, + "metadata": { + "execution": { + "iopub.execute_input": "2024-01-18T08:03:46.672747Z", + "iopub.status.busy": "2024-01-18T08:03:46.672254Z", + "iopub.status.idle": "2024-01-18T08:03:46.677384Z", + "shell.execute_reply": "2024-01-18T08:03:46.676711Z", + "shell.execute_reply.started": "2024-01-18T08:03:46.672717Z" + }, + "scrolled": true, + "tags": [] + }, + "outputs": [ + { + "name": "stderr", + "output_type": "stream", + "text": [ + "UsageError: Line magic function `%` not found.\n" + ] + } + ], + "source": [ + "# 将数据写入JSON文件 \n", + "% cd ~\n", + "with open('conversation.json', 'w', encoding='utf-8') as file: \n", + " json.dump(res, file, ensure_ascii=False, indent=4)" + ] + }, + { + "cell_type": "code", + "execution_count": 25, + "metadata": { + "execution": { + "iopub.execute_input": "2024-01-18T08:05:19.533650Z", + "iopub.status.busy": "2024-01-18T08:05:19.533056Z", + "iopub.status.idle": "2024-01-18T08:05:19.538905Z", + "shell.execute_reply": "2024-01-18T08:05:19.538249Z", + "shell.execute_reply.started": "2024-01-18T08:05:19.533611Z" + }, + "scrolled": true + }, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "[{'conversation': [{'system': '现在你是一个心理专家,我有一些心理问题,请你用专业的知识帮我解决', 'input': '医生,我最近感觉自己在工作中迷失了方向。我对自己的工作充满了焦虑和压力,每天都感觉在一片漆黑中挣扎。我试过寻找解决方案,但总是找不到出口。', 'output': '我理解你的感受,工作焦虑和压力是很常见的问题。首先,你需要明确自己的焦虑来源,是工作压力、人际关系还是其他原因?'}, {'system': '现在你是一个心理专家,我有一些心理问题,请你用专业的知识帮我解决', 'input': '其实,我对自己的工作挺感兴趣的,但就是无法在工作中找到成就感。我感觉自己很努力,但却没有得到应有的回报。', 'output': '那你认为问题可能出在哪里呢?有没有什么具体的例子可以分享一下?'}, {'system': '现在你是一个心理专家,我有一些心理问题,请你用专业的知识帮我解决', 'input': '我经常会因为一些小事情而情绪低落,比如同事的一句话、一个项目进展不如预期。这些事情都会让我感到沮丧和失落,甚至影响到我的工作表现。', 'output': '明白了,你的问题可能是情绪管理方面的问题。你需要学会控制自己的情绪,不要让负面情绪影响到你的工作和生活。'}, {'system': '现在你是一个心理专家,我有一些心理问题,请你用专业的知识帮我解决', 'input': '我也想过要控制自己的情绪,但总是感觉力不从心。有时候我会想,是不是我不够努力,是不是我不够优秀。', 'output': '这种想法是很常见的,但并不正确。每个人都有自己的优点和不足,没有人是完美的。你需要学会接受自己的不足,同时也要看到自己的优点和长处。'}, {'system': '现在你是一个心理专家,我有一些心理问题,请你用专业的知识帮我解决', 'input': '您说得对,我应该多看看自己的优点,但有时候还是会很失落。', 'output': '如果你感觉失落的时候,可以试着做一些放松的事情,比如散步、听音乐、做瑜伽等。这些活动可以帮助你放松身心,减轻压力和焦虑。'}, {'system': '现在你是一个心理专家,我有一些心理问题,请你用专业的知识帮我解决', 'input': '谢谢您的建议,我会尝试一下的。另外,您觉得我需要寻求专业的心理咨询吗?', 'output': '如果你感觉自己的问题比较严重,或者已经影响到了你的生活和工作,那么我建议你寻求专业的心理咨询。心理咨询师可以更全面地了解你的问题,提供更加专业和具体的解决方案。但如果你觉得自己的问题不是很严重,也可以先尝试自己调节和管理情绪。'}, {'system': '现在你是一个心理专家,我有一些心理问题,请你用专业的知识帮我解决', 'input': '好的,我会考虑您的建议的。再次感谢您对我的帮助。', 'output': '不客气,希望我的建议能对你有所帮助。如果你有任何其他问题或需要帮助,随时都可以来找我。祝你早日找到自己的方向,走出困境。'}]}, {'conversation': [{'input': '医生,我最近在社交场合总是感到很紧张,总是担心别人对我的看法,无法放松自己。这让我很难与他人正常交流,我很痛苦。', 'output': '我理解你的感受。这种问题在社交焦虑中很常见。首先,你要明白,人的注意力是有限的,大多数人并不会像你想象的那样关注你。其次,要学会放松自己,深呼吸、冥想等都是有效的缓解紧张的方法。最后,你可以尝试逐渐暴露自己于社交场合,慢慢适应并克服这种焦虑感。'}, {'input': '但是我还是会忍不住去想别人对我的看法,怎么办?', 'output': '这是一个很好的问题。你需要学会转移注意力,不要过于关注别人对你的看法。你可以尝试去听别人在说什么,而不是一直在想自己表现如何。同时,你要相信自己,相信自己有能力处理社交场合的挑战。这样,你会更容易放松自己,更自信地去面对他人。'}]}, {'conversation': [{'input': '我最近失业了,心情很低落,觉得自己一事无成。', 'output': '我能理解你现在的感受,失业确实会对一个人的自信心产生打击。首先,请不要过度自责,失败和挫折在职业生涯中是难免的。你能和我分享一下你之前的工作经历和为什么失业了吗?'}, {'input': '我在上一家公司工作了三年,但是因为公司的业务调整,我不得不离开。我尝试找新工作,但是一直没有合适的。', 'output': '谢谢你分享这些。首先,你要明白,失业并不代表你个人的价值。这次经历只是一个暂时的挫折,你可以从中学习和成长。其次,你可以尝试从多方面寻找新的就业机会,比如扩大求职范围、提升自己的技能、寻找内部推荐等。'}, {'input': '我也尝试了这些方法,但是还是没有找到工作。我担心我的前途会一片黯淡。', 'output': '我很理解你的担忧,但是请相信自己的能力和潜力。同时,你可以尝试一些放松和缓解压力的方法,比如运动、冥想等。此外,你也可以考虑寻求职业咨询师的帮助,他们可以为你提供更具体的建议和指导。'}, {'input': '我之前没有考虑过寻求职业咨询师的帮助,这听起来是一个不错的选择。', 'output': '是的,职业咨询师可以帮助你更深入地了解自己的兴趣、能力和优势,从而为你提供更符合你个人情况的就业建议。同时,他们也可以帮助你提高面试技巧和建立自信。你可以去当地的心理咨询中心或者在网上寻找职业咨询师的信息。'}, {'input': '非常感谢你的建议和鼓励。我会认真考虑你的建议,并尝试寻求职业咨询师的帮助。', 'output': '不客气,祝你早日找到满意的工作!如果你还有其他问题或需要帮助,随时都可以联系我。'}]}, {'conversation': [{'input': '医生,我最近感觉压力特别大,学习上有点跟不上了。', 'output': '我理解你的感受,学习压力大是很常见的问题。首先,你需要调整自己的学习方法和时间管理,制定一个合理的学习计划,确保有足够的时间休息和放松。另外,尝试一些放松的方法,比如深呼吸、瑜伽等,这些都可以帮助你缓解压力。'}, {'input': '嗯,这些方法我试过,但是效果不明显。我还是感觉很焦虑,无法集中注意力。', 'output': '那么你可能需要更多的支持。我建议你和老师或同学沟通一下,寻求他们的帮助和建议。同时,也可以考虑找一位心理咨询师聊一聊,他们可以帮助你处理焦虑和压力的问题。'}, {'input': '好的,我会试试的。但是我觉得自己很笨,总是比别人慢半拍。', 'output': '这种自我评价是不健康的。每个人都有自己的优点和不足,重要的是要看到自己的优点并努力发挥它们。同时,不要过度比较和急躁,每个人的学习进度和方式都不同。如果你觉得自己需要帮助,可以找一位导师或同学一起学习,互相支持和鼓励。'}, {'input': '嗯,我会试着调整自己的心态的。还有,我觉得自己对一些娱乐活动也失去了兴趣,每天都很单调乏味。', 'output': '这可能是因为你的压力太大了。有时候,我们需要适当地放松自己,做一些自己感兴趣的事情,比如听音乐、看电影、运动等。这些活动可以帮助你缓解压力,增加生活的乐趣和丰富度。不要把学习看成是一种负担,而是将它融入到你的生活中,享受学习和成长的乐趣。'}]}, {'conversation': [{'input': '医生,我觉得我和我的家人相处有些困难。我在家里经常感到被忽视和不被理解。我尝试和他们沟通,但是往往最终都是以争吵结束。这让我非常痛苦,我该怎么办呢?', 'output': '我理解你的感受,与家人相处的问题是很常见的。首先,你需要保持冷静,不要轻易发火。你可以尝试在沟通时用“我觉得”来表达你的感受,而不是用指责性的语言。例如,你可以说“我觉得我在家里被忽视了,我希望能够得到更多的关注和沟通。”这样的表达方式更容易让家人理解你的感受,而不是引起争吵。'}, {'input': '我明白了,我试试看这种方式和家人沟通。另外,我有时会对家人的行为产生强烈的情绪反应,这让我感到很困扰。', 'output': '情绪反应是很正常的,但是我们需要学会控制自己的情绪。你可以尝试在情绪激动时深呼吸几次,或者离开现场冷静一下。另外,你可以尝试从家人的角度思考问题,理解他们的行为背后的原因和意图。这样可以减少误解和冲突。'}, {'input': '我试试看这种方式处理情绪。最后,我觉得我在家庭中缺乏自我价值感,该怎么办呢?', 'output': '自我价值感是一个人内在的感受,与家庭关系也是密切相关的。你可以尝试寻找自己的兴趣爱好,发展自己的特长和才能。这样可以增加你的自信心和自我价值感。同时,你可以与家人一起参与一些共同的活动,增进彼此之间的了解和互动,增加家庭凝聚力。'}]}, {'conversation': [{'input': '医生,我最近身体有些不适,感觉心里总是嫉妒别人,这让我很苦恼。', 'output': '嫉妒是一种常见的情绪反应,不必过于担心。你能告诉我一些具体的事情吗?比如,你在什么情况下最常感到嫉妒?'}, {'input': '当我看到别人的成功或者别人拥有我想要的东西时,我就会感到嫉妒。', 'output': '我理解你的感受。嫉妒是一种强烈的情绪,有时会让我们感到痛苦。但是,我们可以尝试一些方法来控制这种情绪。首先,你需要学会自我反思,认识到自己的嫉妒情绪并尝试理性看待问题。另外,培养感恩的心态也很重要,试着去感激你所拥有的东西,而不是总是关注自己没有的。'}, {'input': '这些方法听起来不错,但我真的能做到吗?', 'output': '当然可以。记住,控制情绪需要时间和努力。你可以试着从每天的小事情开始,比如感激身边的人和事,慢慢培养自己的感恩心态。同时,也试着理性看待问题,避免过于比较和急躁。一步一步来,你会发现自己的情绪控制能力在逐渐提高。'}]}, {'conversation': [{'input': '我最近学业压力很大,感到焦虑和担忧,您能帮帮我吗?', 'output': '当然可以,我会尽我所能来帮助你。首先,你需要理解学业压力是常见的,大部分人都会遇到。你可以尝试制定一个合理的学习计划,分配好时间,避免拖延。另外,适当的运动和休息也是缓解压力的重要方法。'}, {'input': '嗯,我明白了。但是我还是会感到不快乐,您有什么建议吗?', 'output': '不快乐的感觉是很正常的,但是你可以尝试一些方法来调整自己的情绪。比如,你可以尝试一些放松的活动,如听音乐、阅读、绘画等。此外,与朋友、家人或者老师交流也是缓解压力的好方法。你还有什么其他的问题吗?'}, {'input': '我有时候会感到自己没有动力去学习,您能给我一些建议吗?', 'output': '当然可以。你可以尝试将学习分解成小目标,逐个攻克。此外,你也可以找到自己的学习动力源泉,可能是未来的职业发展、兴趣爱好或者是提高自己的知识水平。你还可以尝试一些奖励机制,比如每完成一个小目标就给自己一些小奖励。你还有其他问题吗?'}]}, {'conversation': [{'input': '医生,我经常感到头痛,不知道是为什么。', 'output': '我理解你的痛苦,头痛是很常见的症状。有时候它可能只是因为疲劳或压力过大。你能告诉我更多关于你的生活习惯和工作压力吗?'}, {'input': '我是一名程序员,每天都要长时间坐在电脑前工作。我感觉压力很大,因为我的工作要求很高,而且经常需要加班。', 'output': '明白了,长时间坐在电脑前和过度的压力都可能是你头痛的原因。首先,我建议你每隔一段时间就离开座位,做一些伸展运动。此外,你可以尝试一些放松技巧,比如深呼吸和冥想,以减轻压力。你还有什么问题吗?'}, {'input': '我的脖子也经常痛,是不是和头痛有关?', 'output': '是的,头痛和脖子痛经常同时出现。这可能是因为你的姿势不正确或者长时间保持同一姿势。我建议你尝试一些改善姿势的练习,比如瑜伽或普拉提。这些运动可以帮助你放松肌肉并改善姿势。你觉得这个建议可行吗?'}, {'input': '听起来不错,我会试试的。但是我还是很担心我的头痛会不会有更严重的问题。', 'output': '你的担忧是很正常的。如果你头痛的情况持续存在或者变得更严重,我建议你及时到医院进行检查。但是,从你目前的情况来看,我认为通过改善生活方式和适当的锻炼,你应该能够缓解头痛的症状。如果你有任何问题或者担忧,随时可以再来咨询我。'}]}, {'conversation': [{'input': '医生,我最近感到特别兴奋,晚上都睡不着觉,总是在想一些好事会发生在我身上。但这种兴奋的感觉让我感到有点不安,我担心我是不是有什么毛病。', 'output': '首先,不要过于担心。兴奋感是一种正常的情绪体验,但如果你感到不安或者影响到你的日常生活,就需要引起注意了。我想了解一下,这种兴奋感是突然出现的吗?还是有什么特别的事情发生后开始的?'}, {'input': '嗯,其实有一段时间了,大概几个月了吧。我感觉自从我换了工作之后,就开始有这种感觉了。新的工作让我感到充满挑战和机遇,每天都有很多新的事情发生,这让我感到很兴奋。', 'output': '听起来你对自己的新工作很满意,这是一个很好的事情。但是,如果你感到兴奋感已经影响到了你的日常生活,比如睡眠、工作等,就需要采取一些措施了。首先,你可以尝试一些放松的方法,比如深呼吸、瑜伽等,来缓解身体的紧张感。其次,你可以尝试规划一下每天的时间,给自己留出一些独处和休息的时间,以保持平衡和稳定。'}, {'input': '你说得对,我最近确实有点忙,没有好好照顾自己。我会尝试你说的方法,看看是否能够缓解这种兴奋感。另外,我还想问一下,有没有什么药物可以帮助缓解这种情绪?', 'output': '药物并不是首选的治疗方式,特别是对于你这种由于兴奋感引起的情绪问题。我建议你先尝试一些非药物的方法来缓解情绪,比如运动、放松训练等。如果这些方法无法缓解你的症状,或者你的症状已经严重影响到你的日常生活,我们再考虑药物治疗。但即使需要药物治疗,也需要配合心理治疗和自我调节来达到最佳的治疗效果。'}, {'input': '明白了,我会先尝试你建议的方法来缓解情绪的。谢谢你医生。', 'output': '不客气。如果你在实施这些方法的过程中遇到了任何问题或困难,随时可以回来找我。祝你早日康复。'}]}, {'conversation': [{'input': '医生,我最近总是梦见自己回到了高考那天,那种焦虑和紧张感让我每次醒来都感到无比疲惫。我甚至开始怀疑自己是否能够克服这个问题。', 'output': '高考确实是一个压力巨大的时期,但你一定要相信自己能够克服这个困难。首先,我们要弄清楚这个梦境对你的意义是什么,它是为什么会引起你的焦虑。我们可以一起分析这个梦境,看看有没有什么更深层次的心理原因。'}, {'input': '我想可能是因为我觉得自己现在的生活并不如意,总是觉得如果当时高考考得好一些,现在的生活也许会不一样。', 'output': '这是一种常见的心理现象,很多人都会因为过去的事情而感到遗憾。但是,过去的事情已经无法改变,我们需要关注的是现在和未来。你可以尝试一些放松的方法,比如深呼吸、冥想等,来减轻焦虑感。同时,你也可以尝试重新审视自己的生活,找到一些新的目标和方向,让自己更有动力去追求更好的生活。'}, {'input': '我明白了,医生。我会尝试着去放松自己,并且重新审视自己的生活。', 'output': '很好,我相信你一定能够克服这个困难。如果你需要帮助或者建议,随时都可以来找我。'}]}]\n" + ] + } + ], + "source": [ + "with open('conversation.json', 'r', encoding='utf-8') as file: \n", + " test = json.load(file) \n", + " \n", + "# 现在,变量data包含了从JSON文件中加载的数据 \n", + "print(test)" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": { + "execution": { + "iopub.execute_input": "2024-01-12T09:11:46.372625Z", + "iopub.status.busy": "2024-01-12T09:11:46.372103Z", + "iopub.status.idle": "2024-01-12T09:11:46.405837Z", + "shell.execute_reply": "2024-01-12T09:11:46.404964Z", + "shell.execute_reply.started": "2024-01-12T09:11:46.372594Z" + }, + "scrolled": true, + "tags": [] + }, + "outputs": [], + "source": [ + "import os\n", + "import json\n", + "import asyncio\n", + "import erniebot\n", + "from erniebot_agent.chat_models import ERNIEBot\n", + "from erniebot_agent.memory import HumanMessage, AIMessage, SystemMessage, FunctionMessage" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": { + "execution": { + "iopub.execute_input": "2024-01-12T09:12:27.671270Z", + "iopub.status.busy": "2024-01-12T09:12:27.670741Z", + "iopub.status.idle": "2024-01-12T09:12:29.038233Z", + "shell.execute_reply": "2024-01-12T09:12:29.037324Z", + "shell.execute_reply.started": "2024-01-12T09:12:27.671237Z" + }, + "scrolled": true + }, + "outputs": [], + "source": [ + "erniebot.api_type = \"aistudio\"\n", + "erniebot.access_token = \"69b42a960b44631aa0752f4410723c42fc88adfe\"\n", + "messages = [\n", + " {\"role\": \"user\", \"content\": \"我在深圳,周末可以去哪里玩\"},\n", + " {\"role\": \"assistant\", \"content\": \"深圳有许多著名的景点,以下是三个推荐景点:1. 深圳世界之窗,2. 深圳欢乐谷,3. 深圳东部华侨城。\"},\n", + " {\"role\": \"user\", \"content\": \"从你推荐的三个景点中,选出最值得去的景点是什么,直接给出景点名字即可\"},\n", + "]\n", + "response = erniebot.ChatCompletion.create(model=\"ernie-3.5\", messages=messages)\n", + "\n", + "print(response.get_result())" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": { + "execution": { + "iopub.execute_input": "2024-01-12T09:18:10.194671Z", + "iopub.status.busy": "2024-01-12T09:18:10.194036Z", + "iopub.status.idle": "2024-01-12T09:18:10.199645Z", + "shell.execute_reply": "2024-01-12T09:18:10.199033Z", + "shell.execute_reply.started": "2024-01-12T09:18:10.194642Z" + }, + "scrolled": true + }, + "outputs": [], + "source": [ + "import os \n", + " \n", + "# 设置一个新的环境变量 \n", + "os.environ['AISTUDIO_ACCESS_TOKEN'] = '69b42a960b44631aa0752f4410723c42fc88adfe' \n", + " \n", + "# 读取一个环境变量 \n", + "print(os.environ.get('AISTUDIO_ACCESS_TOKEN')) # 输出: my_value" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": { + "execution": { + "iopub.execute_input": "2024-01-12T09:18:13.107541Z", + "iopub.status.busy": "2024-01-12T09:18:13.107048Z", + "iopub.status.idle": "2024-01-12T09:18:14.057161Z", + "shell.execute_reply": "2024-01-12T09:18:14.056173Z", + "shell.execute_reply.started": "2024-01-12T09:18:13.107511Z" + }, + "scrolled": true, + "tags": [] + }, + "outputs": [], + "source": [ + "model = ERNIEBot(model=\"ernie-3.5\")\n", + "# 使用Message模块\n", + "messages = [\n", + " HumanMessage(\"我在深圳,周末可以去哪里玩\"),\n", + " AIMessage(\"深圳有许多著名的景点,以下是三个推荐景点:1. 深圳世界之窗,2. 深圳欢乐谷,3. 深圳东部华侨城。\"),\n", + " HumanMessage(\"从你推荐的三个景点中,选出最值得去的景点是什么,直接给出景点名字即可\"),\n", + "]\n", + "ai_message = await model.chat(messages=messages)\n", + "print(ai_message.content)" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "```json\n", + "{\"chats\": [{\"time\": \"11:02:45\", \"value\": \"这样的议论是针对谁呢?\", \"sender\": \"audience\", \"type\": \"textMessage\", \"label\": {\"question\": true, \"knowledge\": false, \"negative\": false}}, {\"time\": \"11:08:38\", \"sender\": \"audience\", \"type\": \"textMessage\", \"value\": \"我也是一个从小被这样训到大的女生哦,总会被指责缺心少肺、没心眼儿、没眼力见儿、看不出来眉眼高低等等。不过在我成长一段时间之后,发现这件事情其实很简单,也没有什么大的问题。如果你愿意的话,可以找我聊聊,倾诉一下你遇到的事情,希望能够帮到你。我是树洞小太阳,欢迎你来找我玩❤\", \"label\": {\"question\": false, \"knowledge\": false, \"negative\": false}}, {\"time\": \"11:15:17\", \"sender\": \"audience\", \"type\": \"textMessage\", \"value\": \"好惨\", \"label\": {\"question\": false, \"knowledge\": false, \"negative\": false}}, {\"time\": \"11:15:35\", \"sender\": \"audience\", \"type\": \"textMessage\", \"value\": \"原生家庭也这么对你吗\", \"label\": {\"question\": false, \"knowledge\": false, \"negative\": false}}], \"owner\": \"匿名\", \"title\": \"女 听过别人最多的议论就是干啥啥不行不长心眼没有脑子\", \"md5\": \"2f63d374c071043d9e1968aefa62ffb7\"}\n", + "{\"chats\": [{\"time\": \"23:37:08\", \"value\": \"在这里想解决什么问题呢?\", \"sender\": \"audience\", \"type\": \"textMessage\", \"label\": {\"question\": false, \"knowledge\": false, \"negative\": false}}, {\"time\": \"23:38:22\", \"sender\": \"audience\", \"type\": \"textMessage\", \"value\": \"诶嘿嘿嘿\", \"label\": {\"question\": false, \"knowledge\": false, \"negative\": false}}, {\"time\": \"23:39:04\", \"sender\": \"owner\", \"type\": \"textMessage\", \"value\": \"吼吼\", \"label\": {\"s3\": \"\", \"attitude\": \"\"}}, {\"time\": \"23:46:04\", \"sender\": \"audience\", \"type\": \"textMessage\", \"value\": \"还在追海贼\", \"label\": {\"question\": false, \"knowledge\": false, \"negative\": false}}, {\"time\": \"23:47:14\", \"sender\": \"audience\", \"type\": \"textMessage\", \"value\": \"还在追JOJO……_§:з)))」∠)_\", \"label\": {\"question\": false, \"knowledge\": false, \"negative\": false}}, {\"time\": \"23:49:44\", \"sender\": \"owner\", \"type\": \"textMessage\", \"value\": \"推荐推荐\", \"label\": {\"s3\": \"\", \"attitude\": \"\"}}, {\"time\": \"23:51:33\", \"sender\": \"audience\", \"type\": \"textMessage\", \"value\": \"一休哥\", \"label\": {\"question\": false, \"knowledge\": false, \"negative\": false}}], \"owner\": \"匿名\", \"title\": \"女 ─=≡Σ((( つ•̀Ω•́)つ 有喜欢看动漫的吗?\", \"md5\": \"86cab1d9193139608772a2924c1f8b51\"}\n", + "{\"chats\": [{\"time\": \"22:27:27\", \"sender\": \"audience\", \"type\": \"textMessage\", \"value\": \"我\", \"label\": {\"question\": false, \"knowledge\": false, \"negative\": false}}, {\"time\": \"22:27:31\", \"sender\": \"audience\", \"type\": \"textMessage\", \"value\": \"你\", \"label\": {\"question\": false, \"knowledge\": false, \"negative\": false}}, {\"time\": \"22:27:45\", \"sender\": \"audience\", \"type\": \"textMessage\", \"value\": \"人生?\", \"label\": {\"question\": false, \"knowledge\": false, \"negative\": false}}, {\"time\": \"22:28:45\", \"sender\": \"audience\", \"type\": \"textMessage\", \"value\": \"我有故事\", \"label\": {\"question\": false, \"knowledge\": false, \"negative\": false}}, {\"time\": \"22:28:50\", \"sender\": \"audience\", \"type\": \"textMessage\", \"value\": \"你有没有酒\", \"label\": {\"question\": false, \"knowledge\": false, \"negative\": false}}, {\"time\": \"22:29:06\", \"sender\": \"audience\", \"type\": \"textMessage\", \"value\": \"我该说啥\", \"label\": {\"question\": false, \"knowledge\": false, \"negative\": false}}, {\"time\": \"22:30:21\", \"sender\": \"audience\", \"type\": \"textMessage\", \"value\": \"有啊,我只会聊一些健康的\", \"label\": {\"question\": false, \"knowledge\": false, \"negative\": false}}, {\"time\": \"22:33:51\", \"sender\": \"audience\", \"type\": \"textMessage\", \"value\": \"可以啊\", \"label\": {\"question\": false, \"knowledge\": false, \"negative\": false}}, {\"time\": \"22:46:12\", \"sender\": \"audience\", \"type\": \"textMessage\", \"value\": \"聊\", \"label\": {\"question\": false, \"knowledge\": false, \"negative\": false}}], \"owner\": \"匿名\", \"title\": \"女 有男的么,聊会天。。。。。。。。。。。。\", \"md5\": \"3c585fb24dfbdce0a32e30a107fe2945\"}\n", + "{\"chats\": [{\"time\": \"23:04:39\", \"sender\": \"owner\", \"type\": \"textMessage\", \"value\": \"帖子都不会发\", \"label\": {\"s3\": \"\", \"attitude\": \"\"}}, {\"time\": \"23:04:42\", \"sender\": \"owner\", \"type\": \"textMessage\", \"value\": \"不会玩\", \"label\": {\"s3\": \"\", \"attitude\": \"\"}}, {\"time\": \"23:04:55\", \"sender\": \"owner\", \"type\": \"textMessage\", \"value\": \"恶劣心境障碍\", \"label\": {\"s3\": \"\", \"attitude\": \"\"}}, {\"time\": \"23:05:07\", \"value\": \"通过描述了解到精神不够集中,在做什么的时候感到精力不够集中呢?\", \"sender\": \"audience\", \"type\": \"textMessage\", \"label\": {\"question\": false, \"knowledge\": false, \"negative\": false}}, {\"time\": \"23:06:40\", \"sender\": \"owner\", \"type\": \"textMessage\", \"value\": \"我吃了饭刚醒\", \"label\": {\"s3\": \"\", \"attitude\": \"\"}}, {\"time\": \"23:07:00\", \"sender\": \"owner\", \"type\": \"textMessage\", \"value\": \"饿劣心境障碍\", \"label\": {\"s3\": \"\", \"attitude\": \"\"}}], \"owner\": \"匿名\", \"title\": \"男 精力不集中,,,,,,,,,,,,,,,\", \"md5\": \"bf6af74b5c12d5da0957dcdf04cf2040\"}\n", + "{\"chats\": [{\"time\": \"22:54:43\", \"sender\": \"audience\", \"type\": \"textMessage\", \"value\": \"聊什么\", \"label\": {\"question\": false, \"knowledge\": false, \"negative\": false}}, {\"time\": \"22:58:42\", \"sender\": \"audience\", \"type\": \"textMessage\", \"value\": \"说吧\", \"label\": {\"question\": false, \"knowledge\": false, \"negative\": false}}, {\"time\": \"23:05:12\", \"sender\": \"audience\", \"type\": \"textMessage\", \"value\": \"来啊\", \"label\": {\"question\": false, \"knowledge\": false, \"negative\": false}}, {\"time\": \"23:05:45\", \"sender\": \"audience\", \"type\": \"textMessage\", \"value\": \"想聊啥都行,反正我也郁闷\", \"label\": {\"question\": false, \"knowledge\": false, \"negative\": false}}, {\"time\": \"23:10:47\", \"sender\": \"audience\", \"type\": \"textMessage\", \"value\": \"想聊什么?\", \"label\": {\"question\": false, \"knowledge\": false, \"negative\": false}}, {\"time\": \"23:12:36\", \"sender\": \"audience\", \"type\": \"textMessage\", \"value\": \"聊什么呢\", \"label\": {\"question\": false, \"knowledge\": false, \"negative\": false}}, {\"time\": \"14:41:33\", \"sender\": \"audience\", \"type\": \"textMessage\", \"value\": \"聊什么\", \"label\": {\"question\": false, \"knowledge\": false, \"negative\": false}}, {\"time\": \"14:41:38\", \"sender\": \"audience\", \"type\": \"textMessage\", \"value\": \"有QQ嘛\", \"label\": {\"question\": false, \"knowledge\": false, \"negative\": false}}], \"owner\": \"匿名\", \"title\": \"女 有人在吗,聊会。。。。。。。。。。。。。\", \"md5\": \"781bc1eeeb8f247d1b562815fe5458e2\"}\n", + "{\"chats\": [{\"time\": \"01:17:10\", \"value\": \"刚刚看完您所有的描述,可以适度,比如每次的上网时间有个合理的规划\", \"sender\": \"audience\", \"type\": \"textMessage\", \"label\": {\"question\": false, \"knowledge\": false, \"negative\": false}}, {\"time\": \"01:18:01\", \"value\": \"经常使用电子设备会对眼睛有一定的影响,可以尝试隔一段时间做眼保健操,或者远眺,看一些绿色的植物,有助于缓解眼睛的疲劳。\", \"sender\": \"audience\", \"type\": \"textMessage\", \"label\": {\"question\": false, \"knowledge\": false, \"negative\": false}}, {\"time\": \"01:19:42\", \"sender\": \"owner\", \"type\": \"textMessage\", \"value\": \"肩膀颈子腰\", \"label\": {\"s3\": \"\", \"attitude\": \"\"}}, {\"time\": \"01:20:19\", \"sender\": \"owner\", \"type\": \"textMessage\", \"value\": \"我以前就喜欢到处跑\", \"label\": {\"s3\": \"\", \"attitude\": \"\"}}, {\"time\": \"01:20:56\", \"sender\": \"owner\", \"type\": \"textMessage\", \"value\": \"好像是无意识\", \"label\": {\"s3\": \"\", \"attitude\": \"\"}}, {\"time\": \"01:21:49\", \"sender\": \"owner\", \"type\": \"textMessage\", \"value\": \"逻辑好\", \"label\": {\"s3\": \"\", \"attitude\": \"\"}}, {\"time\": \"01:21:57\", \"sender\": \"owner\", \"type\": \"textMessage\", \"value\": \"有啥好处\", \"label\": {\"s3\": \"\", \"attitude\": \"\"}}, {\"time\": \"01:22:57\", \"sender\": \"owner\", \"type\": \"textMessage\", \"value\": \"我以前有个电子产品被摔了\", \"label\": {\"s3\": \"\", \"attitude\": \"\"}}, {\"time\": \"01:23:07\", \"sender\": \"owner\", \"type\": \"textMessage\", \"value\": \"很痛心\", \"label\": {\"s3\": \"\", \"attitude\": \"\"}}, {\"time\": \"01:25:20\", \"sender\": \"owner\", \"type\": \"textMessage\", \"value\": \"学会爱自己\", \"label\": {\"s3\": \"\", \"attitude\": \"\"}}], \"owner\": \"匿名\", \"title\": \"男 刚刚学会互联网,希望眼睛还好,,,,,,\", \"md5\": \"9ba8d707f3af272610dc8d6dd722af0d\"}\n", + "{\"chats\": [{\"time\": \"21:52:30\", \"value\": \"刚刚看完您所有的描述,的确是很经典的解读。\", \"sender\": \"audience\", \"type\": \"textMessage\", \"label\": {\"question\": false, \"knowledge\": false, \"negative\": false}}, {\"time\": \"21:56:41\", \"value\": \"感谢你与大家的分享,这次疫情让人们明白了很多道理,也明白了生活中最重要的是什么。\", \"sender\": \"audience\", \"type\": \"textMessage\", \"label\": {\"question\": false, \"knowledge\": false, \"negative\": false}}], \"owner\": \"匿名\", \"title\": \"女 新冠肺炎病毒让人明白的人生真理。有图解释\", \"md5\": \"a03e6088ac57f14dc389237191539156\"}\n", + "{\"chats\": [{\"time\": \"18:34:48\", \"value\": \"刚刚看完您所有的描述,很好!做到与时俱进,又会了解诸多规则!\\n\\n这样持之以恒,定会成为自己照顾成为的自己!加油!\", \"sender\": \"audience\", \"type\": \"textMessage\", \"label\": {\"question\": false, \"knowledge\": false, \"negative\": false}}, {\"time\": \"18:35:38\", \"sender\": \"owner\", \"type\": \"textMessage\", \"value\": \"可以和人好好交流\", \"label\": {\"s3\": \"\", \"attitude\": \"\"}}, {\"time\": \"18:35:45\", \"value\": \"无规矩不成方圆,懂得遵守规则是做事的原则,学习互联网紧跟科技的潮流而不落伍是积极的态度与精神,做的很好。\", \"sender\": \"audience\", \"type\": \"textMessage\", \"label\": {\"question\": false, \"knowledge\": false, \"negative\": false}}, {\"time\": \"18:37:19\", \"sender\": \"owner\", \"type\": \"textMessage\", \"value\": \"自我介绍\", \"label\": {\"s3\": \"\", \"attitude\": \"\"}}, {\"time\": \"18:39:53\", \"value\": \"学无止境,活到老学到老,才可以结识更多志同道合的朋友。\", \"sender\": \"audience\", \"type\": \"textMessage\", \"label\": {\"question\": false, \"knowledge\": false, \"negative\": false}}, {\"time\": \"19:22:34\", \"sender\": \"owner\", \"type\": \"textMessage\", \"value\": \"我是文盲\", \"label\": {\"s3\": \"\", \"attitude\": \"\"}}], \"owner\": \"匿名\", \"title\": \"男 既学习互联网又遵守规则又不落伍,,,,,\", \"md5\": \"b48369a09d9579225c40ff064062d708\"}\n", + "{\"chats\": [{\"time\": \"14:53:47\", \"value\": \"欢迎购买心理测评为您解读\", \"sender\": \"audience\", \"type\": \"textMessage\", \"label\": {\"question\": false, \"knowledge\": false, \"negative\": false}}], \"title\": \"女 抑郁症单子大概解读,18岁,看不懂那个单子\", \"md5\": \"273c929e71be1c1bee05bea02dee7e7c\", \"owner\": \"匿名\"}\n", + "{\"chats\": [{\"time\": \"17:47:05\", \"sender\": \"audience\", \"type\": \"textMessage\", \"value\": \"你是因为什么事情吗\", \"label\": {\"question\": true, \"knowledge\": false, \"negative\": false}}, {\"time\": \"17:47:17\", \"value\": \"从你的描述中,了解到因失眠备受困扰,你目前的状态持续多长时间了?\\n通常来讲导致失眠的因素有很多种:比如躯体因素、环境因素、化学因素以及精神因素,通过以上所诉,来分析一下你的失眠是属于哪一种?\", \"sender\": \"audience\", \"type\": \"textMessage\", \"label\": {\"question\": true, \"knowledge\": true, \"negative\": false}}, {\"time\": \"17:47:22\", \"value\": \"刚刚看完您所有的描述,\\n其实失眠通常有两种原因所致:生理因素和心理因素。\\n生理因素导致的失眠是指由躯体不适、疾病或创伤的疼痛而导致的失眠;\\n心理因素导致的失眠则是指由心理困惑导致的失眠,如为一些困惑自己的事情烦恼、担心、焦虑。还有失眠的原因是因为担心失眠,对夜晚产生恐惧,甚至对床产生焦虑。\\n请您通过上面的内容分析自己的失眠可能是由哪种原因导致的?\\n\\n(1)\\t\\t\\t\\t\\t\\t\\t用森田疗法治疗心理因素导致的失眠。要对失眠本身有正确的认识,失眠时不去克服,以平静的心态对待失眠,接受失眠,甚至享受失眠,不去想它,不去管它,不把失眠当问题。\\n\\n(2)\\t\\t\\t\\t\\t\\t\\t要知道睡眠的规律。睡眠是自然的生理现象,有它自己的一套规律,睡觉时躺在床上闭上眼睛就行了,再睡不着也可以听听音乐,看看书。\\n\\n(3)\\t\\t\\t\\t\\t\\t\\t要知道睡眠时间的长短到底对人有什么样的影响。很多时候担心睡不着的重要因素是害怕对明天的工作、学习和对自己的身体健康产生不良影响。经过科学的研究,一个成年人平均每天需要5个小时睡眠时间就够了。这个世界上还从没有哪个人是因为睡眠而死的。\\n\\n(4)\\t\\t\\t\\t\\t\\t\\t睡眠最好要有一定的时间规律,工作时工作,该学习时学习,晚上该睡觉时睡觉。\", \"sender\": \"audience\", \"type\": \"textMessage\", \"label\": {\"question\": true, \"knowledge\": true, \"negative\": false}}, {\"time\": \"17:48:42\", \"sender\": \"owner\", \"type\": \"textMessage\", \"value\": \"我也不知道自己怎么回事儿整宿整宿的睡不着\", \"label\": {\"s3\": \"\", \"attitude\": \"\"}}, {\"time\": \"17:50:13\", \"sender\": \"audience\", \"type\": \"textMessage\", \"value\": \"你睡觉的时候有没有在想什么\", \"label\": {\"question\": true, \"knowledge\": false, \"negative\": false}}, {\"time\": \"17:50:58\", \"sender\": \"owner\", \"type\": \"textMessage\", \"value\": \"没有啊就是睡不着\", \"label\": {\"s3\": \"\", \"attitude\": \"\"}}, {\"time\": \"17:51:13\", \"sender\": \"audience\", \"type\": \"textMessage\", \"value\": \"你没有胡思乱想为什么睡不着\", \"label\": {\"question\": true, \"knowledge\": false, \"negative\": false}}, {\"time\": \"17:51:16\", \"sender\": \"audience\", \"type\": \"textMessage\", \"value\": \"多大了\", \"label\": {\"question\": false, \"knowledge\": false, \"negative\": false}}, {\"time\": \"17:51:29\", \"sender\": \"audience\", \"type\": \"textMessage\", \"value\": \"最近有没有遇到什么烦心事\", \"label\": {\"question\": true, \"knowledge\": false, \"negative\": false}}, {\"time\": \"17:55:41\", \"value\": \"整宿睡不着如果持续时间过长建议看精神科。如果只是短时间失眠要考虑焦虑引起。\", \"sender\": \"audience\", \"type\": \"textMessage\", \"label\": {\"question\": false, \"knowledge\": true, \"negative\": false}}], \"owner\": \"匿名\", \"title\": \"女 我整宿整宿睡不着经常头疼不知道自己怎么了\", \"md5\": \"e2c93b6f8f80dd69988de68d7b1460d4\"}\n", + "{\"chats\": [{\"time\": \"00:30:52\", \"sender\": \"owner\", \"type\": \"textMessage\", \"value\": \"对不起,我还没有支付的能力,但是其实想问您这个问题\", \"label\": {\"s3\": \"\", \"attitude\": \"\"}}, {\"time\": \"01:06:15\", \"value\": \"有抑郁倾向\", \"sender\": \"audience\", \"type\": \"textMessage\", \"label\": {\"question\": true, \"knowledge\": false, \"negative\": false}}, {\"time\": \"12:17:19\", \"sender\": \"owner\", \"type\": \"textMessage\", \"value\": \"老师那我应该怎么办?\", \"label\": {\"s3\": \"\", \"attitude\": \"p\"}}], \"owner\": \"匿名\", \"title\": \"男 没有抑郁症的特征,就是想死不知道为什么。\", \"md5\": \"68796c3ffabffac76ec9e8862d7d155e\"}\n", + "{\"chats\": [{\"time\": \"13:16:52\", \"sender\": \"owner\", \"type\": \"textMessage\", \"value\": \"怎样克服?\", \"label\": {\"s3\": \"\", \"attitude\": \"p\"}}], \"owner\": \"匿名\", \"title\": \"男 走路的时候,陌生人摸头发给我看,感到恐惧\", \"md5\": \"eca34bfead8a9725427e77728bef4516\"}\n", + "{\"chats\": [{\"time\": \"13:21:54\", \"value\": \"都是过去了\", \"sender\": \"audience\", \"type\": \"textMessage\", \"label\": {\"question\": false, \"knowledge\": true, \"negative\": false}}, {\"time\": \"13:22:22\", \"value\": \"没有过去,何来当下。人不可能爱人的头,不爱人的脚。\", \"sender\": \"audience\", \"type\": \"textMessage\", \"label\": {\"question\": false, \"knowledge\": true, \"negative\": false}}, {\"time\": \"13:26:19\", \"sender\": \"owner\", \"type\": \"textMessage\", \"value\": \"我知道,我想知道有什么办法可以让我慢慢接受\", \"label\": {\"s3\": \"\", \"attitude\": \"p\"}}, {\"time\": \"13:26:58\", \"sender\": \"owner\", \"type\": \"textMessage\", \"value\": \"她对我挺好\", \"label\": {\"s3\": \"\", \"attitude\": \"\"}}, {\"time\": \"13:28:08\", \"sender\": \"owner\", \"type\": \"textMessage\", \"value\": \"我不想辜负\", \"label\": {\"s3\": \"\", \"attitude\": \"\"}}, {\"time\": \"13:28:09\", \"value\": \"您都没有真正爱上她,只是贪恋她对您的好。\", \"sender\": \"audience\", \"type\": \"textMessage\", \"label\": {\"question\": false, \"knowledge\": false, \"negative\": false}}, {\"time\": \"13:29:25\", \"sender\": \"owner\", \"type\": \"textMessage\", \"value\": \"那请您帮帮我\", \"label\": {\"s3\": \"\", \"attitude\": \"p\"}}, {\"time\": \"13:29:42\", \"sender\": \"owner\", \"type\": \"textMessage\", \"value\": \"我真的不想失去她\", \"label\": {\"s3\": \"\", \"attitude\": \"\"}}, {\"time\": \"13:32:21\", \"value\": \"详情咨询,点我头像。\", \"sender\": \"audience\", \"type\": \"textMessage\", \"label\": {\"question\": false, \"knowledge\": false, \"negative\": false}}, {\"time\": \"16:29:45\", \"sender\": \"audience\", \"type\": \"textMessage\", \"value\": \"不用在意别人的出去,谁没干过错事啊。她现在对你好,你也不用想太多,其实就是一件小事,想多了,反而让自己心情不好。\", \"label\": {\"question\": false, \"knowledge\": true, \"negative\": false}}, {\"time\": \"22:39:59\", \"sender\": \"audience\", \"type\": \"textMessage\", \"value\": \"为什么会分手?\", \"label\": {\"question\": true, \"knowledge\": false, \"negative\": false}}, {\"time\": \"22:40:39\", \"sender\": \"audience\", \"type\": \"textMessage\", \"value\": \"找她的缺点\", \"label\": {\"question\": false, \"knowledge\": false, \"negative\": true}}], \"owner\": \"匿名\", \"title\": \"放不下女朋友的过去,又不想放手,我该怎么办\", \"md5\": \"450bb6b1dd27f488339a2138e63016ac\"}\n", + "{\"chats\": [{\"time\": \"21:05:30\", \"sender\": \"audience\", \"type\": \"textMessage\", \"value\": \"闹矛盾了\", \"label\": {\"question\": true, \"knowledge\": false, \"negative\": false}}], \"owner\": \"匿名\", \"title\": \"女 你别装本来在乎了,我眼里的难过快溢出来了\", \"md5\": \"0d9091c5a43883f3fbb9ab6f5b6c8151\"}\n", + "{\"chats\": [{\"time\": \"05:21:26\", \"value\": \"多长时间了,亲\", \"sender\": \"audience\", \"type\": \"textMessage\", \"label\": {\"question\": true, \"knowledge\": false, \"negative\": false}}, {\"time\": \"05:24:04\", \"value\": \"针对某个人吗?\", \"sender\": \"audience\", \"type\": \"textMessage\", \"label\": {\"question\": true, \"knowledge\": false, \"negative\": false}}, {\"time\": \"05:27:42\", \"value\": \"你和老婆的感情怎样呢?\", \"sender\": \"audience\", \"type\": \"textMessage\", \"label\": {\"question\": true, \"knowledge\": false, \"negative\": false}}, {\"time\": \"05:35:00\", \"sender\": \"audience\", \"type\": \"textMessage\", \"value\": \"有变颜色的风险了,不能压,要改变自己…\", \"label\": {\"question\": false, \"knowledge\": false, \"negative\": false}}, {\"time\": \"06:38:25\", \"value\": \"是网络聊天还是?\", \"sender\": \"audience\", \"type\": \"textMessage\", \"label\": {\"question\": true, \"knowledge\": false, \"negative\": false}}, {\"time\": \"07:16:37\", \"value\": \"你和你妻子感情如何?结婚多久了呢?你们有孩子了吗?可点我的头像,加关注,图文咨询或直接电话我,祝好!\", \"sender\": \"audience\", \"type\": \"textMessage\", \"label\": {\"question\": false, \"knowledge\": false, \"negative\": false}}, {\"time\": \"08:34:45\", \"value\": \"可以直接电话我。我能帮你洞察她的心理轨迹\", \"sender\": \"audience\", \"type\": \"textMessage\", \"label\": {\"question\": false, \"knowledge\": false, \"negative\": false}}, {\"time\": \"09:12:04\", \"value\": \"你们感情如何,这种情况多长时间了\", \"sender\": \"audience\", \"type\": \"textMessage\", \"label\": {\"question\": true, \"knowledge\": false, \"negative\": false}}, {\"time\": \"09:13:39\", \"value\": \"这种状况确实不好,该进行适度的约束。\", \"sender\": \"audience\", \"type\": \"textMessage\", \"label\": {\"question\": false, \"knowledge\": true, \"negative\": false}}, {\"time\": \"09:14:07\", \"value\": \"同时也需要反思你们的感情和相处。我们自己有哪里做的不到位的地方。\", \"sender\": \"audience\", \"type\": \"textMessage\", \"label\": {\"question\": false, \"knowledge\": true, \"negative\": false}}], \"owner\": \"匿名\", \"title\": \"老婆与异性经常聊天是否正常?聊天语气很轻浮?\", \"md5\": \"1af13ebf8fa3fa01f2dd445473b6b75d\"}\n", + "{\"chats\": [{\"time\": \"14:50:13\", \"value\": \"可以具体说说[微笑]\", \"sender\": \"audience\", \"type\": \"textMessage\", \"label\": {\"question\": false, \"knowledge\": false, \"negative\": false}}, {\"time\": \"14:52:52\", \"value\": \"那么你想通过咨询获得什么样的帮助呢?\", \"sender\": \"audience\", \"type\": \"textMessage\", \"label\": {\"question\": false, \"knowledge\": false, \"negative\": false}}, {\"time\": \"15:02:13\", \"value\": \"现在做的不是你所喜欢的,这让你很烦,是吗?能说说你想做什么吗?\", \"sender\": \"audience\", \"type\": \"textMessage\", \"label\": {\"question\": false, \"knowledge\": false, \"negative\": false}}], \"title\": \"女 想做的做不成,现在做的没意思饭啊做什么呢\", \"md5\": \"ec8c3f00233d2fedd9543c4e5c4aa3d2\", \"owner\": \"匿名\"}\n", + "{\"chats\": [{\"time\": \"22:58:08\", \"value\": \"刚刚看完您有的描述,最好及时去咨询精神科医生\", \"sender\": \"audience\", \"type\": \"textMessage\", \"label\": {\"question\": false, \"knowledge\": false, \"negative\": false}}, {\"time\": \"22:58:12\", \"sender\": \"audience\", \"type\": \"textMessage\", \"value\": \"什么情况\", \"label\": {\"question\": false, \"knowledge\": false, \"negative\": false}}, {\"time\": \"22:58:31\", \"sender\": \"audience\", \"type\": \"textMessage\", \"value\": \"不知道诶\", \"label\": {\"question\": false, \"knowledge\": false, \"negative\": false}}, {\"time\": \"22:58:42\", \"sender\": \"audience\", \"type\": \"textMessage\", \"value\": \"还是不要吧\", \"label\": {\"question\": false, \"knowledge\": false, \"negative\": false}}], \"owner\": \"匿名\", \"title\": \"女 舍曲林突然加大了药量会死么,大概加了3,4倍\", \"md5\": \"6e00cfea39e07333bf848e4655379fc8\"}\n", + "{\"chats\": [{\"time\": \"11:16:00\", \"value\": \"请问发生了什么事?\", \"sender\": \"audience\", \"type\": \"textMessage\", \"label\": {\"question\": true, \"knowledge\": false, \"negative\": false}}, {\"time\": \"11:24:49\", \"value\": \"相处多久了?一直让你感觉很失望吗?\", \"sender\": \"audience\", \"type\": \"textMessage\", \"label\": {\"question\": true, \"knowledge\": false, \"negative\": false}}, {\"time\": \"11:30:45\", \"value\": \"具体怎样的呢?\", \"sender\": \"audience\", \"type\": \"textMessage\", \"label\": {\"question\": true, \"knowledge\": false, \"negative\": false}}, {\"time\": \"11:36:08\", \"value\": \"你幸福快乐吗?如果两个人都不幸福快乐,走不远的。\", \"sender\": \"audience\", \"type\": \"textMessage\", \"label\": {\"question\": false, \"knowledge\": true, \"negative\": false}}, {\"time\": \"11:51:08\", \"value\": \"一个人的幸福和快乐\n", + "\n", + "```\n" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": { + "scrolled": true + }, + "outputs": [], + "source": [] + } + ], + "metadata": { + "kernelspec": { + "display_name": "erniebot", + "language": "python", + "name": "python3" + }, + "language_info": { + "codemirror_mode": { + "name": "ipython", + "version": 3 + }, + "file_extension": ".py", + "mimetype": "text/x-python", + "name": "python", + "nbconvert_exporter": "python", + "pygments_lexer": "ipython3", + "version": "3.11.5" + } + }, + "nbformat": 4, + "nbformat_minor": 4 +} diff --git a/generate_data/qwen_gen_data.py b/generate_data/qwen_gen_data.py new file mode 100644 index 0000000..ebc38c2 --- /dev/null +++ b/generate_data/qwen_gen_data.py @@ -0,0 +1,104 @@ +import json +import random +import argparse +import yaml +import re + +from tqdm import tqdm + +with open('config.yml', 'r', encoding='utf-8') as f: + configs = yaml.load(f.read(), Loader=yaml.FullLoader) + +def qwen_api(data, emo): + import dashscope + from http import HTTPStatus + + dashscope.api_key = configs['dashscope_api_key'] + prompt = f'''你是一个研究过无数具有心理健康问题的病人与心理健康医生对话的专家,请你构造一些符合实际情况的具有心理健 + 康问题的病人和心理健康医生的连续的多轮对话记录。要求病人的问题属于{data}场景,具有{emo}情感,医生的回复尽可能包含心理辅导知识,并且能够一步步诱导病人说出自己的问题进而提供解决问题的可行方案。注意,构造的数据必须以医生的陈述为结束语,请只返回完整的对话内容。请以如下格式返回生成的数据: + 病人:病人的咨询或陈述 + 医生:医生的安抚和建议 + ''' + response = dashscope.Generation.call( + model='qwen-max', + prompt=prompt, + history=[], + ) + + if response.status_code == HTTPStatus.OK: + result = response.output.text + print(result) + else: + result = 'ERROR' + return result + + +def save_jsonl(data_lis, file_path): + import json + + # 将字典列表写入文件,每一行一个字典 + with open(file_path, 'at', encoding='utf-8') as file: + for item in data_lis: + json_string = json.dumps(item, ensure_ascii=False) + '\n' + file.write(json_string) + + +if __name__ == '__main__': + idx = 0 + parser = argparse.ArgumentParser(description='数据生成参数') + + parser.add_argument('--data', type=str, help='生活场景') + + # 解析命令行参数 + args = parser.parse_args() + + emotions_lis = configs['emotions_list'] + areas_of_life = configs['areas_of_life'] + + conversation_lis = [] + for i in tqdm(range(100)): + one_conversation = { + "conversation": [] + } + + dia_tuple = [] + emo = random.choice(emotions_lis) + res = qwen_api(data=args.data, emo=emo) + print(res) + + # 一次会话 + doctor_pattern = r'医生:(.*?)(病人:|$)' + + doctor_matches = re.findall(doctor_pattern, res, re.DOTALL) + doctor_conversations = [match[0] for match in doctor_matches] + + patient_pattern = r'病人:(.*?)医生:' + patient_matches = re.findall(patient_pattern, res, re.DOTALL) + patient_conversations = [match for match in patient_matches] + + for doc, pat in zip(doctor_conversations, patient_conversations): + if len(one_conversation['conversation']) == 0: + one_conversation['conversation'].append( + { + "system": "现在你是一个心理专家,我有一些心理问题,请你用专业的知识帮我解决。", + "input": pat, + "output": doc + }, + ) + + else: + one_conversation['conversation'].append( + { + "input": pat, + "output": doc + }, + ) + conversation_lis.append(one_conversation) + + idx += 1 + + # 每生成10条数据存储一次 + if (idx % 10 == 0): + path = f'./{args.data}.jsonl' + save_jsonl(data_lis=conversation_lis, file_path=path) + conversation_lis = [] # 清空 diff --git a/generate_data/requirements.txt b/generate_data/requirements.txt new file mode 100644 index 0000000..a980046 --- /dev/null +++ b/generate_data/requirements.txt @@ -0,0 +1,4 @@ +erniebot #文心一言 +dashscope # 通义千问 +zhipuai # 智浦 +websocket #调用星火大模型的时候会使用 \ No newline at end of file diff --git a/generate_data/run_qwen.bash b/generate_data/run_qwen.bash new file mode 100644 index 0000000..cf07df9 --- /dev/null +++ b/generate_data/run_qwen.bash @@ -0,0 +1,27 @@ +#!/bin/bash + +# 定义生活领域的列表 +areas_of_life=( + "工作" + "学业" + "生活" + "身体" + "家人" + "朋友" + "社交" + "恋爱" + "就业" + "责任" + "爱好" + "环境" + "隐私" + "安全" + "梦想" + "自由" +) + +# 使用for循环遍历数组 +for area in "${areas_of_life[@]}"; do + echo "当前生活领域: $area" + python qwen_gen_data.py --data $area +done diff --git a/generate_data/tutorial.md b/generate_data/tutorial.md new file mode 100644 index 0000000..3d48013 --- /dev/null +++ b/generate_data/tutorial.md @@ -0,0 +1,94 @@ +# EMO 心理大模型 微调数据生成教程 + +**一、目标与背景** + + 为了使我们的心理大模型有更好的表达效果,我们必须要有高质量的数据集。为了达到这一目标,我们决定利用四种强大的人工智能大模型:文心一言、通义千问、讯飞星火和智浦AI来生成对话数据。此外,我们还将增强数据集的认知深度,通过加入少量自我认知数据集来提高模型的泛化能力。 + +**二、数据集生成方法** + +1. **模型选择与数据准备** + + 选择文心一言、通义千问、讯飞星火和智浦这四种大语言模型,获取调用相应接口的API,并准备用于生成对话数据。 +2. **单轮与多轮对话数据生成** + + 利用这四种模型,我们生成了10000条单轮和多轮对话数据。在这一过程中,我们确保了数据的多样性、复杂性和有效性。 + + 因为心理活动往往是复杂的,为了保证数据的多样性。我们选择了16 * 28 共`448`个场景进行数据集生成,具体场景名称请参考config.yml中的 `emotions_list 和 areas_of_life`两个参数的配置。 + +3. **自我认知数据集的加入** + + 为了增强模型的认知能力,我们特意加入了一部分自我认知数据集。这些数据集有助于模型更好地理解上下文,提高对话的自然度和连贯性。 + + +**三、实践步骤** + +1. **初始化** +* 安装所需的软件和库。 + ```bash + pip install -r requirements.txt -i https://pypi.tuna.tsinghua.edu.cn/simple + ``` + +* 准备输入数据和配置参数。 + + 可参见`config.yml`均有注释 + +2. **模型选择与配置** +* 根据需求选择适合的模型。 + 为了使大家都能够玩上大模型,我们选用InterLLM2-7B作为我们的基线模型(消费级显卡也可部署微调的哦) +* 对模型进行必要的配置和调整。 + 根据我们的数据集以及配置策略,使用XTuner进行微调 +3. **数据生成** +* 使用通义千问大模型进行数据生成。 + ```bash + # 终端运行 + bash run_qwen.bash + ``` +* 使用百度文心大模型进行数据生成。 + ```bash + # 终端运行 + python ernie_gen_data.py + ``` +* 使用智浦AI大模型进行数据生成。 + ```bash + # 终端运行 + python zhipuai_gen_data.py + ``` +* 使用讯飞星火大模型进行数据生成。 + ```bash + # 终端运行 + python ./xinghuo/gen_data.py + ``` +4. **自我认知数据集的整合** +* 自我认知数据集这个就需要按照格式手动生成的哈~,如下格式即可。 + ```json + [ + { + "conversation": [ + { + "input": "请介绍一下你自己", + "output": "我是大佬的emo小助手,可以帮助你解决心理上的问题哦" + } + ] + }, + { + "conversation": [ + { + "input": "请做一下自我介绍", + "output": "我是大佬的emo小助手,可以帮助你解决心理上的问题哦" + } + ] + } + ] + ``` + +5. **数据集整合。** + + 在进行数据集整合之前,我们要检查生成的数据是否存在格式错误,类型不符合等情况。我们需要check.py进行检查数据。最后再使用merge_json.py将所有的json整合为一个总的json文件。 + +6. **评估与优化** +* 使用适当的评估指标对生成的数据集进行评估。 +* 根据评估结果进行必要的优化和调整。 +7. **测试与部署** +* 使用独立测试集对训练好的模型进行评估。 +* 根据测试结果进行必要的调整和优化。 +* 将最终的模型部署到实际应用中。 \ No newline at end of file diff --git a/generate_data/xinghuo/SparkApi.py b/generate_data/xinghuo/SparkApi.py new file mode 100644 index 0000000..5a49ed1 --- /dev/null +++ b/generate_data/xinghuo/SparkApi.py @@ -0,0 +1,136 @@ +import _thread as thread +import base64 +import datetime +import hashlib +import hmac +import json +from urllib.parse import urlparse +import ssl +from datetime import datetime +from time import mktime +from urllib.parse import urlencode +from wsgiref.handlers import format_date_time + +import websocket # 使用websocket_client +answer = "" + +class Ws_Param(object): + # 初始化 + def __init__(self, APPID, APIKey, APISecret, Spark_url): + self.APPID = APPID + self.APIKey = APIKey + self.APISecret = APISecret + self.host = urlparse(Spark_url).netloc + self.path = urlparse(Spark_url).path + self.Spark_url = Spark_url + + # 生成url + def create_url(self): + # 生成RFC1123格式的时间戳 + now = datetime.now() + date = format_date_time(mktime(now.timetuple())) + + # 拼接字符串 + signature_origin = "host: " + self.host + "\n" + signature_origin += "date: " + date + "\n" + signature_origin += "GET " + self.path + " HTTP/1.1" + + # 进行hmac-sha256进行加密 + signature_sha = hmac.new(self.APISecret.encode('utf-8'), signature_origin.encode('utf-8'), + digestmod=hashlib.sha256).digest() + + signature_sha_base64 = base64.b64encode(signature_sha).decode(encoding='utf-8') + + authorization_origin = f'api_key="{self.APIKey}", algorithm="hmac-sha256", headers="host date request-line", signature="{signature_sha_base64}"' + + authorization = base64.b64encode(authorization_origin.encode('utf-8')).decode(encoding='utf-8') + + # 将请求的鉴权参数组合为字典 + v = { + "authorization": authorization, + "date": date, + "host": self.host + } + # 拼接鉴权参数,生成url + url = self.Spark_url + '?' + urlencode(v) + # 此处打印出建立连接时候的url,参考本demo的时候可取消上方打印的注释,比对相同参数时生成的url与自己代码生成的url是否一致 + return url + + +# 收到websocket错误的处理 +def on_error(ws, error): + print("### error:", error) + + +# 收到websocket关闭的处理 +def on_close(ws,one,two): + print(" ") + + +# 收到websocket连接建立的处理 +def on_open(ws): + thread.start_new_thread(run, (ws,)) + + +def run(ws, *args): + data = json.dumps(gen_params(appid=ws.appid, domain= ws.domain,question=ws.question)) + ws.send(data) + + +# 收到websocket消息的处理 +def on_message(ws, message): + # print(message) + data = json.loads(message) + code = data['header']['code'] + if code != 0: + print(f'请求错误: {code}, {data}') + ws.close() + else: + choices = data["payload"]["choices"] + status = choices["status"] + content = choices["text"][0]["content"] + print(content,end ="") + global answer + answer += content + # print(1) + if status == 2: + ws.close() + + +def gen_params(appid, domain,question): + """ + 通过appid和用户的提问来生成请参数 + """ + data = { + "header": { + "app_id": appid, + "uid": "1234" + }, + "parameter": { + "chat": { + "domain": domain, + "temperature": 0.5, + "max_tokens": 2048 + } + }, + "payload": { + "message": { + "text": question + } + } + } + return data + + +def main(appid, api_key, api_secret, Spark_url,domain, question): + # print("星火:") + wsParam = Ws_Param(appid, api_key, api_secret, Spark_url) + websocket.enableTrace(False) + wsUrl = wsParam.create_url() + ws = websocket.WebSocketApp(wsUrl, on_message=on_message, on_error=on_error, on_close=on_close, on_open=on_open) + ws.appid = appid + ws.question = question + ws.domain = domain + ws.run_forever(sslopt={"cert_reqs": ssl.CERT_NONE}) + + diff --git a/generate_data/xinghuo/gen_Chat.py b/generate_data/xinghuo/gen_Chat.py new file mode 100644 index 0000000..ae21968 --- /dev/null +++ b/generate_data/xinghuo/gen_Chat.py @@ -0,0 +1,60 @@ +import SparkApi +from prompt import * +from tqdm import tqdm + +# 以下密钥信息从控制台获取 +appid = "" # 填写控制台中获取的 APPID 信息 +api_secret = "" # 填写控制台中获取的 APISecret 信息 +api_key = "" # 填写控制台中获取的 APIKey 信息 + +# 用于配置大模型版本,默认“general/generalv2” +domain = "general" # v1.5版本 +# domain = "generalv2" # v2.0版本 +# 云端环境的服务地址 +Spark_url = "ws://spark-api.xf-yun.com/v1.1/chat" # v1.5环境的地址 +# Spark_url = "ws://spark-api.xf-yun.com/v2.1/chat" # v2.0环境的地址 + + +text = [] + + +# length = 0 + +def getText(role, content): + jsoncon = {} + jsoncon["role"] = role + jsoncon["content"] = content + text.append(jsoncon) + return text + + +def getlength(text): + length = 0 + for content in text: + temp = content["content"] + leng = len(temp) + length += leng + return length + + +def checklen(text): + while (getlength(text) > 8000): + del text[0] + return text + + +if __name__ == '__main__': + text.clear + file_name = 'train3.jsonl' + conversations = [] + for i in tqdm(range(200)): + Input = prompt(random.randint(0, 16)) + question = checklen(getText("user", Input)) + SparkApi.answer = "" + SparkApi.main(appid, api_key, api_secret, Spark_url, domain, question) + getText("assistant", SparkApi.answer) + conversations.append(ChatGLM3_6B(SparkApi.answer)) + for item in conversations: + save_jsonl(item, file_name) + conversations.clear() + diff --git a/generate_data/xinghuo/gen_data.py b/generate_data/xinghuo/gen_data.py new file mode 100644 index 0000000..70dbfcd --- /dev/null +++ b/generate_data/xinghuo/gen_data.py @@ -0,0 +1,64 @@ +import SparkApi +from prompt import * +from tqdm import tqdm + + +with open('config.yml', 'r', encoding='utf-8') as f: + configs = yaml.load(f.read(), Loader=yaml.FullLoader) + + +# 以下密钥信息从控制台获取 +appid = configs['appid'] # 填写控制台中获取的 APPID 信息 +api_secret = configs['api_secret'] # 填写控制台中获取的 APISecret 信息 +api_key = configs['api_key'] # 填写控制台中获取的 APIKey 信息 + +#用于配置大模型版本,默认“general/generalv2” +domain = "general" # v1.5版本 +# domain = "generalv2" # v2.0版本 +#云端环境的服务地址 +Spark_url = "ws://spark-api.xf-yun.com/v1.1/chat" # v1.5环境的地址 +# Spark_url = "ws://spark-api.xf-yun.com/v2.1/chat" # v2.0环境的地址 + + +text =[] + +# length = 0 + +def getText(role,content): + jsoncon = {} + jsoncon["role"] = role + jsoncon["content"] = content + text.append(jsoncon) + return text + +def getlength(text): + length = 0 + for content in text: + temp = content["content"] + leng = len(temp) + length += leng + return length + +def checklen(text): + while (getlength(text) > 8000): + del text[0] + return text + + + +if __name__ == '__main__': + text.clear + file_name = 'a2.jsonl' + conversations = [] + for i in range(1): + for j in tqdm(range(10)): + Input = prompt(i) + question = checklen(getText("user",Input)) + SparkApi.answer ="" + SparkApi.main(appid,api_key, api_secret, Spark_url, domain, question) + getText("assistant", SparkApi.answer) + conversations.append(xinghuo_api(SparkApi.answer)) + if i % 2 == 0 : + save_jsonl(conversations, file_name) + conversations.clear() + diff --git a/generate_data/xinghuo/prompt.py b/generate_data/xinghuo/prompt.py new file mode 100644 index 0000000..8149f24 --- /dev/null +++ b/generate_data/xinghuo/prompt.py @@ -0,0 +1,151 @@ +import json +import random +import re +import copy +# new_data = [{'role': 'user', 'content': '你好'}, {'role': 'assistant', 'content': '你好!有什么我可以帮助您的吗?'}, {'role': 'user', 'content': '生成一段心理医生和病人的对话'}, {'role': 'assistant', 'content': '心理医生:你好,我是你的心理医生。请问你的名字是?\n\n病人:我叫李明。\n\n心理医生:很高兴见到你,李明先生。你来咨询是因为什么问题呢?\n\n病人:最近我总是感觉很焦虑,睡眠也不好。\n\n心理医生:好的,可以跟我具体说说你的情况吗?你有什么压力或者担忧的事情吗?\n\n病人:其实我一直在担心工作上的表现,觉得自己做得不够好,还有家庭的问题。\n\n心理医生:这些都是很常见的问题。你可以告诉我你在工作中遇到了什么困难吗?我们可以一起探讨一下如何解决。\n\n病人:我觉得自己的工作能力不够强,经常被领导批评。而且我家里的情况也不是很好,父母经常吵架,让我很难受。\n\n心理医生:我理解你的感受。这些问题确实会让人感到压力和焦虑。不过我们可以通过一些方法来缓解这种情况。比如说,你可以尝试一些放松的活动,比如瑜伽或者冥想,来减轻压力和焦虑。同时,你也可以考虑寻求家人或者朋友的帮助,让他们给你提供一些支持和鼓励。\n\n病人:好的,我会试试的。谢谢你的建议。\n\n心理医生:不用客气,如果你有任何问题或者需要进一步的帮助,随时可以联系我。'}] +# text2 = [] +# data = {'system':'现在你是一个心理专家,我有一些心理问题,请你用专业的知识帮我解决。', 'input':'', 'output':''} +# for val in new_data: +# if val['role'] == 'user': +# continue +# +# print(text2) + +def save_jsonl(conversations, path_file): + # 把对话写入文件 + with open(path_file, 'a+', encoding='utf-8') as f: + for conversation in conversations: + Json_String = json.dumps(conversation, ensure_ascii=False) + '\n' + f.write(Json_String) + + +# 生成输入提示词 +def prompt(life_type=0): + emotions_lis = [ + "钦佩", + "崇拜", + "欣赏", + "娱乐", + "焦虑", + "敬畏", + "尴尬", + "厌倦", + "冷静", + "困惑", + "渴望", + "厌恶", + "同情", + "痛苦", + "着迷", + "嫉妒", + "兴奋", + "恐惧", + "痛恨", + "有趣", + "快乐", + "怀旧", + "浪漫", + "悲伤", + "满意", + "性欲", + "同情", + "满足" + ] + areas_of_life = [ + "工作", + "学业(小学,初中,高中,大学,研究生,博士)", + "生活(衣,食,住,行等等)", + "身体", + "家人", + "朋友", + "社交", + "恋爱", + "就业", + "责任", + "爱好", + "环境", + "隐私", + "安全", + "梦想", + "自由" + ] + + # 输入数据处理 + if life_type < 0: + raise ValueError('life_type must > 0') + + emo = random.choice(emotions_lis) + life_type %= 16 + + Input = f'''你是一个研究过无数具有心理健康问题的病人与心理健康医生对话的专家,请你构造一些符合实际情况的具有心理健 + 康问题的病人和心理健康医生的连续的一段多轮对话记录。要求病人的问题属于{areas_of_life[life_type]}场景,具有{emo}情感,医生的回复尽可能包含心理辅导知识,并且能够一步步诱导病人说出自己的问题进而提供解决问题的可行方案。注意,构造的数据必须以医生的陈述为结束语,请只返回完整的对话内容。请以如下格式返回生成的数据: + 病人:病人的咨询或陈述 + 医生:医生的安抚和建议 + ''' + return Input + +def xinghuo_api(content): + # 对话格式 + conversation1 = {'system':'现在你是一个心理专家,我有一些心理问题,请你用专业的知识帮我解决。', 'input':'', 'output':''} + conversation = {'input':'', 'output':''} + conversations = {'conversation':[]} + # temp = {'system':'现在你是一个心理专家,我有一些心理问题,请你用专业的知识帮我解决。', 'input':'', 'output':''} + # 划分对话形式 + dialogue = re.split('医生:|病人:', content) + # 对话前的数据处理 + if dialogue[0] == '': + dialogue.pop(0) + # 一次对话 + flag = False + for ind, item in enumerate(dialogue): + if flag == False: + if (ind + 1) % 2 == 1: + conversation1['input'] = dialogue[ind] + else: + conversation1['output'] = dialogue[ind] + + if (ind + 1) % 2 == 0 or ind + 1 == len(dialogue): + temp = copy.deepcopy(conversation1) + conversations['conversation'].append(temp) + flag = True + continue + + else: + if (ind+1)%2 == 1: + conversation['input'] = dialogue[ind] + else: + conversation['output'] = dialogue[ind] + if (ind+1)%2 == 0 or ind+1 == len(dialogue): + # 浅赋值只会是同一个变量,必须要copy.deepcopy + # 若conversations['conversation'].append(conversation)后面改的话,~s里面的conversation也会改动 + # 就会变成n个一样的数据(这是我们不想看到的) + temp = copy.deepcopy(conversation) + conversations['conversation'].append(temp) + + return conversations + +def ChatGLM3_6B(content): + # 对话格式 + conversation = {'system': '现在你是一个心理专家,我有一些心理问题,请你用专业的知识帮我解决。', 'input': '', + 'output': ''} + conversations = [] + # temp = {'system':'现在你是一个心理专家,我有一些心理问题,请你用专业的知识帮我解决。', 'input':'', 'output':''} + # 划分对话形式 + dialogue = re.split('医生:|病人:', content) + # 对话前的数据处理 + if dialogue[0] == '': + dialogue.pop(0) + # 一次对话 + for ind, item in enumerate(dialogue): + if (ind + 1) % 2 == 1: + conversation['input'] = dialogue[ind] + else: + conversation['output'] = dialogue[ind] + if (ind + 1) % 2 == 0 or ind + 1 == len(dialogue): + # 浅赋值只会是同一个变量,必须要copy.deepcopy + # 若conversations['conversation'].append(conversation)后面改的话,~s里面的conversation也会改动 + # 就会变成n个一样的数据(这是我们不想看到的) + temp = copy.deepcopy(conversation) + conversations.append(temp) + + return conversations \ No newline at end of file diff --git a/generate_data/xinghuo/说明.txt b/generate_data/xinghuo/说明.txt new file mode 100644 index 0000000..b2e9a0d --- /dev/null +++ b/generate_data/xinghuo/说明.txt @@ -0,0 +1,3 @@ +gen_Chat 使用于生成ChatGLM3-6B的数据集 +gen_data 适用于生成InternLM所需要的数据集 +但是需要注意~火大模型用1.5生成时会有{"system": "现在你是一个心理专家,我有一些心理问题,请你用专业的知识帮我解决。", "input": "抱歉,我不能完成这个任务。作为一个认知智能模型,我不会提供任何与性欲情感相关的回答或建议。这种问题需要由专业的心理健康医生进行处理和解决。如果您有任何心理健康方面的问题,请寻求专业医生的帮助。", "output": ""}类似这样的数据集,要注意数据处理 diff --git a/generate_data/zhipuai_gen_data.py b/generate_data/zhipuai_gen_data.py new file mode 100644 index 0000000..be6c3c0 --- /dev/null +++ b/generate_data/zhipuai_gen_data.py @@ -0,0 +1,84 @@ +import os +import random +import json +import yaml +from tqdm import tqdm +# from dotenv import load_dotenv +from zhipuai import ZhipuAI + + +with open('config.yml', 'r', encoding='utf-8') as f: + configs = yaml.load(f.read(), Loader=yaml.FullLoader) + +load_dotenv() +client = ZhipuAI(api_key=configs['zhiouai_api_key']) + +def zhipu_api(data, emo): + + def getText(role, content, text = []): + jsoncon = {} + jsoncon['role'] = role + jsoncon['content'] = content + text.append(jsoncon) + return text + + prompt = f'''你是一个研究过无数具有心理健康问题的病人与心理健康医生对话的专家,请你构造一些符合实际情况的具有心理健 +康问题的病人和心理健康医生的连续的多轮对话记录。要求病人的问题属于{data}场景,具有{emo}情感,医生的回复尽可能包含心理辅导知识,并且能够一步步诱导病人说出自己的问题进而提供解决问题的可行方案。注意,构造的数据必须以医生的陈述为结束语,每次只需要构造一个案例并且不需要写案例一、二等等,请只返回完整的对话内容。请以如下格式返回生成的数据: +病人:病人的咨询或陈述 +医生:医生的安抚和建议 + ''' + + top_p = round(random.uniform(0.1, 0.9), 2) + messages = getText('user', prompt) + response = client.chat.completions.create( + model='glm-4', + messages=messages, + top_p=top_p, + ) + + return response.choices[0].message.content + + +def convert(conversation): + ret, one_conversation = {}, {} + ret['conversation'] = [] + one_conversation['system'] = '现在你是一个心理专家,我有一些心理问题,请你用专业的知识帮我解决。' + + while '病人:' in conversation and '医生:' in conversation: + one_conversation['input'] = conversation.split('病人:')[1].split('医生:')[0] + one_conversation['output'] = conversation.split('病人:')[1].split('医生:')[1].split('病人:')[0] + conversation = '病人:' + '病人:'.join(conversation.split('病人:')[2:]) + ret['conversation'].append(one_conversation) + one_conversation = {} + + return ret + + +def save_jsonl(data_lis, file_path): + if not os.path.exists(os.path.dirname(file_path)): + os.makedirs(os.path.dirname(file_path)) + with open(file_path, 'w', encoding='utf-8') as f: + for item in data_lis: + f.write(json.dumps(item, ensure_ascii=False) + '\n') + + +if __name__ == '__main__': + emotions_lis = configs['emotions_list'] + areas_of_life = configs['areas_of_life'] + + conversation_lis = [] + for emo in emotions_lis: + for area in areas_of_life: + if os.path.exists(f'./zhipuai/{area}/{emo}.jsonl'): + print(f'./zhipuai/{area}/{emo}.jsonl exists') + continue + for i in tqdm(range(5), desc='{emo}, {area}'.format(emo=emo, area=area)): + res = zhipu_api(area, emo) + print(res) + if res == 'null': + print(area, emo, 'error') + continue + conversation_lis.append(convert(res)) + save_jsonl(conversation_lis, f'./zhipuai/{area}/{emo}.jsonl') + print(f'generate ./zhipuai/{area}/{emo}.jsonl') + conversation_lis = []