""" @author: luojunhui prompt pipeline """ import json from applications.ai import kimi_ai, tly_ai, tencent_ai # 第一步先把问题裂变 def question_fission(query): """ 问题裂变 :param query :return: """ prompt = f""" - 你是一个提问裂变器,能够将用户提供的搜索query裂变成4个不同方向的提问,以便获取更加全面的搜索结果。 - 根据搜索query:'{query}',生成5个在主题一致但方向有所差别的提问。 - 确保生成的提问简洁明了,直接输出5个问句。 - 以JSON格式输出5个问句,每个问句可以分别引用。 你拥有以下技能 - 技能1:语义理解与转换 1. 理解用户提供的搜索query的核心主题和意图。 2. 在保持主题一致的前提下,生成不同方向的提问。 - 技能2:提问生成 1. 根据原始query,生成5个不同方向的提问。 2. 确保每个提问都能引导用户获得不同的搜索结果。 - 技能3:多领域适应 1. 能够处理任何主题的搜索query。 2. 生成的提问适用于各种搜索引擎和信息检索场景。 限制 - 每次生成的提问数量固定为5个。 - 不添加额外的说明或解释,直接输出5个问句。 - 不考虑特定的关键词或排除某些关键词。 - 以JSON格式输出问句,每个问句可以分别引用。 输出格式模板 key, value分别是 "question1": "问句1", "question2": "问句2", "question3": "问句3", "question4": "问句4", "question5": "问句5" """ # print(prompt) question_dict = kimi_ai(prompt=prompt) print(type(question_dict)) try: res = json.loads(question_dict.replace("'", '"')) except: res = json.loads(question_dict) return res # 第二步搜索内容 def search_materials(question): """ 信息搜索 :param question: :return: """ response = tly_ai(prompt=question) return response def generate_text(question): """ 使用kimi生成文章 :param question: :return: """ prompt = f""" 通过给到你的这个问题:'{question}', 生成一篇小文章,文章需要有逻辑,有参考意义 """ text = kimi_ai(prompt) return text.replace("\n", "").replace("*", "").replace("#", "").replace(":", "").replace('"', "").replace("'", "") # 第三步,清洗,筛选,总结, 生成文章 def summary_articles(materials): """ 从材料中清洗,总结,并且生成文章 :param materials: :return: """ materials_ = json.loads(materials.replace("\n", "").replace("#", "")) keys = [] for key in materials_: keys.append(key) prompt = f""" # Role:信息萃取师 - 介绍:作为信息萃取师,我拥有从海量信息源中进行细致分析的能力,能找出最核心的信息点,并对其真实性进行评估。我对复杂问题的处理方式是逻辑思考者的方式,依据事实证据而非容易出错的直觉来形成结论。此外,我擅长以专业的写作技巧,有条理地组织思想和观点,确保所写内容引人入胜,并且绝不枯燥。 ## Task: - 背景:用户有各种问题想通过搜索引擎获取答案,但网络世界大量信息往往含有噪音,比如虚假、夸大、不准确等情况。 - 目标:筛选出可信信息源,并对用户的问题进行准确、专业、有效的结构化回复,且不会忽略查询的任何细节。 ## Skills: - 信息分析:根据用户的问题,从大量信息源中筛选出最关键的信息,并对其真实性进行评估。 - 逻辑思考:以事实证据为依据,而非直觉,对复杂问题进行推理和得出结论。 - 专业写作:有条理地组织思想和特殊性,确保所写内容引人入胜,语言流畅而不乏味。 ## Rules: - 操作指南:根据用户的问题,使用中文编写清晰、简洁且准确的回答。 - 限制要求:不要忽略问题的任何细节,从给定的参考资料中引述的信息需要经过论证并且不能照搬原话。 - 工作流程: 1. 根据给定的参考资料(以数字索引表示)进行阅读和分析: 材料1 标题: '{keys[0]}', 材料: '{materials_[keys[0]]}' , 材料1 标题: '{keys[1]}', 材料: '{materials_[keys[1]]}' , 材料1 标题: '{keys[2]}', 材料: '{materials_[keys[2]]}' , 材料1 标题: '{keys[3]}', 材料: '{materials_[keys[3]]}' , 材料1 标题: '{keys[4]}', 材料: '{materials_[keys[4]]}' 2. 创作回答:依照专业的写作技巧,使用汉语有条理地组织思想,写出高质量的文章 ## OutputFormat: 返回json格式,key, value如下 "title": 总结上述材料的标题, "text": 编写的文章 """ response = kimi_ai(prompt=prompt) try: response = json.loads(response.replace("\n", "")) except: response = json.loads(response.replace("'", '"')) return response['title'], response['text']