start	end	text
0	4720	那么紧接着我们就来看看,Response API到底应该如何上手来进行使用。
4720	14000	这个其实是我们现在在去做开发的过程当中,可能都需要会涉及到一些底层的通信格式的讲解。
14000	18560	当然如果是去年的话,这部分内容应该是非常核心,非常重要的一部分的内容。
18720	27240	还有底层的开发范式,对不对?OpenAI的Response API,还有之前的ChatComplations API,这都是我们将用大模型的基础。
27240	30080	到现在在webcoding时代
30080	30900	这些很多功能
30900	32200	我们其实都可以让大模型
32200	32820	帮我们完成
32820	34520	所以像这部分内容
34520	35560	仍然是很重要
35560	37120	但是我们可能就不需要
37120	39140	去特别深入的吸引到
39140	39920	每一行代码
39920	40700	每一个参数
40700	41820	分别代表什么样的含义
41820	43040	这个程度来进行理解
43040	43900	你只需要知道是
43900	45120	它是干什么的
45120	46020	有什么用
46020	47760	以及你能怎么用
47760	49340	这个东西其实是最重要的
49340	50760	那么我们接下来就来看看
50760	53200	OpenAI的Responses API
53200	54200	到底是什么
54200	56480	当然这里大家如果不太了解
56480	58220	这个Response API到底是什么的话
58220	60940	你可以把它想象成就是OpenAI版的LongChain
60940	64140	专门负责给我们开发者一个接口
64140	66820	去更好的去调用这样的一些大模型
66820	70100	然后把它们和一些工具给它绑在一块
70100	71620	最后做成一个Agent
71620	72840	就是这样的一个API
72840	74140	可以这么来进行理解
74140	76120	当然其实这个Response API
76120	77580	是去年3月11号
77580	82440	OpenAI正式开源的一个全新的一种大模型调度的一种方法
82440	85240	然后官网在OpenAI官网上也有非常详细的
85240	88500	关于使用这个Response API的一些好处啊
88500	92300	和怎么去进行迁移呀的一些这个方法啊
92300	93780	当然这里我们要说明的是
93780	96980	其实每一家啊大保险厂商都有资格的啊
96980	98700	这个API的调度的这个范式
98700	100560	比如说对于这个
100560	102880	Anthelope来说啊
102880	105460	他们呢自己有一套Anthelope API啊
105460	107680	还有一套Cloud Agents SDK啊
107680	109360	那么对于OpenAI来说呢
109360	111480	他们家啊有这个Response API啊
111480	113880	和Agent SDK啊两套开发框架啊
113880	120700	这个其实每一家他们都会有推出一些适配自己家模型的一些agent通信和开发范式
120700	121600	是这么一回事
121600	123240	那么对于openAI来说
123240	130640	他们其实当然这个responses API就是现在他们来进行模型调度的过程当中最核心的响应的这样的方法
130640	133280	然后对于这个deep seek来说
133280	137000	他现在是接入到了responses API这功能体系里面来
137000	139760	当然这里其实有一个很有意思的一个点
139760	142380	就在于说其实之前有同学会问到说
142380	147280	Deepseek他们是怎么去考虑去接入OpenAI的Response API的呢
147280	148640	当然我们说对Deepseek来说
148640	150840	他一旦接入OpenAI这个Response API之后
150840	153780	他实际上就可以无缝的接入Codex的体系了
153780	155060	那他是怎么接入的呢
155060	155680	其实非常简单
155680	156940	就是在后训练的过程当中
156940	160960	给了他很多的一些指令方面的训练集
160960	165860	让他的响应格式能够和Response API的响应格式来进行兼容
165860	168720	这里其实就会说的会比较底层了
168720	169760	因为其实大家知道
169760	171580	对于任何大模型来说
171580	173760	它原始的这个输出这个内容
173760	175680	实际上就是一个又一个token
175680	177440	或者一个又一个字符
177440	179940	这个字符里面内容其实会非常非常多
179940	181680	然后大模型输出的
181680	183820	实际上是一段非常非常长的这个字符
183820	185120	那么我们每次呢
185120	188280	在去进行大模型的这个聊天的过程当中
188280	190860	实际上后台是需要把很长的这段字符
190860	193060	来进行各式各样的格式解析的
193060	194200	这段是什么
194200	195180	那段是什么
195180	196300	那么有一些呢
196300	199180	他输出这个结果是给用户去看的
199180	200820	原来某一段话的回复
200820	202360	那么也有一些输出这个结果
202360	204740	可能是比如说工具调用信息
204740	207780	他自己运行当中的一些状态信息等等等等
207780	209680	总之是有很长很长这段信息
209680	212700	那么这个信息是以什么样的格式来进行输出
212700	214580	他就可以被什么样的格式来进行解析
214580	215480	你可以这么来经理解
215480	217820	那只不过现在对于DeepseekV4
217820	219300	整个正式版的模型来说
219300	223960	他们选择了是以Responsees API这样的一个形式来进行输出
223960	226640	所以他们就可以被Response API来进行解析
226640	228080	所以他就跟他兼容了
228080	229980	这么来进行理解就可以了
229980	230600	是这么一回事
230600	233360	是他在训练过程当中进行的非常深度的设置
233360	234440	OK好
234440	237020	那么问题是Response API它是什么东西
237020	237680	对不对
237680	241440	它怎么样来进行的解析
241440	245180	那么非常完整的一次Response API的调用
245180	247420	大家可以看这段代码
247420	250040	那么这个代码实际上就是一次非常完整的
250040	250840	非常底层的
250840	251760	我们使用Python
251760	252700	当然你使用这个
252700	254420	使用这个TS
254420	256000	其实也是类似的
256000	257100	这样的语法规则
257100	259460	来去完成一次通过Response API
259460	260660	调用底层模型的
260660	262480	一整个完整的这样的一个流程
262480	263460	那它是什么样的呢
263460	264640	首先我们需要
264640	267580	这个import OpenAI
267580	268580	就导入这样的库
268580	270340	然后导入这个库之后
270340	271500	接下来我们需要实力化
271500	272680	一个OpenAI的客户端
272680	274680	然后在OpenAI客户端里面
274680	276060	输入你的Deepseek API key
276060	277880	和Deepseek的这个base URL
277880	279380	这个base URL是定死的
279380	280600	然后这个Deepseek API key
280600	281800	你需要自己去注册一个
281800	285160	那么这里就实力化了一个open AI的这样的客户端
285160	286900	然后有了这个客户端
286900	289300	或者你可以把它理解成是一个负了值的
289300	292620	一个open AI对象的一个实力化的一个对象
292620	293260	就这么一回事
293260	299140	然后接下来就可以调用client.response.create这样的一个命令
299140	303800	就可以去获得一次对应的模型回复的这样的响应结果
303800	306440	这里我们输入modal等于deep seek v4 flash
306440	309220	然后这个instructor代表的含义
309220	310860	实际上就是system prompt
310860	311880	你可以这么来自己理解
311880	315100	就是我们整个的agent运行的方式当中
315100	315960	system prompt
315960	317500	然后有一个input
317500	318500	input代表的含义就是
318500	320380	我现在跟他来进行的对话
320380	320740	对不对
320740	322820	然后下面还有其他的参数
322820	324220	这下我们可以都不管
324220	325820	然后通过这样的方式
325820	327860	就可以完成一次模型的调用
327860	329240	当然我这里给大家举的例子
329240	331340	都是生成的英文的提出词
331340	332680	但用中文也是一样的
332680	333380	没有任何影响
333380	336100	总之就可以完成一次对应的响应
336100	338340	比如说我们这就可以让他来进行运行
338340	340440	我这个是在线的这个环境
340440	341540	就可以直接来进行运行
341540	342440	也是一样对不对
342440	344400	这个Response API
344400	346700	先做好一个Client
346700	348120	然后这Client
348120	349960	然后接下来就可以跟他来进对话了
349960	350720	就这么一回事
350720	352200	那么这个Client
352200	355080	实际上我们现在所说的这个Response API
355080	357300	实际上就是这Client里面的一个方法
357300	361320	通过他能够去获取一次又一次模型的响应结果
361320	362900	是什么样的一个情况
362900	364420	好
364420	367880	那么对于我们当前的这个Response API来说
367880	370180	其实它返回的这个结果里面
370180	371700	包含的消息会非常多
371700	372720	它会包含你的
372720	373900	比如说Reasoning Item
373900	375680	推理的字段的内容
375680	377280	会包含这个Message的内容
377280	378620	会包含这个Function Call
378620	379840	就是你工具调用这个内容
379840	380360	等等等等
380360	381460	价格式各样这个内容
381460	383620	然后这个Message里面还会包含
383620	385580	它模型本身的output
385580	388060	或者其他的一些警告
388060	389440	拒绝的一些信息
389440	391240	还有包括文本图像的一个信息
391240	391720	等等等等
391720	392740	也就是它实际上
392740	393460	你可以把理解成
393460	395760	就是一个完整的一种响应格式
395760	397960	是这么样的一个基本的定位
397960	399720	所以也是基于这样的响应格式
399720	403720	我们才能够去很好的去跟当前大模型来进行对话
403720	406660	能够把它的对应结果来进行一个输出
406660	407900	来进行一个响应
407900	408820	那么上面也是一样的
408820	409480	我们又来了一遍
409480	412300	这个Response API完整的执行流程
412300	414160	那么只不过在执行的过程当中
414160	417600	我们这里是考虑把每一个Response里面的所有内容
417600	418580	单独给你打印出来
418580	420420	来看一看它到底回复哪些东西
420420	423140	那么它回复内容包括什么Response ID
423140	424540	Response的State
424540	425540	Response Model
425540	426220	等等等等
426220	427100	总之就是
427100	428800	它的每一条消息回复里面
428800	430660	实际上会包含我们当前
430660	433720	所有的回复的内容
433720	435680	所有当前模型运行的
435680	437060	全部的这样的信息
437060	437940	换而言之就是
437940	439760	我们当前这样的模型
439760	441960	在执行当前任务的时候
441960	443100	所有的状态信息
443100	444340	你可以这么来进行理解
444340	444820	好
444820	447940	那么它和另外一个
447940	449900	就是我们经常会讨论的
449900	451560	叫Chat Compilation API
451560	453040	它们两者之间
453040	454780	到底是什么样的一个
454780	456840	什么样的区别
456840	458980	这里我们是首先需要放在这
458980	460120	来给大家来进行个探讨
460120	461600	因为其实很多同学之前
461600	462940	其实是了解
462940	465100	OpenAI的Chat Compilations API的
465100	466400	那么这里面
466400	468440	我们说OpenAI是原上一版本的
468440	469680	Chat Compilations API
469680	471340	它的核心的功能
471340	473440	是去围绕Message消息列表
473440	474560	来进行编辑
474560	475620	也就是说它实际上
475620	477480	是去维护一个又一个消息列表
477480	478440	那一个消息列表里面
478440	479940	我们需要由System
480000	485400	也就是说它实际上是去维护一个又一个消息列表,那一个消息列表里面我们需要有systemmessage,需要有usermessage,有的时候还会有大模型回复回来message,
485400	494600	但总之我们实际上重点是去维护它的模型每次运行过程当中消息列表,然后给它导入到当前模型里面去来进行一个运行,
494600	496000	来进行一个测试
496000	497760	然后最后的模型也给你返回出一个消息
497760	501200	它返回消息的本质的也是一条消息
501200	503880	所以原来的openAI它上一代的
503880	504900	或者deep seek也是一样
504900	507680	它之前支持的主要是chatcompletions API
507680	510640	那么它那些主要是去维护一个消息列表
510640	513100	而现在升级到了response API
513100	517100	你会发现它实际上是维护你当前运行的一个状态
517100	519120	所谓当前运行的状态
519120	521740	就指的是我们现在在运行的过程当中
521740	525020	一个模型它其实每次在进行响应的过程当中
525020	527860	它会有很多很多的一些状态方面这样的信息
527860	530240	而原来我们重点维护的消息列表
530240	532720	你可以把理解成只是状态当中的一个维度
532720	533640	仅此而已
533640	535800	那么现在我们说借助Response API
535800	537080	实际上对于开发者来说
537080	539480	其实就能够非常便捷的把一些工具
539480	542040	把一些这个extract给它放到一块
542040	543800	就可以迅速的构成一个agent
543800	545420	然后你只需要输入一个input
545420	548900	它背后就可以完整的去执行一整个agent loop
548900	550620	那所谓agent loop
550620	552900	这点大家也可以这么理解一下
552900	554820	就是我现在agent要调用一些工具
554820	556380	来完成一些事项
556380	556720	对不对
556720	557820	那这工具有的时候
557820	560660	我们需要多部的进行调用
560660	563260	有的时候也需要并发的来进行调用
563260	563560	对不对
563560	565420	那原来我们需要实现多部
565420	566840	或者并发的这样的工具调用
566840	568760	你可能得编写更加复杂的
568760	569400	这样的一个程序
569400	571460	或者是用比如说像long chain
571460	572580	这样的agent开发框架
572580	573000	对不对
573000	575020	它其实是支持内部
575020	577560	去完成agent loop这样的工作的
577560	579480	agent loop就是它不断不断去调用工具
579480	582020	直到它能够完成当前的请求为止
582020	582480	好
582480	583920	现在我们说这些功能
583920	587960	其实也是可以被responses API来去完成的
587960	591380	这个其实是它的一个功能上面这样的进阶
591380	593900	如果原来你是使用chat completion API的话
593900	596080	你可能就需要不断的去维护它的消息例表
596080	597980	其实整个过程会非常的繁琐
597980	600180	如果你需要去实现agent loop的话
600180	601740	其实你需要手动来进行搭建
601740	603300	而现在是用responses API
603300	604060	其实不需要
604060	607040	它内部是可以帮你去全自动的
607040	609140	完成agent loop这样的工作的
609140	612020	所以其实对于Responses API来说
612020	613820	它其实也就是你可以把它理解成
613820	615500	就是一个类似于LongChain这样的一个
615500	617880	agent和工具把它绑定一块的一个脚手架
617880	620660	这个是它的一个基础的认知
620660	626380	当然在OpenAI官方的给出的Responses API的说明里面
626380	627780	它其实也有谈到说
627780	629400	我们现在使用Responses API
629400	632920	相比于上一代的Chat Completions API来说
632920	634760	其实它的性能是增长了3%
634760	638480	它是在terminal的榜单上
638480	640560	它性能是增上了3%
640560	642240	也就是说明有了框架
642240	643720	去搭建一些agent
643720	645640	实际上是能够更好的
645640	648660	更加稳定的去维护这些agent运行的
648660	650820	它是有这样的一个功能在这
650820	651200	OK
651200	653960	这个是所谓的Responses API
653960	656960	当然我们说对于Responses API来说
656960	658420	我们下面还有很多的一些
658420	661200	大家可以课后自己再去来进行
661200	663580	深度学习的一些内容和素材
663580	666820	比如说它也是支持一些参数这样的调整的
666820	667160	对不对
667160	668780	比如说什么temperature
668780	672440	还有topia这样的一些底层的模型运行参数
672440	673200	这样的调整
673200	678180	比如说你这个temperature调整的范围是在0到2之间
678180	680420	然后temperature越高
680420	681860	那么它生成结果越就越不稳定
681860	682700	然后temperature越低
682700	684140	它生成结果越稳定等等等等
684140	688480	同时它也是支持直接通过一些json schema
688480	690940	这个是来进行structured output
690940	692260	就是结构化的输出
692260	693220	那么结构化输出呢
693220	695500	实际上在现在很多的agent开发场景下
695500	697100	都会非常非常的重要
697100	697480	对不对
697480	699000	你可以通过类似这样的方式
699000	702840	去设置好对应的这个结构化输出的
702840	704980	这个结构化这个文本的这个要求
704980	705640	然后呢
705640	707760	把它直接带入到我们的
707760	710080	Responses API的这个text参数里面去
710080	712100	就让它能够进行结构化的输出了
712100	712840	是这么一回事
712840	714140	当然我们现在公开课
714140	715860	其实一般来说就不会围绕
715860	716940	比如说结构化输出里面
716940	718640	具体它是规定哪些结构
718640	720140	这个Json schema的这个对象
720140	721540	到底代表什么样的含义
721540	722600	来展开来说
722600	723860	实际上也是因为
723860	725660	这东西都可以让大模型来完成
725660	727060	重点是你需要知道的是
727060	728500	有这个responsive API之后
728500	730740	它的结果化输出会非常稳定
730740	733400	是这么样的一个情况
733400	734520	具体怎么稳定
734520	736160	它其实有很多层的检验
736160	738400	什么text format
738400	740320	一层的检验
740320	742260	返回结果的Json格式的
742260	743760	一层本地的教验
743760	746780	最后再给你返回一个结果化输出
746780	747440	这样的文本
747440	750640	它是可以经过多层的教验和反馈
750640	753020	最后给你输出一个结构化的文本
753020	754640	这个其实是没有什么问题的
754640	756960	然后同时对于Response API来说
756960	759680	它还有非常关键的Tours的参数
759680	760060	对不对
760060	762000	Tours的参数我们一会儿就看到
762000	764100	它其实和Launcher里面的Tours的参数
764100	765440	实际上就是一样的
765440	766740	给它输入一个工具
766740	767800	然后它就可以调用这工具
767800	769440	来完成对应的工作
769440	770580	是怎么样的情况
770580	773180	所以对于整个的Response API来说
773180	775040	核心样的参数就这么些
775040	777600	模型instruction系统开发指令
777600	778280	对不对input
778280	780460	本次任务的基本请求
780460	783480	然后还有这个什么maxoutputtoken
783480	785700	这个最高的模型输出结果上线
785700	787640	还有这个temperaturetoppr reasoning
787640	788600	对它推理强度
788600	789360	刚不说了吗
789360	790460	这个V4这个模型
790460	791800	有三档推理强度
791800	793820	然后下面还有这个text
793820	796680	主要是去进行结构化输出的一些参数
796680	797500	然后还有这个tours
797500	799740	是可以绑定一些外部的这样的工具
799740	801140	然后它还有这个tourchoice
801140	802060	代表的含义是
802060	803220	我们每次运行的时候
803220	804780	指定的工具来进行运行
804780	805820	还有这个stream
805820	806260	对不对
806260	807820	流式打印等等等等
807820	808900	有很多很多这些参数
808900	810320	基本上如果你看这参数
810320	813580	你会感觉他整个的运行的状态
813580	818940	差不多就和LongChain的CreateAgent是非常类似的
818940	819360	对不对
819360	824160	那这个是现在对于DeepSeq V4正式版模型来说
824160	826940	他所选择的一套基本的API
826940	829640	当然下面还有关于什么流失打印
829640	831080	是怎么样来进行操作的
831080	833400	这一点大家也可以自己去看一下
833400	837280	下面还有对应的可以来进行测试和运行的代码
837280	839180	关于流失打印其实也是一样的
839180	840500	就是人工讲应起来
840500	840920	其实会非常
840920	842900	其实人工编写其实非常麻烦
842900	844480	但是对于现在的agent来说
844480	845940	他们编写其实非常简单
845940	846760	所以你只需要知道
846760	848740	他其实这个是可以非常顺利的
848740	849820	来进行实现的
849820	850480	就没有什么问题
850480	851460	然后同时
851460	853760	他由于是维护每次运行的状态
853760	856240	所以他也是可以把之前对话状态
856240	857040	给他传入进去的
857040	859760	把之前对话状态传入进去
859760	860620	实际上相当于是
860620	862800	把上一次任务执行记录的全部信息
862800	865300	包括上一次咱们对话这个信息
865300	866240	都给他输入进去
866240	868500	然后他就可以来实现多种对话了
868500	869100	就这么一回事
869100	874700	这个其实是它的多轮对话的历史保存的一个基本的方法
874700	879900	就是把它的之前上一轮的response id给它传入进去
879900	883300	那么它接下来就可以顺利的来进行多轮对话了
883300	885400	这个是它的一个基本设置
885400	889700	然后同时下面还有关于function calling的完整的外部循环
889700	891860	就是我们现在要去定一个外部工具
891860	892300	对不对
892300	894100	你这个什么查询天气的外部工具
894100	895700	各式各样的外部工具
895700	899000	包括这里面是个结构化信息的匹配的一个外部工具
899000	903320	等等等等 都可以通类似使用类似这样的方式来进行一个定义
903320	907720	定义好了外部工具之后 接下来在Responses API里面直接输入tools
907720	911960	然后把你的工具给它放进去 然后它就可以顺带进行运行 就这么简单
911960	916440	当然如果你去拆 如果你去看它底层的响应的过程的话
916440	920920	这里其实就是一个我们去看它底层响应的过程完整的事例了
920920	924760	那么你会发现 它其实底层仍然还是一个function calling的完整流程
924760	927880	就是你给它关联工具之后 你先给工具发送个请求
927880	930280	然后公共运行完了之后呢 给你一个function response message
930280	932280	然后你接收到function response message之后呢
932280	934080	再开启你的second response啊
934080	936280	就是再去结合最开始用户的问题啊
936280	938280	去给用户来进行回复啊 是这么一回事啊
938280	940680	所以这个呢实际上是一个验证的过程啊
940680	942880	你要说一下啊 对于response API来说呢
942880	944680	他的这个也是一样的
944680	948080	他的这个工具要用其本质上啊 也是这个function calling啊
948080	951680	跟现在所有的其他的这个agent开发框架的这个function calling啊
951680	952680	也全部都是一样的
952680	956080	当然他其实非常完善好 整个response API里面
956080	957680	他其实有非常完善的功能
957680	959700	包括它工具室外的时候
964040	974960	所以也是基於response API,我們說deepseek它現在是擁抱了response API,才能夠更好的去接入到我們現在的codex裡面來進行運行。
974960	980960	否则的话 如果Deepseekv4本身这个模型 它并不兼容Responsees API的话 那么它其实是没有办法
980960	987360	完整接入到Codex里面去 并且能完整的释放现在Codex的完整性能 这个其实做不到
987360	994960	当然其实我们上面关于底层的API这个讲解 一个其实比较快 第二个其实我们也是希望主要是给大家留下一些印象
994960	1000560	知道是怎么一回事就可以了 因为之后的编写主要是让我们AI来进行编写
1000560	1003480	所以我们可能就不像之前的公块课一样
1003480	1005940	围绕每一个API的每一行代码来进行讲解
1005940	1007980	因为现在来看其实意义不是很大
1007980	1009560	你总之你核心是要知道
1009560	1011520	这个Response API到底是干什么的
1011520	1013080	这点其实会非常重要
1013080	1015800	当然下面我们其实是围绕Response API
1015800	1016940	做了一个小小的实验
1016940	1019820	我们来搭建了一个简单的一个agent
1019820	1022560	然后这个agent基本上就是
1022560	1024940	现在有很多很多张表
1024940	1027320	然后我们来做一个简单的数据分析
1027320	1029400	然后核心是从各个表当中
1029400	1031680	来进行数据提取跟数据查询
1031680	1035180	当然我们这里为什么跟大家去先使用这个Response API
1035180	1036200	搭建一个简单的数据分析
1036200	1037640	因为从下一个小节开始
1037640	1040800	我们在使用Codex这样更加复杂的工具的时候
1040800	1043300	实际上我们最后的目标这不就是搭建
1043300	1043780	对不对
1043780	1045880	长成这样的一个数据分析系统吗
1045880	1049100	只不过我们现在从最底层的API出发
1049100	1050240	一点点来进行学习
1050240	1053980	到最后能搭建这么一个比较复杂的数据分析系统
1053980	1055460	其实有很长的路要走
1055460	1058000	所以我们在最一开始就给大家举一个小例子
1058000	1061660	如果我们现在是使用Response API来搭建一个数据分析系统的话
1061660	1062700	那么未来它是一个
1062700	1065980	那么它首先这第一步应该怎么卖出去
1065980	1068860	然后我们再来考虑使用这Codex之后
1068860	1073240	你整个搭建数据分析系统的效率跟速度就可以起飞
1073240	1073580	对不对
1073580	1076480	我们来一步一步来看它是怎么样来进行运行的
1076480	1078480	当然这里我们涉及到一个数据集
1078480	1079640	叫Allist
1079640	1082120	它是巴西电商公司的一个开源数据集
1082120	1084380	这个数据集其实非常庞大
1084380	1088040	里面总共有这么十几万行的这个数据
1088040	1089580	那这个数据集也是我们之后
1089580	1093380	在做我们当前整个数据分析系统的性能测试的时候
1093380	1094560	最核心的这个数据集
1094560	1095380	所以大家可以看一下
1095380	1098360	当然其实对于所谓这个电商的这个数据
1098360	1100460	其实主要是分成这么两大类
1100460	1101820	一个是orders
1101820	1103060	一个是customers
1103060	1105720	这么两类的这个数据表格
1105720	1108000	它这个数据集不是一个单独的数据集
1108000	1110580	是分了好多好多好多个这个子数据的这个数据集
1110580	1112580	然后这个orders就是你订单
1112580	1114220	然后customer就是当前的客户
1114220	1115420	等等非常非常多
1115420	1120580	总之近期订单历史订单非常非常多
1120580	1122760	总共是一个世界外行的数据表格
1122760	1125620	那么这个数据表其实会有点复杂
1125620	1128400	我们一会儿都会看到这个数据表里面完整的内容
1128400	1129740	总之大家需要知道是
1129740	1130920	哎呀 这里有个数据表格
1130920	1133360	好 那么如果你现在想要使用
1133360	1135360	比如说Deepseek v4这样的模型
1135360	1138700	搭配着它现在已经兼容的Responsees API
1138700	1140500	去搭建一个数据分析系统
1140500	1143760	大家可以想想看有哪一些想法
1143760	1144280	对不对
1144280	1146000	其实我们对于现在的agent开发来说
1146000	1148100	首先你得有一个基本的思路
1148100	1149840	和一些基础的想法
1149840	1151560	可能我们就会涉及到
1151560	1153440	比如说我现在数据库
1153440	1154780	数据存储的数据库里面
1154780	1156520	所以我需要有一些
1156520	1159120	从数据库里面取出数据的这样的工具
1159120	1159720	对不对
1159720	1161680	然后也需要有一些
1161680	1163840	我们去查询数据这样的工具
1163840	1166700	然后同时还需要有一些读取数据的工具
1166700	1168320	然后同时还需要有一些
1168320	1171100	查询具体的每一个数据里面的
1171100	1172120	航和列之间的工具
1172120	1174060	这里面其实我们是给出一系列工具
1174060	1175040	列出数据表格
1175040	1177240	然后查询每一个数据表
1177240	1178500	什么来源表明
1178500	1179800	然后什么查询
1179800	1181220	什么每一个数据的
1181220	1182560	这个原数据
1182560	1183220	它的来源
1183220	1185020	它的最大最大行数
1185020	1187360	它的编写设计数代码来进行运行
1187360	1188560	同时还需要
1188560	1191140	去创建
1191140	1193640	去实现一个能够单独去创建数据集的
1193640	1195000	这样的一个外部工具等等
1195000	1198160	这个其实是我们现在的建议数据分析的过程当中
1198160	1199180	我们最核心
1199180	1200060	最常用的
1200060	1201560	无聊数据库来进行操作的啊
1201560	1202860	是像四项工具啊
1202860	1203540	列数表格
1203540	1204020	对不对
1204020	1205360	查他的这个原数据啊
1205360	1207200	就是查这个数据表格的这个真实情况
1207200	1208240	然后呢编写circle啊
1208240	1209420	来进行这个读数啊
1209420	1210620	然后呢去创建表格
1210620	1211760	把这个数据给取出来啊
1211760	1213240	基本上我们说这四个工具呢
1213240	1214340	是非常核心的
1214340	1215220	这么四个工具
1215220	1215420	好
1215420	1215980	那么下面啊
1215980	1217420	其实就是关于这四工具的
1217420	1219620	这样的一个定义的这个方法了啊
1219620	1220380	那么这里面呢
1220380	1222420	其实各个不同类型的这个工具啊
1222420	1222740	他呢
1222740	1223740	其实呃
1223740	1225060	我们上面他的具体的功能
1225060	1226240	其实定义还是非常清楚的啊
1226240	1227660	这里我们都是使用的python
1230060	1232060	Sirco查询的一些工具
1232060	1233800	其实它背后的核心实现逻辑
1233800	1235860	就是把用户的输入的语言
1235860	1237080	把它转换成对应的Sirco代码
1237080	1239260	然后把它再去检查一下
1239260	1240740	Sirco代码本身这样的格式
1240740	1241920	那么接下来就可以来进行运行
1241920	1245540	就这么样的一个基本的使用方法
1245540	1249040	下面就是这些工具的一些创建这样的方式
1249040	1251360	然后紧接着我们就可以把这工具
1251360	1255720	给它关联到我们当前的Responses API里边来
1255720	1257940	那么接下来下面有一个Stream
1257940	1259160	就打印的这样的方式
1259160	1259800	那么接下来呢
1259800	1261640	我们说你的一个极简的啊
1261640	1263380	一个简易的这个agent啊
1263380	1264940	实际上就相当于是完成了啊
1264940	1266940	当然我们这里其实有个每一个
1266940	1269100	有每一个的这个外部函数
1269100	1271780	它具体完整的这样的这个定义方法啊
1271780	1272300	这里面呢
1272300	1273540	会有大家可以自己去看一下啊
1273540	1274940	因为实际上我们说啊
1274940	1276460	这个每个外部函数的这个定义呢
1276460	1277720	都会比较复杂啊
1277720	1279640	但是这里面先给大家简单的啊
1279640	1280860	留下一个这个印象啊
1280860	1282180	就是对于现在的
1282180	1283340	我们在进行啊
1283340	1284820	这个agent的开发过程当中啊
1284820	1286620	那么如果你需要去搭建一个
1286620	1288200	数据分析的这样的agent的话
1288200	1291420	然后如果你现在去使用这个Responses API的话
1291420	1293120	实际上实现起来会非常简单
1293120	1294800	我们说你只需要定义好
1294800	1297460	我们刚刚所说的拥有这些功能的外部函数
1297460	1301820	然后把这函数和我们当前的model模型放在一块
1301820	1303520	对不对来进行一个封装
1303520	1307060	然后最后它就可以直接就是一个简单的agent
1307060	1308720	就可以直接顺利来进行运行
1308720	1309480	就这么回事
1309480	1312360	但这里其实会具体涉及到很多的一些代码
1312360	1314740	就比如说我们如何把自然预言转化成sicle
1314740	1315300	对不对
1315300	1319900	然后呢Sircle本身这样代码如何去提升它的这样的准确性等等等等
1319900	1323360	那么这个可能就属于这个比较进阶的一些功能了
1323360	1326140	这个我们公开课可能就没有时间展开来说了
1326140	1329040	但是呢这里给大家提供的所有的这些代码呢
1329040	1332380	实际上每个代码都是可以真实的来进行运行的
1332380	1334200	然后呢大家如果感兴趣的话
1334200	1336260	课后呢可以单独再去看一下这个代码
1336260	1339800	或者你也可以直接能把它导到你本地的这个环境里边去
1339800	1343560	让它呢反正我们说每一个这个核心的这个外部函数
1343560	1346560	我们下面都有完整脚本和它的功能的这样的定义
1346560	1349500	你可以直接用它来进行的使用也是ok的
1349500	1351840	只不过这里我们就跟大家说的一点
1351840	1355120	是其实对于当前的Response API来说
1355120	1357280	如果你想创建一个数据分析agent
1357280	1358940	我知不知道它也可以非常简单
1358940	1359500	对不对
1359500	1362740	我们无非就是我的工具给它封闹到一起去
1362740	1364660	然后用户输入一个业务的问题
1364660	1366640	我们就看需要使用哪些工具
1366640	1367240	对不对
1367240	1369180	然后通过Response API
1369180	1370800	它本质上实际上是一个agent loop
1370800	1375440	它是一个不断循环的这样的一个操作
1375440	1378620	它就会不断的尝试去调用各式各样的工具
1378620	1380240	来进行多部工具调用
1380240	1382220	或者工具的这样的并发使用等等
1382220	1385200	然后最后完成了
1385200	1387600	最后就给输出一段最终这样的结果
1387600	1391420	然后最后我们也可以让它去绘制一些表格等等
1391420	1393760	它其实基本上就是这么样的一个过程
1393760	1394720	但是它底层
1394720	1396900	我们说上面其实大模型的运行的层
1396900	1400560	底层实际上我们肯定是需要有维护的收据库
1400560	1405660	这里其实我们默认的数据库是CircleLite和MyCircle这么两种数据库
1405660	1410880	然后那么无非就是下来我们上面各式各样生产出来的消息
1410880	1414920	或者你的Circle从你的数据库当中具体来进行运行等等
1414920	1416300	然后运行完了之后
1416300	1421700	你最后返回的Circle数据库这样的内容也会拼接到我们原始的消息列表里面去
1421700	1424020	然后共同回复用户当前这样的问题
1424020	1425360	就是这样的一个过程
1425360	1428460	所以其实现在我们在进行Agent的开发过程当中
1428460	1431420	本质上其实如果说最底层的话
1431420	1432860	无非就是创建好工具
1432860	1436140	然后和你当前的agent给他放在一块
1436140	1438020	然后最后来进行一些测试
1438020	1438920	来进行运行
1438920	1440880	看一下能不能够来进行顺利的运行
1440880	1442080	上面我们最下面
1442080	1443220	最上面这个脚本
1443220	1444280	最后面这两个脚本
1444280	1447960	实际上是去查询我们当前的数据
1447960	1450660	它一段时间的销量的结果
1450660	1452000	它的各式各样的
1452000	1455280	巴西店商各式各样不同品类的这样的商品
1455280	1459420	它实际上销量的一个分布情况
1459420	1463220	这个是我们来进行的一个查询
1463220	1465200	然后最后生成了一张图片
1465200	1466240	是这么一回事
1466240	1469200	那么实际上具体运行脚本和代码
1469200	1470880	实际上就是上面这些脚本和代码
1470880	1474080	这个是在数据库中查询数据的一个完整的脚本
1474080	1476140	那下面是查询完数据之后
1476140	1478520	生成最终运行结果的这样的脚本
1478520	1482800	那么里面实际上本质上都是去关联到我们当前agent
1482800	1484500	来进行一轮又轮的运行
1484500	1485300	是怎么样一回事
