为了弥补模型的不足,我们可以利用其他工具的输出作为输入。例如,文本检索系统(如 RAG 或检索增强生成系统)可以向模型提供相关文档的信息。像 OpenAI 的代码执行引擎这样的工具,可以帮助模型进行数学运算和代码执行。如果某项任务通过工具来完成比通过语言模型更可靠或高效,那么就应将任务交给该工具处理,从而结合两者长处,达到最佳效果。

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

模型可以通过利用作为输入的一部分提供的外部信息,生成更加准确和及时的回应。例如,如果用户提问有关某部特定电影的问题,将该电影的高质量信息(如演员、导演等)添加到模型输入中可能很有帮助。嵌入技术可以用于高效地检索知识,因此可以在运行时动态地将相关信息添加到模型输入中。

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

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 中的更多函数调用示例

声明:本站所有文章,如无特殊说明或标注,均为本站原创发布。任何个人或组织,在未征得本站同意时,禁止复制、盗用、采集、发布本站内容到任何网站、书籍等各类媒体平台。如若本站内容侵犯了原著者的合法权益,可联系我们进行处理。