作者:小傅哥
沉淀、分享、成长,让自己和他人都能有所收获!😄
大家好,我是技术UP主小傅哥。
今天小傅哥将开启一个新计划,带着大家一起干"开源"💐。要说编程能力什么时候提升的最快,就是从开始承接需求
并思考着怎么落地
,到最后开发实现
时,才是成长最快的时候。
呐,这是一个什么样的开源项目呢?🤔
这个开源项目是 《OpenAI SDK》 统一大模型标准化对接的技术组件项目,此项目以解决实际市面上的场景为诉求,将 OpenAI、Claude、PalM、文心一言、通义千问、讯飞星火、智谱 ChatGLM、腾讯混元等这些大模型做一个统一的 SDK 对接组件。
这个组件项目需要解决很多的差异化问题,又要提供统一的对接标准,既有设计的难点又有落地的复杂。但这样千差万别的统一对接,恰好又是日常开发中所面临的问题。
小傅哥这里已经编写了30%+的代码,定义基础框架、对接标准和实现手段;
java
<!-- https://mvnrepository.com/artifact/cn.bugstack/openai-sdk-java -->
<dependency>
<groupId>cn.bugstack</groupId>
<artifactId>openai-sdk-java</artifactId>
<version>1.2</version>
</dependency>
那么,接下来小傅哥就告诉能学习到哪些设计思维、设计原则、设计模式以及怎么进入学习。------ 这个项目涵盖了很多高级的编码思想。
文末有加入学习方式,以及全体系的技术成长路线说明。
一、能学到啥
讲道理,大部分能在职场中脱颖而出述职晋升的,都不是只写业务代码的,而是解决能团队中同类的场景诉求,凝练共性开发技术组件,让大家可以使用项目。而这样的项目往往工程结构偏小,代码量不大,但很少有 if···else,有的全都是高级编码技巧,所以才会这么有价值。
- 【设计思维】:抽象 OpenAI 对接调用过程为会话模型结构,统一管理会话生命周期。
- 【设计思维】:为所有 OpenAI 类型设计统一对接标准;入参、方法、出参,以 ChatGPT 为标准设计其他对接行为。
- 【设计原则】:最少知道原则,让调用 SDK 的用户,不要因为调用不同的模型而关心具体的细节。
- 【设计原则】:迪米特法则,在实现的过程中通过使用执行器衔接会话与各类模型的对接,起到中介者的作用,让会话可以扩展更多的调用方式的同时又不需要过多的了解模型的具体细则。
- 【设计原则】:单一职责原则,一个具体的模型实现类,只负责当下模型的具体职责。
- 【设计模式】:工厂模式,封装会话过程中所需的;配置信息(ApiHost、ApiKey)、HTTPClient、模型执行器。
- 【设计模式】:策略模式,统一定义标准的大模型接口、参数处理器、监听见过处理器,让各类大模型做各自的封装实现。
- 【设计模式】:在通过单例、模板、建造者,解决实现过程中的细节处理,让整个 SDK 的实现更容易被扩展和迭代。
基于这样的 SDK 组件开发实践,在小场景中大量的运用高级编码技巧,可以非常好的帮助大家提高编程思维、锻炼编码能力。
二、组件设计
本次的组件项目,具有非常多的高级编码技巧,同时完成后还可以让很多人使用到这个项目,非常具有成就感。各位参与这个项目的伙伴,都会成为项目代码贡献者。💐
1. 核心设计
2. 会话模型 - 核心代码
3. 接口实现 - 统一标准
很多伙伴在没看过小傅哥的"代码操盘"前,都是;一个接口、一个实现,一个实现,代码一片。一片一片、又一片,代码行数、两三千。所以跟随小傅哥学习你会得到非常多的技术成长,沉淀出自己的核心技术能力。
三、学习说明
加入星球开源项目学习后,Fork 代码到自己的仓库。熟悉工程模型和代码,并调试运行理解整个框架的设计实现。之后开始承接需求并提交代码到自己的仓库。对于自己已经完成运行的调试的代码,可以提交 PR 代码。小傅哥在评审后,会合并你的提交。这样你就成为一个贡献者了,并记录在文档。
- 【简单】工程中有标记
TODO
标签待开发点,此类的功能比如在A模型中实现了,B、C 模型未实现,可以参考代码开发。 - 【中等】阅读模型API文档,补全功能。这部分会从会话的调用,一直到执行器包下对应的实现,开发具体实现。
- 【复杂】对未实现对接的模型,阅读API文档,添加对接。
以上的所有代码实现,都会以当下工程所提到的设计思维、设计原则、设计模式,来编写具体的代码实现,非常锻炼人。
以上开发内容,小傅哥会陆续的提交代码,你可以赶在我的前面实现,这样可以很好和我的开发进行对比,学习设计思想和落地实现。
四、加入学习
https://gaga.plus - 里面有完整的学习指引,包括;使用说明、代码仓库、专属项目群、学习路线、往期项目。