字节API鉴权方法

目前提供 token 和 signature 两种鉴权方式,选择一种就可以完成鉴权。推荐使用较简单的 token 鉴权。

appid、access_token 和 secret_key 由平台分配,通过控制台创建应用获得,创建应用并开通服务文档

Token 鉴权 #

在连接建立时,须在发送的 GET 或 POST 请求中加上鉴权相关的 Authorization header。如下面示例:

GET /api/v2/asr HTTP/1.1
Host: openspeech.bytedance.com
Accept: */*
User-Agent: curl/7.54.0
Authorization: Bearer; FYaWxBiJnuh-0KBTS00KCo73rxmDnalivd1UDSD-W5E=

Copy and SaveGet Link

Authorization header 的格式是 Bearer; {token}

  • Bearer:授权方法名

  • token: 控制台获取的 token

注意授权方法名和 token 之间使用 ; 分割。

Signature 鉴权 #

相比于 token 鉴权,signature 还需在 Authorization header 中加入 access_tokenmach 等信息。如以下示例:

GET /api/v2/asr HTTP/1.1
Host: openspeech.bytedance.com
Accept: */*
User-Agent: curl/7.54.0
Authorization: HMAC256; access_token="fake_token"; mac="akY93zOmVnV6IFa2RYqedLJXqYmro_9GQmKEKanb8zw="; h="accept,User-Agent"

Copy and SaveGet Link

Authorization header 由四个部分组成:

  • HMAC256:授权方法名
  • fake_token: 控制台获取的 token
  • mac: 消息验证码,使用 HMAC-SHA256 算法生成的签名串,再经过 base64 url 编码,其中 base64 编码后的值是否带有填充的 “=” 并不影响判断结果。生成签名串的方法见下一节。
  • h:(可选)自定义需要签名的 header 列表,列表中的 header 都用 ,分割

生成签名串 #

使用 HMAC-SHA256 算法对输入的字符串用 secret_key 作为 key进行加密,然后使用 base64 url 对结果进行编码。
待加密字符串分为三个部分:

  1. HTTP 请求行或者状态行

  2. Headers,默认使用 Host 加密,但如果指定了 h,则根据 h 添加

  3. Body(如果存在)

示例模版如下(添加了换行符以提高可读性,输入字符串的实际换行符使用 \n 进行转义):

<Proto> <StatusCode> <StatusMessage>\n
<Header1>\n
<Header2>\n
...\n
<Body>

Copy and SaveGet Link

【注】:Headers 必须按照自定义 header h 里指定的顺序加入待加密字符串。如果指定了 header 但是请求中找不到,server 端会返回 error。如果 header 被多次指定,则必须被多次添加到待加密字符串中。
【注】:WebSocket 的签名计算是有 body 的,需加上 body 数据进行签名计算。

示例 #

若原始建连请求为:

GET /api/v2/asr HTTP/1.1
Host: openspeech.bytedance.com
User-Agent: Python/3.9 websockets/8.1

Copy and SaveGet Link

假设 secret_key 为下面以 16 进制表示的二进制串(该二进制串对应的原始文本为"super_secret_key"):

73 75 70 65 72 5f 73 65 63 72 65 74 5f 6b 65 79

指定 h 为 "User-Agent",且假定 body 数据为 “xxxxxxxxxx",则原始待加密字符串为:

GET /api/v2/asr HTTP/1.1
Python/3.9 websockets/8.1
xxxxxxxxxx

Copy and SaveGet Link

经过 HMAC-SHA256 加密 以及 base64 url 编码后,计算得出 mac 为:“j_jmd9Fjy4pfI7mKIqNVXqZ7TmG6oEkMPF8ImdFniHQ”。
假定 access_token 为 “fake_token” 所以最终的建连请求为:

GET /api/v2/asr HTTP/1.1
Host: openspeech.bytedance.com
User-Agent: Python/3.9 websockets/8.1
Authorization: HMAC256; access_token="fake_token"; mac="j_jmd9Fjy4pfI7mKIqNVXqZ7TmG6oEkMPF8ImdFniHQ"; h="User-Agent"
<think>嗯,用户现在问的是关于Qwen模型通过API接入的问题。之前他们询问了如何将ResNet与大模型如Qwen结合使用,现在转向了API接入。这可能意味着他们想在实际应用中部署这些模型,或者希望了解如何利用现有的API服务来集成Qwen,而不必自己处理复杂的模型部署。 首先,我需要明确用户的需求。他们可能是一个开发者或者企业用户,想要在自己的应用中集成Qwen的能力,比如自然语言处理、多模态生成等。使用API的好处是无需本地部署大模型,节省计算资源和维护成本。但用户可能对API的具体接入方式、支持的模型版本、费用、使用限制等方面有疑问。 接下来,我得整理Qwen模型API接入的主要信息。需要涵盖支持的模型类型,比如基础版、多模态版、数学增强版等,以及它们适用的场景。然后,接入步骤是关键,包括申请API Key、选择服务区域、调用方式(RESTful或SDK)、参数配置和结果解析。此外,用户可能关心费用问题,所以需要介绍计费方式,如按量付费或资源包,以及免费额度的情况。 还要考虑不同用户的使用场景。例如,个人开发者可能更关注免费额度和简单调用,而企业用户可能需要高并发支持和定制化服务。因此,在回答中需要区分这些情况,给出相应的建议。比如,个人用户可以直接使用官方API,而企业用户可能需要联系商务定制。 另外,用户可能遇到的常见问题需要提前解答,比如失败、响应超时、输入限制等,并提供解决方案。同时,最佳实践部分可以帮助用户优化调用,比如批处理请求、使用异步接口、缓存结果等,这些都能提升效率和降低成本。 需要注意的是,用户可能对技术细节不太熟悉,所以语言要尽量通俗易懂,避免过多专业术语,但关键的地方如API端点、参数名称等要保持准确。此外,提供代码示例(伪代码或真实示例)能帮助用户更快理解如何调用API,比如Python中使用requests库的示例。 最后,要提醒用户注意模型版本更新、数据隐私和合规性问题,确保他们在使用API时遵守相关规定。总结部分要简明扼要,强调API接入的优势和适用场景,让用户能快速判断是否符合他们的需求。</think>以下是关于Qwen模型通过API接入的详细介绍,分步骤说明关键要点: --- ### 一、API接入核心优势 1. **免本地部署** 无需下载数十GB的模型文件,降低硬件需求(显存/内存) 2. **按需付费** 支持按调用次数或token数量计费,成本可控 3. **多模态支持** 可调用Qwen系列不同能力的模型: | 模型类型 | 典型能力 | API端点示例 | |---|---|--| | 基础版 | 文本生成、对话 | `/v1/completions` | | VL多模态版 | 图文理解、描述生成 | `/v1/vision/completions` | | Math增强版 | 数学问题求解 | `/v1/math/completions` | --- ### 二、接入步骤详解 #### 步骤1:获取API密钥 1. 注册云服务账号(如阿里云、通义千问开放平台) 2. 创建API Key并记录: ```python # 典型API Key格式 API_KEY = "qwen-xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx" ``` #### 步骤2:选择服务区域 根据业务需求选择低延迟节点: ```mermaid graph LR A[服务区域] --> B(华北-北京) A --> C(华东-上海) A --> D(华南-深圳) ``` #### 步骤3:调用API(Python示例) ```python import requests url = "https://api.qwen.com/v1/completions" headers = { "Authorization": f"Bearer {API_KEY}", "Content-Type": "application/json" } data = { "model": "qwen-7b-chat", "messages": [ {"role": "user", "content": "解释量子计算的基本原理"} ], "temperature": 0.7 } response = requests.post(url, headers=headers, json=data) print(response.json()["choices"][0]["message"]["content"]) ``` --- ### 三、关键参数配置 | 参数 | 作用 | 推荐值 | |---|---|---| | `max_tokens` | 控制生成文本最大长度 | 根据场景设置(对话建议512) | | `temperature` | 控制输出随机性 | 0.2(严谨回答)~1.0(创意生成) | | `top_p` | 核采样概率阈值 | 0.9(平衡质量与多样性) | | `stream` | 启用流式输出 | True(长文本实时显示场景) | --- ### 四、费用与限制 1. **计费模式** - 按量付费:$0.002/千token(Qwen-7B基础版) - 资源包:预付折扣(适合稳定调用量场景) 2. **免费额度** 新用户通常赠送: - 100万token试用额度 - 有效期30天 3. **速率限制** | 账户类型 | 请求速率 | 并发连接 | |---|---|--| | 免费版 | 5次/秒 | 3 | | 企业版 | 可定制 | 可定制 | --- ### 五、典型应用场景 1. **客服机器人增强** ```python # 电商场景示例 prompt = f""" 用户问题:{user_input} 商品信息:{product_desc} 请用友好语气回答关于{product_name}的咨询""" ``` 2. **多模态内容生成** ```json { "model": "qwen-vl-7b", "messages": [ { "role": "user", "content": [ {"type": "text", "text": "描述这张图片的主要内容"}, {"type": "image_url", "image_url": "https://example.com/image.jpg"} ] } ] } ``` --- ### 六、注意事项 1. **输入长度限制** Qwen-7B最大支持: - 文本:32k tokens - 多模态输入:图像分辨率不超过4096x4096 2. **错误处理** | 错误码 | 含义 | 解决方案 | |---|---|--| | 429 | 请求超限 | 降低调用频率或升级套餐 | | 400 | 输入格式错误 | 检查JSON结构是否符合API文档 | | 503 | 服务不可用 | 重试并检查服务状态页 | 3. **数据安全** - 建议启用HTTPS加密传输 - 敏感数据建议先进行脱敏处理 --- ### 七、最佳实践建议 1. **性能优化** - 使用批处理请求(单次最多20条输入) - 开启`stream`模式减少首字节响应时间 2. **缓存策略** 对常见问题结果建立本地缓存: ```python from functools import lru_cache @lru_cache(maxsize=1000) def get_cached_response(prompt): return call_qwen_api(prompt) ``` 3. **监控指标** 建议监控: - 平均响应延迟(P99值) - Token使用效率(有效输出/总消耗) - 错误率(HTTP 5xx比例) --- 目前Qwen API已支持阿里云、AWS Marketplace等多个平台接入,企业用户可通过官方渠道申请定制化服务(如私有化部署、领域微调等)。个人开发者推荐直接使用通义千问开放平台提供的标准API服务。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值