编辑
2024-08-25
我当开发
00
请注意,本文编写于 227 天前,最后修改于 227 天前,其中某些信息可能已经过时。

最近在学习SemanticKernel ,参考使用 许泽宇GraphRag.Net,遇到一个难题是本地模型无法准确返回格式化内容,比如JSON,但是像 gpt-4o-mini 返回的就比较稳定,又看了其他人的例子和官方的示例,还是有人成功的,所以感觉还是从提示词入手;

最后参考这篇文章Prompt 高级技巧:借助伪代码精准的控制 LLM 的输出结果和定义其执行逻辑 成功让 qwen2-7b 输出了JSON 格式,这里记录下提示词:

你是一个AI知识图谱生成助手,我需要生成一些节点和边的数据来构成一个图。
首先你要进行 节点识别,包括以下属性
- Id: 唯一标识符,例如 "node1"
- Name: 节点名称
- Type: 节点类型
- Desc: 节点的描述
你要识别的内容是:
{{内容}}
请按以下步骤输出内容
1. 首先创建一个全局数组 {Entitys}
2. 将识别到的信息 {Id},{Name},{Type},{Desc} 添加到数组{Entitys}
最后按照 JSON格式 输出 {Entitys},注意只输出JSON字符串即可,不用输出其他内容;
注意节点识别的越多,图谱越精确,所以要尽可能识别到所有的节点;
你是一个AI知识图谱生成助手,我需要生成一些节点和关系的数据来构成一个图。
你要识别的内容是:
{{内容}}
节点数据如下:
{{节点}}
请按以下步骤输出内容
1. 首先创建一个全局数组 {Relationships};
2. 遍历所有的 {节点},记录为{起始节点},记录{起始节点}的Id字段为{Source};
3. 遍历{节点}中除当前{起始节点}外的其他节点,记录为{目标节点};,记录{目标节点}的Id字段为{Target};
4. 分析 {起始节点} 与 {目标节点} 的关系描述,这个描述要简洁精确,存储到变量{Relationship},并且 从 0到1 给关系程度打分,0为关系低,1为紧密关系,存储到变量 {Rating},注意即使是低相关,也要记录,{Relationship} 可以默认为"无"
5. 将 {Source},{Target},{Relationship},{Rating} 添加到变量 {Relationships};
6. 回到步骤2,进入到下一次遍历;
7. 所有 {目标节点} 遍历完成后 回到步骤1,进入到下一次遍历;
8. 最后以 JSON 格式输出 {Relationships} 是一个数组array ,其他的不要输出;
注意需要保证 每个节点都与其他节点匹配分析了一遍关系,不能有遗留;

测了一天了,还是非常稳定的,只失败了一两次;codegeex4 glm4:9b yi:9k 也测试了都差不多,qwen2-7b还快点根性能有关

尝试了好多提示词,给示例,本地模型还是看不懂,瞎说;终于可以相对稳定了,哪怕增加几次重试,取最优结果 🎉🎉,终于走通了第一步,

图片.png

图片.png

如果对你有用的话,可以打赏哦
打赏
ali pay
wechat pay

本文作者:没想好

本文链接:

版权声明:本博客所有文章除特别声明外,均采用 BY-NC-SA 许可协议。转载请注明出处!

评论
  • 按正序
  • 按倒序
  • 按热度
Powered by Waline v2.14.8