策略:使用外部工具
技巧:使用基于嵌入的搜索实现高效知识检索
模型可以通过利用作为输入的一部分提供的外部信息,生成更加准确和及时的回应。例如,如果用户提问有关某部特定电影的问题,将该电影的高质量信息(如演员、导演等)添加到模型输入中可能很有帮助。嵌入技术可以用于高效地检索知识,因此可以在运行时动态地将相关信息添加到模型输入中。
文本嵌入是一种向量,能够衡量文本字符串之间的相关性。相关或相似的字符串在嵌入空间中会比不相关的字符串更靠近。这一事实,加上快速向量搜索算法的存在,意味着可以使用嵌入来实现高效的知识检索。具体而言,可以将文本语料库分割成多个块,对每个块进行嵌入处理并存储。然后,可以对特定查询进行嵌入处理,并进行向量搜索,以找到语料库中与查询最相关的嵌入文本块(即在嵌入空间中位置最接近的)。
在 OpenAI Cookbook 中,你可以找到一些实用的实现示例。想了解如何利用知识检索技术减少模型产生错误信息的风险,不妨看看 “教模型用检索到的知识回答问题” 这个实用技巧。
技巧:利用代码执行进行精确计算或调用外部 API
仅凭语言模型自身,我们不能指望它准确完成算术或复杂计算。在需要精确计算的场合,我们可以让模型编写并运行代码,而不是自行计算。特别是,我们可以让模型将要执行的代码放在特定的格式里,比如三个反引号。代码运行后产生的输出可以被提取并执行。必要时,还可以将代码执行引擎(比如 Python 解释器)的输出作为下一步查询的输入。
系统 | 你可以通过用三个反引号包裹 Python 代码来编写并执行代码,例如 ```code goes here```。这种方式适用于需要进行计算的情况。 |
用户 | 求解以下多项式的所有实数解:3*x*5 - 5\x*4 - 3\x*3 - 7\x - 10。 |
另一个使用代码执行的好场景是调用外部 API。如果模型掌握了正确的 API 使用方法,它就能编写调用这些 API 的代码。我们可以通过提供相关文档和代码示例来指导模型如何使用 API。
系统 | 你可以通过用三个反引号包裹 Python 代码来编写并执行代码。此外,你还可以使用以下模块帮助用户向朋友发送消息: ```python import message message.write(to=”John”, message=”Hey, want to meetup after work?”) ``` |
警告:由模型生成的代码执行可能存在安全风险,因此,在任何计划中使用此类代码时必须采取预防措施。特别重要的是,需要一个隔离的代码执行环境,以降低不受信任代码可能带来的风险。
技巧:使模型能够访问特定功能
Chat Completions API 允许在请求中传递函数的描述。这样,模型就可以生成符合这些描述的函数参数。这些参数以 JSON 格式由 API 返回,并可以用于执行函数调用。函数调用的结果可以再次输入到模型中,形成一个闭环。这是利用 OpenAI 模型来执行外部函数调用的推荐方法。想了解更多信息,请参阅我们的入门文本生成指南中的函数调用部分和 OpenAI Cookbook 中的更多函数调用示例。