123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132 |
- """
- @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']
|