JAVA 讯飞星火AI 接口如何调

JAVA 讯飞星火AI 接口如何调在国外 ChatGPT 已经成为 AI 模型行业的大佬 但是国内如果需要使用 会有各种限制 本文介绍如何使用国内的模型 在国内 讯飞星火大模型是一个非常优秀的中文预训练模型 本文将介绍如何使用 Python 调用讯飞星火大模型接口 实现文本生成等功能 讯飞星火官网 讯飞星火认知大模型 AI 大语言模型 星火大模型 科大讯飞 1 获取 api 接口的 ID 和 key

大家好,我是讯享网,很高兴认识大家。这里提供最前沿的Ai技术和互联网信息。



在国外,ChatGPT已经成为AI模型行业的大佬,但是国内如果需要使用,会有各种限制,本文介绍如何使用国内的模型。

在国内,讯飞星火大模型是一个非常优秀的中文预训练模型。本文将介绍如何使用Python调用讯飞星火大模型接口,实现文本生成等功能。

讯飞星火官网:讯飞星火认知大模型-AI大语言模型-星火大模型-科大讯飞

JAVA 讯飞星火AI 接口如何调_开发语言

1、获取api接口的ID和key

可以获取星火免费赠送的200万个token使用和测试,个人学习使用完全够了

JAVA 讯飞星火AI 接口如何调_python_02

1.1 创建应用

JAVA 讯飞星火AI 接口如何调_人工智能_03

1.2 购买token

JAVA 讯飞星火AI 接口如何调_开发语言_04

1.3 获取 ID和key

JAVA 讯飞星火AI 接口如何调_JAVA 讯飞星火AI 接口如何调_05

1.4 接口文档的选择

JAVA 讯飞星火AI 接口如何调_json_06

官方提供很多版本的SDK开发包及文档,这里需要我们选择web,官方有介绍

JAVA 讯飞星火AI 接口如何调_开发语言_07

1.5 获取python API接口文档

点击上图的WebAPI链接跳转到如下链接:

星火认知大模型Web API文档 | 讯飞开放平台文档中心

JAVA 讯飞星火AI 接口如何调_JAVA 讯飞星火AI 接口如何调_08

下拉文档到最后,下面会有一些不同语言的调用接口示例,我们选择python的:

JAVA 讯飞星火AI 接口如何调_python_09

点击后会自动下载示例程序包:

JAVA 讯飞星火AI 接口如何调_python_10

解压后如下:

JAVA 讯飞星火AI 接口如何调_开发语言_11

打开查看如下内容所示:

代码解释

这段代码定义了一个名为Ws_Param的类,用于处理WebSocket请求。以下是代码中各个方法的解释:

  1. init(self, APPID, APIKey, APISecret, gpt_url):初始化方法,用于设置类的实例变量。其中,APPID、APIKey、APISecret分别表示讯飞开放平台的应用ID、API Key和API Secret;gpt_url表示讯飞语音合成服务的URL。
  2. create_url(self):生成请求的URL。根据当前时间生成RFC1123格式的时间戳;然后,拼接签名字符串,包括host、date和GET请求行;接着,使用hmac-sha256算法对签名字符串进行加密;将加密后的签名字符串进行Base64编码,并将其添加到鉴权参数中,生成完整的URL。
  3. on_error(ws, error):收到WebSocket错误的处理方法。当WebSocket连接发生错误时,会调用此方法。
  4. on_close(ws):收到WebSocket关闭的处理方法。当WebSocket连接关闭时,会调用此方法。
  5. on_open(ws):收到WebSocket连接建立的处理方法。当WebSocket连接建立时,会调用此方法。在此处,会启动一个新的线程来运行run函数。
  6. run(ws, *args):运行函数,用于向讯飞语音合成服务发送请求。根据WebSocket实例的appid和question属性生成请求参数;然后,将请求参数转换为JSON字符串并通过WebSocket发送。
  7. on_message(ws, message):收到WebSocket消息的处理方法。当从讯飞语音合成服务接收到消息时,会调用此方法。解析接收到的消息;然后,根据消息中的code判断请求是否成功;如果成功,则将返回的内容累加到全局变量result中,并打印出来;如果code不为0,表示请求失败,此时关闭WebSocket连接。

官方的代码有个坑,就是answer = ““是个全局变量,这个会将所有的提问拼接在一起,不过这个影响不大,就是打印answer的结果不好看,只要我们输入时text列表清除历史输入,token还是不带历史。

2、代码调试

直接运行发现报错

JAVA 讯飞星火AI 接口如何调_人工智能_12

发现是on_close()方法少传两个参数,实际在传参时是有三个参数,这里我们给它随便补两个参数,然后调试发现不报错了

JAVA 讯飞星火AI 接口如何调_人工智能_13

运行结果:

JAVA 讯飞星火AI 接口如何调_python_14

3、代码调整

虽然上面的代码可以直接运行了,但是没有交互,只能运行一次,并且不能获取用户输入,如果想实现这样的功能,需要调整代码:

参考官方请求参数:

JAVA 讯飞星火AI 接口如何调_开发语言_15

这里我需要给原来的代码添加一个text的列表,将我们要问的问题全部写入到text列表中,然后传递给query参数

封装函数,添加如下代码:

发现接口调用示例对text长度有要求:

需要添加对text长度的检测和判断代码:

接下来对主函数main进行修改,实现交互式及循环请求:

在使用接口函数调用是加上text.clear(),清除历史对话,否则在一个长的连接调用时历史的token会加越来越长,十分消耗token,不需要历史的建议clear

请求参数这里需要调整,将之前的”text”: [{“role”: “user”, “content”: query}]改为如下,否则会报

json: cannot unmarshal array into Go struct field message.payload.message.text.content of type string’

调整后的代码如下:

4、代码测试

JAVA 讯飞星火AI 接口如何调_python_16

5、最终代码(亲测可用)

6、其他功能参数

system:设置对话背景或者模型角色

使用方法–> 旧版本传入请求数据时列表中只有usr和assistant这两个字典数据,现在要是使用system,只需要在usr前加入提示语字典如下图。

也就是在上文应用分享中 getText函数,text.append( {“role”:“system”,“content”:“你现在扮演李白,你豪情万丈,狂放不羁;接下来请用李白的口吻和用户对话。”} )后面每次调用接口都是自带system

测试如下:

JAVA 讯飞星火AI 接口如何调_json_17

一股子诗人的味道,哈哈!

7、问题解决

问题现象

在websocket同服务器进行连接时,出现没有属性:

module ‘websocket’ has no attribute ‘enableTrace’

JAVA 讯飞星火AI 接口如何调_python_18

问题原因

检查一下当前安装的websocket:

检查这个库的相关发布信息:已经很久没维护了,早已被弃用:

JAVA 讯飞星火AI 接口如何调_JAVA 讯飞星火AI 接口如何调_19

解决方法

后续Python中websocket库改为使用websocket-client,需要重新安装:

卸载websocket,这个已弃用,websockets中没有enableTrace模块

推荐安装如下库

小讯
上一篇 2026-04-07 22:43
下一篇 2026-04-07 22:41

相关推荐

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容,请联系我们,一经查实,本站将立刻删除。
如需转载请保留出处:https://51itzy.com/kjqy/218319.html