基于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.mfbz.cn/a/788550.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

vue子组件调用父组件方法

父组件 页面<popoverss ref"pop" :goodspop"goodspop"></popoverss>子组件components: {"popoverss": () > import(../comm/popover.vue)},方法goodspop(e){console.log(e"----")return 9999;},子组件 方法props:[go…

理解点对点协议:构建高效网络通信

在通信线路质量较差的年代&#xff0c;能够实现可靠传输的高级数据链路控制&#xff08;High-level Data Link Control, HDLC&#xff09;协议曾是比较流行的数据链路层协议。HDLC是一个较复杂的协议&#xff0c;实现了滑动窗口协议&#xff0c;并支持点对点和点对多点两种连接…

单对以太网:工业4.0时代的通信革命

单对以太网连接器概述 单对以太网&#xff08;Single Pair Ethernet&#xff0c;简称SPE&#xff09;是一种新兴的以太网技术&#xff0c;它通过一对双绞线实现数据传输&#xff0c;支持PoDL&#xff08;Power over Data Line&#xff09;技术&#xff0c;为终端设备提供电力供…

Python | Leetcode Python题解之第225题用队列实现栈

题目&#xff1a; 题解&#xff1a; class MyStack:def __init__(self):"""Initialize your data structure here."""self.queue collections.deque()def push(self, x: int) -> None:"""Push element x onto stack."&…

基于单片机的温湿度感应智能晾衣杆系统设计

&#xff3b;摘 要&#xff3d; 本设计拟开发一种湿度感应智能晾衣杆系统 &#xff0c; 此新型晾衣杆是以单片机为主控芯片 来控制的实时检测系统 &#xff0e; 该系统使用 DHT11 温湿度传感器来检测大气的温湿度 &#xff0c; 然后通过单 片机处理信息来控制 28BYJ &…

Python不使用元类的ORM实现

不使用元类的简单ORM实现 在 Python 中&#xff0c;ORM&#xff08;Object-Relational Mapping&#xff09;是一种将对象和数据库之间的映射关系进行转换的技术&#xff0c;使得通过面向对象的方式来操作数据库更加方便。通常&#xff0c;我们使用元类&#xff08;metaclass&a…

网络安全合规建设

网络安全合规建设 一、法律安全需求基本合规&#xff08;1&#xff09;《网络安全法》重要节点等级保护政策核心变化 二、安全需求 业务刚需&#xff08;1&#xff09;内忧&#xff08;2&#xff09;外患 三、解决方法&#xff08;1&#xff09;总安全战略目标图&#xff08;2&…

CTF-PWN-kernel-栈溢出(retuser rop pt_regs ret2dir)

文章目录 参考qwb2018 core检查逆向调试打包上传测试脚本retuserkernel ropinit_credcommit_creds( prepare_kernel_cred(0) )开启KPTI利用swapgs_restore_regs_and_return_to_usermode开启KPTI利用SIGSEGVrop设置CR3寄存器再按照没有KPTI返回 kernel rop ret2userpt_regs 构造…

谈面向任务的多轮对话系统(TOD)

面向任务对话系统&#xff08;Task-Oriented Dialogue (TOD) Systems)主要是为解决特定任务的&#xff0c;比如订票任务&#xff08;订机票&#xff0c;电影票等&#xff09;&#xff0c;预定饭店等。这种对话往往需要多轮对话才能够完成。 多轮对话的例子 客户预定一个餐厅的…

仕考网:公务员考试面试时间一般多长?

公务员考试主要分为笔试与面试两个阶段&#xff0c;其中面试是笔试通过的下一关&#xff0c;面试的具体安排通常由相关考试机构或招录单位负责发布并通知考生。 公务员面试的持续时间一般在30分钟至1小时之间&#xff0c;具体时长可能因地区和招录单位的不同而有所变化。常见的…

红日靶场----(三)漏洞利用

上期已经信息收集阶段已经完成&#xff0c;接下来是漏洞利用。 靶场思路 通过信息收集得到两个吧靶场的思路 1、http://192.168.195.33/phpmyadmin/&#xff08;数据库的管理界面&#xff09; root/root 2、http://192.168.195.33/yxcms/index.php?radmin/index/login&am…

LLM大模型从入门到精通(2)--LLM模型的评估指标

LLM大模型建立完成之后&#xff0c;需要对大模型的性能进行评估。评估指标可以根据具体任务的不同而有所差异&#xff0c;以下是一些常见的评估指标&#xff1a; 1. 准确率&#xff08;Accuracy&#xff09;&#xff1a;模型预测正确的样本数占总样本数的比例。 2. 精确率&am…

oracle索引字段存储数据过长,导致索引失效

1&#xff1a;短位数据&#xff0c;索引生效 2&#xff1a;长位索引&#xff0c;索引不生效 此问题发现于6月中旬&#xff0c;线上问题优化。引以为戒。 解决&#xff1a; 并未解决索引不生效问题&#xff0c; 但是基于优化查询&#xff0c;是的查询保持毫秒级

项目收获总结--Redis的知识收获

一、概述 最近几天公司项目开发上线完成&#xff0c;做个收获总结吧~ 今天记录Redis的收获和提升。 二、Redis异步队列 Redis做异步队列一般使用 list 结构作为队列&#xff0c;rpush 生产消息&#xff0c;lpop 消费消息。当 lpop 没有消息的时候&#xff0c;要适当sleep再…

【Linux】进程(9):进程控制2(进程等待)

大家好&#xff0c;我是苏貝&#xff0c;本篇博客带大家了解Linux进程&#xff08;9&#xff09;进程控制2&#xff0c;如果你觉得我写的还不错的话&#xff0c;可以给我一个赞&#x1f44d;吗&#xff0c;感谢❤️ 目录 一. 为什么要进程等待二. 如何进行进程等待1.wait函数—…

Linux udp编程

我最近开了几个专栏&#xff0c;诚信互三&#xff01; > |||《算法专栏》&#xff1a;&#xff1a;刷题教程来自网站《代码随想录》。||| > |||《C专栏》&#xff1a;&#xff1a;记录我学习C的经历&#xff0c;看完你一定会有收获。||| > |||《Linux专栏》&#xff1…

洛谷 数学进制 7.9

P1100 高低位交换 - 洛谷 | 计算机科学教育新生态 (luogu.com.cn) 代码一 #include<bits/stdc.h> using namespace std; typedef long long ll; #define IOS ios::sync_with_stdio(0),cin.tie(0),cout.tie(0)const ll N1e510; char a[N];int main() {IOS;ll a;int b[32]…

一、YOLO V10安装、使用、训练大全

YOLO V10安装、使用、训练大全 一、下载官方源码二、配置conda环境三、安装YOLOV10依赖四、使用官方YOLO V10模型1.下载模型2.使用模型2.1 图片案例 五、制作数据集1.数据集目录结构2.标注工具2.1 安装标注工具2.2 运行标注工具2.3 设置自动保存2.4 切换yolo模式2.5 开始标注2.…

Mosh|内连接、外连接、左连接、右连接(未完)

下图取自菜鸟教程&#xff0c;侵权删&#xff5e; 一、内连接&#xff1a;Inner Joins 模版&#xff1a;SELECT * FROM A JOIN B ON 条件 含义&#xff1a;返回A与B的交集&#xff0c;列为AB列之和 练习&#xff1a;将order_items表和products表连接&#xff0c;返回产品id和…

Qt:12.输入类控件(QSpinBox-整数值输入的小部件、QDateEdit、QTimeEdit、QDateTimeEdit- 日期和时间输入的控件)

目录 一、QSpinBox-整数值输入的小部件&#xff1a; 1.1QSpinBox介绍&#xff1a; 1.2属性介绍&#xff1a; 1.3通用属性介绍&#xff1a; 1.4信号介绍&#xff1a; 二、QDateEdit、QTimeEdit、QDateTimeEdit- 日期和时间输入的控件&#xff1a; 2.1QDateEdit、QTimeEdit…