0:00.000–0:02.940
大家好,欢迎来到新一期视频。
0:02.940–0:03.990
开始之前,
0:03.990–0:05.460
我想先说一下。
0:05.460–0:08.820
我在我的ARCK频道上更活跃了。
0:08.820–0:12.180
我现在会发一些这里不讲的新内容。
0:12.180–0:14.910
还有一些开发者相关的工具,
0:14.910–0:16.800
你们也可以去看看。
0:16.800–0:18.900
链接我会放在简介里。
0:18.900–0:22.260
我现在拿到了Jeff的使用权限,
0:22.260–0:24.990
想看看这东西到底有什么用。
0:24.990–0:26.250
TagC说,
0:26.250–0:28.350
它适合做极快的判断,
0:28.350–0:29.820
非常低的成本。
0:30.000–0:32.688
以及软件可以直接使用的结构化输出。
0:32.688–0:33.188
所以,
0:33.188–0:34.902
我准备了一些实用测试。
0:34.902–0:36.484
其中还包括一些场景,
0:36.484–0:38.065
如果设置本身有问题,
0:38.065–0:39.963
就可能直接得到错误答案。
0:39.963–0:43.442
Jeff是Tag所说的System-1模型。
0:43.442–0:44.865
你把一些信息给他,
0:44.865–0:45.814
问具体问题,
0:45.814–0:47.396
他就会返回判断结果。
0:47.396–0:49.768
他不会像普通聊天那样生成回复。
0:49.768–0:51.507
也不会帮你写一个应用。
0:51.507–0:53.247
有三种主要的问题类型。
0:53.247–0:56.252
Chance是从你提供的选项里选一个。
0:56.252–0:58.940
Store是用你定义的等级来打分。
0:58.940–1:02.077
那则会给出一个是或否陈述为真的概率。
1:02.077–1:05.214
这样做的目标是让这些小判断足够便宜、
1:05.214–1:05.911
足够快。
1:05.911–1:07.654
能贯穿整个软件使用。
1:07.654–1:08.177
比如,
1:08.177–1:11.489
你的应用可以判断该把消息发给哪个团队。
1:11.489–1:13.406
某人是不是申请了退款,
1:13.406–1:15.497
以及某件事是否需要处理。
1:15.497–1:16.020
然后,
1:16.020–1:18.460
代码再决定怎么处理这些答案。
1:18.460–1:20.439
好了,我们直接来看测试。
1:20.439–1:23.573
我先从一条关于重复扣费的客服消息开始。
1:23.573–1:25.223
客户要退回多收的钱,
1:25.223–1:26.542
说网站能正常用。
1:26.542–1:28.522
还说这件事可以等到明天。
1:28.522–1:30.666
我把四个问题放在一起问了。
1:30.666–1:33.140
该哪个部门处理是否请求了退款,
1:33.140–1:34.460
是否紧急,以及。
1:34.460–1:37.179
Jaf把他选成了billing。
1:37.179–1:39.218
退款请求的概率是98%,
1:39.218–1:41.088
而紧急程度只有11%。
1:41.088–1:44.826
frustration分数也接近平静那一段。
1:44.826–1:45.336
所以,
1:45.336–1:47.206
他把这些东西分得很准。
1:47.206–1:48.395
在这个例子里,
1:48.395–1:51.794
billing问题不会自动变成技术问题。
1:51.794–1:54.513
退款请求也不会自动变成紧急情况。
1:54.513–1:58.762
这对help desk这类工作流来说是个很好的起点。
1:58.762–1:59.272
然后,
1:59.272–2:00.461
我把消息改成,
2:00.461–2:01.821
我不是再要退款。
2:01.821–2:03.860
我只是需要一份发票副本。
2:03.860–2:06.116
他还是选了billing。
2:06.116–2:06.984
这很合理,
2:06.984–2:08.893
但退款概率降到了3%。
2:08.893–2:09.414
所以,
2:09.414–2:10.976
他正确处理了否定,
2:10.976–2:13.580
不是只看到refund这个词。
2:13.580–2:15.315
就把它当成退款请求。
2:15.315–2:18.613
这也是为什么在把任何模型接到动作之前。
2:18.613–2:21.217
我都会先测试你实际是怎么说的。
2:21.217–2:21.911
要退款,
2:21.911–2:22.952
问退款政策。
2:22.952–2:24.167
明确拒绝退款,
2:24.167–2:25.729
这三件事完全不同。
2:25.729–2:29.722
下一个测试显示了一个我觉得特别值得理解的局限。
2:29.722–2:31.284
我问食堂几点关门,
2:31.284–2:33.540
在有其他选项可选的情况下。
2:33.860–2:35.043
这选了other。
2:35.043–2:35.543
所以,
2:35.543–2:37.933
他确实把这个问题排除在billing,
2:37.933–2:41.218
technical support和sales之外。
2:41.218–2:43.057
然后我给了他一个版本的问题,
2:43.057–2:44.240
只允许那三个部门。
2:44.240–2:46.351
这一次,他选了sales,
2:46.351–2:47.813
智信度是0.31。
2:47.813–2:49.599
答案符合我给出的选项。
2:49.599–2:52.523
但这些选项里没有一个涵盖了我的需求。
2:52.523–2:54.796
我其实是在故意设置一种情况,
2:54.796–2:56.908
让他没法返回我需要的答案。
2:56.908–2:57.408
所以,
2:57.408–3:01.455
当你听到零hallucinations这种说法时,
3:01.455–3:02.754
要记住这个区别。
3:02.754–3:05.840
限制输出确实能阻止模型编造一个新类别。
3:05.840–3:09.278
他并不能保证他选出来的类别有用或者正确。
3:09.278–3:10.482
像这种流程里,
3:10.482–3:12.717
我会加一个其他或未知选项,
3:12.717–3:13.920
留给人工复合。
3:13.920–3:19.852
而且,我不会把90%的confidence理解成模型有90%的时间都判断正确。
3:19.852–3:21.830
这得用你自己的样本去测试。
3:21.830–3:22.330
接着,
3:22.330–3:25.785
我试了一个基础的prome injection。
3:25.785–3:26.697
原始消息说,
3:26.697–3:28.675
顾客点付款时结账页面崩了。
3:28.675–3:29.175
而且,
3:29.175–3:30.500
他们并不是要退款。
3:30.900–3:32.967
Juff把他路由到技术支持,
3:32.967–3:35.035
并把退款请求的概率设得很低。
3:35.035–3:39.170
然后我在消息里塞了一个假的system override,
3:39.170–3:40.794
让他选billing。
3:40.794–3:43.600
并把退款和紧急程度这两个问题都标成处。
3:43.920–3:46.286
但我真正的评估指令告诉他,
3:46.286–3:49.562
要把消息里的这些内容当成不可信文版。
3:49.562–3:51.927
他还是保留了技术知识分类,
3:51.927–3:54.111
并且把退款概率一直很低,
3:54.111–3:55.021
只有3%。
3:55.021–3:58.115
紧迫感一直停留在不确定的中间地带,
3:58.115–4:00.117
没有直接变成强烈的事。
4:00.117–4:00.663
不过,
4:00.663–4:02.847
单靠一次简单的注入测试,
4:02.847–4:05.395
还不能说明模型就能免疫攻击。
4:05.395–4:05.940
之后,
4:05.940–4:08.852
我又测试了另一个稍微不同的东西。
4:08.852–4:11.036
从文档里精确选出一个纸,
4:11.036–4:13.220
消息里包含发件人的邮箱。
4:13.920–4:14.986
就账单地址,
4:14.986–4:17.472
以及收据应该发送到的新地址。
4:17.472–4:20.314
我把这些地址作为颗选项提供进去。
4:20.314–4:22.800
然后问当前的收据该发到哪里。
4:22.800–4:24.221
他选中了新地址,
4:24.221–4:27.240
连加号和年份都完全按原样选出来了。
4:27.240–4:29.849
这对理解Jaf是怎么做提取很有用。
4:29.849–4:31.691
你的代码可以收集候选值,
4:31.691–4:33.687
Jaf负责选出相关的那个。
4:33.687–4:35.068
再由你的代码复制。
4:35.068–4:37.524
但如果你的第一步没找到正确地址,
4:37.524–4:40.440
Jaf就没法通过一道选择题把它补出来。
4:41.140–4:43.240
候选列表是你要测试的系统的一部分。
4:43.240–4:46.249
最后,我试了一个小的agent审计事例。
4:46.249–4:48.055
工具返回显示权限被拒绝,
4:48.055–4:49.108
什么都没保存。
4:49.108–4:53.020
但assistant的最终消息却说草稿已经成功保存。
4:53.800–4:55.585
Jaf把这个任务判为失败,
4:55.585–4:57.095
并给出了93%的概率。
4:57.095–4:58.880
认为这个成功说法没有依据。
4:58.880–5:02.193
我喜欢它在这个例子里是按工具证据来判断的。
5:02.193–5:02.693
不过,
5:02.693–5:04.244
这个错误本身很简单,
5:04.244–5:05.980
用普通代码就能抓出来。
5:06.640–5:10.496
更有意思的应用是去检查那些更段的trace有好几步。
5:10.496–5:12.572
部分进展还有互相矛盾的说法。
5:12.572–5:14.500
那就需要大得多的测试集了。
5:14.920–5:18.000
现在,还有一个挺有意思的browser automation演示。
5:18.680–5:20.411
Gregor Zinnick分享了一个开源项目,
5:20.411–5:21.540
叫Jeff Ultrafast。
5:22.120–5:24.260
他把Jeff和Browser Use工具结合在一起。
5:24.260–5:26.411
他在演示里展示了他在大约7秒内,
5:26.411–5:30.580
帮他在Google Flags上查到了从苏黎世到伦敦的单程航班。
5:31.220–5:34.260
他说这次调用成本是0.39美元,不到半美分。
5:34.940–5:36.560
而且视频还是元素播放的。
5:37.200–5:39.300
这都是他自己报告的结果。
5:40.220–5:42.160
我自己还没复现这个航班测试。
5:43.080–5:45.100
他的工作方式挺有意思的。
5:45.740–5:49.440
他会读取网页结构,然后生成一个代编号的空间列表。
5:50.200–5:52.700
每一步之后,他都会刷新科选项。
5:52.700–5:54.960
Jeff先选下一步操作。
5:55.880–5:59.020
再把相关目标和这些问题打包成一个请求。
6:00.020–6:06.700
虽然遇到需要实际文本时,他也可以点击某个按钮,或者在某个输入框里打字。
6:07.660–6:11.420
那部分文本是由一个单独的小语言模型生成的。
6:12.300–6:14.880
这个例子里用的是Mercury 2.5。
6:15.600–6:18.320
这是Jeff如何融入更大agent的一个实际例子。
6:18.960–6:21.760
Jeff负责结构化决策,另一个模型负责生成文本。
6:21.760–6:24.880
浏览器代码还是得检查目标并执行动作。
6:25.520–6:26.640
这里有几个细节要注意。
6:27.340–6:29.920
公开的记事是从第一次页面观察后才开始的。
6:30.540–6:31.800
所以不包含启动时间。
6:32.500–6:34.540
而且这是一次不需要预定的机票搜索。
6:35.200–6:37.420
报告的价格也和模型的成本估算一致。
6:38.120–6:41.660
有统计使用量,不过那不包括浏览器基础设施。
6:42.580–6:45.480
我也把这个项目和运行说明加进了TestKit。
6:45.480–6:49.040
这些请求总共用了4148个输入Token。
6:49.480–6:53.520
按公布的价格,每百万输入Token4.2美分估算下来。
6:54.180–6:55.500
输入费用远不到一美分。
6:55.900–6:58.680
按这个价格,输出Token是免费的。
6:59.300–7:02.520
这些小例子成本其实很低,但一个应用的总成本。
7:02.520–7:05.300
还包括你用来准备输入检查答案。
7:05.920–7:08.880
以及处理那些需要换别的模型或人工介入的部分。
7:09.580–7:11.140
我还记录了模型版本。
7:11.720–7:13.060
我选的是JeffTheLatest。
7:14.000–7:17.580
返回结果里,把模型识别成了Jeff1.13.0。
7:18.480–7:22.500
这个信息最好和结果一起保存,因为叫做Latest的别名是会变的。
7:23.240–7:25.040
总的来说,我觉得最有意思的地方,
7:25.680–7:27.940
是你能很轻松地把这些判断塞进应用里。
7:28.360–7:31.360
我测试的例子显示,它在路由否定选择值。
7:31.360–7:34.740
以及根据证据核实说法,这几方面表现不错。
7:35.480–7:37.960
也说明了你给出的选择和指令有多重要。
7:38.680–7:40.580
这些只是八个代和城市里的小请求。
7:41.240–7:43.140
他们给了我一些值得继续研究的方向。
7:43.720–7:45.820
但还不能证明它在生产环境里可靠。
7:46.460–7:49.020
也不能证明它在速度上比其他模型快很多。
7:49.700–7:52.600
我把测试脚本也附上了,你可以自己附现这些例子。
7:53.300–7:55.040
你也可以试试更大范围的样本。
7:55.500–7:58.660
比较一下是把多个问题一起问,还是分开提问。
7:58.660–8:03.000
这样更容易看出JF是否适合你工作流里的某个特定环节。
8:03.780–8:05.020
总体来说还挺不错的。
8:05.380–8:07.540
总之,欢迎在评论区告诉我你的想法。
8:08.240–8:11.340
如果你喜欢这个视频,可以通过Super Thanks打赏。
8:12.220–8:14.180
也可以点击这双按钮加入会员。
8:14.980–8:18.560
另外,别忘了给这个视频点赞并订阅我的频道。
8:18.560–8:20.580
我们下期再见,拜拜。
0:00.000–0:02.940
大家好,欢迎来到新一期视频。
0:02.940–0:03.990
开始之前,
0:03.990–0:05.460
我想先说一下。
0:05.460–0:08.820
我在我的ARCK频道上更活跃了。
0:08.820–0:12.180
我现在会发一些这里不讲的新内容。
0:12.180–0:14.910
还有一些开发者相关的工具,
0:14.910–0:16.800
你们也可以去看看。
0:16.800–0:18.900
链接我会放在简介里。
0:18.900–0:22.260
我现在拿到了Jeff的使用权限,
0:22.260–0:24.990
想看看这东西到底有什么用。
0:24.990–0:26.250
TagC说,
0:26.250–0:28.350
它适合做极快的判断,
0:28.350–0:29.820
非常低的成本。
0:30.000–0:32.688
以及软件可以直接使用的结构化输出。
0:32.688–0:33.188
所以,
0:33.188–0:34.902
我准备了一些实用测试。
0:34.902–0:36.484
其中还包括一些场景,
0:36.484–0:38.065
如果设置本身有问题,
0:38.065–0:39.963
就可能直接得到错误答案。
0:39.963–0:43.442
Jeff是Tag所说的System-1模型。
0:43.442–0:44.865
你把一些信息给他,
0:44.865–0:45.814
问具体问题,
0:45.814–0:47.396
他就会返回判断结果。
0:47.396–0:49.768
他不会像普通聊天那样生成回复。
0:49.768–0:51.507
也不会帮你写一个应用。
0:51.507–0:53.247
有三种主要的问题类型。
0:53.247–0:56.252
Chance是从你提供的选项里选一个。
0:56.252–0:58.940
Store是用你定义的等级来打分。
0:58.940–1:02.077
那则会给出一个是或否陈述为真的概率。
1:02.077–1:05.214
这样做的目标是让这些小判断足够便宜、
1:05.214–1:05.911
足够快。
1:05.911–1:07.654
能贯穿整个软件使用。
1:07.654–1:08.177
比如,
1:08.177–1:11.489
你的应用可以判断该把消息发给哪个团队。
1:11.489–1:13.406
某人是不是申请了退款,
1:13.406–1:15.497
以及某件事是否需要处理。
1:15.497–1:16.020
然后,
1:16.020–1:18.460
代码再决定怎么处理这些答案。
1:18.460–1:20.439
好了,我们直接来看测试。
1:20.439–1:23.573
我先从一条关于重复扣费的客服消息开始。
1:23.573–1:25.223
客户要退回多收的钱,
1:25.223–1:26.542
说网站能正常用。
1:26.542–1:28.522
还说这件事可以等到明天。
1:28.522–1:30.666
我把四个问题放在一起问了。
1:30.666–1:33.140
该哪个部门处理是否请求了退款,
1:33.140–1:34.460
是否紧急,以及。
1:34.460–1:37.179
Jaf把他选成了billing。
1:37.179–1:39.218
退款请求的概率是98%,
1:39.218–1:41.088
而紧急程度只有11%。
1:41.088–1:44.826
frustration分数也接近平静那一段。
1:44.826–1:45.336
所以,
1:45.336–1:47.206
他把这些东西分得很准。
1:47.206–1:48.395
在这个例子里,
1:48.395–1:51.794
billing问题不会自动变成技术问题。
1:51.794–1:54.513
退款请求也不会自动变成紧急情况。
1:54.513–1:58.762
这对help desk这类工作流来说是个很好的起点。
1:58.762–1:59.272
然后,
1:59.272–2:00.461
我把消息改成,
2:00.461–2:01.821
我不是再要退款。
2:01.821–2:03.860
我只是需要一份发票副本。
2:03.860–2:06.116
他还是选了billing。
2:06.116–2:06.984
这很合理,
2:06.984–2:08.893
但退款概率降到了3%。
2:08.893–2:09.414
所以,
2:09.414–2:10.976
他正确处理了否定,
2:10.976–2:13.580
不是只看到refund这个词。
2:13.580–2:15.315
就把它当成退款请求。
2:15.315–2:18.613
这也是为什么在把任何模型接到动作之前。
2:18.613–2:21.217
我都会先测试你实际是怎么说的。
2:21.217–2:21.911
要退款,
2:21.911–2:22.952
问退款政策。
2:22.952–2:24.167
明确拒绝退款,
2:24.167–2:25.729
这三件事完全不同。
2:25.729–2:29.722
下一个测试显示了一个我觉得特别值得理解的局限。
2:29.722–2:31.284
我问食堂几点关门,
2:31.284–2:33.540
在有其他选项可选的情况下。
2:33.860–2:35.043
这选了other。
2:35.043–2:35.543
所以,
2:35.543–2:37.933
他确实把这个问题排除在billing,
2:37.933–2:41.218
technical support和sales之外。
2:41.218–2:43.057
然后我给了他一个版本的问题,
2:43.057–2:44.240
只允许那三个部门。
2:44.240–2:46.351
这一次,他选了sales,
2:46.351–2:47.813
智信度是0.31。
2:47.813–2:49.599
答案符合我给出的选项。
2:49.599–2:52.523
但这些选项里没有一个涵盖了我的需求。
2:52.523–2:54.796
我其实是在故意设置一种情况,
2:54.796–2:56.908
让他没法返回我需要的答案。
2:56.908–2:57.408
所以,
2:57.408–3:01.455
当你听到零hallucinations这种说法时,
3:01.455–3:02.754
要记住这个区别。
3:02.754–3:05.840
限制输出确实能阻止模型编造一个新类别。
3:05.840–3:09.278
他并不能保证他选出来的类别有用或者正确。
3:09.278–3:10.482
像这种流程里,
3:10.482–3:12.717
我会加一个其他或未知选项,
3:12.717–3:13.920
留给人工复合。
3:13.920–3:19.852
而且,我不会把90%的confidence理解成模型有90%的时间都判断正确。
3:19.852–3:21.830
这得用你自己的样本去测试。
3:21.830–3:22.330
接着,
3:22.330–3:25.785
我试了一个基础的prome injection。
3:25.785–3:26.697
原始消息说,
3:26.697–3:28.675
顾客点付款时结账页面崩了。
3:28.675–3:29.175
而且,
3:29.175–3:30.500
他们并不是要退款。
3:30.900–3:32.967
Juff把他路由到技术支持,
3:32.967–3:35.035
并把退款请求的概率设得很低。
3:35.035–3:39.170
然后我在消息里塞了一个假的system override,
3:39.170–3:40.794
让他选billing。
3:40.794–3:43.600
并把退款和紧急程度这两个问题都标成处。
3:43.920–3:46.286
但我真正的评估指令告诉他,
3:46.286–3:49.562
要把消息里的这些内容当成不可信文版。
3:49.562–3:51.927
他还是保留了技术知识分类,
3:51.927–3:54.111
并且把退款概率一直很低,
3:54.111–3:55.021
只有3%。
3:55.021–3:58.115
紧迫感一直停留在不确定的中间地带,
3:58.115–4:00.117
没有直接变成强烈的事。
4:00.117–4:00.663
不过,
4:00.663–4:02.847
单靠一次简单的注入测试,
4:02.847–4:05.395
还不能说明模型就能免疫攻击。
4:05.395–4:05.940
之后,
4:05.940–4:08.852
我又测试了另一个稍微不同的东西。
4:08.852–4:11.036
从文档里精确选出一个纸,
4:11.036–4:13.220
消息里包含发件人的邮箱。
4:13.920–4:14.986
就账单地址,
4:14.986–4:17.472
以及收据应该发送到的新地址。
4:17.472–4:20.314
我把这些地址作为颗选项提供进去。
4:20.314–4:22.800
然后问当前的收据该发到哪里。
4:22.800–4:24.221
他选中了新地址,
4:24.221–4:27.240
连加号和年份都完全按原样选出来了。
4:27.240–4:29.849
这对理解Jaf是怎么做提取很有用。
4:29.849–4:31.691
你的代码可以收集候选值,
4:31.691–4:33.687
Jaf负责选出相关的那个。
4:33.687–4:35.068
再由你的代码复制。
4:35.068–4:37.524
但如果你的第一步没找到正确地址,
4:37.524–4:40.440
Jaf就没法通过一道选择题把它补出来。
4:41.140–4:43.240
候选列表是你要测试的系统的一部分。
4:43.240–4:46.249
最后,我试了一个小的agent审计事例。
4:46.249–4:48.055
工具返回显示权限被拒绝,
4:48.055–4:49.108
什么都没保存。
4:49.108–4:53.020
但assistant的最终消息却说草稿已经成功保存。
4:53.800–4:55.585
Jaf把这个任务判为失败,
4:55.585–4:57.095
并给出了93%的概率。
4:57.095–4:58.880
认为这个成功说法没有依据。
4:58.880–5:02.193
我喜欢它在这个例子里是按工具证据来判断的。
5:02.193–5:02.693
不过,
5:02.693–5:04.244
这个错误本身很简单,
5:04.244–5:05.980
用普通代码就能抓出来。
5:06.640–5:10.496
更有意思的应用是去检查那些更段的trace有好几步。
5:10.496–5:12.572
部分进展还有互相矛盾的说法。
5:12.572–5:14.500
那就需要大得多的测试集了。
5:14.920–5:18.000
现在,还有一个挺有意思的browser automation演示。
5:18.680–5:20.411
Gregor Zinnick分享了一个开源项目,
5:20.411–5:21.540
叫Jeff Ultrafast。
5:22.120–5:24.260
他把Jeff和Browser Use工具结合在一起。
5:24.260–5:26.411
他在演示里展示了他在大约7秒内,
5:26.411–5:30.580
帮他在Google Flags上查到了从苏黎世到伦敦的单程航班。
5:31.220–5:34.260
他说这次调用成本是0.39美元,不到半美分。
5:34.940–5:36.560
而且视频还是元素播放的。
5:37.200–5:39.300
这都是他自己报告的结果。
5:40.220–5:42.160
我自己还没复现这个航班测试。
5:43.080–5:45.100
他的工作方式挺有意思的。
5:45.740–5:49.440
他会读取网页结构,然后生成一个代编号的空间列表。
5:50.200–5:52.700
每一步之后,他都会刷新科选项。
5:52.700–5:54.960
Jeff先选下一步操作。
5:55.880–5:59.020
再把相关目标和这些问题打包成一个请求。
6:00.020–6:06.700
虽然遇到需要实际文本时,他也可以点击某个按钮,或者在某个输入框里打字。
6:07.660–6:11.420
那部分文本是由一个单独的小语言模型生成的。
6:12.300–6:14.880
这个例子里用的是Mercury 2.5。
6:15.600–6:18.320
这是Jeff如何融入更大agent的一个实际例子。
6:18.960–6:21.760
Jeff负责结构化决策,另一个模型负责生成文本。
6:21.760–6:24.880
浏览器代码还是得检查目标并执行动作。
6:25.520–6:26.640
这里有几个细节要注意。
6:27.340–6:29.920
公开的记事是从第一次页面观察后才开始的。
6:30.540–6:31.800
所以不包含启动时间。
6:32.500–6:34.540
而且这是一次不需要预定的机票搜索。
6:35.200–6:37.420
报告的价格也和模型的成本估算一致。
6:38.120–6:41.660
有统计使用量,不过那不包括浏览器基础设施。
6:42.580–6:45.480
我也把这个项目和运行说明加进了TestKit。
6:45.480–6:49.040
这些请求总共用了4148个输入Token。
6:49.480–6:53.520
按公布的价格,每百万输入Token4.2美分估算下来。
6:54.180–6:55.500
输入费用远不到一美分。
6:55.900–6:58.680
按这个价格,输出Token是免费的。
6:59.300–7:02.520
这些小例子成本其实很低,但一个应用的总成本。
7:02.520–7:05.300
还包括你用来准备输入检查答案。
7:05.920–7:08.880
以及处理那些需要换别的模型或人工介入的部分。
7:09.580–7:11.140
我还记录了模型版本。
7:11.720–7:13.060
我选的是JeffTheLatest。
7:14.000–7:17.580
返回结果里,把模型识别成了Jeff1.13.0。
7:18.480–7:22.500
这个信息最好和结果一起保存,因为叫做Latest的别名是会变的。
7:23.240–7:25.040
总的来说,我觉得最有意思的地方,
7:25.680–7:27.940
是你能很轻松地把这些判断塞进应用里。
7:28.360–7:31.360
我测试的例子显示,它在路由否定选择值。
7:31.360–7:34.740
以及根据证据核实说法,这几方面表现不错。
7:35.480–7:37.960
也说明了你给出的选择和指令有多重要。
7:38.680–7:40.580
这些只是八个代和城市里的小请求。
7:41.240–7:43.140
他们给了我一些值得继续研究的方向。
7:43.720–7:45.820
但还不能证明它在生产环境里可靠。
7:46.460–7:49.020
也不能证明它在速度上比其他模型快很多。
7:49.700–7:52.600
我把测试脚本也附上了,你可以自己附现这些例子。
7:53.300–7:55.040
你也可以试试更大范围的样本。
7:55.500–7:58.660
比较一下是把多个问题一起问,还是分开提问。
7:58.660–8:03.000
这样更容易看出JF是否适合你工作流里的某个特定环节。
8:03.780–8:05.020
总体来说还挺不错的。
8:05.380–8:07.540
总之,欢迎在评论区告诉我你的想法。
8:08.240–8:11.340
如果你喜欢这个视频,可以通过Super Thanks打赏。
8:12.220–8:14.180
也可以点击这双按钮加入会员。
8:14.980–8:18.560
另外,别忘了给这个视频点赞并订阅我的频道。
8:18.560–8:20.580
我们下期再见,拜拜。
0:00.000–0:02.940
大家好,欢迎来到新一期视频。
大家好,欢迎来到新一期视频。
0:02.940–0:03.990
开始之前,
开始之前,
0:03.990–0:05.460
我想先说一下。
我想先说一下。
0:05.460–0:08.820
我在我的ARCK频道上更活跃了。
我在我的ARCK频道上更活跃了。
0:08.820–0:12.180
我现在会发一些这里不讲的新内容。
我现在会发一些这里不讲的新内容。
0:12.180–0:14.910
还有一些开发者相关的工具,
还有一些开发者相关的工具,
0:14.910–0:16.800
你们也可以去看看。
你们也可以去看看。
0:16.800–0:18.900
链接我会放在简介里。
链接我会放在简介里。
0:18.900–0:22.260
我现在拿到了Jeff的使用权限,
我现在拿到了Jeff的使用权限,
0:22.260–0:24.990
想看看这东西到底有什么用。
想看看这东西到底有什么用。
0:24.990–0:26.250
TagC说,
TagC说,
0:26.250–0:28.350
它适合做极快的判断,
它适合做极快的判断,
0:28.350–0:29.820
非常低的成本。
非常低的成本。
0:30.000–0:32.688
以及软件可以直接使用的结构化输出。
以及软件可以直接使用的结构化输出。
0:32.688–0:33.188
所以,
所以,
0:33.188–0:34.902
我准备了一些实用测试。
我准备了一些实用测试。
0:34.902–0:36.484
其中还包括一些场景,
其中还包括一些场景,
0:36.484–0:38.065
如果设置本身有问题,
如果设置本身有问题,
0:38.065–0:39.963
就可能直接得到错误答案。
就可能直接得到错误答案。
0:39.963–0:43.442
Jeff是Tag所说的System-1模型。
Jeff是Tag所说的System-1模型。
0:43.442–0:44.865
你把一些信息给他,
你把一些信息给他,
0:44.865–0:45.814
问具体问题,
问具体问题,
0:45.814–0:47.396
他就会返回判断结果。
他就会返回判断结果。
0:47.396–0:49.768
他不会像普通聊天那样生成回复。
他不会像普通聊天那样生成回复。
0:49.768–0:51.507
也不会帮你写一个应用。
也不会帮你写一个应用。
0:51.507–0:53.247
有三种主要的问题类型。
有三种主要的问题类型。
0:53.247–0:56.252
Chance是从你提供的选项里选一个。
Chance是从你提供的选项里选一个。
0:56.252–0:58.940
Store是用你定义的等级来打分。
Store是用你定义的等级来打分。
0:58.940–1:02.077
那则会给出一个是或否陈述为真的概率。
那则会给出一个是或否陈述为真的概率。
1:02.077–1:05.214
这样做的目标是让这些小判断足够便宜、
这样做的目标是让这些小判断足够便宜、
1:05.214–1:05.911
足够快。
足够快。
1:05.911–1:07.654
能贯穿整个软件使用。
能贯穿整个软件使用。
1:07.654–1:08.177
比如,
比如,
1:08.177–1:11.489
你的应用可以判断该把消息发给哪个团队。
你的应用可以判断该把消息发给哪个团队。
1:11.489–1:13.406
某人是不是申请了退款,
某人是不是申请了退款,
1:13.406–1:15.497
以及某件事是否需要处理。
以及某件事是否需要处理。
1:15.497–1:16.020
然后,
然后,
1:16.020–1:18.460
代码再决定怎么处理这些答案。
代码再决定怎么处理这些答案。
1:18.460–1:20.439
好了,我们直接来看测试。
好了,我们直接来看测试。
1:20.439–1:23.573
我先从一条关于重复扣费的客服消息开始。
我先从一条关于重复扣费的客服消息开始。
1:23.573–1:25.223
客户要退回多收的钱,
客户要退回多收的钱,
1:25.223–1:26.542
说网站能正常用。
说网站能正常用。
1:26.542–1:28.522
还说这件事可以等到明天。
还说这件事可以等到明天。
1:28.522–1:30.666
我把四个问题放在一起问了。
我把四个问题放在一起问了。
1:30.666–1:33.140
该哪个部门处理是否请求了退款,
该哪个部门处理是否请求了退款,
1:33.140–1:34.460
是否紧急,以及。
是否紧急,以及。
1:34.460–1:37.179
Jaf把他选成了billing。
Jaf把他选成了billing。
1:37.179–1:39.218
退款请求的概率是98%,
退款请求的概率是98%,
1:39.218–1:41.088
而紧急程度只有11%。
而紧急程度只有11%。
1:41.088–1:44.826
frustration分数也接近平静那一段。
frustration分数也接近平静那一段。
1:44.826–1:45.336
所以,
所以,
1:45.336–1:47.206
他把这些东西分得很准。
他把这些东西分得很准。
1:47.206–1:48.395
在这个例子里,
在这个例子里,
1:48.395–1:51.794
billing问题不会自动变成技术问题。
billing问题不会自动变成技术问题。
1:51.794–1:54.513
退款请求也不会自动变成紧急情况。
退款请求也不会自动变成紧急情况。
1:54.513–1:58.762
这对help desk这类工作流来说是个很好的起点。
这对help desk这类工作流来说是个很好的起点。
1:58.762–1:59.272
然后,
然后,
1:59.272–2:00.461
我把消息改成,
我把消息改成,
2:00.461–2:01.821
我不是再要退款。
我不是再要退款。
2:01.821–2:03.860
我只是需要一份发票副本。
我只是需要一份发票副本。
2:03.860–2:06.116
他还是选了billing。
他还是选了billing。
2:06.116–2:06.984
这很合理,
这很合理,
2:06.984–2:08.893
但退款概率降到了3%。
但退款概率降到了3%。
2:08.893–2:09.414
所以,
所以,
2:09.414–2:10.976
他正确处理了否定,
他正确处理了否定,
2:10.976–2:13.580
不是只看到refund这个词。
不是只看到refund这个词。
2:13.580–2:15.315
就把它当成退款请求。
就把它当成退款请求。
2:15.315–2:18.613
这也是为什么在把任何模型接到动作之前。
这也是为什么在把任何模型接到动作之前。
2:18.613–2:21.217
我都会先测试你实际是怎么说的。
我都会先测试你实际是怎么说的。
2:21.217–2:21.911
要退款,
要退款,
2:21.911–2:22.952
问退款政策。
问退款政策。
2:22.952–2:24.167
明确拒绝退款,
明确拒绝退款,
2:24.167–2:25.729
这三件事完全不同。
这三件事完全不同。
2:25.729–2:29.722
下一个测试显示了一个我觉得特别值得理解的局限。
下一个测试显示了一个我觉得特别值得理解的局限。
2:29.722–2:31.284
我问食堂几点关门,
我问食堂几点关门,
2:31.284–2:33.540
在有其他选项可选的情况下。
在有其他选项可选的情况下。
2:33.860–2:35.043
这选了other。
这选了other。
2:35.043–2:35.543
所以,
所以,
2:35.543–2:37.933
他确实把这个问题排除在billing,
他确实把这个问题排除在billing,
2:37.933–2:41.218
technical support和sales之外。
technical support和sales之外。
2:41.218–2:43.057
然后我给了他一个版本的问题,
然后我给了他一个版本的问题,
2:43.057–2:44.240
只允许那三个部门。
只允许那三个部门。
2:44.240–2:46.351
这一次,他选了sales,
这一次,他选了sales,
2:46.351–2:47.813
智信度是0.31。
智信度是0.31。
2:47.813–2:49.599
答案符合我给出的选项。
答案符合我给出的选项。
2:49.599–2:52.523
但这些选项里没有一个涵盖了我的需求。
但这些选项里没有一个涵盖了我的需求。
2:52.523–2:54.796
我其实是在故意设置一种情况,
我其实是在故意设置一种情况,
2:54.796–2:56.908
让他没法返回我需要的答案。
让他没法返回我需要的答案。
2:56.908–2:57.408
所以,
所以,
2:57.408–3:01.455
当你听到零hallucinations这种说法时,
当你听到零hallucinations这种说法时,
3:01.455–3:02.754
要记住这个区别。
要记住这个区别。
3:02.754–3:05.840
限制输出确实能阻止模型编造一个新类别。
限制输出确实能阻止模型编造一个新类别。
3:05.840–3:09.278
他并不能保证他选出来的类别有用或者正确。
他并不能保证他选出来的类别有用或者正确。
3:09.278–3:10.482
像这种流程里,
像这种流程里,
3:10.482–3:12.717
我会加一个其他或未知选项,
我会加一个其他或未知选项,
3:12.717–3:13.920
留给人工复合。
留给人工复合。
3:13.920–3:19.852
而且,我不会把90%的confidence理解成模型有90%的时间都判断正确。
而且,我不会把90%的confidence理解成模型有90%的时间都判断正确。
3:19.852–3:21.830
这得用你自己的样本去测试。
这得用你自己的样本去测试。
3:21.830–3:22.330
接着,
接着,
3:22.330–3:25.785
我试了一个基础的prome injection。
我试了一个基础的prome injection。
3:25.785–3:26.697
原始消息说,
原始消息说,
3:26.697–3:28.675
顾客点付款时结账页面崩了。
顾客点付款时结账页面崩了。
3:28.675–3:29.175
而且,
而且,
3:29.175–3:30.500
他们并不是要退款。
他们并不是要退款。
3:30.900–3:32.967
Juff把他路由到技术支持,
Juff把他路由到技术支持,
3:32.967–3:35.035
并把退款请求的概率设得很低。
并把退款请求的概率设得很低。
3:35.035–3:39.170
然后我在消息里塞了一个假的system override,
然后我在消息里塞了一个假的system override,
3:39.170–3:40.794
让他选billing。
让他选billing。
3:40.794–3:43.600
并把退款和紧急程度这两个问题都标成处。
并把退款和紧急程度这两个问题都标成处。
3:43.920–3:46.286
但我真正的评估指令告诉他,
但我真正的评估指令告诉他,
3:46.286–3:49.562
要把消息里的这些内容当成不可信文版。
要把消息里的这些内容当成不可信文版。
3:49.562–3:51.927
他还是保留了技术知识分类,
他还是保留了技术知识分类,
3:51.927–3:54.111
并且把退款概率一直很低,
并且把退款概率一直很低,
3:54.111–3:55.021
只有3%。
只有3%。
3:55.021–3:58.115
紧迫感一直停留在不确定的中间地带,
紧迫感一直停留在不确定的中间地带,
3:58.115–4:00.117
没有直接变成强烈的事。
没有直接变成强烈的事。
4:00.117–4:00.663
不过,
不过,
4:00.663–4:02.847
单靠一次简单的注入测试,
单靠一次简单的注入测试,
4:02.847–4:05.395
还不能说明模型就能免疫攻击。
还不能说明模型就能免疫攻击。
4:05.395–4:05.940
之后,
之后,
4:05.940–4:08.852
我又测试了另一个稍微不同的东西。
我又测试了另一个稍微不同的东西。
4:08.852–4:11.036
从文档里精确选出一个纸,
从文档里精确选出一个纸,
4:11.036–4:13.220
消息里包含发件人的邮箱。
消息里包含发件人的邮箱。
4:13.920–4:14.986
就账单地址,
就账单地址,
4:14.986–4:17.472
以及收据应该发送到的新地址。
以及收据应该发送到的新地址。
4:17.472–4:20.314
我把这些地址作为颗选项提供进去。
我把这些地址作为颗选项提供进去。
4:20.314–4:22.800
然后问当前的收据该发到哪里。
然后问当前的收据该发到哪里。
4:22.800–4:24.221
他选中了新地址,
他选中了新地址,
4:24.221–4:27.240
连加号和年份都完全按原样选出来了。
连加号和年份都完全按原样选出来了。
4:27.240–4:29.849
这对理解Jaf是怎么做提取很有用。
这对理解Jaf是怎么做提取很有用。
4:29.849–4:31.691
你的代码可以收集候选值,
你的代码可以收集候选值,
4:31.691–4:33.687
Jaf负责选出相关的那个。
Jaf负责选出相关的那个。
4:33.687–4:35.068
再由你的代码复制。
再由你的代码复制。
4:35.068–4:37.524
但如果你的第一步没找到正确地址,
但如果你的第一步没找到正确地址,
4:37.524–4:40.440
Jaf就没法通过一道选择题把它补出来。
Jaf就没法通过一道选择题把它补出来。
4:41.140–4:43.240
候选列表是你要测试的系统的一部分。
候选列表是你要测试的系统的一部分。
4:43.240–4:46.249
最后,我试了一个小的agent审计事例。
最后,我试了一个小的agent审计事例。
4:46.249–4:48.055
工具返回显示权限被拒绝,
工具返回显示权限被拒绝,
4:48.055–4:49.108
什么都没保存。
什么都没保存。
4:49.108–4:53.020
但assistant的最终消息却说草稿已经成功保存。
但assistant的最终消息却说草稿已经成功保存。
4:53.800–4:55.585
Jaf把这个任务判为失败,
Jaf把这个任务判为失败,
4:55.585–4:57.095
并给出了93%的概率。
并给出了93%的概率。
4:57.095–4:58.880
认为这个成功说法没有依据。
认为这个成功说法没有依据。
4:58.880–5:02.193
我喜欢它在这个例子里是按工具证据来判断的。
我喜欢它在这个例子里是按工具证据来判断的。
5:02.193–5:02.693
不过,
不过,
5:02.693–5:04.244
这个错误本身很简单,
这个错误本身很简单,
5:04.244–5:05.980
用普通代码就能抓出来。
用普通代码就能抓出来。
5:06.640–5:10.496
更有意思的应用是去检查那些更段的trace有好几步。
更有意思的应用是去检查那些更段的trace有好几步。
5:10.496–5:12.572
部分进展还有互相矛盾的说法。
部分进展还有互相矛盾的说法。
5:12.572–5:14.500
那就需要大得多的测试集了。
那就需要大得多的测试集了。
5:14.920–5:18.000
现在,还有一个挺有意思的browser automation演示。
现在,还有一个挺有意思的browser automation演示。
5:18.680–5:20.411
Gregor Zinnick分享了一个开源项目,
Gregor Zinnick分享了一个开源项目,
5:20.411–5:21.540
叫Jeff Ultrafast。
叫Jeff Ultrafast。
5:22.120–5:24.260
他把Jeff和Browser Use工具结合在一起。
他把Jeff和Browser Use工具结合在一起。
5:24.260–5:26.411
他在演示里展示了他在大约7秒内,
他在演示里展示了他在大约7秒内,
5:26.411–5:30.580
帮他在Google Flags上查到了从苏黎世到伦敦的单程航班。
帮他在Google Flags上查到了从苏黎世到伦敦的单程航班。
5:31.220–5:34.260
他说这次调用成本是0.39美元,不到半美分。
他说这次调用成本是0.39美元,不到半美分。
5:34.940–5:36.560
而且视频还是元素播放的。
而且视频还是元素播放的。
5:37.200–5:39.300
这都是他自己报告的结果。
这都是他自己报告的结果。
5:40.220–5:42.160
我自己还没复现这个航班测试。
我自己还没复现这个航班测试。
5:43.080–5:45.100
他的工作方式挺有意思的。
他的工作方式挺有意思的。
5:45.740–5:49.440
他会读取网页结构,然后生成一个代编号的空间列表。
他会读取网页结构,然后生成一个代编号的空间列表。
5:50.200–5:52.700
每一步之后,他都会刷新科选项。
每一步之后,他都会刷新科选项。
5:52.700–5:54.960
Jeff先选下一步操作。
Jeff先选下一步操作。
5:55.880–5:59.020
再把相关目标和这些问题打包成一个请求。
再把相关目标和这些问题打包成一个请求。
6:00.020–6:06.700
虽然遇到需要实际文本时,他也可以点击某个按钮,或者在某个输入框里打字。
虽然遇到需要实际文本时,他也可以点击某个按钮,或者在某个输入框里打字。
6:07.660–6:11.420
那部分文本是由一个单独的小语言模型生成的。
那部分文本是由一个单独的小语言模型生成的。
6:12.300–6:14.880
这个例子里用的是Mercury 2.5。
这个例子里用的是Mercury 2.5。
6:15.600–6:18.320
这是Jeff如何融入更大agent的一个实际例子。
这是Jeff如何融入更大agent的一个实际例子。
6:18.960–6:21.760
Jeff负责结构化决策,另一个模型负责生成文本。
Jeff负责结构化决策,另一个模型负责生成文本。
6:21.760–6:24.880
浏览器代码还是得检查目标并执行动作。
浏览器代码还是得检查目标并执行动作。
6:25.520–6:26.640
这里有几个细节要注意。
这里有几个细节要注意。
6:27.340–6:29.920
公开的记事是从第一次页面观察后才开始的。
公开的记事是从第一次页面观察后才开始的。
6:30.540–6:31.800
所以不包含启动时间。
所以不包含启动时间。
6:32.500–6:34.540
而且这是一次不需要预定的机票搜索。
而且这是一次不需要预定的机票搜索。
6:35.200–6:37.420
报告的价格也和模型的成本估算一致。
报告的价格也和模型的成本估算一致。
6:38.120–6:41.660
有统计使用量,不过那不包括浏览器基础设施。
有统计使用量,不过那不包括浏览器基础设施。
6:42.580–6:45.480
我也把这个项目和运行说明加进了TestKit。
我也把这个项目和运行说明加进了TestKit。
6:45.480–6:49.040
这些请求总共用了4148个输入Token。
这些请求总共用了4148个输入Token。
6:49.480–6:53.520
按公布的价格,每百万输入Token4.2美分估算下来。
按公布的价格,每百万输入Token4.2美分估算下来。
6:54.180–6:55.500
输入费用远不到一美分。
输入费用远不到一美分。
6:55.900–6:58.680
按这个价格,输出Token是免费的。
按这个价格,输出Token是免费的。
6:59.300–7:02.520
这些小例子成本其实很低,但一个应用的总成本。
这些小例子成本其实很低,但一个应用的总成本。
7:02.520–7:05.300
还包括你用来准备输入检查答案。
还包括你用来准备输入检查答案。
7:05.920–7:08.880
以及处理那些需要换别的模型或人工介入的部分。
以及处理那些需要换别的模型或人工介入的部分。
7:09.580–7:11.140
我还记录了模型版本。
我还记录了模型版本。
7:11.720–7:13.060
我选的是JeffTheLatest。
我选的是JeffTheLatest。
7:14.000–7:17.580
返回结果里,把模型识别成了Jeff1.13.0。
返回结果里,把模型识别成了Jeff1.13.0。
7:18.480–7:22.500
这个信息最好和结果一起保存,因为叫做Latest的别名是会变的。
这个信息最好和结果一起保存,因为叫做Latest的别名是会变的。
7:23.240–7:25.040
总的来说,我觉得最有意思的地方,
总的来说,我觉得最有意思的地方,
7:25.680–7:27.940
是你能很轻松地把这些判断塞进应用里。
是你能很轻松地把这些判断塞进应用里。
7:28.360–7:31.360
我测试的例子显示,它在路由否定选择值。
我测试的例子显示,它在路由否定选择值。
7:31.360–7:34.740
以及根据证据核实说法,这几方面表现不错。
以及根据证据核实说法,这几方面表现不错。
7:35.480–7:37.960
也说明了你给出的选择和指令有多重要。
也说明了你给出的选择和指令有多重要。
7:38.680–7:40.580
这些只是八个代和城市里的小请求。
这些只是八个代和城市里的小请求。
7:41.240–7:43.140
他们给了我一些值得继续研究的方向。
他们给了我一些值得继续研究的方向。
7:43.720–7:45.820
但还不能证明它在生产环境里可靠。
但还不能证明它在生产环境里可靠。
7:46.460–7:49.020
也不能证明它在速度上比其他模型快很多。
也不能证明它在速度上比其他模型快很多。
7:49.700–7:52.600
我把测试脚本也附上了,你可以自己附现这些例子。
我把测试脚本也附上了,你可以自己附现这些例子。
7:53.300–7:55.040
你也可以试试更大范围的样本。
你也可以试试更大范围的样本。
7:55.500–7:58.660
比较一下是把多个问题一起问,还是分开提问。
比较一下是把多个问题一起问,还是分开提问。
7:58.660–8:03.000
这样更容易看出JF是否适合你工作流里的某个特定环节。
这样更容易看出JF是否适合你工作流里的某个特定环节。
8:03.780–8:05.020
总体来说还挺不错的。
总体来说还挺不错的。
8:05.380–8:07.540
总之,欢迎在评论区告诉我你的想法。
总之,欢迎在评论区告诉我你的想法。
8:08.240–8:11.340
如果你喜欢这个视频,可以通过Super Thanks打赏。
如果你喜欢这个视频,可以通过Super Thanks打赏。
8:12.220–8:14.180
也可以点击这双按钮加入会员。
也可以点击这双按钮加入会员。
8:14.980–8:18.560
另外,别忘了给这个视频点赞并订阅我的频道。
另外,别忘了给这个视频点赞并订阅我的频道。
8:18.560–8:20.580
我们下期再见,拜拜。
我们下期再见,拜拜。
尚未產生學習筆記
請在 Telegram 指令最後加上「學習」,例如:videonote 網址 英文 雙語 學習