Skip to content
🚀 快速起步第 4 / 6 节

安装 Python SDK 并发出第一个请求:10 分钟跑通 ​

钥匙在上一课已经拿到手了。这节课把它用起来:完成 typesafe-sdk 安装,跑通官方示例——一条客户工单,一次请求同时问三个问题,拿到「分给哪个组、客户多沮丧、是否紧急」三个答案。全程 10 分钟。

学完你能做什么 ​

  • 在独立虚拟环境里完成 typesafe-sdk 安装(Python 3.10+)
  • 运行官方工单三问示例,看到 technical / 0.67 / 0.99 三行输出
  • 读懂返回 JSON 里的 choice、score、noul,以及 confidence、probabilities
  • 知道 SDK 自动读环境变量、自动处理限流重试,代码里不写密钥
  • 跑不通时知道下一步去哪课排查

你现在的困境 ​

  • Key 拿到了,但 pip 装完 import 就报错,分不清是 Python 版本还是环境的问题
  • 示例跑起来了,输出却是一坨 JSON,不知道哪个字段才是「答案」
  • 想先跑通再说,不想一上来就啃完整本 API 文档

什么时候用这一招 ​

当你需要:

  • 在自己电脑上用 Python 调 Jev,跑通第一个真实请求
  • 一个干净、不污染系统 Python 的安装方式

而且不想:

  • 把 SDK 装进系统 Python,跟别的项目打架
  • 一上来就手写 HTTP 请求、认证头和重试逻辑

🎒 开始前的准备 ​

  • 上一课的 Key 已存进环境变量 TYPESAFE_API_KEY
  • Python 3.10 或更高(官方 SDK 的版本要求;终端里 python3 --version 可查)
  • pip 已安装(官方文档链接了 pip 官方安装页,没装的话先去装)
  • 命令行用 Bash(macOS / Linux / Windows WSL——官方快速开始的命令按这个环境写)

核心思路 ​

装什么。 官方 Python SDK 的 pip 包名是 typesafe-sdk,import 名是 typesafe_sdk。它把「拼 HTTP 请求、带认证、压缩、限流重试」都包好了,你只写 state 和问题。

为什么用 venv。 官方快速开始的 pip 路线就是「venv + pip」:虚拟环境把 SDK 装在项目目录的 .venv 里,不碰系统 Python,删掉文件夹就是干净卸载。

第一个请求长什么样。 官方示例把一条客户工单作为 state,一次请求问三个问题:

问题题型返回字段
这工单该哪个组处理Choicechoice + 每个选项的 probabilities + confidence
客户听起来多沮丧Scorescore(0–2,可落在两档之间)+ confidence
是否紧急Noulnoul(0–1 的概率)

三题对同一份 state 并行评估,一次全部返回——这是 Jev 的核心工作方式,后面 并行提问 课会把它用到极致。

SDK 替你做了三件事。

事SDK 的做法
认证自动读环境变量 TYPESAFE_API_KEY
选模型model="jev-latest";不指定时 SDK 默认也是 jev-latest(当前指向 Jev 1.14)
限流重试遇 429 默认自动重试,等待时间逐次拉长,并遵循 retry-after

跑通的标准。 官方示例的预期输出是三行:

text
technical
0.67
0.99

官方同时提醒:这些是示例结果,数值可能随 Jev 版本变化。

跟我做 ​

第 1 步:建项目目录并确认环境变量 ​

为什么:官方快速开始从一个干净目录起步;Key 必须在环境变量里,SDK 才能自动读到。

bash
mkdir typesafe-quickstart
cd typesafe-quickstart
export TYPESAFE_API_KEY="your-api-key"

把 your-api-key 换成你的 Key(上一课存过的话,新开的终端里要重新 export 一次)。

你应该看到:三条命令都没有报错;echo $TYPESAFE_API_KEY 能打印出你的 Key。

第 2 步:完成 typesafe-sdk 安装(venv + pip) ​

为什么:venv 把 SDK 装进项目自己的 .venv 目录,不污染系统 Python——这是官方 pip 路线的标准做法。

bash
python3 -m venv .venv
.venv/bin/pip install typesafe-sdk

你应该看到:pip 列出要装的包并显示安装成功,包列表里有 typesafe-sdk。

  • 项目文件夹里出现了 .venv 目录

💡 习惯 uv 的同学

官方同样支持 uv 路线:uv init --bare 之后 uv add typesafe-sdk。uv、npm、curl 直连的完整走法在 安装备用方式 课。

第 3 步:写下官方示例 route_ticket.py ​

为什么:先原样跑通官方示例,再改成自己的内容——这样排错时永远有一个「已知正确」的基线。

用编辑器在项目目录新建 route_ticket.py,贴入官方快速开始的完整示例:

python
from typesafe_sdk import Choice, Noul, Score, TypeSafeClient

ticket = "Our API integration started returning 500 errors on every request about 20 minutes ago, and we can't process any customer orders until this is fixed."

with TypeSafeClient(model="jev-latest") as client:  # Reads TYPESAFE_API_KEY.
    response = client.system_one(
        state=ticket,
        questions={
            "department": Choice(
                instructions="Which team should handle this",
                criteria={
                    "billing": "Payment or subscription issues",
                    "technical": "Bugs or integration problems",
                    "sales": "Pricing or account questions",
                },
            ),
            "frustration": Score(
                instructions="How frustrated the customer appears",
                criteria=[
                    "Calm, just stating facts",
                    "Frustrated but civil",
                    "Very angry, strong language",
                ],
            ),
            "is_urgent": Noul(
                instructions="The message conveys urgency or time-sensitivity",
            ),
        },
    )

print(response.choices["department"].choice)
print(response.scores["frustration"].score)
print(response.nouls["is_urgent"].noul)

你应该看到:文件保存在 typesafe-quickstart/route_ticket.py。

第 4 步:运行它,拿到三个答案 ​

为什么:这一步是整课的目标——你的第一次真实 Jev 调用。

bash
.venv/bin/python route_ticket.py

用 .venv/bin/python 而不是系统的 python,确保用的是刚装好 SDK 的那个环境。

你应该看到:三行输出——

text
technical
0.67
0.99
  • 我看到了三行输出,第一行是 technical(工单分给技术组)

第 5 步:读懂完整返回 ​

为什么:print 只打了三个值;真实项目里你大概率要用 probabilities 和 confidence 写分支逻辑。

官方快速开始给出的完整 JSON 返回(示例值,会随版本变化):

官方示例的完整 JSON 返回
json
{
  "model": "jev-1.13.0",
  "answers": {
    "department": {
      "type": "choice",
      "choice": "technical",
      "confidence": 1.0,
      "probabilities": {
        "technical": 1.0,
        "billing": 0.0,
        "sales": 0.0
      }
    },
    "frustration": {
      "type": "score",
      "score": 0.67,
      "confidence": 0.5,
      "legend": {
        "0": "Calm, just stating facts",
        "1": "Frustrated but civil",
        "2": "Very angry, strong language"
      },
      "probabilities": {
        "0": 0.33,
        "1": 0.67,
        "2": 0.0
      }
    },
    "is_urgent": {
      "type": "noul",
      "noul": 0.99
    }
  },
  "usage": {
    "input_tokens": 428,
    "output_tokens": 73
  }
}

三个值得注意的地方:

字段在哪含义
confidenceChoice / Score 的答案里模型对这个答案的把握(Noul 答案没有这个字段)
probabilities每个答案里完整概率分布:department 是 100% 押 technical
usage顶层本次消耗:输入 428 token、输出 73 token(计费按输入算,输出免费)

示例 JSON 里的 "model": "jev-1.13.0" 是官方文档示例录制时的值;你现在跑 jev-latest,返回的 model 字段取决于当前模型版本。怎么用 confidence 写分支,Confidence 置信度 课细讲。

检查点 ✅ ​

  • typesafe-sdk 装在 .venv 里,不是系统 Python
  • 我的代码里没有出现 API Key(SDK 自动读环境变量)
  • 我跑出了三行输出,知道它们分别是 Choice / Score / Noul 的答案
  • 我知道答案按问题 ID 存在 response.choices / .scores / .nouls 里
  • 我知道示例数值可能随版本变化,不必纠结 0.67 还是 0.66

踩坑提醒 ​

❌ ModuleNotFoundError: No module named 'typesafe_sdk' ​

包没装进你当前用的那个 Python。最常见原因:用系统 python 跑了装在 .venv 里的项目。正确做法:按官方示例用 .venv/bin/python route_ticket.py 运行;习惯先激活环境的同学,source .venv/bin/activate 之后用 python 也行(通用 venv 用法,官方示例没走这步)。

❌ Python 版本低于 3.10 ​

官方 SDK 要求 Python 3.10 或更高。python3 --version 查一下;版本低了,先升级 Python,或用 3.10+ 的解释器重建 venv。

❌ 跑通了,但数值和 0.67 / 0.99 对不上 ​

不是坏了——官方明确说示例结果会随 Jev 版本变化。看结构对不对:第一行是 billing / technical / sales 之一,第二行是 0–2 的数,第三行是 0–1 的数。结构对,就是跑通了。

❌ 改了示例跑不通,不知道哪改坏了 ​

回到基线:先原样跑通官方示例,再一小步一小步改——先换 state 文本,再换问题,最后换题型,每改一步跑一次。真卡住了,起步排错 课按报错逐个讲。

进阶技巧(可选) ​

同步与异步两套客户端。 SDK 同时提供 TypeSafeClient(同步,本课用的)和 AsyncTypeSafeClient(异步),接口同名(system_one);高并发场景换异步版。

SDK 有可选附加组件。 安装时可以带 extras:http2 开 HTTP/2 支持,pil 发 Pillow 图像,zstd 在 Python 3.13 及更早版本上压缩请求体。图像相关玩法在 Box 与图像 课。

不想用 Python? JavaScript / TypeScript SDK 和 curl 直连 API 的走法,都在 安装备用方式 课。

本课小结 ​

✅ typesafe-sdk 安装完成:venv + pip,装在项目的 .venv 里,Python 3.10+。

✅ 第一个请求跑通:一条工单、三个问题、一次返回——technical / 0.67 / 0.99。

✅ 你已经会读返回:答案按问题 ID 存在 choices / scores / nouls 里,概率和 confidence 都在。

关键配置字段回顾:

字段推荐值说明
包名typesafe-sdkpip 安装名;import 名是 typesafe_sdk
modeljev-latest别名,当前指向 Jev 1.14;不指定时 SDK 默认也是它
state字符串 / JSON 对象 / 文本数组本课用了一条工单字符串
questions{ID: Choice/Score/Noul(...)}ID 自取;答案按 ID 从 choices / scores / nouls 取
环境变量TYPESAFE_API_KEYSDK 自动读取,代码里不写密钥

下一课预告 ​

Python 不是唯一路线:安装备用方式:uv、npm 与 curl 直连 API。

你会学到:

  • 用 uv 两三条命令装好同一个 SDK
  • Node.js 20+ 用 @typesafe-ai/sdk 跑通同一个示例
  • curl 7.76+ 直连 API,看原始 JSON 长什么样
  • 按你的项目情况选哪条路线
搞懂AI关于我们怎么写隐私说明

独立的第三方教程,与文中提到的任何产品及其公司没有隶属或合作关系;产品名称和商标归各自所有者。价格和政策以官方页面为准。