小傅哥带着你做 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]系 ...
随机推荐
- Redis从入门到放弃(10):分布式锁
在分布式系统中,实现对共享资源的安全访问是一个关键问题.Redis作为一种高性能的内存数据库,提供了多种方式来实现分布式锁,以解决多个节点之间对共享资源的并发访问问题. 本文将介绍五种Redis分布式 ...
- java与es8实战之一:以builder pattern开篇
欢迎访问我的GitHub 这里分类和汇总了欣宸的全部原创(含配套源码):https://github.com/zq2599/blog_demos 关于<java与es8实战>系列 < ...
- Jmeter+Ant+Jenkins接口自动化框架(续)
前段时间给公司内部项目搭建了一套接口自动化框架,基于实际使用,需要配置自动发送邮件功能,将 执行结果发送给相关负责人.Jenkins本身也提供了一个邮件通知功能,但在提供详细的邮件内容.自定义邮 件格 ...
- 淘宝详情api接口的应用
淘宝详情API接口是一个基于HTTP协议的接口服务,可用于获取淘宝商品的具体信息.下面将介绍如何调用淘宝详情API接口获取淘宝商品数据的步骤. 1.注册账号并创建应用 首先,我们需要进行账号注册.实名 ...
- 接口自动化测试项目 | IHRM登录接口自动化测试
项目内容如下: ### 需求- 地址:http://ihrm-java.itheima.net/#/login- 测试接口: - 登录接口:针对登录的13个cases### 技术 - V1:pytho ...
- Hadoop环境安装与配置
1.基础操作系统环境安装(略) 2.JDK的安装与配置 当前各大数据软件如Hadoop等,仍然停留在Java 8上,在本实验选用的是Java 8.在自己的Linux系统中,jdk可以使用如下命令进行一 ...
- xmind文件数据解析重构成mindmap可识别数据
[需求背景] 测试平台开发中,需要引入前端mindmap模块,进行在线xmind实时解析并前端展示 [卡点难点] 选取什么库进行xmind解析 如何转换成mindmap可以识别的数据 [xmind解析 ...
- Solution -「CF 1477A」Nezzar and Board
Description Link. $ n $ distinct integers $ x_1,x_2,\ldots,x_n $ are written on the board. Nezzar ca ...
- Solution -「洛谷 P2044」「NOI 2012」随机数生成器
Description Link. 给你一个递推式,让你求某一项的值模上 \(g\). Solution 这道题正解是矩阵.我这里给出一种分治的做法. 题目中说 $\ \ \ \ \ \ \ $ $\ ...
- dp_ppi转光纤模块连接200PLC组态王通信案例
DP_PPI转光纤模块连接200PLC组态王光纤通信在冷却塔控制系统案例 现场背景介绍: 西门子200 CPU226PLC通过兴达易控dp转光纤模块在200PLC系统中ppi转光纤实现PCL与组态王2 ...