
本次通过使用Websocket协议调用星火认知大模型api实现问答功能,首先需要设置环境变量:
需要将‘YOUR_APPID‘、’YOUR_API_KEY’、‘YOUR_API_SECRET‘替换为自己的相应信息,获取这些信息,需要进入讯飞控制台,选择自己使用的版本,右侧可以看的所需要的信息。

初始化一个用于处理讯飞星火大模型 WebSocket 认证的类,接收四个参数:APPID(应用ID)、APIKey(API密钥)、APISecret(API密钥对应的密钥)和 Spark_url(API地址),再使用 urlparse 解析 URL,获取主机名(host)和路径(path)。
按照星火认知模型文档要求生成时间戳,首先获取当前时间,再将时间转换为 RFC1123 格式(例如:Thu, 12 Jun 2025 08:00:49 GMT)。
构造签名原文,按照讯飞API的要求,拼接签名字符串,包含三个部分:host、date 和请求行(GET + 路径 + HTTP版本),每部分用换行符分隔。
使用 HMAC-SHA256 算法对签名原文进行加密,使用 APISecret 作为密钥,将结果进行 Base64 编码。
构建认证头信息,包含:api_key:API密钥,algorithm:使用的加密算法(hmac-sha256)、headers:参与签名的头部字段、signature:生成的签名,对整个认证头进行 Base64 编码。
将认证信息组合成字典,使用 urlencode 将字典转换为 URL 查询字符串,将查询字符串附加到原始 URL 后面,从而生成最终URL。
完整代码:
接下来将构建CustomSparkLLM(LLM)方法,此方法继承自 LangChain 的 LLM 基类,其中需要定义必要的认证信息:appid、api_key、api_secret,同时设置讯飞星火大模型的 WebSocket URL 和模型版本(我选择4.0Ultra)
进入上述链接查看所选择版本的请求地址。
添加LLM类型标识,标识这是一个讯飞星火大模型,实现 LangChain 要求的 _llm_type 属性
创建主要调用方法,实现 LangChain 的 _call 方法,同时接收用户输入的问题,返回模型的回答。
WebSocket 响应获取流程包括创建连接并设置回调函数以处理连接事件。
创建连接状态管理,将必要的参数附加到 WebSocket 对象上,初始化响应存储和连接状态标志。
设置超时处理,实现30秒超时机制,防止连接无限等待。
进行消息处理,理接收到的消息,检查响应状态码,累积响应内容,在回答完成时关闭连接。
完善错误处理、连接关闭处理,处理连接错误并记录错误信息并关闭连接;标记连接已关闭
,检测是否超时。
完成以上步骤就可以进行发送请求了,在连接建立时发送请求,设置好模型参数:
- temperature: 0.88(控制回答的随机性)
- max_tokens: 4096(最大输出长度)
建立测试对话,实验代码是否实现了与其功能。
可在终端看到运行结果,即使运行成功,后续可按照各自预期修改大模型参数。

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