由 Llama 3.1 驱动的代理人:测试函数调用功能

探索 Llama 3.1 在函数调用和工具使用方面的功能。了解如何利用 LangTrace 等可观察性工具来监控 LLM 性能。发现不同 Llama 模型大小在复杂任务处理方面的优势和局限性。

2025年2月24日

party-gif

解锁 Llama 3.1 的强大功能,了解其函数调用能力。发现这种尖端语言模型如何被用作智能代理,与 API 无缝集成,解决复杂任务。探索可观察性方面,深入了解模型的性能,为您的下一个项目做出明智决策。

Llama 3.1 和 Meta 的代理系统的功能

梅塔在发布 Llama 3.1 时强调的关键功能之一是函数调用或工具使用。作者想要对这一功能进行测试。

作者首先设置了必要的工具和 API,包括提供与 Llama 3.1 交互最快 API 之一的 Groq API。他们测试了 700 亿和 80 亿 Llama 3.1 模型,以及 700 亿模型的 Groq 特定微调版本。

作者从一个简单的单一函数调用示例开始,然后转向涉及并行和嵌套函数调用的更复杂场景。他们使用 LangTrace 可观察性平台跟踪实验过程中的令牌使用和其他指标。

结果显示,700 亿 Llama 3.1 模型表现非常出色,能够有效处理并行和嵌套函数调用。80 亿模型在更复杂的任务中表现不佳,而 Groq 特定微调模型表现最差,通常需要用户提供更多信息或澄清。

总的来说,作者得出结论,700 亿 Llama 3.1 模型是用于严肃函数调用或代理用例的最佳选择,在这方面展现了令人印象深刻的能力。作者还强调了 LangTrace 可观察性平台在跟踪和理解这类实验中大型语言模型行为方面的有用性。

为可观察性设置 LangTrace

在这一部分,我们将设置 LangTrace,这是一个用于 LLM 应用程序的开源和开放遥测可观察性平台。LangTrace 允许我们跟踪本地环境和 LLM API 之间通信的请求和令牌数量。

首先,我们需要安装所需的软件包,包括 LangTrace Python SDK、Groq Python SDK 和 OpenAI Python SDK(尽管我们不使用 OpenAI LLM,但它是 LangTrace SDK 的依赖项)。

接下来,我们设置 API 密钥。对于这个实验,我们不严格需要 LangTrace,但它可以提供有关我们令牌使用情况的有价值的见解。LangTrace 在功能上类似于 LangChain 的 LangSmith 可观察性平台,但它支持更广泛的供应商,包括 OpenAI、Groq、Cohere 和 Perplexity。

我们将使用 LangTrace 的云托管版本,因此需要创建一个新帐户和项目。一旦我们有了 API 密钥,就可以将其添加为笔记本中的机密。

设置完成后,我们可以开始使用 LangTrace 来观察在使用 Groq LLM API 进行函数调用实验期间的令牌使用和其他指标。LangTrace 将为我们提供有关交换的令牌数量和相关成本(如果适用,因为 Groq 不收取 API 使用费用)的详细信息。

通过使用 LangTrace,我们可以获得有关 LLM 驱动应用程序的性能和效率的宝贵见解,这在测试并行和嵌套函数调用等高级功能时特别有用。

使用 Llama 3.1 70B 和 8B 模型测试函数调用

作者首先强调了梅塔在 Llama 3.1 中发布了一个围绕函数调用的代理系统。由于作者没有在本地设置该系统,他们决定使用 Groq API,这提供了与 Llama 3.1 交互的最快 API 之一。

作者测试了 70 亿和 8 亿 Llama 3.1 模型,以及 70 亿模型的 Groq 特定微调版本。他们使用 LangTrace 这个开源可观察性平台来跟踪本地环境和 LLM API 之间交换的请求和令牌数量。

作者从一个简单的示例开始,模型需要使用"获取比分"函数来确定 NBA 比赛的获胜者。70 亿模型成功完成了这项任务,作者检查了 LangTrace 数据以了解内部机制。

接下来,作者测试了模型处理并行函数调用的能力,用户要求获取天气、航班、酒店和景点相关信息。70 亿模型能够分解初始提示,进行并行函数调用,并生成综合响应。然而,8 亿模型在这项任务中表现不佳,产生了幻觉信息并无法提供完整的响应。

作者接着引入了一个更复杂的场景,用户想要从纽约到伦敦再到东京的行程规划,包括天气、航班、酒店和景点。同样,70 亿模型表现出色,而 8 亿模型则有困难。

最后,作者测试了 Groq 特定微调的 70 亿模型,令人惊讶的是,它甚至在简单的"获取比分"任务中也表现不佳,反复要求更多具体细节,而不是使用提供的函数。

总之,作者发现 70 亿 Llama 3.1 模型在函数调用和工具使用方面是最佳选择,能够处理并行和嵌套函数调用。相比之下,8 亿模型不适合用于严肃的函数调用任务。Groq 特定微调模型在作者的测试中也表现不佳。

并行函数调用和嵌套顺序函数调用

Llama 3.1 模型,特别是 70 亿版本,在处理并行函数调用和嵌套顺序函数调用方面展现了令人印象深刻的能力。

当面对从纽约到巴黎的复杂行程规划提示,包括查看天气、找到航班、酒店和景点时,70 亿模型能够分解任务并进行并行函数调用来收集所需信息。它然后将来自各种函数的结果组合,提供了对行程细节的综合总结。

该模型还展示了处理嵌套函数调用的能力,其中一个函数的输出被用作另一个函数的输入。在电影推荐场景中,模型能够首先根据用户的偏好选择一部电影,然后推荐合适的零食和流媒体平台观看电影。

相比之下,较小的 8 亿 Llama 3.1 模型在这些更高级的用例中表现不佳。当被要求处理并行函数调用或嵌套函数调用时,它无法持续提供准确和完整的响应。该模型经常产生幻觉信息或无法有效利用提供的工具。

此外,来自 Groq 的专门函数调用模型在测试中也表现不佳,未能正确利用提供的函数,需要用户提供更具体的输入。

总的来说,70 亿 Llama 3.1 模型在处理涉及并行和嵌套函数调用的复杂多步骤任务方面展现了强大的能力,展示了其作为一个有能力代理系统的潜力。然而,较小的 8 亿模型和 Groq 函数调用模型在这些领域仍有待改进。

Llama 3.1 8B 模型在函数调用方面的挣扎

与 70 亿模型相比,Llama 3.1 8 亿模型在更复杂的函数调用任务中表现明显较差。一些关键观察结果:

  • 对于简单的"获取比分"函数,8 亿模型能够像 70 亿模型一样处理它,没有问题。

  • 但是,当涉及到行程规划等并行函数调用任务时,8 亿模型就失败了。它无法提供关于天气、航班、酒店和景点的综合信息,经常产生幻觉细节或无法列出可用选项。

  • 随着功能集的扩展,8 亿模型的困难程度更加加剧,产生了关于未请求的事件和天气细节的幻觉信息。

  • 8 亿模型在电影推荐任务的嵌套函数调用中也有困难。它无法有效地使用提供的工具,而是直接建议电影。

  • 来自 Groq 的专门函数调用模型在测试中也表现不佳,经常要求更多具体细节,而不是有效利用提供的工具。

相比之下,Llama 3.1 70 亿模型在处理并行和嵌套函数调用方面展现了更强大的能力,提供了全面和准确的响应。8 亿模型似乎还没有准备好用于严肃的函数调用或代理类任务,而 Groq 专门模型在这些测试中也表现不佳。

对于这些 LLM 函数调用的可观察性和跟踪,开源的 LangTrace 平台被证明是一个有用的工具,可以监控令牌使用和 API 交互。

Groq 针对函数调用微调的 Llama 3 模型

与 70 亿 Llama 3.1 模型相比,Groq 微调的 Llama 3 函数调用模型在测试中表现较差。一些关键发现:

  • 当被要求提供勇士队的比分时,该模型要求更多具体细节,如日期或对手球队,而不是使用提供的"获取比分"函数。
  • 对于行程规划请求,该模型反复要求更多具体细节,如旅行日期,而不是使用提供的函数生成响应。
  • 对于电影之夜推荐任务,该模型难以使用嵌套函数,经常直接提供电影推荐。

总的来说,Groq 微调的 Llama 3 模型在函数调用和工具使用测试中的表现不如 70 亿 Llama 3.1 模型。70 亿模型在并行和嵌套函数调用方面展现了强大的能力,而微调模型似乎难以利用提供的工具和函数。可能需要进一步优化或微调 Groq 模型,才能与更大的 Llama 3.1 版本在这类任务上的性能相匹配。

结论

Groq 的 700 亿 LLAMA 3.1 模型在函数调用和工具使用测试中表现出色。它能够轻松处理并行函数调用以及嵌套函数调用,展现了其作为代理系统的强大能力。

相比之下,80 亿 LLAMA 3.1 模型在这些更复杂的任务中表现不佳,突出了对于此类应用程序使用更大更强大的语言模型的重要性。

然而,来自 Groq 的专门函数调用模型的表现并没有达到预期,即使有提供示例。这表明该模型的微调过程可能并不太有效。

对于可观察性和跟踪目的,开源的 LangTrace AI 平台被证明是一个有价值的工具,在实验期间提供了有关语言模型令牌使用和 API 调用的详细见解。

总的来说,结果展示了像 LLAMA 3.1 这样的大型语言模型在函数调用和工具使用方面的潜力,但也突出了需要继续研究和开发,以提高较小和专门模型在这一领域的能力。

FAQ