用 xml 与 LLM 做交互的想法一开始来自 OpenAI 的GPT Best Practices 最近,得到的看到有消息说是 Claude 对用 xml 标记的 prompt 做了优化。 source 看到别人试了后:
研究了下,确实好处多多。
案例1:
x1Here is an email: <email>{{EMAIL}}</email>. Make this email more {{ADJECTIVE}}. Write the new version in <{{ADJECTIVE}}_email> XML tags.
案例2:
x1帮我完成英文翻译成中文的任务,如果输入为: <Engish>text</English> 则翻译成:<Chinese>文本</Chinese>。
案例3:
x1帮我完成英文翻译成中文的任务,如果输入为: <Engish>text</English> 则你需要给我3个不同的中文翻译版本:
2<Chinese_version1>文本</Chinese_version1>
3<Chinese_version2>文本</Chinese_version2>
4<Chinese_version3>文本</Chinese_version3>
我们可能在将需求写在 xml 的 tag 上, 让 LLM 明确知道我们想要预期结果,避免 LLM 输出的时候偏离主题。 不同的需求可以很直观的用不同的tag与之对应。
比如上面的邮件改写: 上面的形容词,可以更吸引人(attractive) 也可以是 更正式(official), 或者更严肃(serious)直接替换对应的内容就行。
结构化输出的结果,让我们更容易的从输出结果中精确提到到内容,方便程序进行下一步处理:
1import re
2
3text = "经基本原则<Chinese>计算机科学家Ryan Williams(左),Rahul Ilango(中)和Shuichi Hirahara最近找到了一种算法,该算法可以比穷尽搜索更快地检查数据集的压缩。</Chinese>"
4
5pattern = re.compile(r"<Chinese>(.*?)</Chinese>")
6result = pattern.findall(text)
7
8print(result)
9## ['计算机科学家Ryan Williams(左),Rahul Ilango(中)和Shuichi Hirahara最近找到了一种算法,该算法可以比穷尽搜索更快地检查数据集的压缩。']
通过上面的正则就能很方便的提取到
相比起上面的 xml ,json,yaml需要严谨的格式, json, yaml 如果格式有问题,就无法解析,而 案例的中的xml 只要结果 包含在一个完整xml tag 内,通过简单的正则,就能正确获取到结果。
by 镜语AIGC@AI知我意