当前的大模型流行趋势,正从提供文本聊天的简单聊天机器人转向能够使用工具来执行任务的AI代理。这些AI代理的关键组件是调用和执行外部API、工具和函数的能力,通常称为“工具调用”或“函数调用”。AI代理使用大语言模型(LLMs)作为推理引擎,以决定何时及如何调用工具来完成任务或检索更多信息, 并因此可以利用外部的实时数据和系统来帮助工作。根据我们的经验,使用现有的开放权重的LLMs(如阿里的Qwen或微软的Phi-3)进行工具调用在代理框架(agent framework)中表现不佳,无法满足精确执行任务的要求。
尽管OpenAI、Anthropic、Cohere、Google和Alibaba等主要云LLM提供商已经提供了函数调用功能,但在开放权重模型中,这一功能仍未得到充分发展。因此,LLM的应用开发者不得不依赖不稳定的prompt engineering(提示词工程)。基于此,我们决定进一步训练这些模型。
Rubra v0.1引入了对顶级开放权重大语言模型的工具调用,包括:
-
Alibaba Qwen2 7B Instruct
-
Meta Llama3 8B
-
Meta Llama3 70B
-
Google Gemma 1.1 2B
-
Mistral 7B Instruct v0.3
-
Mistral 7B Instruct v0.2
-
Microsoft Phi Mini 128k Instruct
这些模型中,Qwen2(通义千问)对中文和英文都有着良好支持, 而其余模型主要支持英文。
此外,我们扩展了流行的推理库vLLM和llama.cpp,让部署运行Rubra模型足够简单,并支持OpenAI格式工具调用。
我们如何训练Rubra模型
开发LLMs通常涉及两个主要步骤:
-
预训练:在此步骤中,模型使用广泛多样的数据进行训练,以建立坚实的知识基础。
-
后训练:又可以分为- 监督微调:通过特定的指令和示例来细化模型的知识,以提高其在各种任务中的理解和表现。 对齐:使用从人类反馈中强化学习(RLHF)和直接偏好优化(DPO)等技术,根据人类偏好数据对模型的反馈进行对齐和优化,使其更加准确、有用和安全。
在Rubra v0.1中,我们进一步对指令调优(Instruct)模型进行了后训练。我们选择了一种新颖的方法来避免全量微调和LoRA训练的常见问