讯飞星火API调用流程:密钥配置与Python请求示例

讯飞星火API的调用门槛主要在鉴权环节:它不是简单填一个API Key就能用,而是需要APPID、APIKey、APISecret三件套,并且要生成带签名的WebSocket连接地址。
下面按实际接入顺序,从控制台创建应用到Python跑通请求讲清楚。

先在控制台拿到三件套

打开讯飞开放平台(console.xfyun.cn),登录后进入控制台,找到星火认知大模型的服务页面。
首次使用需要先创建应用,应用创建完成后在应用详情里能看到以下三个值:

  • APPID:应用唯一标识
  • APIKey:接口密钥
  • APISecret:用于签名计算的密钥

这三个值不要直接写死在代码里,建议放到环境变量或配置文件中。
另外确认所创建应用的模型版本,不同版本对应的接口地址和参数可能不同,以控制台展示的接口文档为准。

理解鉴权地址的生成方式

星火API的WebSocket接口地址不是固定的,需要根据APISecret动态生成签名。
核心逻辑是:用当前时间戳和APIKey构造签名原文,经HMAC-SHA256计算后再Base64编码,拼接到wss://地址上。

关键参数说明:

  • host:接口域名,如spark-api.xf-yun.com
  • date:RFC1123格式的GMT时间
  • authorization_origin:固定格式的签名原文
  • signature:HMAC-SHA256计算结果

签名一旦算错,服务端会直接返回401或握手失败。
时间戳与服务器时间偏差过大也会导致鉴权不通过,这是新手最容易忽略的一点。

Python请求示例

下面是一个最小可运行的调用示例,使用websocket-client库。
先安装依赖:

pip install websocket-client

然后编写调用脚本:

import hmac
import hashlib
import base64
import datetime
import json
import websocket

APPID = "你的APPID"
API_KEY = "你的APIKey"
API_SECRET = "你的APISecret"

def create_url():
    host = "spark-api.xf-yun.com"
    path = "/v3.5/chat"  # 以控制台文档为准
    date = datetime.datetime.utcnow().strftime('%a, %d %b %Y %H:%M:%S GMT')
    origin = f"host: {host}\ndate: {date}\nGET {path} HTTP/1.1"
    signature = base64.b64encode(
        hmac.new(API_SECRET.encode(), origin.encode(), hashlib.sha256).digest()
    ).decode()
    auth_origin = (
        f'api_key="{API_KEY}", algorithm="hmac-sha256", '
        f'headers="host date request-line", signature="{signature}"'
    )
    authorization = base64.b64encode(auth_origin.encode()).decode()
    return f"wss://{host}{path}?authorization={authorization}&date={date}&host={host}"

def on_message(ws, message):
    data = json.loads(message)
    if data["header"]["code"] != 0:
        print("错误:", data["header"])
        ws.close()
        return
    for choice in data["payload"]["choices"]["text"]:
        print(choice["content"], end="")
    if data["header"]["status"] == 2:
        ws.close()

def on_open(ws):
    ws.send(json.dumps({
        "header": {"app_id": APPID},
        "parameter": {"chat": {"domain": "generalv3.5", "max_tokens": 1024}},
        "payload": {"message": {"text": [{"role": "user", "content": "你好"}]}}
    }))

ws = websocket.WebSocketApp(create_url(), on_message=on_message, on_open=on_open)
ws.run_forever()

注意domain字段必须与控制台开通的模型版本一致,写错会返回参数错误。

报错时先查这几处

握手返回401:优先检查签名原文格式是否完全一致,包括换行符和空格;
再确认系统时间是否准确,可用date -u查看UTC时间。

返回403:通常是APIKey与APISecret不匹配,或者应用未开通对应模型服务,回到控制台确认服务状态。

连接超时:检查服务器出站网络是否放行wss的443端口,部分云服务器安全组默认限制出站规则。

返回内容为空:确认payload.message.text中的role和content字段完整,且max_tokens没有设置过小。

验证调用是否成功

脚本运行后如果控制台持续打印模型回复文本,且最后状态码为2,说明完整链路已经通了。
此时可以进一步把返回的usage字段打印出来,确认token消耗是否符合预期。
建议先在测试环境用短问题验证,再接入业务代码。

如果后续要换成HTTP接口,签名逻辑一致,只是请求方式和参数位置不同,以控制台当前接口文档为准。
整个流程中最需要耐心的是签名生成和模型版本对应关系,把这两步核对清楚,后续调用基本不会卡住。

分享到:
上一篇
腾讯混元API调用实操:密钥配置与Python请求示例
下一篇
智谱API使用教程:密钥申请与Python调用示例
1
系统公告

泽御云中秋国庆双节活动上线:新购8折,拼团3.99元起

尊敬的用户:
泽御云“月满中秋·礼贺国庆”双节活动现已开启,活动时间为2026年9月23日至10月10日。 活动期间可享以下福利:
1. 常规云服务器新购使用优惠码“泽御中秋国庆同乐”,符合条件的订单享8折优惠。
2. 香港精品云服务器5人拼团低至3.99元,部分4核4G套餐3人拼团年付388元,续费同价。
3. 新用户购买年付云服务器,符合活动规则可赠送2个月使用时长。
4. 老用户续费季度赠15天,续费年度赠2个月;活动期间升级配置免收配置迁移手续费。
5. 推荐好友成功下单,符合条件的推荐人可获赠7天服务器使用时长。
6. 活动期间享宕机补偿标准翻倍、简单网站迁移协助及技术工单优先处理权益。
温馨提示:优惠码不适用于拼团套餐、活动轻量产品、年付订单及续费订单;拼团套餐为独立特价活动,不与赠时类福利叠加。赠送时长不可折现、退款或跨账户转移,具体规则以活动页面说明为准。
服务中心
客服
在线客服
24小时为您服务
咨询
联系我们
联系我们,为您的业务提供专属服务。
24/7 技术支持
如果您遇到寻求进一步的帮助,请过工单与我们进行联系。
24/7 即时支持
泽御云
售前客服
泽御云
泽御云
售后客服
泽御云
技术支持
评价
您对当前页面的整体感受是否满意?
😞
非常不满意
😕
不满意
😐
一般
🙂
满意
😊
非常满意