小傅哥带着你做 Java SDK 组件
作者:小傅哥
博客:https://bugstack.cn
沉淀、分享、成长,让自己和他人都能有所收获!
大家好,我是技术UP主小傅哥。
今天小傅哥将开启一个新计划,带着大家一起干"开源"。要说编程能力什么时候提升的最快,就是从开始承接需求并思考着怎么落地,到最后开发实现时,才是成长最快的时候。
呐,这是一个什么样的开源项目呢?
这个开源项目是 《OpenAI SDK》 统一大模型标准化对接的技术组件项目,此项目以解决实际市面上的场景为诉求,将 OpenAI、Claude、PalM、文心一言、通义千问、讯飞星火、智谱 ChatGLM、腾讯混元等这些大模型做一个统一的 SDK 对接组件。
这个组件项目需要解决很多的差异化问题,又要提供统一的对接标准,既有设计的难点又有落地的复杂。但这样千差万别的统一对接,恰好又是日常开发中所面临的问题。
小傅哥这里已经编写了30%+的代码,定义基础框架、对接标准和实现手段;
<!-- 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 - 里面有完整的学习指引,包括;使用说明、代码仓库、专属项目群、学习路线、往期项目。
小傅哥带着你做 Java SDK 组件的更多相关文章
- 《重学 Java 设计模式》PDF 出炉了 - 小傅哥,肝了50天写出18万字271页的实战编程资料
作者:小傅哥 博客:https://bugstack.cn 沉淀.分享.成长,让自己和他人都能有所收获! @ 目录 一.前言 二.简介 1. 谁发明了设计模式? 2. 我怎么学不会设计模式? 3. 适 ...
- 牛掰,在IDEA中,你可以安装小傅哥写的插件了!
作者:小傅哥 博客:https://bugstack.cn 沉淀.分享.成长,让自己和他人都能有所收获! 一.承认你优秀很难 很多码农,把路走窄了 捧一个,喷一个,很多码农都不会多一点思路看问题,总是 ...
- 【凯子哥带你学Framework】Activity启动过程全解析
It’s right time to learn Android’s Framework ! 前言 学习目标 写作方式 主要对象功能介绍 主要流程介绍 zygote是什么有什么作用 SystemSer ...
- 【转载】【凯子哥带你学Framework】Activity启动过程全解析
It's right time to learn Android's Framework ! 前言 一个App是怎么启动起来的? App的程序入口到底是哪里? Launcher到底是什么神奇的东西? ...
- 一文带你搞懂java中的变量的定义是什么意思
前言 在之前的文章中,壹哥给大家讲解了Java的第一个案例HelloWorld,并详细给大家介绍了Java的标识符,而且现在我们也已经知道该使用什么样的工具进行Java开发.那么接下来,壹哥会集中精力 ...
- 【凯子哥带你学Framework】Activity界面显示全解析(下)
咱们接着上篇继续讲,上篇没看的请戳:[凯子哥带你学Framework]Activity界面显示全解析(上) 如何验证上一个问题 首先,说明一下运行条件: //主题 name="AppThem ...
- 对QT的理解——能在公司里不做Java,不做很偏门的产品,不使用偏门的语言,还有钱挣,要有感恩的心
我的理解: QT做应用软件可以很强大,界面足够漂亮(最有意思的是QSS,让我刮目相看),应该是足够了.同时QT也提供了源码,不过超级复杂,难以理解,所以还是无法深入底层.另外它提供了一个额外的好处,就 ...
- 转载:做Java开发这一年 (火龙果软件)
转载:http://www.uml.org.cn/success/201410205.asp 从去年到现在,从.NET转向Java开发(只是因为项目原因,绝对与平台好坏没有关系)差不多有一年的时间了. ...
- 为什么使用 SLF4J 而不是 Log4J 来做 Java 日志
转自:为什么使用 SLF4J 而不是 Log4J 来做 Java 日志 英文原文:Why use SLF4J over Log4J for logging in Java 每个Java开发人员都知道日 ...
- 第20月第18天 小码哥swift
1. 9月12日第一次更新 第二篇玩转[斗鱼直播APP]系列之界面分析 第三篇玩转[斗鱼直播APP]系列之项目部署 第四篇玩转[斗鱼直播APP]系列之获取APP图片资源 第五篇玩转[斗鱼直播APP]系 ...
随机推荐
- Apache-Log4j2-Rce漏洞复现
最近最热门的无非是最近爆出的超大boss-Apache log4j2组件的rce漏洞.安全圈俗称'过年',漏洞影响范围之广,危害之大堪比当年的永恒之蓝.由于最近爆出,危害程度目前还正在不断扩大中.超多 ...
- Linux校验文件MD5和SHA值的方法
1.需求背景 下载或传输文件后,需要计算文件的MD5.SHA256等校验值,以确保下载或传输后的文件和源文件一致 2.校验方法 如上图所示,可以使用Linux自带的校验命令来计算一个文件的校验值 Li ...
- 0×03 Vulnhub 靶机渗透总结之 KIOPTRIX: LEVEL 1.2 (#3) SQL注入+sudo提权
0×03 Vulnhub 靶机渗透总结之 KIOPTRIX: LEVEL 1.2 (#3) 系列专栏:Vulnhub靶机渗透系列 欢迎大佬:点赞️收藏关注 首发时间: 2023年8月22日 如有错误 ...
- 15.3K Star,超好用的开源协作式数字白板:tldraw
大家好,我是TJ 今天给大家推荐一个开源协作式数字白板:tldraw. tldraw的编辑器.用户界面和其他底层库都是开源的,你可以在它的开源仓库中找到它们.它们也在NPM上分发,提供开发者使用.您可 ...
- Ds100p -「数据结构百题」51~60
纪念 数据结构一百题50题了呢,该过半周年啦~~~~ LYC和WGY半年的努力让这个几乎玩笑一般的系列到了现在. 今后也请多多关照啦. 祝愿dp100p早日过半 51.CF1000F One Occu ...
- 2020 ICPC 南京站
gym A. Ah, It's Yesterday Once More 有趣的题,但场上的人恐怕不会这么想( 构造一条长路径,且拐弯处在不同边界.这样每条竖线合并后都在一边,还需要走一遍才能合并到一起 ...
- 爬虫系列——requests
文章目录 一 介绍 二 基于GET请求 三 基于POST请求 四 响应Response 五 高级用法 一 介绍 介绍:使用requests可以模拟浏览器的请求,比起之前用到的urllib,reques ...
- 10. 用Rust手把手编写一个wmproxy(代理,内网穿透等), HTTP内网穿透支持修改头信息
用Rust手把手编写一个wmproxy(代理,内网穿透等), HTTP内网穿透支持修改头信息 项目 ++wmproxy++ gite: https://gitee.com/tickbh/wmproxy ...
- Composite 组合模式简介与 C# 示例【结构型3】【设计模式来了_8】
〇.简介 1.什么是组合设计模式? 一句话解释: 针对树形结构的任意节点,都实现了同一接口,他们具有相同的操作,可以通过某一操作来遍历全部节点. 组合模式通过使用树形结构来组合对象,用来表示部分以 ...
- WPF 中引入依赖注入(.NET 通用主机)
WPF 中引入依赖注入(.NET 通用主机) 在网上看到的文章都是通过 App.cs 中修改配置进行的,这样侵入性很高而且服务主机是通过 App 启动时加载的而不是服务主机加载的 App 有一点违反原 ...