今天,我们将重点讨论在对接混元大模型时需要特别关注的几个要点。首先,最为关键的一点是,混元大模型的加密方式相比于其他大模型更为复杂和严密。在对接过程中,我们通常避免使用混元官方提供的SDK进行集成,主要是因为官方SDK的应用场景存在一定的限制。若能实现原生对接,将能够提供更加灵活和高效的接入方式,同时也能更好地适应我们具体的应用场景。

接下来,我们将直接分析混元大模型的加密机制,深入了解如何通过非SDK方式进行安全可靠的对接。有关混元加密方式的详细信息,可以参考官方文档,链接如下:腾讯云混元文档

签名方法v3

我们将直接使用最新的签名方法进行集成,文中提供了相应的Java代码示例。你可以方便地将这些代码示例复制并粘贴到您的项目中,从而快速实现功能,如下图所示:

这里由于混元大模型不需要region,自己自行删除即可。

申请秘钥

接下来需要申请相关的秘钥信息,可以来这里申请:

申请好后,直接写到环境变量中,或者单独提取出来放到构造器中赋值都可以。

maven依赖

在 JDK 17 中,默认不再包含 javax.xml.bind.DatatypeConverter 相关的包依赖,因此如果你使用的是 JDK 17 或更高版本,可能会遇到缺少该类导致的编译或运行时错误。为了解决这个问题,你需要手动添加一些额外的依赖。具体如下:

<dependency>
<groupId>javax.xml.bind</groupId>
<artifactId>jaxb-api</artifactId>
<version>2.3.0</version>
</dependency>
<dependency>
<groupId>com.sun.xml.bind</groupId>
<artifactId>jaxb-impl</artifactId>
<version>2.3.0</version>
</dependency>
<dependency>
<groupId>com.sun.xml.bind</groupId>
<artifactId>jaxb-core</artifactId>
<version>2.3.0</version>
</dependency>
<dependency>
<groupId>javax.activation</groupId>
<artifactId>activation</artifactId>
<version>1.1.1</version>
</dependency>

参数加密

这个问题也是一个典型的“坑”。由于加密过程必须包含请求参数,所以报错的几率随之大幅增加。当时,我使用的是 Fastjson 来进行记录(record)转 JSON 操作,但 Fastjson 默认会对字段进行排序。而与此同时,使用 RestClient 类发起请求时,字段并没有进行排序,这一点并不明显,需要特别注意。更为棘手的是,这种差异通常不易察觉,必须通过拦截器才能显现出来,才能有效避免因字段顺序不同而导致的潜在错误。

这是原来使用的转json方法:JSONObject.from(payload),json结果如下:

{"Messages":[{"Content":"你好!","Role":"user"}],"Model":"hunyuan-pro","Stream":false,"Temperature":0.8}

但是restclient正常请求拦截后打印:

所以后来我直接改成了使用objectMapper。如下所示:

ObjectMapper objectMapper = new ObjectMapper();
try {
return objectMapper.writeValueAsString(record);
} catch (Exception e) {
e.printStackTrace();
return "";
}

也需要添加mvn依赖,如下所示:

<dependency>
<groupId>com.fasterxml.jackson.core</groupId>
<artifactId>jackson-databind</artifactId>
<version>${jackson.version}</version>
</dependency>

因为在进行抓包操作时,直接访问混元API会遇到各种证书验证问题,导致无法直接查看请求体的具体内容。因此,为了能够准确查看请求体的结构和数据,我们改成直连本地即可,只查看请求体到底是什么样子。

public static final String DEFAULT_BASE_URL = "http://127.0.0.1:8888";

在经过测试并确认没有问题之后,我们将系统配置恢复到原来的设置。经过一系列调整和验证,最终成功完成了对接任务。

总结

通过本文的讨论,我们详细分析了在对接混元大模型时需要关注的关键要点,特别是加密机制、SDK的替代方案以及如何处理参数加密等挑战。为了确保系统的高效、安全对接,我们深入探讨了如何避免常见的错误,如字段排序问题,并提供了实用的代码示例。经过反复测试和验证,最终我们成功实现了与混元大模型的原生对接。希望这些经验能为大家在实际操作中提供有价值的参考,帮助更顺利地完成集成任务。


我是努力的小雨,一个正经的 Java 东北服务端开发,整天琢磨着 AI 技术这块儿的奥秘。特爱跟人交流技术,喜欢把自己的心得和大家分享。还当上了腾讯云创作之星,阿里云专家博主,华为云云享专家,掘金优秀作者。各种征文、开源比赛的牌子也拿了。

想把我在技术路上走过的弯路和经验全都分享出来,给你们的学习和成长带来点启发,帮一把。

欢迎关注努力的小雨,咱一块儿进步!

混元API的加密机制与原生集成实战的更多相关文章

  1. API 网关的选型和持续集成

    2019 年 8 月 31 日,OpenResty 社区联合又拍云,举办 OpenResty × Open Talk 全国巡回沙龙·成都站,APISIX 作者温铭在活动上做了< API 网关的选 ...

  2. 浅议NetMQ常见模式和消息加密机制

    浅议NetMQ常见模式和消息加密机制 概述 在传统企业级开发中,消息队列机制已经成为一种非常常见的技术实现手段,而基于NetMQ则看起来有点像一朵"奇葩",看起来从名字似乎是一个消 ...

  3. 3. 深入研究 UCenter API 之 加密与解密(转载)

    1.  深入研究 UCenter API 之 开篇 (转载) 2.  深入研究 UCenter API 之 通讯原理(转载) 3.  深入研究 UCenter API 之 加密与解密(转载) 4.  ...

  4. Web Api 的 路由机制

    ASP.NET Web API 是一种框架,用于轻松构建可以访问多种客户端(包括浏览器和移动设备)的 HTTP 服务. ASP.NET Web API 是一种用于在 .NET Framework 上构 ...

  5. api的使用机制:继承、实例化、实现(继承)配置、实例(参数化)配置、机制管理模块

    api的使用机制:继承.实例化.实现(继承)配置.实例(参数化)配置.机制管理模块 facade模式.管理模块

  6. 我的Android进阶之旅------>Android采用AES+RSA的加密机制对http请求进行加密

    前言 未加密的抓包截图 加密之后的抓包截图 基本需求及概念 AES算法 AES基本原理及算法流程 AES算法流程 RSA算法 RSA算法基本原理及流程 RSA算法实现流程 AES与RSA相结合数据加密 ...

  7. 说说API的重放机制

    API的重放机制 我们在设计接口的时候,最怕一个接口被用户截取用于重放攻击.重放攻击是什么呢?就是把你的请求原封不动地再发送一次,两次...n次,一般正常的请求都会通过验证进入到正常逻辑中,如果这个正 ...

  8. 安全篇-AES/RSA加密机制

    在服务器与终端设备进行HTTP通讯时,常常会被网络抓包.反编译(Android APK反编译工具)等技术得到HTTP通讯接口地址和参数.为了确保信息的安全,我们采用AES+RSA组合的方式进行接口参数 ...

  9. HTTPS 加密机制

    目录 1. HTTPS 概述 2. 对称加密 3. 非对称加密 4. 非对称加密改良方案 5. 非对称加密 + 对称加密 6. 中间人攻击 7. 数字证书 8. 数字签名 9. HTTPS 工作原理 ...

  10. 反射常用API以及内省机制(代码)

    学习内容: (1)获取构造函数 这里不贴Person类了,不然代码太多太乱了,只给出一些常用API // 创建字节码对象 Class<?> aClass = Class.forName(& ...

随机推荐

  1. 【一步步开发AI运动小程序】六、人体骨骼图绘制

    随着人工智能技术的不断发展,阿里体育等IT大厂,推出的"乐动力"."天天跳绳"AI运动APP,让云上运动会.线上运动会.健身打卡.AI体育指导等概念空前火热.那 ...

  2. mysql8 安装后无法登录的问题

    使用 apt 安装mysql 先search一下 sudo apt search mysql 得到结果 找到了这个 发现是8 那就装吧 sudo apt-get install mysql-serve ...

  3. OSG开发笔记(三十三):同时观察物体不同角度的多视图从相机技术

    前言   前面的相机hud可以单独显示图形,继续深入研究相机hud,技术就是子视图了,实现该功能的直接技术是从相机技术.  本篇描述osg从相机技术   Demo         相机视口的关键调用 ...

  4. SQLSERVER 2019数据库(可疑) 数据修复案例

    2019 数据库 , 在正常使用过程中 , 服务器突然断电 , 重新启动服务器后 , 数据库变为(可疑). [数据恢复故障分析] 由于数据库在正常读写操作过 , 服务器突然断电 , 导致数据库无法把所 ...

  5. JVM的参数说明

    Java虚拟机的参数说明 Java运行时数据区域: 线程共享区:方法区(永久区),堆 线程私有区:虚拟机栈,本地方法栈,程序计数器 JAVA_OPTS="-server -Duser.tim ...

  6. 深度变分信息瓶颈——Deep Variational Information Bottleneck

    Deep Variational Information Bottleneck (VIB) 变分信息瓶颈 论文阅读笔记.本文利用变分推断将信息瓶颈框架适应到深度学习模型中,可视为一种正则化方法. 变分 ...

  7. [ARC107D] Number of Multisets题解

    很显然的动态规划. 令 $f_{i,j}$ 为 $n=i$,$k=j$ 时满足题意的集合数. 依题意可得:一个集合可以只由另一个集合添加元素或将所有元素除二得到. 初始:$f_{0,0}=1$. 目标 ...

  8. [双体系练习]Java基础练习题1

    因为练习是word,本文我只是写了里面的部分内容,如果想查阅完整内容或者获取word以及PDF,请 关注微信公众号 乖乖狼科技 发送口令 akcd T1 静态代码块中不能? · [D ] A. 初始化 ...

  9. [转]OpenSSL主配置文件openssl.cnf

    https://www.cnblogs.com/f-ck-need-u/p/6091027.html openssl系列文章:http://www.cnblogs.com/f-ck-need-u/p/ ...

  10. Linux 中的内存使用率计算方式

    背景介绍 在工作中处理问题的时候,遇到一个问题,自己根据 top 命令时查看到的 used 和 total 计算出来的内存使用率已经达到 90% 以上了,但是系统自带的监控软件计算出来的使用率往往没有 ...