首页 > 其他分享 >混元API的加密机制与原生集成实战

混元API的加密机制与原生集成实战

时间:2025-01-23 11:14:14浏览次数:1  
标签:xml 加密 bind 对接 API 混元大 混元

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

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

签名方法v3

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

image

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

申请秘钥

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

image

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

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正常请求拦截后打印:

image

所以后来我直接改成了使用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 技术这块儿的奥秘。特爱跟人交流技术,喜欢把自己的心得和大家分享。还当上了腾讯云创作之星,阿里云专家博主,华为云云享专家,掘金优秀作者。各种征文、开源比赛的牌子也拿了。

标签:xml,加密,bind,对接,API,混元大,混元
From: https://www.cnblogs.com/guoxiaoyu/p/18675216

相关文章

  • LoRaWAN协议工作模式和加密机制
    一、LoRaWAN协议的三种运作模式解析LoRaWAN协议精心设计了三种运作模式,以满足物联网应用在功耗、延迟和通信可靠性方面的不同需求。这三种模式——ClassA、ClassB和ClassC,各自展现了独特的优势,提供了灵活的网络通信和资源管理。ClassA模式ClassA模式是LoRaWAN中最基础的类......
  • asyncAPI
    async.cu#include<stdio.h>#include<cuda_runtime.h>#include<cuda_profiler_api.h>template<typenameT>voidcheck(Tresult,charconst*constfunc,constchar*constfile,intconstline){if(result){......
  • API 设计之禅
    API设计之禅译者按:本文翻译自HowtodesignagoodAPIandwhyitmatters。根据笔者经历,很多大厂程序员所写的代码和大厂内部封装的各种中间件、类库,毫不客气地说,90%都是没有经过仔细考虑的,经常有各种各样的性能、拓展、可读性、一致性等问题。本文总结深刻,建议反复阅读学习......
  • JS逆向和前端加密暴力破解(小白无痛学习),黑客技术零基础入门到精通教程!
    网站运行的时间轴url–>加载html–>加载js–>运行js初始化–>用户触发某个事件–调用了某段js–>明文数据–>加密函数–>加密后的数据–>send(给服务器发信息{XHR–SEND})-->接收到服务器数据–>解密函数–>刷新函数–>刷新网页渲染浏览器的调试功能调试时使用最多的功......
  • 如何保护 Flask API 的安全性?
    保护FlaskAPI的安全性至关重要,以防止未经授权的访问、数据泄露和恶意攻击。以下是加强FlaskAPI安全性的最佳实践:1.使用身份验证和授权确保API只能被授权用户访问:(1)使用JWT(JSONWebToken)JWT是常见的身份验证机制,可用于身份验证和用户权限控制。安装F......
  • 史上最强PDF工具-创建、编辑、加密、转换(PDF转word)、扫描和OCR-Adobe Acrobat Pro 202
    AdobeAcrobatPro是可跨多种设备使用的最全面、最现代的PDF解决方案。拥有25种PDF和电子签名工具。无论是企业办公、教育、法律还是个人使用,AdobeAcrobat都能提供高效、便捷、安全的文档处理体验。一、概述AdobeAcrobat是由Adobe公司开发的一款软件,它是用于创建、查......
  • JS-Web API -day04
    一、日期对象1.1实例化日期对象实例化:new关键字获得当前时间        constdata=newDate()获得指定时间        constdata1=newDate('2024-5-108:30:00')     1.2日期对象方法常见的时期对象方法:getFullYear()、getMonth()、g......
  • jenkins-通过api获取所有job及最新build信息
    日常维护的API接口功能:前提:python1.获取所有job:defget_all_jobs(jenkins_url,username,password):url=f"{jenkins_url}/api/json"response=requests.get(url,auth=(username,password))ifresponse.status_code==200:data=response......
  • Cisco APIC 6.0(8e)M - 应用策略基础设施控制器
    CiscoAPIC6.0(8e)M-应用策略基础设施控制器ApplicationPolicyInfrastructureController(APIC)请访问原文链接:https://sysin.org/blog/cisco-apic-6/查看最新版。原创作品,转载请保留出处。作者主页:sysin.org思科应用策略基础设施控制器(APIC)CiscoNX-OS网络操作......
  • pyinstaller package fastapi application
    pyinstallerhttps://pyinstaller.org/en/stable/installation.htmlPyInstallerbundlesaPythonapplicationandallitsdependenciesintoasinglepackage.TheusercanrunthepackagedappwithoutinstallingaPythoninterpreteroranymodules.PyInstaller......