|
@@ -1,6 +1,6 @@
|
|
# -*- coding: utf-8 -*-
|
|
# -*- coding: utf-8 -*-
|
|
|
|
|
|
-from gpt.chatgpt import get_answer_from_gpt
|
|
|
|
|
|
+from gpt.chatgpt import get_answer_from_gpt,get_article_gpt_pydantic
|
|
from gpt.gpt_check import CheckGptAnswer, CheckArticleResult
|
|
from gpt.gpt_check import CheckGptAnswer, CheckArticleResult
|
|
from tools.new_mysql import MySQLUploader
|
|
from tools.new_mysql import MySQLUploader
|
|
from tools.loglog import logger, log_err_e
|
|
from tools.loglog import logger, log_err_e
|
|
@@ -189,7 +189,7 @@ class GetArticle:
|
|
extend_words_meaning_str = ";".join([str(i['meaning_id']) + ' ' + i["spell"] + ":" + i["meaning"] for i in extend_words])
|
|
extend_words_meaning_str = ";".join([str(i['meaning_id']) + ' ' + i["spell"] + ":" + i["meaning"] for i in extend_words])
|
|
|
|
|
|
no_escape_code = r"\\n\\n"
|
|
no_escape_code = r"\\n\\n"
|
|
- json_model = r'{"difficultSentences":[{"english":"string","chinese":"string"}],"usedMeanIds":[0,0,0],"englishArticle":"string","chineseArticle":"string","questions":[{"trunk":"string","analysis":"string","candidates":[{"label":"string","text":"string","isRight":0}]}]}'
|
|
|
|
|
|
+
|
|
sys_prompt = "你是一个专业的英语老师,擅长根据用户提供的词汇生成对应的英语文章和中文翻译和4个配套选择题。"
|
|
sys_prompt = "你是一个专业的英语老师,擅长根据用户提供的词汇生成对应的英语文章和中文翻译和4个配套选择题。"
|
|
q = f"""下面我会为你提供两组数据,[单词组1]和[单词组2](里面包含词义id,英语单词,中文词义),优先使用[单词组1]内的单词,请根据这些单词的中文词义,\
|
|
q = f"""下面我会为你提供两组数据,[单词组1]和[单词组2](里面包含词义id,英语单词,中文词义),优先使用[单词组1]内的单词,请根据这些单词的中文词义,\
|
|
生成一篇带中文翻译的考场英语文章,英语文章和中文翻译要有[标题]。注意这个单词有多个词义时,生成的英语文章一定要用提供的中文词义。并挑选一句复杂的句子和其中文翻译,放入difficultSentences。\
|
|
生成一篇带中文翻译的考场英语文章,英语文章和中文翻译要有[标题]。注意这个单词有多个词义时,生成的英语文章一定要用提供的中文词义。并挑选一句复杂的句子和其中文翻译,放入difficultSentences。\
|
|
@@ -202,7 +202,6 @@ class GetArticle:
|
|
3.文章中使用提供单词,一定要和提供单词的中文词义匹配,尤其是一词多义时,务必使用提供单词的词义。必须要用提供单词的词义。如果用到的词义与提供单词词义不一致,请不要使用这个单词。
|
|
3.文章中使用提供单词,一定要和提供单词的中文词义匹配,尤其是一词多义时,务必使用提供单词的词义。必须要用提供单词的词义。如果用到的词义与提供单词词义不一致,请不要使用这个单词。
|
|
4.生成的文章要求{select_word_count}词左右,可以用{no_escape_code}字符分段,一般{select_paragraph_count}个段落左右。第一段是文章标题。
|
|
4.生成的文章要求{select_word_count}词左右,可以用{no_escape_code}字符分段,一般{select_paragraph_count}个段落左右。第一段是文章标题。
|
|
5.生成文章优先使用[单词组1]的词义,其次可以挑选使用[单词组2]的词义。允许不使用[单词组1]的个别单词,优先保证文章整体意思通顺连贯和故事完整。
|
|
5.生成文章优先使用[单词组1]的词义,其次可以挑选使用[单词组2]的词义。允许不使用[单词组1]的个别单词,优先保证文章整体意思通顺连贯和故事完整。
|
|
-6.回复紧凑无空格的json数据,示例:{json_model}
|
|
|
|
|
|
|
|
提供[单词组1]:{core_words_meaning_str};
|
|
提供[单词组1]:{core_words_meaning_str};
|
|
提供[单词组2]:{extend_words_meaning_str};
|
|
提供[单词组2]:{extend_words_meaning_str};
|
|
@@ -210,9 +209,11 @@ class GetArticle:
|
|
try:
|
|
try:
|
|
real_ip = self.real_ip_dict[task_id]
|
|
real_ip = self.real_ip_dict[task_id]
|
|
demo_name = self.demo_name[task_id]
|
|
demo_name = self.demo_name[task_id]
|
|
- r_json = json.loads(get_answer_from_gpt(q, temperature=1, json_resp=True, real_ip=real_ip, demo_name=demo_name, model='gpt-4.1',
|
|
|
|
- check_fucn=CheckArticleResult.get_article_1, max_tokens=8000, sys_prompt=sys_prompt))
|
|
|
|
|
|
+
|
|
|
|
+
|
|
|
|
|
|
|
|
+ r_json = json.loads(get_article_gpt_pydantic(q, temperature=0.9, real_ip=real_ip, demo_name=demo_name, model='gpt-4.1',
|
|
|
|
+ max_tokens=4000, sys_prompt=sys_prompt))
|
|
|
|
|
|
allWordAmount = 0
|
|
allWordAmount = 0
|
|
allWordAmount += len(split_text_to_word(r_json["englishArticle"]))
|
|
allWordAmount += len(split_text_to_word(r_json["englishArticle"]))
|