Lazy loaded image
主流国产大模型工具调用测试| 🦜️🔗 LangChain
Words 1102Read Time 3 min
2024-12-31
2025-1-2
type
status
date
slug
summary
tags
category
icon
password
comment
Status

1. 引言

最近很多朋友私信或者评论问我使用我提供的源码,使用国内模型接口调用绑定工具的时候报错。今天我们就做一期视频来解释一下到底为什么会调用失败?正好openai称从7.9号开始将采取额外措施对国内api调用进行封禁,将服务转移到国产模型也是势在必行,今天我们就来测试一下国内的主流模型对于langchain的工具调用的支持情况。工具调用就相当于为大脑安上手脚,这功能的重要程度也不言而喻,没有工具调用就基本上无法使用大模型进行复杂的应用开发。
话不多说,让我们开始吧

2. 工具调用和function calling

大模型调用工具,是使用的大模型直接调用吗?我们是不是需要为大模型提供接口访问的网络环境?大模型是怎么做到调用本地代码的呢?
我们的工具调用是基于function calling实现的,function calling最早是2023年7月份由openai在chatgpt上支持,现在国产的主流模型基本上都称支持function calling,其实这并不是一个复杂的技术。
首先要明确生成式大模型的输入和输出都是文本,它不可能直接去调用我们的接口,那function calling是怎么实现的呢?一句话,就是我们给大模型描述我们提供了哪些函数,这个函数是干什么用的,需要什么参数,会返回什么值。然后让大模型判断什么时候需要调用这些函数,并为函数按照一定的格式生成需要的参数,我们拿到参数以后在代码中调用本地的函数。本质上大模型只是决定要不要调用函数,并提供函数所需要的参数。具体的函数调用还是在我们的本地代码中。
 
也就是模型需要在原有的基础上针对函数调用进行微调,让模型能够理解我们的工具并返回一个标准的json结构。并为工具调用提供了专用的 API。

3. 国产模型 function calling

 
讯飞星火Spark Max
字节doubao-pro-32k / 240615
 
阿里TongYi
 
月之暗面moonshot-v1-32k
千帆ERNIE-4.0-8K
智谱glm-4-0520
OpenAi
XingHuo
DouBao
TongYi
MoonShot
QianFan
GLM
工具调用
×
个别工具未正确调用
正确调用工具,但未正确返回结果
个别工具未正确调用
未调用工具
以上测试结果都只是基于langchain框架,不管是提示词还是调用解析的优化肯定是优先基于openai的模型接口,其实每个模型都提供了自己的SDK有自己的工具调用方法,执行不通过并不代表模型能力差,这个测试结果只是希望对之前使用openai接口要需要迁移的观众老爷提供参考,也对之前看我视频自己复现出现问题的观众老爷一个解释。
好了,本文主要对langchain大模型工具调用的原理进行了讲解,并对国内主流大模型使用langchain的工具调用能力进行了测试。
以上代码和原文我都会放到视频介绍,如果测试代码有任何问题,或者对于某些模型有更好的调用方式欢迎留言,我会积极改正。
 
上一篇
构建一个基于PDF的问答系统 | 🦜️🔗 LangChain
下一篇
让大模型更加精确可控地调用工具 | 🦜️🔗 LangChain