跳转到主要内容
Chinese, Simplified

category

介绍


在自然语言处理和会话人工智能的快速发展中,在语言模型中执行函数调用的能力已成为扩展其功能的强大工具。OpenAI的API一直处于这一开发的前沿,为函数调用提供了标准化协议。然而,如果您想利用大猩猩llm/gorilla-openfunctions-v2这样的本地语言模型来利用函数调用的功能,该怎么办?在本文中,我们将探索一种弥合这一差距的Python实现,允许您将gorillallm/gorilla-openfunctions-v2与OpenAI函数调用协议一起使用。

挑战


虽然OpenAI的API提供了无缝的函数调用功能,但将此功能与gorilla-llm/gorilla-openfunctions-v2等本地语言模型集成起来是一个挑战。本地模型可能不支持OpenAI协议,因此很难通过不遵循业务解决方案和社区采用的标准来利用良好的系统/代码可维护性带来的好处。这就是我们的Python实现发挥作用的地方。

解决方案


为了应对这一挑战,我开发了一个Python包装器,作为OpenAI API客户端和gorilla-llm/gorilla-openfunctions-v2本地语言模型之间的中介。通过为gorilla llm/gorilla-openfunctions-v2提供一个模拟OpenAI聊天完成协议的引擎(如TGI拥抱脸、Vllm、Aphrodite引擎或其他),我们可以拦截本地模型的输入和输出,并操纵数据,用我们从伟大的gorilla Open Functions v2中获得的函数调用推理的神奇酱汁来附加/重新格式化引擎响应。

当用户与包装的客户端交互时,包装器首先处理用户的输入,并注入必要的函数规范和特殊模型的标记。然后将此修改后的输入传递给本地引擎进行处理。本地引擎基于给定的输入和它自己的知识生成响应。收到生成的响应后,包装器会对其进行分析,寻找与所提供的函数规范匹配的任何函数调用。如果找到函数调用,包装器会提取相关信息,如函数名称和参数,并根据OpenAI协议对其进行格式化。

最后,包装器返回经过调整的响应,其中包括原始响应内容以及任何已识别的函数调用及其相应的参数。这允许用户接收与OpenAI函数调用协议兼容的响应,即使底层模型是本地模型。

GitHub存储库


要深入了解实现并探索代码,请访问我们的GitHub存储库:带有OpenAI函数调用协议的本地gorilla-openfunctions-v2。存储库包含Python实现,有一个简单的例子,因为解决方案非常简单。

虽然当前的实现提供了一个简单高效的解决方案,但LLM输出的解析器仍有改进的空间。使用的引擎输出的现有结构(TGI、Vllm、Aphrodite或其他)可以重复使用,因为它们已经模仿了OpenAI协议,而不是完全从头开始创建响应对象。这是一个欢迎社区作出贡献的领域。

结论


通过利用这种Python简单实现的强大功能,开发人员现在可以将函数调用功能无缝集成到gorillallm/gorilla-openfunctions-v2本地语言模型中,为扩展其功能开辟了新的可能性。我们邀请您探索存储库,试用代码,并为其开发做出贡献。

敬请关注自然语言处理和对话人工智能世界中更令人兴奋的发展!别忘了跟在后面,用小手拍一下

原文地址
https://blog.cubed.run/enabling-function-calling-with-gorilla-llm-gorilla-openfunctions-v2-using-the-openai-protocol-355492d0587d
本文地址
Article

微信

知识星球

微信公众号

视频号