荷塘 / Jev上游参考文档 ↗

荷塘 · Jev 接入指南

本文是供荷塘科研资源站使用的中文接入手册,依据 TeamoRouter Jev API 文档整理。Jev 由 TypeSafe AI 开发,本页不是官方文档。上游资料核对日期:2026-09-27。

文档地址:https://doc.jev.hetanghub.com/。

1. Jev 适合做什么

Jev 是结构化决策模型。提交一份上下文 state 和一组问题 questions,按问题名读取类型化答案;适合分类、打分、相关性判断、路由和上下文压缩决策。

Jev 不是聊天模型,不使用 OpenAI Chat Completions 协议,不能作为 Codex 或 Claude Code 的聊天模型。不要发送 messages、stream、temperature 或 max_tokens。

2. 在科研资源站试用

登录3020后进入「科研资源站 → Jev」,编辑旧工具调用及当前任务,点击「运行 Jev」。页面通过当前登录账户发起请求,不需要填写或粘贴 API Key。调用消耗当前账户额度,不能把演示理解为免费服务。

页面同时展示:

模型只给出判断,不会自动改写或删除输入。不同问题独立评估,相互之间不自动传递答案,因此两个判断可能存在分歧。实际自动化前应使用自己的数据验证,低置信度结果交人工复核。

点击「停止」仅停止页面等待;如果上游已经执行,仍可能发生计费。请求不自动重试。页面不把上下文保存在浏览器长期存储,但网关和上游仍按各自日志策略处理请求。

3. 两种调用入口

调用位置 Base URL 路径 身份凭据
3020本地 NewAPI 原生插件 http://127.0.0.1:3020 /typesafe/v1/systemone 当前用户自己的 NewAPI API Key
TeamoRouter 上游 https://api.teamorouter.cn /v1/systemone 自己的 TeamoRouter API Key

不要混用两个平台的密钥。荷塘页面使用专用登录态入口,API 客户端使用上表原生入口。3020已配置渠道「Teamo Router JEV」、模型 jev、分组 default;调用人仍需具备该分组和模型的访问权限及足够余额。

当前可用性(2026-09-27): 演示页面与 Jev 接口已上线。3020 尚未为 jev 配置价格,调用会在发送给上游前被拒绝;需管理员确认定价后启用。

4. 上下文压缩请求

先在环境变量中配置自己的 NEWAPI_API_KEY。不要写进前端、URL、仓库或截图。

curl --fail-with-body 'http://127.0.0.1:3020/typesafe/v1/systemone' \
  -H "Authorization: Bearer $NEWAPI_API_KEY" \
  -H 'Content-Type: application/json' \
  -d '{
    "model": "jev",
    "state": "Earlier: read package.json and found React 19. Dependency work is complete. Current task: test a pure string-formatting function.",
    "questions": {
      "still_useful": {
        "type": "noul",
        "instructions": "Is the old tool result still useful for the current task?"
      },
      "decision": {
        "type": "choice",
        "instructions": "How should context compaction handle the old step?",
        "criteria": {
          "keep": "Keep the complete original text",
          "truncate": "Keep a short reference and discard the full body",
          "drop": "Remove it completely"
        }
      }
    }
  }'

直接使用上游时,将请求地址换成 https://api.teamorouter.cn/v1/systemone,并使用 TEAMOROUTER_API_KEY。模型仍填写 jev,不能照搬官方 SDK 的默认模型 jev-latest。

5. 读取结果与三种问题类型

按问题名读取 answers.still_useful.noul 和 answers.decision.choice。不要解析聊天文本,也不要从答案推断实际计费金额。返回体中的 model 可能是上游实际模型标识。

type criteria 主要答案字段
noul 可选 true / false 描述 noul:0–1 的肯定概率
choice 选项名到描述的对象 choice、probabilities、confidence
score 2–10项有序评分标准数组 score、legend、probabilities、confidence;分数可为小数

以下仅为响应结构示例,不是真实测量结果:

{
  "model": "jev",
  "answers": {
    "still_useful": { "type": "noul", "noul": 0.18 },
    "decision": {
      "type": "choice",
      "choice": "drop",
      "probabilities": { "keep": 0.05, "truncate": 0.15, "drop": 0.8 },
      "confidence": 0.8
    }
  }
}

接入时检查数值类型、0–1边界及枚举值;字段缺失、格式错误或非成功 HTTP 响应都应按失败处理,不展示虚构的默认答案。

6. 官方 SDK 的上游用法

这两段示例直接调用 TeamoRouter,不会经过3020或荷塘账户计费。如果需要荷塘调用归属,使用上节 NewAPI 原生 HTTP 示例。

Python:安装 typesafe-sdk。

import os
from typesafe_sdk import Choice, TypeSafeClient

client = TypeSafeClient(
    api_key=os.environ["TEAMOROUTER_API_KEY"],
    base_url="https://api.teamorouter.cn",
    model="jev",
)
response = client.system_one(
    state="I was charged twice for the same order.",
    questions={
        "department": Choice(
            instructions="Which team should handle this message?",
            criteria={"billing": "Payments and refunds", "technical": "Integration issues"},
        )
    },
)
print(response.answers["department"])

TypeScript:安装 @typesafe-ai/sdk,仅在服务端运行。

import { choice, TypeSafeClient } from "@typesafe-ai/sdk";

const client = new TypeSafeClient({
  apiKey: process.env.TEAMOROUTER_API_KEY,
  baseURL: "https://api.teamorouter.cn",
});
const response = await client.systemOne({
  model: "jev",
  state: "I was charged twice for the same order.",
  questions: {
    department: choice("Which team should handle this message?", {
      billing: "Payments and refunds",
      technical: "Integration issues",
    }),
  },
});
console.log(response.answers.department);

7. 限制与计费

上游文档说明:state 加最长问题需在32K tokens内;state 加全部问题需在64K tokens内;choice 最多255项,score 为2–10档。中文等非英语输入需自行验证效果,英文通常效果更好。

本 demo 额外限制为16,000字符,以控制单次演示规模。这是页面输入限制,不等于 token 计数。输入 token 与字符并不一一对应。

上游活动价具有时效性,不在此固定承诺折扣。荷塘实际费用以当前模型定价和账户用量记录为准;不能将上游促销价当作荷塘费率。现有插件可能按完整输入上限预占额度,再按实际用量结算,因此余额不足可能在请求发出前被拒绝。

8. 常见问题

现象 检查项
401 / 登录失效 页面重新登录;API检查所属平台的 Key 及 Bearer 格式
403 / 无权访问 当前账户可用分组、模型权限及账户状态
400 / 参数错误 state、questions、type、criteria;不要发聊天参数
不支持模型 / 无可用渠道 模型使用 jev;管理员检查 TypeSafe 插件白名单、渠道模型与分组绑定
404 荷塘路径有 /typesafe 前缀,上游没有;不要混淆
429 遵循限速和重试提示;避免并发或无界重试。SDK可能自动重试,注意重复请求风险
余额不足 检查当前账户余额和预占额度;不要换用管理员或共享密钥绕过
超时或停止 不直接认定请求未计费;先核对用量记录再决定是否重试

9. 参考资料

本指南聚焦荷塘自用接入;保留来源链接,不复制第三方营销、免费调用或性能承诺。