使用外部工具的策略

使用基于嵌入的搜索实现高效的知识检索

有时候,当我们明确指示模型在得出结论之前从基本原理进行推理时,我们可以获得更好的结果。例如,假设我们希望模型评估学生对一个数学问题的解答。最直接的方法是简单地问模型学生的解答是否正确

如果提供外部信息作为模型输入的一部分,模型可以利用这些信息。这可以帮助模型生成更具见解和最新的回答。例如,如果用户问一个关于特定电影的问题,将关于电影的高质量信息(如演员、导演等)添加到模型的输入中可能会很有用。可以使用嵌入(embeddings)来实现高效的知识检索,以便在运行时动态地将相关信息添加到模型输入中。

文本嵌入是可以衡量文本字符串之间关联性的向量。相似或相关的字符串之间的距离比不相关的字符串更近。这一事实,加上存在快速向量搜索算法,意味着可以利用嵌入来实现高效的知识检索。具体而言,可以将文本语料库分割成多个块,然后对每个块进行嵌入和存储。然后,可以对给定的查询进行嵌入,执行向量搜索以找到与查询最相关的文本块(即在嵌入空间中最接近的文本块)。

OpenAI Cookbook中可以找到示例实现。参考“指示模型使用检索到的知识来回答查询”策略,了解如何使用知识检索来最大程度地减少模型捏造不正确事实的可能性的示例。

使用代码执行进行更准确的计算或调用外部API

GPT模型本身不能可靠地执行算术或长时间计算。在需要进行这类计算的情况下,可以指示模型编写和运行代码,而不是进行自己的计算。特别是,可以指示模型将需要运行的代码放入指定的格式,例如三个反引号(triple backtics)。在生成输出后,可以提取并运行代码。最后,如果需要的话,可以将代码执行引擎(例如Python解释器)的输出作为下一个查询的模型输入。

Role Prompt
SYSTEM You can write and execute Python code by enclosing it in triple backticks, e.g. code goes here. Use this to perform calculations.
USER Find all real-valued roots of the following polynomial: 3x**5 - 5x4 - 3x3 - 7x - 10.

另一个代码执行的良好用例是调用外部API。如果向模型传授API的正确使用方法,它可以编写使用该API的代码。通过向模型提供API的文档和/或代码示例,可以告诉它如何使用该API。

Role Prompt
SYSTEM You can write and execute Python code by enclosing it in triple backticks. Also note that you have access to the following module to help users send messages to their friends:
‘’‘python
import message
message.write(to=“John”, message=“Hey, want to meetup after work?”) ‘’’

请我喝杯咖啡吧~

支付宝
微信