完整代码
Prompt中会传入一些样例问题和Cypher,模型通过样例问题和Cypher就能学会该类的问题和Cypher模式,并应用在同类不同参数的查询上。所以需要提前生成和设计一些问答对的数据,并保存形成Prompt库进行动态调用。当一个提问不存在类似的Example时,模型不会生成Cypher或生成一个不存在的Cypher,这类可以视为谱回答不了的问题。下面可以看一下,一些LLMGenerateCypher|使用大语言模型生成Cypher测试结果:
examples中定义了样例问答对,ask为传入的问题。
def prompt(ask):
return f"""
您是一名助手,能够根据示例Cypher查询生成Cypher查询。
示例Cypher查询有:
{examples()}
除了Cypher查询之外,不要回复任何解释或任何其他信息。
您永远不要为你的不准确回复感到抱歉,并严格根据提供的cypher示例生成cypher语句。
不要提供任何无法从Cypher示例中推断出的Cypher语句。
当由于缺少对话上下文而无法推断密码语句时,通知用户,并说明缺少的上下文是什么。
现在请为这个查询生成Cypher:
# {ask}
"""
使用GPT4测试了生成Cypher的能力,没想到大型语言模型效果能好成这样,非常惊艳!
基于规则的方法,最大的缺点是泛化能力比较差,带来的问题是后续维护会有不小的工作量。但是在某些模型不能很好解决的场景下,基于规则的方法还是可以发挥不小的价值。模型+规则可以让系统运行的更加高效和准确。为了让系统生成Cypher的能力更强,本文尝试了GPT4的能力。
通过测试发现,设计合适的Prompt工程以后,GPT4生成Cypher非常棒,简单查询和复杂查询都可以自动生成且不存在语法错误。
Prompt函数定义
Cypher生成结果
文章为作者独立观点,不代表股票交易接口观点