Repository navigation
CLI
sungaowei edited this page Oct 16, 2026
·
2 revisions
English Version | 简体中文
代码仓库内置了一个轻量级命令行客户端 typesafe,完全基于 Go 标准库构建。
它封装了与 SDK 相同的核心能力:统一的配置解析、指数退避重试、强类型错误以及全特性的多模态问答。
# 安装最新版本至 $(go env GOPATH)/bin
go install github.com/guchengod/typesafe-sdk-go/cmd/typesafe@latest或者从 GitHub Releases 直接下载对应操作系统的预编译二进制文件(支持 Darwin/macOS、Linux、Windows 的 amd64 与 arm64 架构)。
设置 API Key 即可使用:
export TYPESAFE_API_KEY="ts_live_..."
typesafe version| 命令 | 作用 |
|---|---|
typesafe ask |
针对特定 State 上下文发起命名问题评估(System One) |
typesafe models |
列出当前账号有权访问的模型列表 |
typesafe version |
打印 CLI 版本及当前 Go 运行时信息 |
typesafe help |
打印帮助信息与使用说明 |
所有命令均支持以下连接参数,无论参数放置在子命令名称之前或之后均可解析:
| 参数 | 说明 |
|---|---|
--api-key string |
API 密钥(默认取环境变量 $TYPESAFE_API_KEY) |
--base-url string |
API 根地址(默认取环境变量 $TYPESAFE_BASE_URL 或 https://api.typesafe.ai) |
--timeout duration |
单次网络请求超时时间(默认 10s) |
--retries int |
首次失败后的最大重试次数(默认 2) |
--verbose |
输出详细的网络请求与响应日志到 stderr |
typesafe --api-key "$KEY" models
typesafe models --api-key "$KEY" # 完全等价typesafe ask --state <state> [--model <name>] [<questions>] [--format json|text] [--images] [--long-context]--state 指定评估的问题所依据的内容,支持以下形式:
| 形式 | 示例 | 说明 |
|---|---|---|
| 内联 JSON | --state '{"body": "我被重复扣费了。"}' |
解析为 JSON 对象发送 |
| 普通字符串 | --state "我被重复扣费了。" |
作为纯文本发送 |
| 本地文件 | --state @ticket.json |
自动读取文件内容 |
| 标准输入 | --state - |
从标准输入流读取 |
# 快捷提问参数(可多次重复传入)
--noul 'billing=这是账单问题吗?'
--choice 'queue=billing:财务账单,technical:技术故障,other'
--score 'urgency=日常,紧急,严重'
--box 'target=定位图片中的目标物体'
# 或通过 JSON 字典整体传入(支持内联、@文件或从标准输入读取)
--questions '{"billing": {"type": "noul", "instructions": "这是账单问题吗?"}}'
--questions @questions.json
--questions --
--choice选项格式为label或label:描述,无描述的标签将传递为null。 -
--box用于指定目标物体的定位指令。 - 同一个问题名称在一次请求中只能被声明一次。
| 参数 | 说明 |
|---|---|
--images |
附带 x-typesafe-images: true 标头,开启多模态图像与 Box 目标定位支持 |
--long-context |
附带 x-typesafe-long-context: true 标头,开启超长上下文评估窗口 (262k) |
通过管道读取工单并配合 jq 进行过滤:
cat ticket.txt | typesafe ask --state - --noul 'spam=是否为垃圾营销?' | jq '.answers.spam.noul'评估多个问题并以易读的文本格式输出:
typesafe ask \
--state @ticket.json \
--model jev-preview \
--images \
--noul 'billing=这是账单问题吗?' \
--choice 'queue=billing:财务,technical:技术,other' \
--score 'urgency=普通,加急,特急' \
--box 'badge=工单截图中的VIP徽章' \
--format text文本格式输出示例:
model jev-1.13.0
usage Usage{input_tokens: 367, output_tokens: 69}
billing noul 0.9900
queue choice billing (confidence 1.00)
urgency score 0.53 of 2 (confidence 0.20)
badge box [0.12, 0.45, 0.38, 0.82] (confidence 0.95)
typesafe models # 输出格式化 JSON
typesafe models --format text # 输出表格表格输出示例:
NAME RELEASE DESCRIPTION
jev-latest 2026-09-10T18:38:01.391457+00:00 The latest iteration of TypeSafe's System One Model: Jev
jev-preview 2026-09-15T10:00:00.000000+00:00 Experimental multimodal and bounding box localization model
CLI 严格遵循 Unix 命令行规范,提供语义化退出码以适配 CI/CD 自动化流水线:
| 退出码 | 含义 |
|---|---|
0 |
执行成功 |
1 |
参数调用错误或输入不合法,未向网络发起任何请求 |
2 |
服务端返回非 2xx 失败状态码(如 400、401、413、429 等) |
3 |
网络连接失败、DNS 失败或超时,请求未成功抵达服务端 |
Shell 脚本示例:
if ! typesafe ask --state @ticket.json --noul 'spam=是否为垃圾邮件?' > answer.json; then
case $? in
2) echo "服务端拒绝了请求" >&2 ;;
3) echo "无法连接到 TypeSafe API" >&2 ;;
*) echo "命令行参数或输入有误" >&2 ;;
esac
exit 1
fi添加 --verbose 参数可将请求与响应细节输出至 stderr(敏感凭据如 Authorization 会自动脱敏为 ***):
typesafe ask --state @ticket.json --noul 'q=是否为垃圾邮件?' --verbose > answer.json- 指南
- Guides