start	end	text
0	920	OK
920	11600	接下来我们就以项目实战的方式啊
11600	13340	带大家基于Codex
13340	17420	全流程的去开发一个RUG智能客服系统
17420	20060	那首先给大家演示一下这个系统
20060	21340	它的一个功能
21340	24840	那就是一个比较简单的一个对话页面啊
24840	25900	那么首先的话
25900	28480	比如说大家公司内部有一些
28480	30340	行业的一些知识库
30340	32700	比如说是做这个电商的啊
32700	34640	或者是传统的像银行呀
34640	35600	政务啊
35600	37460	各种各样的这个行业是吧
37460	40260	那比如说我们有一些知识库啊
40260	41600	假设大家的这个
41600	44040	是做这个银行客服的
44040	45880	那这个里面比如说我们有一些
45880	47400	常见的问题
47400	51480	比如说哎这个查询一些这个余额呀
51480	53160	什么修改账号密码呀
53160	55620	就是这种常见的一些问题等等的啊
55620	57920	好那就是这么一个知识库
57920	59160	那现在的话
59160	60700	就是我们内部啊
60700	62000	要把这些知识库的话
62000	63820	做一个整合
63820	66980	然后到我们的这个客服系统里面去
66980	68840	因为以前的这个AI的话
68840	72020	其实他去回答问题的时候啊
72020	73220	如果说他没有参考
73220	75120	公司内部的一些知识库的话
75120	76900	他回答的问题的话
76900	77880	就不是特别专业
77880	78900	所以现在的话
78900	81560	我们要做一个这个基于Rug啊
81560	82260	Rug的话
82260	85160	全称叫做检索增强生成
85160	86040	也就是说
86040	88800	我们这个以前AI生成内容的话
88800	92480	都是根据这个AI自己训练的啊
92480	93080	像大模型
93080	93820	他训练一些
93820	95160	预训练的一些数据
95160	96460	然后去生成的
96460	98520	所以说他给你的一个结果的话
98520	101300	他肯定是一些比较通用的一些结果
101300	103020	不是属于我们这个公司
103020	104640	某个行业特定的一个回答
104640	107620	他可能就有那种普世性
107620	109240	但是的话不是特别专业
109240	112280	所以我们既然内部有一些知识库文档的话
112280	113960	我们现在想投位给AI
113960	115040	但是呢
115040	117340	我们又不想去做这个预训练跟微调
117340	118960	因为那个成本比较高是吧
118960	121680	所以说业界的话就有一种解决方案叫Rug
121680	125380	你可以理解就是给这个AI挂了一个知识库
125380	128320	就相当于你在学习的时候
128320	131360	你可以去图书馆里面去查一些这个书籍
131360	133120	然后去写一些文章
133120	134840	这样的话你就会做一个参考
134840	137960	那么AI有了这个参考之后的话
137960	141760	他帮你去生成这个答案的时候
141760	145200	他就会参考里面的一些核心观点
145200	146740	然后去做一些总结回答
146740	149100	比如说我们现在问他一个问题啊
149100	151800	如果说我们没有做一个这个
151800	154400	RAG系统的一个整合的话
154400	156940	那么他你去问这个问题的话
156940	159540	他可能就给你一个啊
159540	161220	他可能你问的都不是这个
161220	163680	这个银行这个行业的是吧
163680	164740	他不是金融行业的
164740	166600	他可能是其他行业的答案就给你了
166600	167720	但是如果说
167720	171240	你给他做了一个知识库的一个整合的话
171240	172680	那大家就会看到啊
172680	175740	他会调用我们的这个银行的这个知识库
175740	177220	进行一个查询啊
177220	178020	大家看啊
178020	181040	这个是他的一个知识的一个检索结果啊
181040	183420	但这个里面这里展示有点问题
183420	184520	我们重新来问一下
184520	187000	就是有了这个结果之后的话
187000	189820	他其实就会跟你去什么呢
189820	192440	做一个向量的数据库的一个
192440	194020	这个相似度的一个检索
194020	195780	那么检索完之后啊
195780	198500	你看这个就是我们知识库检索的一个结果
198500	198780	是吧
198780	199980	那这个结果的话
199980	201600	其实就是在这个里面啊
201600	203380	我们这个知识库文档
203380	206880	这个文档的话是存放到了这个向量数据库里面
206880	208280	那么这个向量数据库的话
208280	209960	它是根据这段话
209960	212100	然后做一个向量的相似度匹配
212100	213540	匹配完了之后的话
213540	217180	再去做一个这个内容的一个生成
217180	219860	所以说这个里面的话
219860	221240	其实就是啊
221240	223580	我们首先要对这个文档做一个向量化
223580	225120	做完向量化之后的话
225120	226640	把它存在到向量数据库里面去
226640	228520	然后当用户提问题的时候
228520	230920	我们要用这个agent
230920	234380	那本次我们的这个agent实现的话
234380	235620	是基于一个框架
235620	237380	叫做这个long graph
237380	239640	然后并且还有一些long chain的一些酷
239640	242940	这个是我们的一个基础的一个框架
242940	245640	那整个相当于我们就基于long graph
245640	247100	去实现一个agent的应用
247100	249940	让他去做一个知识库的一个检索
249940	251700	然后检索完之后的话
251700	255240	相当于做一个这个向量相似度的匹配
255240	256220	评约完之后
256220	258000	再把这些个内容
258000	259320	拼装成提示词
259320	261560	丢给这个大模型
261560	263060	然后总结性的做一个回答
263060	265040	所以大家问这些专业问题的时候
265040	266120	你会发现
266120	267660	他的这些回答的话
267660	268800	是非常准确的
268800	270500	因为他做了这个
270500	271740	相似度的一个匹配
271740	272980	比如说你问的这个
272980	274660	网上银行是吧
274660	276440	你看这个里面
276440	279360	他就基本上是参考这个回答的
279360	281160	所以这个答案会比较精准
281160	282920	这就是我们要做的一个
282920	286120	AI的一个智能客服的这么一个系统
286120	288280	所以这个系统的一个关键点的话
288280	290280	其实就是基于这个RUG的一个系统
290280	292680	目前来说啊
292680	294700	只要是涉及到智能客服系统
294700	297080	你要追求这个答案的准确性的话
297080	300480	基本上都是基于RUG的这个方案去做的
300480	303580	那如果说你有这个模型微调
303580	305220	渲电的这个条件的话
305220	306740	用微调去做的也有
306740	309860	但是像大部分场景啊
309860	310920	为了节省成本的话
310920	313720	其实都是基于Rug的这个模式去做的
313720	316100	所以说我们现在要明确一个需求
316100	319020	我们要做一个这个银行的智能客服系统
319020	321360	然后当用户在提问里面
321360	323480	比如说我们如何去查学那个余额是吧
323480	325560	那么这个系统的话
325560	327360	就要做如下几件事情
327360	328420	首先的话
328420	330340	他从这个行业知识库里面
330340	331620	就这个行业知识库里面
331620	332940	去做一个检索
332940	333920	这个知识库的话
333920	335000	咱们自己可以新增
335000	336760	就是我们在这个里面
336760	338780	我们可以选用OpenAI的这个
338780	339920	Embading模型是吧
339920	341780	做一个向量化存储啊
341780	343680	就是做一个这个向量化的一个转化
343680	345080	把它转换成embedding
345080	346980	它的一些这个向量坐标
346980	348320	然后向量数据库的话
348320	349800	我们这里用的是Clamour啊
349800	351040	这是我们啊
351040	352840	有一个新增知识库啊
352840	354060	因为我们要做一个出手化嘛
354060	355400	所以我们要创建一个知识库
355400	362460	所以这个首先这个系统就得从行业知识库里面去检索最相关的一些内容
362460	368400	然后的话让大模型基于检索到的内容去生成有依据的这个回答啊
368400	371980	就是我不能说让AI就直接去回答了
371980	372220	是吧
372220	373580	你要把检索的内容
373580	377240	组装成提示词丢给这个AI
377240	379420	然后再去做内容的一个生成
379420	381640	并且界面上的话
381640	383060	我们要做一个流逝回答
383060	384540	流逝回答什么意思啊
384540	386300	就比如说你问他一个问题的话
386300	389120	这里是一个字一个字迸穿
389120	391400	就是这种打字机的这种效果
391400	392700	但是这里面的话
392700	396180	我们这里是一次性输出出来的
396180	398040	所以我们其实可以改进一下
398040	399820	把它做一个流逝的回答啊
399820	400660	这里有一个参数
400660	403060	把它做成一个流逝调用就可以了
403060	404380	所以说啊
404380	405660	整个一个过程的话
405660	407060	其实很简单啊
407060	409680	就是做一个知识库的一个检索匹配
409680	412520	然后把拿到的一个结果
412520	414080	去丢给这个大模型
414080	414940	然后的话
414940	418160	再去做一个流逝的一个回答啊
418160	419780	虽然这个步骤很简单
419780	421720	但是我们实现的这个逻辑的话
421720	423760	还是稍微有点复杂的啊
423760	424320	那首先的话
424320	425360	我会给大家讲一下
425360	427040	这个最终的一个架构啊
427040	430240	然后我们等一下就会带大家去基于Codex
430240	432920	从零到一去搭建这么一个项目啊
432920	434200	因为现在啊
434200	436880	我们有了这个Codex之后啊
436880	439100	这个我们去开发项目的效率会很高
439100	442220	所以说我们让他把这个架构啊
442220	444340	或者说我们自己把架构做出来之后
444340	446580	然后你让他去回答的话啊
446580	447580	去去执行的话
447580	451220	其实这个开发起来效率就会很高
451220	455380	那这个是我之前做的一个这个事例啊
455380	457260	就我之前已经把这个项目写出来了
457260	459480	那么这里面的话
459480	460420	我们就给大家看一下
460420	461740	我们这个架构的一个设计
461740	462720	首先的话
462720	464240	我们整个前端页面啊
464240	465960	这个前端页面是基于一个叫
465960	468240	Streamlit的一个库去实现的
468240	469540	那么这个库的话
469540	472380	就是一个python前端开发的一个库啊
472380	474780	非常方便做一些python的
474780	476700	这种前端页面的一个展示啊
476700	476940	是吧
476940	478460	比如说做一个聊天的这种界面
478460	480380	它的空间非常丰富啊
480380	481720	所以我们整个的话
481720	483040	是基于了这个框架
483040	484600	去做了一个前端应用啊
484600	485169	好
485169	487069	然后包括侧边栏啊
487069	488169	还有这个logo是吧
488169	489029	你看这个侧边栏
489029	490329	我们可以隐藏跟展示
490329	492689	就是一个多页面的这么一个导航
492689	493769	对话加设置
493769	497389	然后我们的这个智能客服对话啊
497389	499689	就是Rog这一块的一个核心技术的话
499689	501569	是基于Long Graph去实现的
501569	502189	Long Graph
502189	504629	大家应该都有听说过
504629	505909	大家可能听说过Long Chain
505909	507049	Long Chain的话
507049	510589	是目前做AI制整体应用开发的一个框架
510589	510889	是吧
510889	515109	就是我们可以做一些AI应用
515109	515449	是吧
515449	516549	不光光是制整体
516549	518309	它可以做很多AI应用
518309	520289	但是它主要还是做制整体
520289	522029	那么Long Graph的话
522029	524409	它就专门是做一些复杂的制整体
524409	526489	它是一种工作流的这种方式
526489	527909	叫这个流程
527909	528229	是吧
528229	529589	就是这种图形制的
529589	532009	就是面向这个图形式的啊
532009	533029	流程式的这种
533029	535509	多智能体的这种代理啊
535509	536209	这种场景啊
536209	538269	就是比较企业级的这种复杂的
538269	540589	agent的这种开发啊
540589	542689	这种多智能体开发
542689	544869	目前一般是基于Langgraph去做的
544869	546689	是一个非常成熟的一个框架
546689	550509	所以我们要基于Langgraph
550509	552569	去实现整个Rug的一个核心流程
552569	556609	然后包括一些这个行业的一些知识库啊
556609	558289	比如说我们要做一些这个
558289	560529	上传切分
560529	561209	下量化
561209	561589	是吧
561589	563669	那对应到我们这个工作里面
563669	565809	我们现在要上传这个下量数据库
565809	566489	是吧
566489	569889	就是文档上传上传这个知识库
569889	571229	新增一个知识库
571229	572649	然后去给他做一些处理
572649	575089	然后的话就是
575089	576369	还要做切分
576369	577909	比如说你这个文件很大
577909	578649	你有一兆
578649	580149	那我们不能直接说
580149	581449	称到下量数据库里去了
581449	583049	因为你把这个一兆的文件
583049	584609	直接给他转化成下量的话
584609	586969	首先这个上下文可能会抄
586969	587309	是吧
587309	588849	那有些啊
588849	590409	那个模型
590409	591929	它不只是这么大的一个上下文
591929	593989	那这里就会涉及到一个切分的问题
593989	595089	啊
595089	595969	就是一个切分策略
595969	598609	比如说我这么大的一个文档啊
598609	599969	应该怎么来切分
599969	601709	是按这个段落来切
601709	602649	换行来切
602649	603649	还是怎么样来切
603649	607409	这个都是有这个对应的一个策略的
607409	608729	包括做一些向量化
608729	609089	是吧
609089	612709	这个整个是我们有一套成熟的一个方案啊
612709	613729	然后这个
613729	616669	然后就是检索是吧
617309	620289	检索我们这里可以给它封做一个工具啊
620289	623369	这个工具的话主要就是做用来做Rug的一个检索的
623369	626969	那这里面我们相当于是共用了限量数据库啊
626969	629789	就是我们定义了一个限量数据库啊
629789	632909	然后我们不管是存储也好还是检索也好
632909	634409	都要用到这个限量数据库
634409	636729	所以这里面是一个公共的一个模块
636729	641349	然后包括我们还要去做一些这个模型的一个揭露是吧
641349	647289	那这里面的模型我默认用的是OpenAI的这个GPT4O的这么一个模型啊
647309	649569	当然大家你也可以选择其他模型
649569	651949	用Deep Seek或者是本地部署模型
651949	653689	或者千万都是OK的
653689	657969	关键是看大家就是你目前有哪些模型
657969	659869	你可以自由的去选择
659869	663209	只是说你如果用的是千万的一个模型的话
663209	664689	那可能有一些这个参数
664689	665789	可能就要做一些调整
665789	667889	我这里用的是OpenAI的这个模型
667889	671809	然后包括我们还可以去用一些这个
671809	673409	embedding是吧
673409	674709	他会用一些工具类
674709	678909	所以我们这里面要写一个这个工具的这么一个啊
678909	679869	这个脚本是吧
679869	681229	这个脚本啊
681229	684049	主要是就是用来去做一些模型的一些介入的
684049	685889	比如说掉接口啊等等啊
685889	687909	那向量数据库我们用的是Clamour啊
687909	690909	这个是底层的一个向量数据库存储啊
690909	692369	然后embedding啊
692369	698129	就是比如说将我们的文本转化成这个向量坐标啊
698129	699109	我们用的是embedding
699109	700849	然后做了这个chart
700849	704329	就整个是用OpenAI的这个embedding
704329	705549	这个模型去实验的
705549	707129	所以这里给他梳理一下
707129	709729	我们目前核心的一个技术战有哪些啊
709729	710989	首先是Streamlit
710989	712289	Streamlit的话
712289	716169	是一个前端的一个快速开发的一个库啊
716169	717349	那这个库的话
717349	719309	大家你也可以自己去搜一下
719309	722169	比如说你去可以去看到啊
722169	722689	Streamlit
722689	724989	这个它是一个你看
724989	728909	一个快速的这么一个做前端页面的啊
728909	730009	就做各种应用的
730009	732569	它的这个语法的话非常简单啊
732569	737529	大家目前基本上你可以用AI去做各种各样的一些前端是吧
737529	741789	然后你看他可以做出比较好的一些效果出来
741789	747749	所以大家你如果整个这个RUG系统是基于Python去开发的话
747749	749549	那你其实可以什么呢
749549	750709	前端你可以
750709	756089	因为我们专业的前端可能还是用这个Node.js那一套嘛
756089	757769	是吧我们ReactVU
757769	760249	但是你如果想快速去构建一个
760249	762949	标准的外部交付页面的话
762949	765389	说白了就是这个给自己测试演示的话
765389	766609	你用Streamlit
766609	768729	肯定是没什么问题的
768729	770089	所以这个主要目标
770089	771669	它就是要做快速构建
771669	775549	所以目前市面上一些python的这种项目的话
775549	776249	前单的话
776249	778609	做演示用的话
778609	780869	基本上都是基于这个Streamlit
780869	783569	你像有一些大模型的一些训练
783569	784729	部署是吧
784729	786469	那个操作的界面的话
786469	788929	很多都是基于stream里的去用
788929	792149	因为他非常方便做快速去做一些外部页面
792149	795109	然后long turn他要做的一个事情
795109	798009	long turn的话大家也可以去了解一下
798009	800009	如果说你没接触过的话
800009	801049	你可以去搜一下
801049	804069	那么这个long turn的话
804069	805789	主要就是我们可以看到
805789	807349	他这个里面的话
807349	809929	他是目前来说
809929	812149	做一些AI智能体应用开发
812149	814649	他是比较推荐的一个框架
814649	818369	那这个他的一个迭代速度的话也非常快啊
818369	821049	我们可以看到他的功能其实也非常强大
821049	823229	可以做各种这个支柔体的一个应用
823229	826229	然后long graph的话啊
826229	828769	就是上面这个long chain跟long graph的一个分工
828769	831089	就是long chain主要是管模型揭露
831089	832889	文档切分与加载
832889	834529	然后检索工具封装
834529	836409	那么这个long graph的话
836409	838909	他就去管这个agent状态机
838909	841509	然后模型工具循环啊
841509	844429	就是他主要是管这个agent的一个构建的
844429	845829	包括他的一个状态啊
845829	846869	数据流转啊
846869	848709	然后工具的一个调用啊
848709	849929	循环啊等等的
849929	851309	所以这个目标
851309	853389	他主要就是围绕着这个agent
853389	854909	去做一个展开的
854909	856169	然后long chain就是
856169	859629	主要是做一些rug的这个应用的一些集成
859629	860829	啊
860829	864969	那个clama的话就是一款这个向上数据库啊
864969	866869	这个是一款快开源的向上数据库
866869	867869	这个数据库
867869	869129	他既支持本地部署
869129	871029	也支持服务器的那个部署啊
871029	873749	主要就是用来存储这个向上数据库
873749	875949	做一些数据的一些存储
875949	879769	然后我们还可以去整合一些多平台的一些
879769	880369	这个什么的
880369	882769	比如说大家想用这个本地部署是吧
882769	883849	那你就用欧拉玛
883849	887469	所以这里面我们其实提供了一些个路口啊
887469	889049	我们可以通过欧拉玛
889049	891409	然后或者是其他的一些啊
891409	892249	XEference
892249	894969	可以做一些模型的一个加载
894969	899609	也就是我们可以用这个在线的一个模型啊
899609	900469	就是公网的一个模型
900469	901989	也可以用私有化的欧拉玛模型
901989	903229	这个都是OK的啊
903229	904109	给大家的一个需要
904109	907949	那么我们为什么用Codex开发啊
907949	909529	首先Codex的话
909529	911889	本身你可以把它看作是一个整体啊
911889	913369	因为它不仅可以生成代码
913369	914769	还能读项目改文件
914769	915609	跑命理修bug
915609	916769	所以说
916769	918549	我们这里面的话
918549	919789	基于Codex开发
919789	921329	逻辑就不太一样了
921329	923589	那就是以提示词啊
923589	925309	像我们前面给大家讲的是
925309	927689	这个面向规范的
927689	929329	这么一个驱动的方式开发啊
929329	930829	所以说我们其实
930829	932289	现在去开发项目的话
932289	934289	大家只要把提示词梳理出来就可以了
934289	935569	不需要你去写代码了
935569	937669	然后他就可以快速去开发一个模块
937669	941789	所以这个就是正常的一个AI编程的一个正确的姿势
941789	943969	所以我们等下的一个开发的话
943969	946389	基本上自己是不用手写一行代码的
946389	949349	都是交给Codex去做代码生成
949349	953789	然后由他去做一个这个功能一个开发
953789	955789	所以大家首先第一步要做的就是
955789	958129	我们要把Codex的一个环境准备好
958129	961289	那么大家听到之前的这个章节的话
961289	962649	我相信这个codex环境
962649	963549	大家都已经装好了
963549	965649	所以这一步我就简单介绍一下
965649	967229	就是咱们得把codex
967229	969129	我这里安装方式的话
969129	970229	主要是讲的这个
970574	972214	主要是讲了这个他的命令行方式啊
972214	973754	所以大家不管是命令行
973754	976234	还是我们之前讲的这个啊
976234	980054	Codex app或者是这个啊
980054	981774	Withcode的那个插件啊
981774	983174	都都是可以的啊
983174	984394	看大家习惯用哪一种
984394	986634	然后完了之后的话
986634	988754	你可以去配置一下这个API密钥啊
988754	992114	因为我采用的是这种API key的这种方式去连接的
992114	993734	所以看大家的一个实际情况
993734	995854	我们前面有给大家讲连接方式
995854	998214	就是你要么是登录啊
998214	1002194	用官方那个ChatGBT的这个网站跳转做授权
1002194	1007494	还有一种的话是你可以这个配一个API密钥啊
1007494	1008394	这个都是OK的
1008394	1010754	看大家的一个实际需求吧
1010754	1013374	就是你的一个实际情况是什么
1013374	1017174	然后我这里面就是去配一下这个环境变量
1017174	1018734	它基本上就可以用了啊
1018734	1020634	但是你这里配完之后
1020634	1023214	你需要把终端这个重启一下才能生效啊
1023214	1024794	这个是呃
1024794	1027294	这个是在Mac或者Linux上面的一个配置
1027294	1028574	这个是Windows上面
1028574	1031834	我们用的是SateX这么一个命令啊
1031834	1033494	好
1033494	1034414	完了之后的话
1034414	1038634	就是我们现在就可以进入到我们的一个项目应用开发了啊
1038634	1042034	就是接下来我们要建一个项目录是吧
1042034	1045334	那比如说我现在这个里面
1045334	1046134	给他看一下
1046134	1050434	我们进入到这个Codex
1050434	1050994	是吧
1050994	1053394	进入到这个Codex里面去
1053394	1054694	然后的话
1054694	1056994	这里面我们建一个目的
1056994	1059874	叫做这个Rack
1059874	1062014	System
1062014	1064474	Rack系统
1064474	1066054	然后在这个里面的话
1066054	1069054	我们要用终端管理员的方式打开
1069054	1074154	然后切换到地盘
1074154	1076914	切换到Codex
1076914	1079394	下面有一个目录叫做RockSystem
1079394	1081754	然后我们进入Codex
1081754	1088234	进入Codex之后
1088234	1089794	我首先调一下这个权限
1089794	1094254	把这个权限改成这个不需要授权的
1094254	1096154	因为我不想反复的去确认
1096154	1098514	这里因为怎么正常编码开发了
1098514	1099994	所以就不需要确认了
1099994	1101114	直接让他干活就行了
1101114	1102894	我们把这个权限放开
1102894	1105274	就是不需要再用户再确认了
1105274	1107154	好
1107154	1108974	然后这个地方的话就是
1108974	1111674	你看我刚刚讲的这个授权模式
1111674	1113454	我就是用的这一种
1113454	1115054	就把权限全部全自动了
1115054	1117054	这个是我们因为
1117054	1120514	我们前面给大家讲了这几种权限
1120514	1122214	就是涉及到一些敏感操作
1122214	1123614	一些敏感命令执行的时候
1123614	1126334	我建议大家就是需要用户去确认
1126334	1127954	就如果是你个初学者
1127954	1129414	你要保证安全的
1129414	1130534	你就用这种模式
1130534	1133454	如果说你已经熟悉了
1133454	1133754	是吧
1133754	1135274	那你要快速提效
1135274	1136874	你就用auto的这个模式
1136874	1138474	但以前叫auto edit
1138474	1139854	现在叫auto review
1139854	1141374	差不多的一个意思
1141374	1143694	就是他会根据实际一个情况
1143694	1145474	自动帮你去授权访问
1145474	1146654	但是在某一些
1146654	1149454	比如说要执行一些RM跟RF的
1149454	1150214	一些命令的时候
1150214	1151874	这些敏感操作的时候
1151874	1152914	他还是需要授权
1152914	1153794	所以
1153794	1156434	但是他大部分命令都会放开
1156434	1159874	所以这个就看大家的一个实际情况
1159874	1161434	如果说你属于这个阶段
1161434	1162194	你就用这种模式
1162194	1164014	我目前用的是这种模式
1164014	1166714	就是我需要他全自动去帮我去跑了
1166714	1169694	所以我不需要关注那么多授权的东西
1169694	1174614	那么首先就是我们要做一个需求的一个拆解跟架构设计
1174614	1174914	是吧
1174914	1178914	就大家你用Codex做项目
1178914	1181714	你不是一上来就直接让Codex帮我写一个智能客服系统
1181714	1184254	那这样生成的这个效果肯定是不行的
1184254	1186434	因为你需求都没描述清楚呢
1186434	1187994	你首先啊
1187994	1190454	我们虽然是用Codex去提效
1190454	1192194	但是的话
1192194	1193794	大家不要觉得就是
1193794	1195854	AI就能模拟搞定一切了是吧
1195854	1198714	就是你的整个软件开发的这个过程
1198714	1199674	你还是得有的
1199674	1200894	比如说做技术方案
1200894	1201754	做架构设计
1201754	1202834	这个跑不了的
1202834	1205214	因为这是个系统
1205214	1206094	这个系统的话
1206094	1207554	会涉及到非常多的模块
1207554	1209494	需求的话会有大需求
1209494	1211414	然后每个任务要做拆分的
1211414	1212394	那AI的话
1212394	1215634	他比较适合的是执行某一个任务
1215634	1217514	所以说你如果没有帮他
1217514	1219714	没有帮他把任务拆出来的话
1219714	1221614	那他帮你干活的时候
1221614	1222974	可能就会出现各种各样的问题
1222974	1224474	所以大家尽量要细化
1224474	1226294	这是一个非常大的一个原则
1226294	1229294	所以我们第一步的话
1229294	1231114	就大家要把认知给他对齐一下
1231114	1233734	要按照一个正常的软件开发的一个流程
1233734	1235414	去做一个交互
1235414	1237374	比如说第一步
1237374	1240294	我们你现在要做一个Rug的这个系统的话
1240294	1241894	你首先得输出技术方案吧
1241894	1243194	那那技术方案
1243194	1244374	以前我们做价格设计
1244374	1246394	大家要画这个什么流程图啊
1246394	1247614	架构图啊
1247614	1248954	各种各样的一些图是吧
1248954	1251854	那现在其实有了这些个东西之后的话
1251854	1254414	有了AI有了Codex之后的话
1254414	1255874	那这些工作的话
1255874	1257334	其实都可以交给AI去做了
1257334	1257994	但是的话
1257994	1260754	你的一个前提就是你这个提示词
1260754	1262054	你得写清楚是吧
1262054	1262874	比如说我们这里
1262874	1265354	我要开发一个Rug智能客服系统
1265354	1267334	技术在限定为Web页面
1267334	1269414	然后Agent的编盘是什么什么
1269414	1270994	向量数据库是什么
1270994	1272614	知识的模型是什么是吧
1272614	1274414	然后功能需求
1274414	1276034	一个知识库页面
1276034	1278754	然后可以新建知识库
1278754	1280774	上传markdown文档自动切分
1280774	1284154	就是咱们得把需求描述的非常清楚
1284154	1286534	并且这个知识库多选
1286534	1287234	是吧可选
1287234	1289374	然后对话的时候可以启用哪些知识库
1289374	1291754	然后我们写了功能需求之后
1291754	1293774	我们还就是要一定要提出来啊
1293774	1295514	就是请先不要写代码
1295514	1299614	先输出这个推荐项目的一个目录结构
1299614	1301194	每个模块的一个工程职责
1301194	1302874	然后建议的开发顺序
1302874	1304594	从底层到上层
1304594	1307054	这个就是要我们要做一个架构设计
1307054	1308834	把一些相关的文档给它输出出来
1308834	1310574	而不是说直接就开发了
1310574	1312074	所以第一步的话
1312074	1314214	大家首先要复制一下
1314214	1315314	就是把这个提示词
1315314	1316554	我们要一步的去生成
1316554	1319294	那这个里面我用这个
1319294	1321054	我们打开
1321054	1322474	我们在这个里面给它来看
1322474	1323414	会比较清新一些
1323414	1325654	因为这个看起来不是很方便
1325654	1327994	然后我们打开这个目录
1327994	1332334	然后这个目录我们选择这个RackSystem
1332334	1335994	然后在这个里面发起一个对话
1335994	1339674	在这个大家会看得更清晰一些啊
1339674	1342734	在这个里面他有时候看的不是很方便
1342734	1347254	然后大家看啊
1347254	1348294	在这个里面你看
1348294	1351194	他就开始帮我们去规划了啊
1351194	1354334	因为我之前规范里面写到DDD分层来组织
1354334	1356314	所以他也把这个规范加入进来了
1356314	1359054	你看这个是他就是规划的一个目入结构
1359054	1360634	是吧什么RAG系统啊是吧
1360634	1362954	然后配置啊数据啊
1362954	1365594	然后包括一些模块啊是吧
1365594	1368954	然后一些应用程序啊是吧
1368954	1370774	你看是不是帮我们规划的非常清楚
1370774	1372694	什么agent state node是吧
1372694	1375694	你看按照模块职责划分
1375694	1377614	负责stream里的钱的交互
1377614	1382534	然后这个放核心的一些什么模块是吧
1382534	1386494	然后还有一些这个规划相关的
1386494	1389994	你看他包括建议的这个开发步骤都帮我们调好了
1389994	1392214	比如说先定义领域模型
1392214	1396954	然后再去实现基础的一些配置与模型的一个适配
1396954	1400994	再包括去做一些什么markdown加载与切分是吧
1400994	1404594	然后还有一些实现crama向量库的一些适配
1404594	1408194	包括这个知识库这个啊
1408194	1409434	路库的一些用力
1409434	1410914	然后去实现一些
1410914	1413334	这个检索的用力啊
1413334	1415774	包括Longraph的这个Agent等等的是吧
1415774	1418394	他会帮你把这个步骤
1418394	1419954	全部给树立清楚
1419954	1422134	所以说这个里面的话
1422134	1423814	大家首先你要看一下
1423814	1424634	他基本的逻辑
1424634	1426914	是不是按照你的一个要求去做的啊
1426914	1430254	这个有没有达到你的一个要求
1430254	1432594	包括他的一些这个
1432594	1434514	模块是吧
1434514	1435814	然后开发顺序
1435814	1437054	这些东西有没有问题
1437054	1440914	然后这个就是确认没问题之后
1440914	1443494	你可以开始让他干嘛呢
1443494	1448634	接下来我们就开始去生成一些这个文档了
1448634	1448934	是吧
1449331	1450551	但我们其实
1450551	1452411	他现在是按DDG做的
1452411	1453091	我们其实
1453091	1455111	还不需要那么多
1455111	1456331	这个DDG的一些规范
1456331	1459931	所以这里面我先是先调一下
1459931	1461951	因为按他按DDG规划的话
1461951	1463711	那个模块会插得很细啊
1463711	1468711	但其实我们可以不需要用到那么细啊
1468711	1475551	所以这个里面看一下
1475551	1482571	我们可以这里面可以调整一下
1482571	1485571	全局的这个DDD的一些规范啊
1485571	1487811	我们找到那个用户目录
1487811	1492211	然后找到点Codex
1493711	1496711	嗯
1500711	1501211	嗯
1501211	1505211	然后Codex里面有我之前看一下啊
1505211	1507211	Liless
1513211	1517711	之前应该是我去写过一个这个Agence.md啊
1523711	1529351	或者说咱们找不到的时候
1529351	1530271	你机器可以Goend的
1530271	1538651	帮我读取下系统全局的agents.md
1538651	1543711	当前用户
1543711	1548711	因为我之前那个agents.md里面写了一些这个
1548711	1550891	dd的一些规范
1550891	1552791	所以我现在要把这个规范给去掉
1552791	1554811	不然到时候生人代码的时候
1554811	1556911	可能会有一些这个问题啊
1556911	1559191	但是他这个模块就这样去分
1559191	1559851	也没什么问题
1559851	1561731	只是说他这里拆的太细了
1561731	1563191	你看什么DOMEN啊
1563191	1565651	其实我们这么一个项目的话
1565651	1567271	暂时还不需要用到DDD啊
1567271	1569491	DDD一般是用在一些复杂的
1569491	1570611	一些大型系统上面
1570611	1572291	比如说一些ERP系统
1572291	1573591	模块非常多的场景下
1573591	1574811	用DDD没问题
1574811	1577991	但实际上我们不需要那么麻烦啊
1577991	1580611	你看我之前这个文档里面
1580611	1583451	我写了一个什么 dv 驱动的方式开发
1583571	1585511	这是之前的我规范
1585511	1587171	那我现在要把它去掉
1589211	1591171	codex下面有一个
1592451	1593611	agents
1593611	1595051	你看这是我之前加的
1596171	1599451	我现在把它去掉
1600771	1602971	然后这里面我们重新发起一个对话
1603851	1606651	把之前的提示词复制一下
1606651	1608171	重新发起一个对话
1608171	1610951	我们再来让它生成一下
1610951	1621591	我们这里看一下
1621591	1622351	这个里面
1622351	1625171	你看现在就不是DDD了
1625171	1628411	后面同时也按照DDD风格推进
1628411	1632051	这里面还是DDD没有生效
1632051	1634391	没有保存
1634391	1638851	我直接跟他说
1638851	1642391	我再发几个对话
1642391	1648131	可能是不是要重启一下
1664391	1677191	那现在模块就少了一些了
1677191	1679631	应该那个DDD的那个已经失效了
1679631	1681091	模块少了一些了
1681091	1685291	然后的话就是我们看一下整个的一个逻辑啊
1685291	1685991	你像这个APP
1685991	1688111	它只负责stream里的界面的交互
1688111	1692591	domain的话就负责一些这个核心的一个业务概念啊
1692591	1693691	然后application是什么
1693691	1695791	然后外部技术实现是什么
1695791	1698911	然后包括他的一些细节
1698911	1699411	是吧
1699411	1700471	就怎么来实现
1700471	1701851	好
1701851	1703031	这一步之后的话
1703031	1704151	接下来干嘛呢
1704151	1706251	接下来就是我们要去逐步实现
1706251	1708011	整个的一个逻辑
1708011	1709391	比如说
1709391	1711171	这里面有两块
1711171	1713851	就一块你可以按照他的一个目录结构去生成
1713851	1714931	还有一块的话
1714931	1717071	就是你有自己的一个规划
1717071	1720671	你想按你的方式去做一个目录生成
1720671	1722131	那你就可以把这个复制一下
1722131	1723371	请
1723371	1733051	参考我的目录结构规范进行调整
1733051	1743071	生成对应的目录结构
1743071	1755251	就是你自己有一套规范是吧
1755251	1756951	你把这些东西你都定好了
1756951	1760731	那你就让让他去按你的方式去做就可以了
1760731	1762991	如果说你没有特定的一个要求
1762991	1764931	你想用他的这个方案的话
1764931	1765691	其实也是可以
1765691	1767331	就我们前面的话
1767331	1769211	只是让他去帮我们分析一下
1769211	1770911	让他去完全去做一个
1770911	1771891	所以说
1771891	1774471	比如说我们可以把这个TS加起来
1774471	1774711	是吧
1774711	1778071	你可以把这两个东西组合起来
1778071	1779611	你要开发这么一个
1779611	1782191	然后你的一个目入结构应该是下面这种
1782191	1782651	是吧
1782651	1784531	或者说你就直接用它的方案都是可以
1784531	1785531	或者大家
1785531	1787551	你觉得它的结构太复杂了
1787551	1788391	不太合适
1788391	1789591	然后
1789591	1793971	你可以去具体去调整一下
1793971	1794411	是吧
1794411	1796831	那我们可以再发起一个对话
1796831	1801411	你可以让他参考你的目录结构去实现啊
1801411	1802271	这个都是OK的
1819371	1821991	这个里面大家可以不断的去调整啊
1821991	1823271	做一些微调处理
1823271	1830811	你看这是他给你的一个建议啊
1830811	1832371	然后去梳理出来的
1832371	1833551	哎他还善滴滴滴啊
1833551	1834411	那个就没生效
1834411	1837191	我的滴滴滴这个都去掉了
1837191	1839791	但这个应该是要重启一下
1839791	1842491	来重启一下
1842491	1845991	我这个重启啊
1845991	1849271	然后重新打开一下
1849271	1854171	他可能没有加载啊
1854171	1855711	当前那个对话可能
1855711	1858011	要要重启一下这个APP
1858011	1858691	可能才可以
1858691	1860671	再试一下
1860671	1866991	看现在应该
