写在前面:因为现在自己实习的公司新拓展的一个业务是结合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"的在线聊天服务进行交互。以下是代码的主要功能和组成部分的概述:
-
导入依赖:代码开始部分导入了JSON处理、HTTP请求、WebSocket通信、加密等所需的库。
-
类定义:
BigModelNew
类继承自WebSocketListener
,用于处理WebSocket连接和消息。 -
常量定义:
hostUrl
:服务的URL地址,用于v1.1版本的API。appid
、apiSecret
、apiKey
:用于API鉴权的凭证。
-
成员变量:
historyList
:用于存储对话历史的列表。totalAnswer
:存储大模型答案的字符串。NewQuestion
:当前用户提出的问题。gson
:用于JSON序列化和反序列化的Gson实例。userId
和wsCloseFlag
:分别用于标识用户和控制WebSocket连接的关闭。
-
构造函数:接收用户ID和WebSocket关闭标志作为参数。
-
主函数 (
main
):程序入口,用于启动WebSocket连接并发送用户输入的问题。 -
鉴权方法 (
getAuthUrl
):生成用于API鉴权的URL。 -
WebSocket事件处理:
onOpen
:WebSocket连接打开时,启动一个新线程来发送请求。onMessage
:处理从服务端接收到的消息,并更新答案汇总。onFailure
:处理连接失败的情况。
-
发送逻辑 (
MyThread
类):在新线程中构建请求JSON,并发送给服务端。 -
历史记录管理 (
canAddHistory
方法):检查是否可以将新的回答添加到历史记录中。 -
JSON结构定义:定义了用于解析从服务端返回的JSON数据的内部类。
整体来看,这段代码实现了以下功能:
- 与聊天服务建立WebSocket连接。
- 接收用户输入,并将其发送给服务端。
- 接收服务端的回答,并将其输出到控制台。
- 管理对话历史,确保不超过一定长度。
- 实现基本的API鉴权机制。
需要注意的点是不同的hostUrl要对应不同的domain,记得修改。
然后运行即可,结果如下: