复杂提示词配置文件

当对简单提示词模板进行管理时,只需要使用上python的"""特性即可:

maohao_prompt = """写一个关于一位{type}的故事{other_description}。
  故事背景:{story_setting}。
  要求:
  - 故事中至少包含一个非人类角色。
  - 故事的结局要有出人意料的反转。
  - 角色对话要使用俚语。"""

之后进行填充:

print(maohao_prompt.format(type="侦探", other_description=",他失忆了,并且必须解决自己的案件", story_setting="在一个反乌托邦的赛博朋克城市"))

但是当我们的提示词需要不断地更改时,这种形式就不方便修改后即使查看。这个时候可以使用yaml文件进行存储,yaml库是第三方库需要先安装:

pip install pyyaml

prompts.yaml文件内写入:

prompt_name: advanced_story_generation
version: 1.1
author: AI_Assistant

# 核心提示词内容
storyPrompt: |-
  写一个关于一位{type}的故事{other_description}。
  故事背景:{story_setting}。
  要求:
  - 故事中至少包含一个非人类角色。
  - 故事的结局要有出人意料的反转。
  - 角色对话要使用俚语。

elainaPrompt: |-
  伊蕾娜的风格通常是:
  第一人称叙事:她以自己的视角讲述故事。
  观察者角色:她通常不会过多干预,而是记录和旁观她所遇到的各种人和事。
  带着一些傲慢和自恋:她经常会夸赞自己的美貌和魔法才能。
  简洁而富含哲理:她的故事往往短小精悍,结尾常常伴随着一句富有深意的话。
  轻松的、旅行者的口吻:就像在写日记或游记。
  伊蕾娜风格的提示词模板
  “你好。没错,我就是你眼前的这位旅人,人称‘灰之魔女’的伊蕾娜。我在旅途中见证了各种各样的事情,美好的、残酷的、平淡的。现在,请你为我讲述一段新的旅程。
  [故事背景]
  请描述我来到一个名为 {location} 的地方。这个地方有何独特之处?这里的人们有什么特别的风俗习惯?
  [核心事件]
  在这个地方,我偶然遇到了一件 {event}。
  请描述这个事件的起因和经过。我作为一名旅人,是如何观察到这一切的?我可能与事件中的某个角色进行了简短的交谈,但请记住,我通常只是旁观者,不会主动介入。
  [故事结局]
  这个事件的结局是 {outcome}[伊蕾娜的结语]
  最后,请用我的风格,以一句话总结这段旅程。这句话应该简洁、略带自恋,并包含一些对人性和世事的思考。例如:
  “好了,下一站去哪儿呢?旅途还很漫长,我的故事也才刚刚开始。”
  “真是个有趣的地方。不过,我可没时间一直留在这里。”
  “世间万物,总有其美妙之处,但有些事,还是不要深究为好。”

yaml文件中:

  • |:保留换行符。会把多行文本原封不动地存储为字符串,包括输入的每一个换行。默认文本末尾保留一个换行符。
  • |-:保留换行符,同|,但是默认文本末尾无多余换行符。
  • >:折叠换行符。会将连续的换行符替换为一个空格,而将空行(两个连续的换行符)替换为单个换行。

导入文件:

import yaml

with open('prompts.yaml', 'r', encoding='utf-8') as file:
    prompts = yaml.safe_load(file)

结合python的format方法动态填充模板:

storyPrompt = prompts['storyPrompt']
type = "侦探"
other_description = ",他失忆了,并且必须解决自己的案件"
story_setting = "在一个反乌托邦的赛博朋克城市"
print(storyPrompt.format(type=type, other_description=other_description, story_setting=story_setting))

elainaPrompt = prompts['elainaPrompt']

print(elainaPrompt.format(location="全是魔法植物的城镇", event="一个被施了恶咒的古老雕像", outcome="雕像的诅咒被打破了"))

如果更加复杂,仅仅动态填充难以实现,那么可能需要结合上函数或者Jinja2来进行实现。

Jinia2是用{{}}进行占位,有比python的format更加丰富的功能。

### 关于 LightRAG 提示词解决方案 LightRAG 是一种基于图结构索引和双层检索机制的检索增强生成系统,其设计目标是提升大型语言模型的信息检索准确性与效率[^2]。为了更好地利用 LightRAG 并解决与其相关的提示词问题,可以考虑以下几个方面的内容: #### 1. **提示词优化** 提示词的设计对于 LightRAG 的表现至关重要。由于 LightRAG 能够捕捉实体间复杂的依赖关系并提供相关性强的结果,因此可以通过以下方式来优化提示词: - 明确指定查询的目标领域或主题范围。 - 结合具体的上下文信息以减少歧义。 - 利用自然语言描述的方式引导模型生成更精确的内容。 例如,在构建提示词时可采用如下模板: ```plaintext "请根据给定的知识库,针对 {具体话题} 进行分析,并结合 {背景条件} 给出结论。" ``` 这种形式化的表达有助于提高系统的理解和响应能力。 #### 2. **使用方法** 要有效使用 LightRAG 处理提示词问题,需遵循一定的流程和技术要点: - 配置好基础环境,包括加载预训练好的 RAG 模型以及初始化必要的参数配置文件。 - 准备高质量的数据集作为输入源,这些数据应经过清洗、标注以便形成有效的图谱表示。 下面是一个简单的 Python 示例展示如何调用 LightRAG API 来解决问题: ```python from light_rag import LightRAGModel, GraphIndexBuilder # 初始化模型组件 model = LightRAGModel(pretrained_model_path="path/to/pretrained/model") # 构建图索引 graph_index_builder = GraphIndexBuilder() knowledge_graph = graph_index_builder.build_from_data(data_source) # 执行推理过程 query = "什么是量子计算?" response = model.generate(query=query, knowledge_base=knowledge_graph) print(response) ``` 上述脚本展示了从加载模型到执行实际查询的整体逻辑链条。 #### 3. **常见问题及应对策略** 当遇到特定类型的错误或者不理想输出时,可以根据具体情况采取相应措施调整提示词及其关联设置: - 若发现返回结果不够聚焦,则尝试细化提问角度或将更多限定条件加入其中; - 对于涉及多步推理的任务来说,分阶段拆解成若干子任务分别求解往往更加可行; 此外值得注意的是,尽管 LightRAG 支持动态更新功能从而具备较强灵活性,但在初次部署期间仍建议充分测试各种边界情况确保稳定性[^1]。 ---
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

田乐蒙

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值