@lobehub/chat 1.2.13 → 1.2.14
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/CHANGELOG.md +25 -0
- package/docs/usage/tools-calling/anthropic.mdx +185 -1
- package/docs/usage/tools-calling/anthropic.zh-CN.mdx +14 -19
- package/docs/usage/tools-calling/google.mdx +116 -1
- package/docs/usage/tools-calling/google.zh-CN.mdx +104 -3
- package/docs/usage/tools-calling/moonshot.mdx +1 -0
- package/docs/usage/tools-calling/moonshot.zh-CN.mdx +24 -0
- package/docs/usage/tools-calling/openai.mdx +139 -1
- package/docs/usage/tools-calling/openai.zh-CN.mdx +0 -694
- package/docs/usage/tools-calling.zh-CN.mdx +15 -14
- package/locales/ar/setting.json +1 -1
- package/locales/bg-BG/setting.json +1 -1
- package/locales/de-DE/setting.json +1 -1
- package/locales/en-US/setting.json +1 -1
- package/locales/es-ES/setting.json +1 -1
- package/locales/fr-FR/setting.json +1 -1
- package/locales/it-IT/setting.json +1 -1
- package/locales/ja-JP/setting.json +1 -1
- package/locales/ko-KR/setting.json +1 -1
- package/locales/nl-NL/setting.json +1 -1
- package/locales/pl-PL/setting.json +1 -1
- package/locales/pt-BR/setting.json +1 -1
- package/locales/ru-RU/setting.json +1 -1
- package/locales/tr-TR/setting.json +1 -1
- package/locales/vi-VN/setting.json +1 -1
- package/locales/zh-CN/setting.json +1 -1
- package/locales/zh-TW/setting.json +1 -1
- package/package.json +1 -1
- package/src/features/AgentSetting/AgentModal/index.tsx +4 -1
- package/src/locales/default/setting.ts +1 -1
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
---
|
|
2
2
|
title: 大模型工具调用(Tools Calling)评测
|
|
3
|
-
description: 基于 LobeChat 测试主流支持工具调用(
|
|
3
|
+
description: 基于 LobeChat 测试主流支持工具调用(Tools Calling) 的大模型,并客观呈现评测结果
|
|
4
4
|
tags:
|
|
5
5
|
- Tools Calling
|
|
6
6
|
- Benchmark
|
|
@@ -11,16 +11,16 @@ tags:
|
|
|
11
11
|
|
|
12
12
|
# 大模型工具调用(Tools Calling)评测
|
|
13
13
|
|
|
14
|
-
|
|
14
|
+
Tools Calling 是大语言模型的高级能力。你可以通过在 API 请求中传入一组工具列表,让模型智能地选择具体使用哪个工具,并在返回请求中输出工具调用的 JSON 参数。
|
|
15
15
|
|
|
16
16
|
<Callout type="info">
|
|
17
17
|
如果你之前没有了解过 Tools Calling, 可以查看 [Function Call: Chat
|
|
18
18
|
应用的插件基石与交互技术的变革黎明](https://lobehub.com/zh/blog/openai-function-call) 这篇文章。
|
|
19
19
|
</Callout>
|
|
20
20
|
|
|
21
|
-
随着社区中越来越多的大语言模型支持了
|
|
21
|
+
随着社区中越来越多的大语言模型支持了 Tools Calling 能力,同时得益于 LobeChat 的 Agent Runtime 架构,我们几乎实现了所有主流大语言模型( OpenAI 、Claude 、Gemini 等等)的 Tools Calling 调用能力。
|
|
22
22
|
|
|
23
|
-
LobeChat 的插件实现基于模型的 Tools Calling 能力,模型本身的
|
|
23
|
+
LobeChat 的插件实现基于模型的 Tools Calling 能力,模型本身的 Tools Calling 能力决定插件调用是否正常。作为上层应用,我们针对各个模型的 Tools Calling 做了较为完善的测试,以便帮助我们的用户了解现有的模型能力,更好地进行抉择。
|
|
24
24
|
|
|
25
25
|
## 评测任务介绍
|
|
26
26
|
|
|
@@ -95,7 +95,7 @@ Create images from a text-only prompt.
|
|
|
95
95
|
|
|
96
96
|
如上所示,简单调用指令在插件调用时它的系统描述(system role)相对简单,复杂调用指令的系统描述会复杂很多。这两组不同复杂度的指令可以比较好地区分出模型对于系统指令的遵循能力:
|
|
97
97
|
|
|
98
|
-
- **天气查询可以测试模型的基础
|
|
98
|
+
- **天气查询可以测试模型的基础 Tools Calling 能力,确认模型是否存在「虚假宣传」的情况。** 就我们实际的测试来看,的确存在一些模型号称具有 Tools Calling 能力,但是处于完全不可用的状态;
|
|
99
99
|
- **文生图可以测试模型指令跟随能力的上限。** 例如基础模型(例如 GPT-3.5)可能只能生成 1 张图片的 prompt,而高级模型(例如 GPT-4o)则能够生成 1~4 张图片的 prompt。
|
|
100
100
|
|
|
101
101
|
### 简单调用指令:天气查询
|
|
@@ -126,7 +126,7 @@ Create images from a text-only prompt.
|
|
|
126
126
|
|
|
127
127
|
针对这一个工具,我们构建的测试组中包含了三个指令:
|
|
128
128
|
|
|
129
|
-
| 指令编号 | 指令内容 | 基础
|
|
129
|
+
| 指令编号 | 指令内容 | 基础 Tools Calling 调用 | 并发调用 | 复合指令跟随 |
|
|
130
130
|
| --- | --- | --- | --- | --- |
|
|
131
131
|
| 指令 ① | 告诉我杭州和北京的天气,先回答我好的 | 🟢 | 🟢 | 🟢 |
|
|
132
132
|
| 指令 ② | 告诉我杭州和北京的天气 | 🟢 | 🟢 | - |
|
|
@@ -134,9 +134,9 @@ Create images from a text-only prompt.
|
|
|
134
134
|
|
|
135
135
|
上述三个指令的复杂度逐渐递减,我们可以通过这三个指令来测试模型对于简单指令的处理能力。
|
|
136
136
|
|
|
137
|
-
- 指令 ① 测试的能力项包含 「基础
|
|
138
|
-
- 指令 ② 测试的能力项包含 「基础
|
|
139
|
-
- 指令 ③ 测试的能力项仅包含「基础
|
|
137
|
+
- 指令 ① 测试的能力项包含 「基础 Tools Calling 调用」、「并发调用」、「复合指令跟随」三项。
|
|
138
|
+
- 指令 ② 测试的能力项包含 「基础 Tools Calling 调用」、「并发调用」 两项。
|
|
139
|
+
- 指令 ③ 测试的能力项仅包含「基础 Tools Calling 调用」。
|
|
140
140
|
|
|
141
141
|
<Callout type={'info'}>
|
|
142
142
|
将指令 ① 、② 、③ 按照难度递减的方式排序的目的,是为了降低测试的成本。因为当模型能通过指令 ①
|
|
@@ -175,7 +175,7 @@ Create images from a text-only prompt.
|
|
|
175
175
|
|
|
176
176
|
### 复杂调用指令:文生图
|
|
177
177
|
|
|
178
|
-
文生图的
|
|
178
|
+
文生图的 Tools Calling 基本照搬了 ChatGPT Plus 的指令,它的复杂度相对较高,可以测试模型对于复杂指令的跟随能力。工具定义如下:
|
|
179
179
|
|
|
180
180
|
```json
|
|
181
181
|
{
|
|
@@ -229,12 +229,12 @@ Create images from a text-only prompt.
|
|
|
229
229
|
|
|
230
230
|
针对这一个工具,我们构建的测试组中包含了两个指令:
|
|
231
231
|
|
|
232
|
-
| 指令编号 | 指令内容 | 流式调用 | 复杂
|
|
232
|
+
| 指令编号 | 指令内容 | 流式调用 | 复杂 Tools Calling 调用 | 并发调用 | 复合指令跟随 |
|
|
233
233
|
| --- | --- | --- | --- | --- | --- |
|
|
234
234
|
| 指令 ① | 我要画 3 幅画,第一幅画的主体为一只达芬奇风格的小狗,第二幅是毕加索风格的大雁,最后一幅是莫奈风格的狮子。每一幅都需要产出 2 个 prompts。请先说明你的构思,然后开始生成相应的图片。 | 🟢 | 🟢 | 🟢 | 🟢 |
|
|
235
235
|
| 指令 ② | 画一只小狗 | 🟢 | 🟢 | - | - |
|
|
236
236
|
|
|
237
|
-
此外,由于文生图的 prompts 的生成时间较长,这一组指令也可以清晰地测试出模型的 API 是否支持流式
|
|
237
|
+
此外,由于文生图的 prompts 的生成时间较长,这一组指令也可以清晰地测试出模型的 API 是否支持流式 Tools Calling。
|
|
238
238
|
|
|
239
239
|
## 评测结果
|
|
240
240
|
|
|
@@ -243,11 +243,12 @@ Create images from a text-only prompt.
|
|
|
243
243
|
<Cards>
|
|
244
244
|
<Card href={'/docs/usage/tools-calling/openai'} title={'OpenAI GPT 系列'} />
|
|
245
245
|
<Card href={'/docs/usage/tools-calling/anthropic'} title={'Anthropic Claude 系列'} />
|
|
246
|
-
<Card href={'/docs/usage/tools-calling/google'} title={'
|
|
246
|
+
<Card href={'/docs/usage/tools-calling/google'} title={'Google Gemini 系列'} />
|
|
247
247
|
<Card
|
|
248
248
|
href={'/docs/usage/tools-calling/groq'}
|
|
249
|
-
title={'【TODO】Groq 部署的开源模型(Llama 3/Qwen2/Mistral
|
|
249
|
+
title={'【TODO】Groq 部署的开源模型(Llama 3/Qwen2/Mistral/...)'}
|
|
250
250
|
/>
|
|
251
|
+
<Card href={'/docs/usage/tools-calling/moonshot'} title={'【TODO】Moonshot 系列'} />
|
|
251
252
|
</Cards>
|
|
252
253
|
|
|
253
254
|
### 结果汇总
|
package/locales/ar/setting.json
CHANGED
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@lobehub/chat",
|
|
3
|
-
"version": "1.2.
|
|
3
|
+
"version": "1.2.14",
|
|
4
4
|
"description": "Lobe Chat - an open-source, high-performance chatbot framework that supports speech synthesis, multimodal, and extensible Function Call plugin system. Supports one-click free deployment of your private ChatGPT/LLM web application.",
|
|
5
5
|
"keywords": [
|
|
6
6
|
"framework",
|
|
@@ -6,6 +6,7 @@ import { memo } from 'react';
|
|
|
6
6
|
import { useTranslation } from 'react-i18next';
|
|
7
7
|
|
|
8
8
|
import { FORM_STYLE } from '@/const/layoutTokens';
|
|
9
|
+
import { useProviderName } from '@/hooks/useProviderName';
|
|
9
10
|
|
|
10
11
|
import { useStore } from '../store';
|
|
11
12
|
import { selectors } from '../store/selectors';
|
|
@@ -21,13 +22,15 @@ const AgentModal = memo(() => {
|
|
|
21
22
|
return [config.enableMaxTokens, s.setAgentConfig];
|
|
22
23
|
});
|
|
23
24
|
|
|
25
|
+
const providerName = useProviderName(useStore((s) => s.config.provider) as string);
|
|
26
|
+
|
|
24
27
|
useAgentSyncSettings(form);
|
|
25
28
|
|
|
26
29
|
const model: ItemGroup = {
|
|
27
30
|
children: [
|
|
28
31
|
{
|
|
29
32
|
children: <ModelSelect />,
|
|
30
|
-
desc: t('settingModel.model.desc'),
|
|
33
|
+
desc: t('settingModel.model.desc', { provider: providerName }),
|
|
31
34
|
label: t('settingModel.model.title'),
|
|
32
35
|
name: 'model',
|
|
33
36
|
tag: 'model',
|