From 4dbd5bf0e20d41d89087a029d53b8a8242836e41 Mon Sep 17 00:00:00 2001 From: "majiahui@haimaqingfan.com" Date: Wed, 13 Aug 2025 14:59:05 +0800 Subject: [PATCH] =?UTF-8?q?=E5=A2=9E=E5=8A=A0=E4=B8=BB=E8=A6=81=E5=86=85?= =?UTF-8?q?=E5=AE=B9=E9=97=AE=E6=B3=95?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .idea/deployment.xml | 47 +++++++++++++++-- .idea/generate_articles_directory.iml | 2 +- .idea/misc.xml | 2 +- articles_directory_predict.py | 26 ++++++++- articles_directory_predict_detection_word.py | 4 +- articles_directory_predict_qikan_word.py | 38 ++++++++++---- articles_directory_predict_qikan_word_online.py | 24 +++++++-- ...ory_predict_qikan_word_table_formula_kongzhi.py | 38 ++++++++++---- articles_directory_predict_word.py | 56 +++++++++++++++----- articles_directory_predict_word_online.py | 31 +++++++++-- ...directory_predict_word_table_formula_kongzhi.py | 61 +++++++++++++++------- 11 files changed, 258 insertions(+), 71 deletions(-) diff --git a/.idea/deployment.xml b/.idea/deployment.xml index 558914d..abd8859 100644 --- a/.idea/deployment.xml +++ b/.idea/deployment.xml @@ -1,6 +1,6 @@ - + \ No newline at end of file diff --git a/.idea/generate_articles_directory.iml b/.idea/generate_articles_directory.iml index 9a47304..12ca792 100644 --- a/.idea/generate_articles_directory.iml +++ b/.idea/generate_articles_directory.iml @@ -5,7 +5,7 @@ - + diff --git a/.idea/misc.xml b/.idea/misc.xml index 4577e59..5cf0187 100644 --- a/.idea/misc.xml +++ b/.idea/misc.xml @@ -1,4 +1,4 @@ - + \ No newline at end of file diff --git a/articles_directory_predict.py b/articles_directory_predict.py index fb9274f..2a6f44c 100644 --- a/articles_directory_predict.py +++ b/articles_directory_predict.py @@ -1,3 +1,4 @@ +import os from flask import Flask, jsonify from flask import request import time @@ -20,6 +21,25 @@ def get_host_ip(): return ip +class log: + def __init__(self): + pass + + def log(*args, **kwargs): + format = '%Y/%m/%d-%H:%M:%S' + format_h = '%Y-%m-%d' + value = time.localtime(int(time.time())) + dt = time.strftime(format, value) + dt_log_file = time.strftime(format_h, value) + log_file = 'log_file/access-%s' % dt_log_file + ".log" + if not os.path.exists(log_file): + with open(os.path.join(log_file), 'w', encoding='utf-8') as f: + print(dt, *args, file=f, **kwargs) + else: + with open(os.path.join(log_file), 'a+', encoding='utf-8') as f: + print(dt, *args, file=f, **kwargs) + + chatgpt_url_predict = "http://{}:12000/predict".format(str(get_host_ip())) chatgpt_url_search = "http://{}:12000/search".format(str(get_host_ip())) # prompt = "<|role|>user<|says|>{}<|end|>\n<|role|>assistant<|says|>" @@ -166,7 +186,7 @@ def get_multiple_urls(urls): def articles_directory(): text = request.json["texts"] # 获取用户query中的文本 例如"I love you" nums = request.json["nums"] - text = qwen_think_prompt.format(text) + text = qwen_prompt.format(text) nums = int(nums) input_data = [] @@ -176,6 +196,10 @@ def articles_directory(): results = get_multiple_urls(input_data) + log.log('start at', + 'text:{},results:{}'.format( + text, str(results))) + return jsonify(results) # 返回结果 if __name__ == "__main__": diff --git a/articles_directory_predict_detection_word.py b/articles_directory_predict_detection_word.py index d7623f1..6fd049c 100644 --- a/articles_directory_predict_detection_word.py +++ b/articles_directory_predict_detection_word.py @@ -93,7 +93,9 @@ def articles_directory(): "min_word": results[0], "max_word": results[1], } - # log.log('text:{},'.format(prompt)) + log.log('start at', + 'text:{},results:{}'.format( + mulu, str(results))) return jsonify(data) # 返回结果 # @app.route("/detection_word", methods=["POST"]) diff --git a/articles_directory_predict_qikan_word.py b/articles_directory_predict_qikan_word.py index a784e6d..272fad6 100644 --- a/articles_directory_predict_qikan_word.py +++ b/articles_directory_predict_qikan_word.py @@ -52,28 +52,37 @@ prompt = { "mulu_title_Level_3_1": "任务:生成目录\n请帮我生成一个期刊论文的目录,论文题目是“%s”,要求只有一级标题,二级标题和三级标题,一级标题使用中文数字 例如一、xxx;二级标题使用阿拉伯数字 例如1.1 xxx;三级标题使用阿拉伯数字 例如1.1.2 xxx;一级标题生成%s个;每个一级标题包含%s-%s个二级标题;三级标题个数适中", } +prompt_main_content = { + "mulu_title_Level_2_1": "任务:生成目录\n请帮我生成一个期刊论文的目录,论文题目是“%s”,生成目录需要参考一些关键内容:“%s”,要求只有一级标题,二级标题,一级标题使用中文数字 例如一、xxx;二级标题使用阿拉伯数字 例如1.1 xxx;一级标题生成%s个;每个一级标题包含%s-%s个二级标题", + "mulu_title_Level_3_1": "任务:生成目录\n请帮我生成一个期刊论文的目录,论文题目是“%s”,生成目录需要参考一些关键内容:“%s”,要求只有一级标题,二级标题和三级标题,一级标题使用中文数字 例如一、xxx;二级标题使用阿拉伯数字 例如1.1 xxx;三级标题使用阿拉伯数字 例如1.1.2 xxx;一级标题生成%s个;每个一级标题包含%s-%s个二级标题;三级标题个数适中", +} + nums_word_dict = { "3000": { - "prompt": qwen_think_prompt.format(prompt["mulu_title_Level_2_1"]), + "prompt": qwen_prompt.format(prompt["mulu_title_Level_2_1"]), + "prompt_main_content": qwen_prompt.format(prompt_main_content["mulu_title_Level_2_1"]), "title_1_nums": "3", "title_2_nums": ["0","3"], "title_small_nums": ["3", "0","3"] }, "5000": { - "prompt": qwen_think_prompt.format(prompt["mulu_title_Level_2_1"]), + "prompt": qwen_prompt.format(prompt["mulu_title_Level_2_1"]), + "prompt_main_content": qwen_prompt.format(prompt_main_content["mulu_title_Level_2_1"]), "title_1_nums": "4", "title_2_nums": ["0","5"], "title_small_nums": ["4", "0","5"] }, "8000": { - "prompt": qwen_think_prompt.format(prompt["mulu_title_Level_2_1"]), + "prompt": qwen_prompt.format(prompt["mulu_title_Level_2_1"]), + "prompt_main_content": qwen_prompt.format(prompt_main_content["mulu_title_Level_2_1"]), "title_1_nums": "5", "title_2_nums": ["0", "6"], "title_small_nums": ["5", "0", "6"] }, "10000": { - "prompt": qwen_think_prompt.format(prompt["mulu_title_Level_3_1"]), + "prompt": qwen_prompt.format(prompt["mulu_title_Level_3_1"]), + "prompt_main_content": qwen_prompt.format(prompt_main_content["mulu_title_Level_3_1"]), "title_1_nums": "6", "title_2_nums": ["0", "5"], "title_small_nums": ["6", "0", "5"], @@ -125,7 +134,7 @@ def request_api_chatgpt(prompt): "content": prompt, "model": "gpt-4-turbo", "top_p": 0.95, - "temperature": 0.7 + "temperature": 0.6 } response = requests.post( chatgpt_url_predict, @@ -217,19 +226,26 @@ def get_multiple_urls(urls): @app.route("/articles_directory", methods=["POST"]) def articles_directory(): - title = request.json["title"] # 获取用户query中的文本 例如"I love you" + title = request.json["title"] nums_catalogue = request.json["nums_catalogue"] - nums_word = request.json["nums_word"] # 获取用户query中的文本 例如"I love you" + nums_word = request.json["nums_word"] + main_content = request.json.get("main_content") nums_catalogue = int(nums_catalogue) - keyword = tuple([title] + nums_word_dict[nums_word]["title_small_nums"]) - prompt = nums_word_dict[nums_word]["prompt"]%keyword - print(prompt) + if not main_content: + keyword = tuple([title] + nums_word_dict[nums_word]["title_small_nums"]) + prompt = nums_word_dict[nums_word]["prompt"] % keyword + else: + keyword = tuple([title, main_content] + nums_word_dict[nums_word]["title_small_nums"]) + prompt = nums_word_dict[nums_word]["prompt_main_content"] % keyword input_data = [] for i in range(nums_catalogue): input_data.append([i, prompt]) results = get_multiple_urls(input_data) - log.log('text:{},'.format(prompt)) + log.log('start at', + 'text:{},results:{}'.format( + prompt, str(results))) + # log.log('text:{},'.format(prompt)) return jsonify(results) # 返回结果 if __name__ == "__main__": diff --git a/articles_directory_predict_qikan_word_online.py b/articles_directory_predict_qikan_word_online.py index 8460a0b..ae7c585 100644 --- a/articles_directory_predict_qikan_word_online.py +++ b/articles_directory_predict_qikan_word_online.py @@ -49,35 +49,42 @@ prompt = { "mulu_title_Level_3_1": "任务:生成目录\n请帮我生成一个期刊论文的目录,论文题目是“%s”,要求只有一级标题,二级标题和三级标题,一级标题使用中文数字 例如一、xxx;二级标题使用阿拉伯数字 例如1.1 xxx;三级标题使用阿拉伯数字 例如1.1.2 xxx;一级标题生成%s个;每个一级标题包含%s-%s个二级标题;三级标题个数适中", } +prompt_main_content = { + "mulu_title_Level_2_1": "任务:生成目录\n请帮我生成一个期刊论文的目录,论文题目是“%s”,生成目录需要参考一些关键内容:“%s”,要求只有一级标题,二级标题,一级标题使用中文数字 例如一、xxx;二级标题使用阿拉伯数字 例如1.1 xxx;一级标题生成%s个;每个一级标题包含%s-%s个二级标题", + "mulu_title_Level_3_1": "任务:生成目录\n请帮我生成一个期刊论文的目录,论文题目是“%s”,生成目录需要参考一些关键内容:“%s”,要求只有一级标题,二级标题和三级标题,一级标题使用中文数字 例如一、xxx;二级标题使用阿拉伯数字 例如1.1 xxx;三级标题使用阿拉伯数字 例如1.1.2 xxx;一级标题生成%s个;每个一级标题包含%s-%s个二级标题;三级标题个数适中", +} nums_word_dict = { "3000": { "prompt": qwen_think_prompt.format(prompt["mulu_title_Level_2_1"]), + "prompt_main_content": qwen_think_prompt.format(prompt_main_content["mulu_title_Level_2_1"]), "title_1_nums": "3", "title_2_nums": ["0","3"], "title_small_nums": ["3", "0","3"] }, "5000": { "prompt": qwen_think_prompt.format(prompt["mulu_title_Level_2_1"]), + "prompt_main_content": qwen_think_prompt.format(prompt_main_content["mulu_title_Level_2_1"]), "title_1_nums": "4", "title_2_nums": ["0","5"], "title_small_nums": ["4", "0","5"] }, "8000": { "prompt": qwen_think_prompt.format(prompt["mulu_title_Level_2_1"]), + "prompt_main_content": qwen_think_prompt.format(prompt_main_content["mulu_title_Level_2_1"]), "title_1_nums": "5", "title_2_nums": ["0", "6"], "title_small_nums": ["5", "0", "6"] }, "10000": { "prompt": qwen_think_prompt.format(prompt["mulu_title_Level_3_1"]), + "prompt_main_content": qwen_think_prompt.format(prompt_main_content["mulu_title_Level_3_1"]), "title_1_nums": "6", "title_2_nums": ["0", "5"], "title_small_nums": ["6", "0", "5"], } } - app = Flask(__name__) app.config["JSON_AS_ASCII"] = False @@ -122,7 +129,7 @@ def request_api_chatgpt(prompt): "content": prompt, "model": "gpt-4-turbo", "top_p": 0.95, - "temperature": 0.7 + "temperature": 0.6 } response = requests.post( chatgpt_url_predict, @@ -217,16 +224,23 @@ def articles_directory(): title = request.json["title"] # 获取用户query中的文本 例如"I love you" nums_catalogue = request.json["nums_catalogue"] nums_word = request.json["nums_word"] # 获取用户query中的文本 例如"I love you" + main_content = request.json.get("main_content") nums_catalogue = int(nums_catalogue) - keyword = tuple([title] + nums_word_dict[nums_word]["title_small_nums"]) - prompt = nums_word_dict[nums_word]["prompt"]%keyword + if not main_content: + keyword = tuple([title] + nums_word_dict[nums_word]["title_small_nums"]) + prompt = nums_word_dict[nums_word]["prompt"] % keyword + else: + keyword = tuple([title, main_content] + nums_word_dict[nums_word]["title_small_nums"]) + prompt = nums_word_dict[nums_word]["prompt_main_content"] % keyword print(prompt) input_data = [] for i in range(nums_catalogue): input_data.append([i, prompt]) results = get_multiple_urls(input_data) - log.log('text:{},'.format(prompt)) + log.log('start at', + 'text:{},results:{}'.format( + prompt, str(results))) return jsonify(results) # 返回结果 if __name__ == "__main__": diff --git a/articles_directory_predict_qikan_word_table_formula_kongzhi.py b/articles_directory_predict_qikan_word_table_formula_kongzhi.py index a936c72..23ad35a 100644 --- a/articles_directory_predict_qikan_word_table_formula_kongzhi.py +++ b/articles_directory_predict_qikan_word_table_formula_kongzhi.py @@ -53,34 +53,43 @@ prompt = { "mulu_title_Level_3_1": "任务:生成目录\n请帮我生成一个期刊论文的目录,论文题目是“%s”,要求只有一级标题,二级标题和三级标题,一级标题使用中文数字 例如一、xxx;二级标题使用阿拉伯数字 例如1.1 xxx;三级标题使用阿拉伯数字 例如1.1.2 xxx;一级标题生成%s个;每个一级标题包含%s-%s个二级标题;三级标题个数适中", } +prompt_main_content = { + "mulu_title_Level_2_1": "任务:生成目录\n请帮我生成一个期刊论文的目录,论文题目是“%s”,生成目录需要参考一些关键内容:“%s”,要求只有一级标题,二级标题,一级标题使用中文数字 例如一、xxx;二级标题使用阿拉伯数字 例如1.1 xxx;一级标题生成%s个;每个一级标题包含%s-%s个二级标题", + "mulu_title_Level_3_1": "任务:生成目录\n请帮我生成一个期刊论文的目录,论文题目是“%s”,生成目录需要参考一些关键内容:“%s”,要求只有一级标题,二级标题和三级标题,一级标题使用中文数字 例如一、xxx;二级标题使用阿拉伯数字 例如1.1 xxx;三级标题使用阿拉伯数字 例如1.1.2 xxx;一级标题生成%s个;每个一级标题包含%s-%s个二级标题;三级标题个数适中", +} nums_word_dict = { "3000": { - "prompt": qwen_think_prompt.format(prompt["mulu_title_Level_2_1"]), + "prompt": qwen_prompt.format(prompt["mulu_title_Level_2_1"]), + "prompt_main_content": qwen_prompt.format(prompt_main_content["mulu_title_Level_2_1"]), "title_1_nums": "3", "title_2_nums": ["0","3"], "title_small_nums": ["3", "0","3"] }, "5000": { - "prompt": qwen_think_prompt.format(prompt["mulu_title_Level_2_1"]), + "prompt": qwen_prompt.format(prompt["mulu_title_Level_2_1"]), + "prompt_main_content": qwen_prompt.format(prompt_main_content["mulu_title_Level_2_1"]), "title_1_nums": "4", "title_2_nums": ["0","5"], "title_small_nums": ["4", "0","5"] }, "8000": { - "prompt": qwen_think_prompt.format(prompt["mulu_title_Level_2_1"]), + "prompt": qwen_prompt.format(prompt["mulu_title_Level_2_1"]), + "prompt_main_content": qwen_prompt.format(prompt_main_content["mulu_title_Level_2_1"]), "title_1_nums": "5", "title_2_nums": ["0", "6"], "title_small_nums": ["5", "0", "6"] }, "10000": { - "prompt": qwen_think_prompt.format(prompt["mulu_title_Level_3_1"]), + "prompt": qwen_prompt.format(prompt["mulu_title_Level_3_1"]), + "prompt_main_content": qwen_prompt.format(prompt_main_content["mulu_title_Level_3_1"]), "title_1_nums": "6", "title_2_nums": ["0", "5"], "title_small_nums": ["6", "0", "5"], } } + prompt_biaogekongzhi = { "prompt_1":"背景:我是一名博士生,我想写一篇论文。论文题目《{}》,目录是“{}”,我现在需要论文中有{},请根据这些信息告诉我", "prompt_1_form":"哪些小标题生成的内容需要包含表格", @@ -155,7 +164,7 @@ def request_api_chatgpt(prompt): "content": prompt, "model": "gpt-4-turbo", "top_p": 0.95, - "temperature": 0.9 + "temperature": 0.6 } response = requests.post( chatgpt_url_predict, @@ -428,21 +437,26 @@ def biaogegongshi_kongzhi_prompt(title, mulu_list, table_and_formulas_list): prompt_biaogekongzhi["prompt3_multiple_tags"].format("&".join(lable_en), "&".join(lable_en)), ]) prompt = "任务:公式和表格生成控制\n{}".format(prompt) - prompt = qwen_think_prompt.format(prompt) + prompt = qwen_prompt.format(prompt) prompt_list.append(prompt) return prompt_list @app.route("/articles_directory", methods=["POST"]) def articles_directory(): - title = request.json["title"] # 获取用户query中的文本 例如"I love you" + title = request.json["title"] nums_catalogue = request.json["nums_catalogue"] - nums_word = request.json["nums_word"] # 获取用户query中的文本 例如"I love you" + nums_word = request.json["nums_word"] + main_content = request.json.get("main_content") table_and_formulas = request.json["table_and_formulas"] table_and_formulas_list = str(table_and_formulas).split(",") nums_catalogue = int(nums_catalogue) - keyword = tuple([title] + nums_word_dict[nums_word]["title_small_nums"]) - prompt = nums_word_dict[nums_word]["prompt"]%keyword + if not main_content: + keyword = tuple([title] + nums_word_dict[nums_word]["title_small_nums"]) + prompt = nums_word_dict[nums_word]["prompt"] % keyword + else: + keyword = tuple([title, main_content] + nums_word_dict[nums_word]["title_small_nums"]) + prompt = nums_word_dict[nums_word]["prompt_main_content"] % keyword print(prompt) input_data = [] for i in range(nums_catalogue): @@ -474,7 +488,9 @@ def articles_directory(): "catalog_list": mulu_list, "catalog_dict": results } - # log.log('text:{},'.format(prompt)) + log.log('start at', + 'text:{},results:{}'.format( + prompt, str(results))) return jsonify(data) # 返回结果 if __name__ == "__main__": diff --git a/articles_directory_predict_word.py b/articles_directory_predict_word.py index 9aa631d..1477e0e 100644 --- a/articles_directory_predict_word.py +++ b/articles_directory_predict_word.py @@ -53,51 +53,67 @@ prompt = { "mulu_title_Level_3_2": "任务:生成目录\n为论文题目“%s”生成中文目录,要求只有一级标题,二级标题和三级标题,一级标题使用中文数字 例如一、xxx;二级标题使用阿拉伯数字 例如1.1 xxx;三级标题使用阿拉伯数字 例如1.1.2 xxx;一级标题生成%s个;每个一级标题包含%s-%s个二级标题;三级标题个数越多越好" } +prompt_main_content = { + "mulu_title_Level_2": "任务:生成目录\n为论文题目“%s”生成中文目录,生成目录需要参考一些关键内容:“%s”,要求只有一级标题和二级标题,一级标题使用中文数字 例如一、xxx;二级标题使用阿拉伯数字 例如1.1 xxx;一级标题生成%s个;每个一级标题包含%s个二级标题", + "mulu_title_Level_2_1": "任务:生成目录\n为论文题目“%s”生成中文目录,生成目录需要参考一些关键内容:“%s”,要求只有一级标题和二级标题,一级标题使用中文数字 例如一、xxx;二级标题使用阿拉伯数字 例如1.1 xxx;一级标题生成%s个;每个一级标题包含%s-%s个二级标题", + "mulu_title_Level_3": "任务:生成目录\n为论文题目“%s”生成中文目录,生成目录需要参考一些关键内容:“%s”,要求只有一级标题,二级标题和三级标题,一级标题使用中文数字 例如一、xxx;二级标题使用阿拉伯数字 例如1.1 xxx;三级标题使用阿拉伯数字 例如1.1.2 xxx;一级标题生成%s个;每个一级标题包含%s个二级标题;三级标题个数适中", + "mulu_title_Level_3_1": "任务:生成目录\n为论文题目“%s”生成中文目录,生成目录需要参考一些关键内容:“%s”,要求只有一级标题,二级标题和三级标题,一级标题使用中文数字 例如一、xxx;二级标题使用阿拉伯数字 例如1.1 xxx;三级标题使用阿拉伯数字 例如1.1.2 xxx;一级标题生成%s个;每个一级标题包含%s-%s个二级标题;三级标题个数适中", + "mulu_title_Level_3_2": "任务:生成目录\n为论文题目“%s”生成中文目录,生成目录需要参考一些关键内容:“%s”,要求只有一级标题,二级标题和三级标题,一级标题使用中文数字 例如一、xxx;二级标题使用阿拉伯数字 例如1.1 xxx;三级标题使用阿拉伯数字 例如1.1.2 xxx;一级标题生成%s个;每个一级标题包含%s-%s个二级标题;三级标题个数越多越好" +} + nums_word_dict = { "3000": { - "prompt": qwen_think_prompt.format(prompt["mulu_title_Level_2"]), + "prompt": qwen_prompt.format(prompt["mulu_title_Level_2"]), + "prompt_main_content": qwen_prompt.format(prompt_main_content["mulu_title_Level_2"]), "title_1_nums": "3", "title_2_nums": ["2"], "title_small_nums": ["3", "2"] }, "5000": { - "prompt": qwen_think_prompt.format(prompt["mulu_title_Level_2_1"]), + "prompt": qwen_prompt.format(prompt["mulu_title_Level_2_1"]), + "prompt_main_content": qwen_prompt.format(prompt_main_content["mulu_title_Level_2_1"]), "title_1_nums": "3", "title_2_nums": ["2","4"], "title_small_nums": ["3", "2","4"] }, "8000": { - "prompt": qwen_think_prompt.format(prompt["mulu_title_Level_2_1"]), + "prompt": qwen_prompt.format(prompt["mulu_title_Level_2_1"]), + "prompt_main_content": qwen_prompt.format(prompt_main_content["mulu_title_Level_2_1"]), "title_1_nums": "4", "title_2_nums": ["2", "4"], "title_small_nums": ["4", "2", "4"], }, "10000": { - "prompt": qwen_think_prompt.format(prompt["mulu_title_Level_2_1"]), + "prompt": qwen_prompt.format(prompt["mulu_title_Level_2_1"]), + "prompt_main_content": qwen_prompt.format(prompt_main_content["mulu_title_Level_2_1"]), "title_1_nums": "6", "title_2_nums": ["2", "5"], "title_small_nums": ["6", "2", "5"], }, "15000": { - "prompt": qwen_think_prompt.format(prompt["mulu_title_Level_3_1"]), + "prompt": qwen_prompt.format(prompt["mulu_title_Level_3_1"]), + "prompt_main_content": qwen_prompt.format(prompt_main_content["mulu_title_Level_3_1"]), "title_1_nums": "5", "title_2_nums": ["2", "3"], "title_small_nums": ["5", "2", "3"], }, "20000": { - "prompt": qwen_think_prompt.format(prompt["mulu_title_Level_3_1"]), + "prompt": qwen_prompt.format(prompt["mulu_title_Level_3_1"]), + "prompt_main_content": qwen_prompt.format(prompt_main_content["mulu_title_Level_3_1"]), "title_1_nums": "6", "title_2_nums": ["2", "4"], "title_small_nums": ["6", "2", "4"], }, "30000": { - "prompt": qwen_think_prompt.format(prompt["mulu_title_Level_3_1"]), + "prompt": qwen_prompt.format(prompt["mulu_title_Level_3_1"]), + "prompt_main_content": qwen_prompt.format(prompt_main_content["mulu_title_Level_3_1"]), "title_1_nums": "7", "title_2_nums": ["3", "5"], "title_small_nums": ["7", "3", "5"], }, "50000": { - "prompt": qwen_think_prompt.format(prompt["mulu_title_Level_3_2"]), + "prompt": qwen_prompt.format(prompt["mulu_title_Level_3_2"]), + "prompt_main_content": qwen_prompt.format(prompt_main_content["mulu_title_Level_3_1"]), "title_1_nums": "8", "title_2_nums": ["3", "8"], "title_small_nums": ["8", "3", "8"], @@ -149,7 +165,7 @@ def request_api_chatgpt(prompt): "content": prompt, "model": "gpt-4-turbo", "top_p": 0.95, - "temperature": 0.7 + "temperature": 0.6 } response = requests.post( chatgpt_url_predict, @@ -241,19 +257,31 @@ def get_multiple_urls(urls): @app.route("/articles_directory", methods=["POST"]) def articles_directory(): - title = request.json["title"] # 获取用户query中的文本 例如"I love you" + title = request.json["title"] nums_catalogue = request.json["nums_catalogue"] - nums_word = request.json["nums_word"] # 获取用户query中的文本 例如"I love you" + nums_word = request.json["nums_word"] + main_content = request.json.get("main_content") + print(title) + print(nums_catalogue) + print(nums_word) + print("main_content", main_content) nums_catalogue = int(nums_catalogue) - keyword = tuple([title] + nums_word_dict[nums_word]["title_small_nums"]) - prompt = nums_word_dict[nums_word]["prompt"]%keyword + if not main_content: + keyword = tuple([title] + nums_word_dict[nums_word]["title_small_nums"]) + prompt = nums_word_dict[nums_word]["prompt"] % keyword + else: + keyword = tuple([title, main_content] + nums_word_dict[nums_word]["title_small_nums"]) + prompt = nums_word_dict[nums_word]["prompt_main_content"] % keyword print(prompt) + input_data = [] for i in range(nums_catalogue): input_data.append([i, prompt]) results = get_multiple_urls(input_data) - log.log('text:{},'.format(prompt)) + log.log('start at', + 'text:{},results:{}'.format( + prompt, str(results))) return jsonify(results) # 返回结果 if __name__ == "__main__": diff --git a/articles_directory_predict_word_online.py b/articles_directory_predict_word_online.py index a0227a3..add0428 100644 --- a/articles_directory_predict_word_online.py +++ b/articles_directory_predict_word_online.py @@ -53,51 +53,67 @@ prompt = { "mulu_title_Level_3_2": "任务:生成目录\n为论文题目“%s”生成中文目录,要求只有一级标题,二级标题和三级标题,一级标题使用中文数字 例如一、xxx;二级标题使用阿拉伯数字 例如1.1 xxx;三级标题使用阿拉伯数字 例如1.1.2 xxx;一级标题生成%s个;每个一级标题包含%s-%s个二级标题;三级标题个数越多越好" } +prompt_main_content = { + "mulu_title_Level_2": "任务:生成目录\n为论文题目“%s”生成中文目录,生成目录需要参考一些关键内容:“%s”,要求只有一级标题和二级标题,一级标题使用中文数字 例如一、xxx;二级标题使用阿拉伯数字 例如1.1 xxx;一级标题生成%s个;每个一级标题包含%s个二级标题", + "mulu_title_Level_2_1": "任务:生成目录\n为论文题目“%s”生成中文目录,生成目录需要参考一些关键内容:“%s”,要求只有一级标题和二级标题,一级标题使用中文数字 例如一、xxx;二级标题使用阿拉伯数字 例如1.1 xxx;一级标题生成%s个;每个一级标题包含%s-%s个二级标题", + "mulu_title_Level_3": "任务:生成目录\n为论文题目“%s”生成中文目录,生成目录需要参考一些关键内容:“%s”,要求只有一级标题,二级标题和三级标题,一级标题使用中文数字 例如一、xxx;二级标题使用阿拉伯数字 例如1.1 xxx;三级标题使用阿拉伯数字 例如1.1.2 xxx;一级标题生成%s个;每个一级标题包含%s个二级标题;三级标题个数适中", + "mulu_title_Level_3_1": "任务:生成目录\n为论文题目“%s”生成中文目录,生成目录需要参考一些关键内容:“%s”,要求只有一级标题,二级标题和三级标题,一级标题使用中文数字 例如一、xxx;二级标题使用阿拉伯数字 例如1.1 xxx;三级标题使用阿拉伯数字 例如1.1.2 xxx;一级标题生成%s个;每个一级标题包含%s-%s个二级标题;三级标题个数适中", + "mulu_title_Level_3_2": "任务:生成目录\n为论文题目“%s”生成中文目录,生成目录需要参考一些关键内容:“%s”,要求只有一级标题,二级标题和三级标题,一级标题使用中文数字 例如一、xxx;二级标题使用阿拉伯数字 例如1.1 xxx;三级标题使用阿拉伯数字 例如1.1.2 xxx;一级标题生成%s个;每个一级标题包含%s-%s个二级标题;三级标题个数越多越好" +} + nums_word_dict = { "3000": { "prompt": qwen_think_prompt.format(prompt["mulu_title_Level_2"]), + "prompt_main_content": qwen_think_prompt.format(prompt_main_content["mulu_title_Level_2"]), "title_1_nums": "3", "title_2_nums": ["2"], "title_small_nums": ["3", "2"] }, "5000": { "prompt": qwen_think_prompt.format(prompt["mulu_title_Level_2_1"]), + "prompt_main_content": qwen_think_prompt.format(prompt_main_content["mulu_title_Level_2_1"]), "title_1_nums": "3", "title_2_nums": ["2","4"], "title_small_nums": ["3", "2","4"] }, "8000": { "prompt": qwen_think_prompt.format(prompt["mulu_title_Level_2_1"]), + "prompt_main_content": qwen_think_prompt.format(prompt_main_content["mulu_title_Level_2_1"]), "title_1_nums": "4", "title_2_nums": ["2", "4"], "title_small_nums": ["4", "2", "4"], }, "10000": { "prompt": qwen_think_prompt.format(prompt["mulu_title_Level_2_1"]), + "prompt_main_content": qwen_think_prompt.format(prompt_main_content["mulu_title_Level_2_1"]), "title_1_nums": "6", "title_2_nums": ["2", "5"], "title_small_nums": ["6", "2", "5"], }, "15000": { "prompt": qwen_think_prompt.format(prompt["mulu_title_Level_3_1"]), + "prompt_main_content": qwen_think_prompt.format(prompt_main_content["mulu_title_Level_3_1"]), "title_1_nums": "5", "title_2_nums": ["2", "3"], "title_small_nums": ["5", "2", "3"], }, "20000": { "prompt": qwen_think_prompt.format(prompt["mulu_title_Level_3_1"]), + "prompt_main_content": qwen_think_prompt.format(prompt_main_content["mulu_title_Level_3_1"]), "title_1_nums": "6", "title_2_nums": ["2", "4"], "title_small_nums": ["6", "2", "4"], }, "30000": { "prompt": qwen_think_prompt.format(prompt["mulu_title_Level_3_1"]), + "prompt_main_content": qwen_think_prompt.format(prompt_main_content["mulu_title_Level_3_1"]), "title_1_nums": "7", "title_2_nums": ["3", "5"], "title_small_nums": ["7", "3", "5"], }, "50000": { "prompt": qwen_think_prompt.format(prompt["mulu_title_Level_3_2"]), + "prompt_main_content": qwen_think_prompt.format(prompt_main_content["mulu_title_Level_3_1"]), "title_1_nums": "8", "title_2_nums": ["3", "8"], "title_small_nums": ["8", "3", "8"], @@ -148,7 +164,7 @@ def request_api_chatgpt(prompt): "content": prompt, "model": "gpt-4-turbo", "top_p": 0.95, - "temperature": 0.7 + "temperature": 0.6 } response = requests.post( chatgpt_url_predict, @@ -243,16 +259,23 @@ def articles_directory(): title = request.json["title"] # 获取用户query中的文本 例如"I love you" nums_catalogue = request.json["nums_catalogue"] nums_word = request.json["nums_word"] # 获取用户query中的文本 例如"I love you" + main_content = request.json.get("main_content") nums_catalogue = int(nums_catalogue) - keyword = tuple([title] + nums_word_dict[nums_word]["title_small_nums"]) - prompt = nums_word_dict[nums_word]["prompt"]%keyword + if not main_content: + keyword = tuple([title] + nums_word_dict[nums_word]["title_small_nums"]) + prompt = nums_word_dict[nums_word]["prompt"] % keyword + else: + keyword = tuple([title, main_content] + nums_word_dict[nums_word]["title_small_nums"]) + prompt = nums_word_dict[nums_word]["prompt_main_content"] % keyword print(prompt) input_data = [] for i in range(nums_catalogue): input_data.append([i, prompt]) results = get_multiple_urls(input_data) - log.log('text:{},'.format(prompt)) + log.log('start at', + 'text:{},results:{}'.format( + prompt, str(results))) return jsonify(results) # 返回结果 if __name__ == "__main__": diff --git a/articles_directory_predict_word_table_formula_kongzhi.py b/articles_directory_predict_word_table_formula_kongzhi.py index 2d602f2..ec8414e 100644 --- a/articles_directory_predict_word_table_formula_kongzhi.py +++ b/articles_directory_predict_word_table_formula_kongzhi.py @@ -42,10 +42,10 @@ def get_host_ip(): return ip -# chatgpt_url_predict = "http://{}:12000/predict".format(str(get_host_ip())) -# chatgpt_url_search = "http://{}:12000/search".format(str(get_host_ip())) -chatgpt_url_predict = "http://{}:12000/predict".format("192.168.31.149") -chatgpt_url_search = "http://{}:12000/search".format("192.168.31.149") +chatgpt_url_predict = "http://{}:12000/predict".format(str(get_host_ip())) +chatgpt_url_search = "http://{}:12000/search".format(str(get_host_ip())) +# chatgpt_url_predict = "http://{}:12000/predict".format("192.168.31.149") +# chatgpt_url_search = "http://{}:12000/search".format("192.168.31.149") qwen_prompt = "<|im_start|>user\n{}<|im_end|>\n<|im_start|>assistant\n" qwen_think_prompt = "<|im_start|>user\n{}<|im_end|>\n<|im_start|>assistant\n\n\n\n\n" @@ -58,6 +58,14 @@ prompt = { "mulu_title_Level_3_2": "任务:生成目录\n为论文题目“%s”生成中文目录,要求只有一级标题,二级标题和三级标题,一级标题使用中文数字 例如一、xxx;二级标题使用阿拉伯数字 例如1.1 xxx;三级标题使用阿拉伯数字 例如1.1.2 xxx;一级标题生成%s个;每个一级标题包含%s-%s个二级标题;三级标题个数越多越好" } +prompt_main_content = { + "mulu_title_Level_2": "任务:生成目录\n为论文题目“%s”生成中文目录,生成目录需要参考一些关键内容:“%s”,要求只有一级标题和二级标题,一级标题使用中文数字 例如一、xxx;二级标题使用阿拉伯数字 例如1.1 xxx;一级标题生成%s个;每个一级标题包含%s个二级标题", + "mulu_title_Level_2_1": "任务:生成目录\n为论文题目“%s”生成中文目录,生成目录需要参考一些关键内容:“%s”,要求只有一级标题和二级标题,一级标题使用中文数字 例如一、xxx;二级标题使用阿拉伯数字 例如1.1 xxx;一级标题生成%s个;每个一级标题包含%s-%s个二级标题", + "mulu_title_Level_3": "任务:生成目录\n为论文题目“%s”生成中文目录,生成目录需要参考一些关键内容:“%s”,要求只有一级标题,二级标题和三级标题,一级标题使用中文数字 例如一、xxx;二级标题使用阿拉伯数字 例如1.1 xxx;三级标题使用阿拉伯数字 例如1.1.2 xxx;一级标题生成%s个;每个一级标题包含%s个二级标题;三级标题个数适中", + "mulu_title_Level_3_1": "任务:生成目录\n为论文题目“%s”生成中文目录,生成目录需要参考一些关键内容:“%s”,要求只有一级标题,二级标题和三级标题,一级标题使用中文数字 例如一、xxx;二级标题使用阿拉伯数字 例如1.1 xxx;三级标题使用阿拉伯数字 例如1.1.2 xxx;一级标题生成%s个;每个一级标题包含%s-%s个二级标题;三级标题个数适中", + "mulu_title_Level_3_2": "任务:生成目录\n为论文题目“%s”生成中文目录,生成目录需要参考一些关键内容:“%s”,要求只有一级标题,二级标题和三级标题,一级标题使用中文数字 例如一、xxx;二级标题使用阿拉伯数字 例如1.1 xxx;三级标题使用阿拉伯数字 例如1.1.2 xxx;一级标题生成%s个;每个一级标题包含%s-%s个二级标题;三级标题个数越多越好" +} + prompt_biaogekongzhi = { "prompt_1":"背景:我是一名博士生,我想写一篇论文。论文题目《{}》,目录是“{}”,我现在需要论文中有{},请根据这些信息告诉我", "prompt_1_form":"哪些小标题生成的内容需要包含表格", @@ -89,49 +97,57 @@ id_to_lable = { nums_word_dict = { "3000": { - "prompt": qwen_think_prompt.format(prompt["mulu_title_Level_2"]), + "prompt": qwen_prompt.format(prompt["mulu_title_Level_2"]), + "prompt_main_content": qwen_prompt.format(prompt_main_content["mulu_title_Level_2"]), "title_1_nums": "3", "title_2_nums": ["2"], "title_small_nums": ["3", "2"] }, "5000": { - "prompt": qwen_think_prompt.format(prompt["mulu_title_Level_2_1"]), + "prompt": qwen_prompt.format(prompt["mulu_title_Level_2_1"]), + "prompt_main_content": qwen_prompt.format(prompt_main_content["mulu_title_Level_2_1"]), "title_1_nums": "3", "title_2_nums": ["2","4"], "title_small_nums": ["3", "2","4"] }, "8000": { - "prompt": qwen_think_prompt.format(prompt["mulu_title_Level_2_1"]), + "prompt": qwen_prompt.format(prompt["mulu_title_Level_2_1"]), + "prompt_main_content": qwen_prompt.format(prompt_main_content["mulu_title_Level_2_1"]), "title_1_nums": "4", "title_2_nums": ["2", "4"], "title_small_nums": ["4", "2", "4"], }, "10000": { - "prompt": qwen_think_prompt.format(prompt["mulu_title_Level_2_1"]), + "prompt": qwen_prompt.format(prompt["mulu_title_Level_2_1"]), + "prompt_main_content": qwen_prompt.format(prompt_main_content["mulu_title_Level_2_1"]), "title_1_nums": "6", "title_2_nums": ["2", "5"], "title_small_nums": ["6", "2", "5"], }, "15000": { - "prompt": qwen_think_prompt.format(prompt["mulu_title_Level_3_1"]), + "prompt": qwen_prompt.format(prompt["mulu_title_Level_3_1"]), + "prompt_main_content": qwen_prompt.format(prompt_main_content["mulu_title_Level_3_1"]), "title_1_nums": "5", "title_2_nums": ["2", "3"], "title_small_nums": ["5", "2", "3"], }, "20000": { - "prompt": qwen_think_prompt.format(prompt["mulu_title_Level_3_1"]), + "prompt": qwen_prompt.format(prompt["mulu_title_Level_3_1"]), + "prompt_main_content": qwen_prompt.format(prompt_main_content["mulu_title_Level_3_1"]), "title_1_nums": "6", "title_2_nums": ["2", "4"], "title_small_nums": ["6", "2", "4"], }, "30000": { - "prompt": qwen_think_prompt.format(prompt["mulu_title_Level_3_1"]), + "prompt": qwen_prompt.format(prompt["mulu_title_Level_3_1"]), + "prompt_main_content": qwen_prompt.format(prompt_main_content["mulu_title_Level_3_1"]), "title_1_nums": "7", "title_2_nums": ["3", "5"], "title_small_nums": ["7", "3", "5"], }, "50000": { - "prompt": qwen_think_prompt.format(prompt["mulu_title_Level_3_2"]), + "prompt": qwen_prompt.format(prompt["mulu_title_Level_3_2"]), + "prompt_main_content": qwen_prompt.format(prompt_main_content["mulu_title_Level_3_1"]), "title_1_nums": "8", "title_2_nums": ["3", "8"], "title_small_nums": ["8", "3", "8"], @@ -183,7 +199,7 @@ def request_api_chatgpt(prompt): "content": prompt, "model": "gpt-4-turbo", "top_p": 0.95, - "temperature": 0.7 + "temperature": 0.6 } response = requests.post( chatgpt_url_predict, @@ -456,21 +472,26 @@ def biaogegongshi_kongzhi_prompt(title, mulu_list, table_and_formulas_list): prompt_biaogekongzhi["prompt3_multiple_tags"].format("&".join(lable_en), "&".join(lable_en)), ]) prompt = "任务:公式和表格生成控制\n{}".format(prompt) - prompt = qwen_think_prompt.format(prompt) + prompt = qwen_prompt.format(prompt) prompt_list.append(prompt) return prompt_list @app.route("/articles_directory", methods=["POST"]) def articles_directory(): - title = request.json["title"] # 获取用户query中的文本 例如"I love you" + title = request.json["title"] nums_catalogue = request.json["nums_catalogue"] - nums_word = request.json["nums_word"] # 获取用户query中的文本 例如"I love you" + nums_word = request.json["nums_word"] + main_content = request.json.get("main_content") table_and_formulas = request.json["table_and_formulas"] table_and_formulas_list = str(table_and_formulas).split(",") nums_catalogue = int(nums_catalogue) - keyword = tuple([title] + nums_word_dict[nums_word]["title_small_nums"]) - prompt = nums_word_dict[nums_word]["prompt"]%keyword + if not main_content: + keyword = tuple([title] + nums_word_dict[nums_word]["title_small_nums"]) + prompt = nums_word_dict[nums_word]["prompt"] % keyword + else: + keyword = tuple([title, main_content] + nums_word_dict[nums_word]["title_small_nums"]) + prompt = nums_word_dict[nums_word]["prompt_main_content"] % keyword print(prompt) input_data = [] for i in range(nums_catalogue): @@ -492,7 +513,9 @@ def articles_directory(): "catalog_list": mulu_list, "catalog_dict": results } - # log.log('text:{},'.format(prompt)) + log.log('start at', + 'text:{},results:{}'.format( + prompt, str(results))) return jsonify(data) # 返回结果 if __name__ == "__main__":