基于Java的科大讯飞大模型API调用实现

        写在前面:因为现在自己实习的公司新拓展的一个业务是结合AI的低代码平台,我负责后端的开发,之前一直都是直接使用gpt或者文心一言等ui界面来直接使用大模型,从来没有自己调接口过,所以本文记录一下自己第一次使用大模型的心得,小趴菜一个,大佬们勿喷~~

        源码:llm_-api_-demo: 科大讯飞大模型API调用实例代码 (gitee.com)

        正文:

        在调用模型API接口前,必须要使用到对应的大模型,我用的是科大讯飞的星火,官网地址放在这里了:讯飞开放平台-以语音交互为核心的人工智能开放平台 (xfyun.cn),进入注册账号然后申请对应的API权限即可(第一次使用免费,有量的限制),在控制台中得到我们对应API接口的APPID、APISecret和APIKey,这些是后面我们通过java使用大模型的密钥相当于。如图所示:        然后就可以找到对应模型的Demo下在本地(我用的是星火认知大模型的Demo),源码放这了,只需改一下APPID、APISecret和APIKey应该就能跑起来了。对应的文档我也放在这里了:1. 接口说明 | 讯飞开放平台文档中心 (xfyun.cn)

        接下来,打开Demo,修改APPID、APISecret和APIKey,解释一下这个Demo的功能(来自Kimi的专业分析)(因为我也不是很会,手动狗头hhhh):

这段Java代码是一个客户端程序,用于与一个名为"BigModel"的在线聊天服务进行交互。以下是代码的主要功能和组成部分的概述:

  1. 导入依赖:代码开始部分导入了JSON处理、HTTP请求、WebSocket通信、加密等所需的库。

  2. 类定义BigModelNew 类继承自 WebSocketListener,用于处理WebSocket连接和消息。

  3. 常量定义

    • hostUrl:服务的URL地址,用于v1.1版本的API。
    • appidapiSecretapiKey:用于API鉴权的凭证。
  4. 成员变量

    • historyList:用于存储对话历史的列表。
    • totalAnswer:存储大模型答案的字符串。
    • NewQuestion:当前用户提出的问题。
    • gson:用于JSON序列化和反序列化的Gson实例。
    • userId 和 wsCloseFlag:分别用于标识用户和控制WebSocket连接的关闭。
  5. 构造函数:接收用户ID和WebSocket关闭标志作为参数。

  6. 主函数 (main):程序入口,用于启动WebSocket连接并发送用户输入的问题。

  7. 鉴权方法 (getAuthUrl):生成用于API鉴权的URL。

  8. WebSocket事件处理

    • onOpen:WebSocket连接打开时,启动一个新线程来发送请求。
    • onMessage:处理从服务端接收到的消息,并更新答案汇总。
    • onFailure:处理连接失败的情况。
  9. 发送逻辑 (MyThread 类):在新线程中构建请求JSON,并发送给服务端。

  10. 历史记录管理 (canAddHistory 方法):检查是否可以将新的回答添加到历史记录中。

  11. JSON结构定义:定义了用于解析从服务端返回的JSON数据的内部类。

整体来看,这段代码实现了以下功能:

  • 与聊天服务建立WebSocket连接。
  • 接收用户输入,并将其发送给服务端。
  • 接收服务端的回答,并将其输出到控制台。
  • 管理对话历史,确保不超过一定长度。
  • 实现基本的API鉴权机制。

        需要注意的点是不同的hostUrl要对应不同的domain,记得修改。

        然后运行即可,结果如下:

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/web/43241.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

源代码防泄漏的正确方法

为了保护公司的源代码不被泄露,IT企业可以采取一系列严格的安全措施。这些措施涵盖技术手段、管理策略和操作流程,形成多层次的防护体系做到源代码防泄漏工作。 技术手段 1、源代码加密: 采用高级加密标准(AES)或其他…

【QT】QComboBox允许输入查询,且不区分大小写

目录 0.简介 1.环境 2.详细代码 3.参考 0.简介 项目需求,原本有一个下拉框,但是条目太多,不好搜索,所以用户要求可以输入查找 修改前 : 修改后: 1.环境 windows11 vs-code qt5.12 2.详细代码 QComboB…

中小企业和数智化的距离,只差一块华为IdeaHub

每次谈及中小企业数智化的话题,被提到最多的总是“三不”难题,即不想转、不敢转、不会转。 为了破解这一困局,政府多次在工作报告中提到“深入开展中小企业数字化赋能专项行动”,并在各地为中小企业创新提供政策支持。此外&#…

Android --- Kotlin学习之路:基础语法学习笔记

------>可读可写变量 var name: String "Hello World";------>只读变量 val name: String "Hello World"------>类型推断 val name: String "Hello World" 可以写成 val name "Hello World"------>基本数据类型 1…

MD5加密和注册页面的编写

MD5加密 1.导入包 npm install --save ts-md5 2.使用方式 import { Md5 } from ts-md5; //md5加密后的密码 const md5PwdMd5.hashStr("123456").toUpperCase(); 遇见的问题及用到的技术 注册页面 register.vue代码 <template><div class"wappe…

从零开始学习嵌入式----Linux 命令行,常用命令速记指南

目录 一、文件操作 二、文本操作 三、系统管理 四、网络操作 五、其他常用命令 六、学习建议 在 Linux 世界里&#xff0c;命令行就像一把瑞士军刀&#xff0c;掌握了它&#xff0c;你就能游刃有余地操控整个系统。但面对茫茫多的命令&#xff0c;新手往往会感到无所适从…

关于Python中的字典你所不知道的七个技巧

01 引言 Python是我最喜欢的编程语言之一&#xff0c;它向来以其简单性、多功能性和可读性而闻名。 字典作为Python中最常使用的数据类型&#xff0c;大家几乎每个人都或多或少在项目中使用过字典&#xff0c;但是字典里有一些潜在的技巧可能并不是每个同学都会用到。 在本文…

相同含义但不同类型字段作为join条件时注意事项

假设表A和表B中都有表示学号的stu_id字段&#xff0c;但该字段在表A和表B中类型分别为bigint和string。当直接通过该字段进行join时&#xff0c;一般情况下可以得到我们预期的结果。 select a.stu_id from a as r join b as l on r.stu_id l.stu_id 但是如果学号长度较长的…

【UE5.1 角色练习】16-枪械射击——瞄准

目录 效果 步骤 一、瞄准时拉近摄像机位置 二、瞄准偏移 三、向指定方向射击 四、连发 效果 步骤 一、瞄准时拉近摄像机位置 打开角色蓝图&#xff0c;在事件图表中添加如下节点&#xff0c;当进入射击状态时设置目标臂长度为300&#xff0c;从而拉近视角。 但是这样切…

勇攀新高峰|暴雨信息召开2024年中述职工作会议

7月8日至9日&#xff0c;暴雨信息召开2024年中述职工作会议&#xff0c;总结回顾了上半年的成绩和不足&#xff0c;本次会议采用线上线下的方式举行&#xff0c;公司各部门管理人员、前台市场营销人员参加述职&#xff0c;公司领导班子出席会议。 本次述职采取了现场汇报点评的…

关于宏v4l2_subdev_call的拆解

struct v4l2_subdev *sd结构体 struct v4l2_subdev { #if defined(CONFIG_MEDIA_CONTROLLER)struct media_entity entity; #endifstruct list_head list;struct module *owner;bool owner_v4l2_dev;u32 flags;struct v4l2_device *v4l2_dev;const struct v4l2_subdev_ops *op…

数字滚动动画~

前言 数字从0.00滚动到某个数值的动画 实现&#xff08;React版本&#xff09; Dom <div className"number" ref{numberRef}>0.00</div> JS const _initNumber () > {const targetNumber 15454547.69;const duration 1500;const numberElement…

vivado DRIVE、EDIF_EXTRA_SEARCH_PATHS

驱动器 DRIVE指定配置有I/O的输出缓冲器的输出缓冲器驱动强度&#xff08;mA&#xff09; 支持可编程输出驱动强度的标准。 体系结构支持 所有架构。 适用对象 •端口&#xff08;get_Ports&#xff09; 连接到输出缓冲器的输出或双向端口 价值观 整数值&#xff1a; • 2 • 4…

【UML用户指南】-33-对体系结构建模-系统和模型

目录 1、系统和子系统 2、模型和视图 3、跟踪 4、常用建模技术 4.1、对系统的体系结构建模 4.2、对系统的系统建模 模型是对现实世界的简化——即对系统的抽象&#xff0c;建立模型的目的是为了更好地理解系统。 1、系统和子系统 一个系统可能被分解成一组子系统&#…

09.C2W4.Word Embeddings with Neural Networks

往期文章请点这里 目录 OverviewBasic Word RepresentationsIntegersOne-hot vectors Word EmbeddingsMeaning as vectorsWord embedding vectors Word embedding processWord Embedding MethodsBasic word embedding methodsAdvanced word embedding methods Continuous Bag-…

esp32硬件电路设计

ESP-IDF 入门指南 | 乐鑫科技 (espressif.com) ESP32-DevKitC V4 入门指南 - ESP32 - — ESP-IDF 编程指南 v5.1 文档 (espressif.com)

每日一题~abc356(对于一串连续数字 找规律)

添加链接描述 题意&#xff1a;对于给定的n,m 。计算0~n 每一个数和m & 之后&#xff0c;得到的数 的二进制中 1的个数的和。 一位一位的算。最多是60位。 我们只需要计算 在 1-n这些数上&#xff0c;有多少个数 第i位 为1. 因为是连续的自然数&#xff0c;每一位上1 的…

Linux下的misc设备驱动

文章目录 前言一、misc是什么&#xff1f;二、调用API1.注册2.注销 三、驱动框架总结 前言 misc设备即杂项设备&#xff0c;Linux系统中类似按键、触摸屏都有专门框架处理&#xff0c;类似adc、蜂鸣器等设备无法明确其属于什么类型&#xff0c;一般就归属于杂项设备&#xff0…

Sqli-labs合集之环境搭建

Sqli-labs的搭建 搭建第一个SQL注入学习靶场环境&#xff1a; 软件&#xff1a;sqli-labs 安装过程&#xff1a; 1.源码地址&#xff1a;GitHub - Audi-1/sqli-labs: SQLI labs to test error based, Blind boolean based, Time based.&#xff1b; 2.将压缩包解压到phpst…

PyCharm\VsCode——Python第三方库下载换源

为什么要换源&#xff1f; Python第三方库下载默认镜像源在国外&#xff0c;因为特殊的原因在国内的你我利用这个镜像源往往速度会非常地慢&#xff0c;因此为了提速将这个默认镜像源换成国内的镜像源是非常有必要的。 镜像源的种类有哪些&#xff1f; 国外镜像源——官方 http…