Alphawrite SDK API 文档

版本 1.0.0 · 2026-09-23 · 零依赖 JS/TypeScript SDK,覆盖微信小程序、浏览器与 Node 18+

接口概览

说明
Base URLhttps://model.alphawrite.cn/v1
鉴权请求头 Authorization: Bearer <apiKey>
SDK 方法models() / chat() / responses() / messages()
底层协议OpenAI 兼容(chat、responses)+ Anthropic 兼容(messages)
流式四个方法都可流式,用回调逐片接收

可用模型

模型定位输入价输出价
qwen3.8-max旗舰,复杂推理¥12¥36
qwen3.7-max旗舰上一代¥12¥36
qwen3-max均衡¥2.5¥10
qwen3.5-plus通用¥0.8¥4.8
qwen3.8-flash快且便宜,适合大批量¥0.8¥2.7
qwen3-coder-plus代码¥4¥16
qwen3-vl-plus视觉,看图 / OCR¥1¥10

价格单位:元 / 百万 Token。实际可用模型以 models() 返回为准。

安装

npm install https://sdk.alphawrite.cn/download/alphawrite-sdk-1.0.0.tgz

也可以用单文件版,适合浏览器 <script> 或微信小程序:

<script src="https://sdk.alphawrite.cn/v1/alphawrite-sdk-1.0.0.global.js"></script>
<script>
  const { Alphawrite } = window.AlphawriteSDK
</script>

初始化

import { Alphawrite } from 'alphawrite-sdk'

const client = new Alphawrite({
  apiKey: process.env.ALPHAWRITE_KEY,
  baseURL: 'https://model.alphawrite.cn/v1',
  timeout: 120000,
  mode: 'server'
})

AlphawriteOptions

字段类型必填说明
apiKeystringAPI Key。小程序/浏览器请传短期 Token
baseURLstring默认 https://model.alphawrite.cn/v1
timeoutnumber单次请求超时(毫秒),默认 120000
mode'server' | 'client'默认 serverclient 会打印安全提醒
fetchtypeof fetch自定义请求实现,会覆盖自动检测
quietboolean关闭安全提醒,默认 false

models()

列出当前 Key 可用的模型。

const models = await client.models()
// [{ id: 'qwen3.8-flash', object: 'model', ownedBy: 'ali' }, ...]
返回类型说明
ModelInfo[]array每项含 idobject、可选 ownedBy

chat(options)

OpenAI 风格对话接口,对应 POST /v1/chat/completions

const r = await client.chat({
  model: 'qwen3.8-flash',
  messages: [
    { role: 'system', content: '你是一个税务助手' },
    { role: 'user', content: '帮我看看这家企业的风险点' }
  ],
  maxTokens: 512,
  temperature: 0.7
})
console.log(r.content, r.usage)

ChatOptions

字段类型必填说明
modelstring模型 ID
messagesChatMessage[]rolesystem / user / assistant
streamboolean设为 true 时必须提供 onDelta
onDelta(text: string) => void正文分片回调
onReasoning(text: string) => void思维链分片回调(不计入 content
maxTokensnumber最大输出 Token 数
temperaturenumber采样温度
topPnumber核采样
stopstring | string[]停止词

ChatResult

字段类型说明
idstring本次请求 ID
modelstring实际使用的模型
contentstring回答正文。流式时等于所有分片拼接结果
finishReasonstring | null结束原因,如 stoplength
usageUsage | null{ promptTokens, completionTokens, totalTokens }

responses(options)

OpenAI Responses 接口,对应 POST /v1/responses

注意:上游 qwen3-vl-plus 不支持该端点,会返回 Unsupported model。看图请用 chat()
const r = await client.responses({ model: 'qwen3.8-flash', input: '总结这段文字' })
console.log(r.content, r.status)
ResponsesOptions类型说明
modelstring模型 ID
inputstring输入文本
instructionsstring系统指令,可选
maxOutputTokensnumber最大输出 Token
stream / onDelta / onReasoningchat()
ResponsesResult类型说明
id / modelstring请求 ID 与模型
contentstring输出文本
statusstring | nullcompleted
usageUsage | nullToken 用量

messages(options)

Anthropic Messages 格式,对应 POST /v1/messages,供 Claude Code 这类客户端使用。

const r = await client.messages({
  model: 'qwen3.8-flash',
  system: '你是一个税务助手',
  messages: [{ role: 'user', content: '回答两个字:好的' }],
  maxTokens: 256
})
console.log(r.content)
坑:maxTokens 给小了(例如 32)会被思维链占满, content 会是空字符串而 stopReason 仍为正常值。建议给 200 以上。
MessagesOptions类型说明
modelstring模型 ID
messagesChatMessage[]消息列表
maxTokensnumber默认 1024
systemstring系统提示
stream / onDelta / onReasoningchat()
MessagesResult类型说明
id / modelstring请求 ID 与模型
contentstring回答正文
stopReasonstring | nullend_turn
inputTokens / outputTokensnumber | nullToken 用量

流式输出

四个方法都支持流式。SDK 内部按 \n\n 切分 SSE 事件,并处理跨分片的 UTF-8 半字符,接入方不需要自己解析。

let text = ''
const r = await client.chat({
  model: 'qwen3.8-flash',
  messages: [{ role: 'user', content: '从 1 数到 5' }],
  maxTokens: 256,
  stream: true,
  onDelta: (chunk) => { text += chunk },   // 正文
  onReasoning: (chunk) => {}              // 思维链,可选
})

// 保证一致:拼接结果 === 返回的 content
console.log(text === r.content) // true

微信小程序

小程序没有 EventSource,SDK 自动切换到 wx.request + enableChunked。使用方式完全一致,不需要改代码。

错误处理

所有错误都是 AlphawriteError

属性类型说明
messagestring服务端返回的可读信息
statusnumberHTTP 状态码;网络层失败为 0
codestring?业务错误码,如 InvalidParameter
bodystring?响应原文(已截断),便于排查
isAuthErrorboolean401 / 403
isRateLimitedboolean429
import { AlphawriteError } from 'alphawrite-sdk'

try {
  await client.chat({ model: 'qwen3.8-flash', messages: [{ role: 'user', content: 'hi' }] })
} catch (e) {
  if (e instanceof AlphawriteError && e.isAuthError) {
    // Key 无效或无权访问该分组
  }
}

运行环境

环境传输实现流式
Node.js 18+fetchReadableStream
浏览器fetchReadableStream
微信小程序wx.requestenableChunked + onChunkReceived

环境自动检测:存在 wx.request 时走小程序适配器,否则走 fetch。也可以用 fetch 参数自定义。

安全建议

长期 API Key 绝不能写进小程序或浏览器代码。 代码、请求头、运行时参数都能被提取,混淆只能增加成本、不能保密。
小程序 / 浏览器
      ↓ 短期 Token(你们的后端签发,可限额度、限模型、可撤销)
你们的业务后端
      ↓ 长期 API Key(存在服务端环境变量)
model.alphawrite.cn/v1

SDK 用 mode 区分两种场景:server(默认)不做提醒;client 会在初始化时提示不要在前端使用长期密钥。

已知限制