基于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://xiahunao.cn/news/3224997.html

如若内容造成侵权/违法违规/事实不符,请联系瞎胡闹网进行投诉反馈,一经查实,立即删除!

相关文章

【密码学】分组密码概述

一、分组密码的定义 分组密码和流密码都是对称密码体制。 流密码:是将明文视为连续的比特流,对每个比特或字节进行实时加密,而不将其分割成固定的块。流密码适用于加密实时数据流,如网络通信。分组密码:是将明文数据…

【无聊找点事干】局域网内把window 搭建为代理服务器上网

场景描述 同一局域网内,server 2012可以上网,window 10无法上网。现在将电脑server 2012设置为代理服务器,使得window 10可以通过server 2012访问公网。 server 2012:服务端 安装代理服务器软件:CCProxy点击‘设置’…

『大模型笔记』GraphRAG:利用复杂信息进行发现的新方法!

GraphRAG:利用复杂信息进行发现的新方法! 文章目录 一. GraphRAG:利用复杂信息进行发现的新方法!1. 将RAG应用于私人数据集2. 整个数据集的推理3. 创建LLM生成的知识图谱4. 结果指标5. 下一步二. 参考文献微软官方推文:https://www.microsoft.com/en-us/research/blog/gra…

综合安全防护

题目 1,DMZ区内的服务器,办公区仅能在办公时间内(9:00-18:00)可以访问,生产区的设备全天可以访问. 2,生产区不允许访问互联网,办公区和游客区允许访问互联网 3,办公区设备10.0.2.10不允许访问DMz区的FTP服务器和HTTP服务器,仅能ping通10.0.3.10 4,办公区分为市场部和研发部,研…

activemq-CVE-2022-41678

Apache ActiveMQ Jolokia 后台远程代码执行漏洞 Apache ActiveMQ在5.16.5,5.17.3版本及以前,后台Jolokia存在一处任意文件写入导致的远程代码执行漏洞。 启动环境 admin/admin 方法一:利用poc 这个方法受到ActiveMQ版本的限制,因…

化妆品3D虚拟三维数字化营销展示更加生动、真实、高效!

随着人们越来越追求高速便捷的生活工作方式,企业在营销市场也偏国际化,借助VR全景制作技术,将企业1:1复刻到云端数字化世界,能带来高沉浸式的逼真、震撼效果。 通过我们独特的漫游点自然场景过渡技术,您将置身于一个真…

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

题目&#xff1a; 题解&#xff1a; class MyStack {Queue<Integer> queue;/** Initialize your data structure here. */public MyStack() {queue new LinkedList<Integer>();}/** Push element x onto stack. */public void push(int x) {int n queue.size();…

Qt Creator仿Visual Studio黑色主题

转自本人博客&#xff1a;Qt Creator仿Visual Studio黑色主题 1.演示 配置文件和步骤在后面&#xff0c;先看成品&#xff0c;分别是QWidget和QML的代码编写界面&#xff1a; 2. 主题配置文件 下载链接&#xff1a;QtCreator _theme_VS_dark.xml 也可以自己新建一个xml文件&…

理解局域网技术:从基础到进阶

局域网&#xff08;LAN&#xff09;是在20世纪70年代末发展起来的&#xff0c;起初主要用于连接单位内部的计算机&#xff0c;使它们能够方便地共享各种硬件、软件和数据资源。局域网的主要特点是网络为一个单位所拥有&#xff0c;地理范围和站点数目均有限。 局域网技术在计算…

后端——全局异常处理

一、老办法try-catch 当我们执行一些错误操作导致程序报错时&#xff0c;程序会捕捉到异常报错&#xff0c;这个异常会存在一个Exception对象里 那我们在spring boot工程开发时&#xff0c;当我们执行一个sql查询时报错了&#xff0c;那就会从最底层的Mapper层捕捉到Exceptio…

《RWKV》论文笔记

原文出处 [2305.13048] RWKV: Reinventing RNNs for the Transformer Era (arxiv.org) 原文笔记 What RWKV(RawKuv):Reinventing RNNs for the Transformer Era 本文贡献如下&#xff1a; 提出了 RWKV 网络架构&#xff0c;结合了RNNS 和Transformer 的优点&#xff0c;同…

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

题目&#xff1a; 题解&#xff1a; type MyStack struct {queue []int }/** Initialize your data structure here. */ func Constructor() (s MyStack) {return }/** Push element x onto stack. */ func (s *MyStack) Push(x int) {n : len(s.queue)s.queue append(s.queu…

基于信号量的生产者消费者模型

文章目录 信号量认识概念基于线程分析信号量信号量操作 循环队列下的生产者消费者模型理论认识代码部分 信号量 认识概念 信号量本质: 计数器 它也叫做公共资源 为了线程之间,进程间通信------>多个执行流看到的同一份资源---->多个资源都会并发访问这个资源(此时易出现…

边缘概率密度、条件概率密度、边缘分布函数、联合分布函数关系

目录 二维随机变量及其分布离散型随机变量连续型随机变量边缘分布边缘概率密度举例边缘概率密度 条件概率密度边缘概率密度与条件概率密度的区别边缘概率密度条件概率密度举个具体例子 参考资料 二维随机变量及其分布 离散型随机变量 把所有的概率&#xff0c;都理解成不同质量…

Python:安装/Mac

之前一直陆陆续续有学python&#xff01;今天开始&#xff01;正式开肝&#xff01;&#xff01;&#xff01; 进入网站&#xff1a;可能会有点慢&#xff0c;多开几个网页 https://www.python.org 点击下载&#xff0c;然后进入新的页面&#xff0c;往下滑 来到File&#xff0…

EEG源定位(EEG Source Localization)

EEG源定位&#xff08;EEG Source Localization&#xff09;是一种用于确定大脑内部电活动来源的方法。通过在头皮上记录的电信号&#xff08;EEG&#xff09;&#xff0c;源定位技术可以推断这些信号的起源&#xff0c;即确定大脑中的哪些区域产生了这些电活动。这对于理解大脑…

5.更多

发现一个项目与 MkDocs 类似的项目 PyMdown 拓展文档 &#xff0c;等待探索。 1.排版模仿 以下网站使用 MkDocs 构建 Material for MkDocs 的美化 - Charles Les Notebook (charleschile.com) Documentation - Home Assistant (home-assistant.io) Godot Docs – master bra…

操作系统|day1.了解操作系统

文章目录 了解操作系统定义目的操作系统体系结构功能特征操作系统的区别(64位与32位)操作系统的地址内存管理缓存 了解操作系统 定义 操作系统是控制管理计算机系统的硬软件,分配调度资源的系统软件 目的 方便性,有效性(提高系统资源的利用率,提高系统的吞吐量) 操作系统体…

爆破器材期刊

《爆破器材》简介   《爆破器材》自1958年创刊以来&#xff0c;深受广大读者喜爱&#xff0c;是中国兵工学会主办的中央级技术刊物&#xff0c;在国内外公开发行&#xff0c;近几年已发行到10个国家和地区。《爆破器材》杂志被美国著名检索机构《化学文摘》&#xff08;CA&a…

面试官:讲一下如何终止一个 Promise 继续执行

我们知道 Promise 一旦实例化之后&#xff0c;状态就只能由 Pending 转变为 Rejected 或者 Fulfilled&#xff0c; 本身是不可以取消已经实例化之后的 Promise 了。 但是我们可以通过一些其他的手段来实现终止 Promise 的继续执行来模拟 Promise 取消的效果。 Promise.race …