> ## Documentation Index
> Fetch the complete documentation index at: https://starforge.mintlify.site/llms.txt
> Use this file to discover all available pages before exploring further.

# 调用模型部署

> 对已推广的部署 revision 发起 OpenAI 兼容推理。

```bash theme={"theme":{"light":"github-light","dark":"github-dark-dimmed"}}
curl https://starforge.your-company.com/inference/dep-7c1e/v1/chat/completions \
  -H "Authorization: Bearer $DEPLOYMENT_TOKEN" \
  -H "Content-Type: application/json" \
  -d '{
    "model": "default",
    "messages": [{"role": "user", "content": "帮我概括这段合同条款。"}]
  }'
```

路径是稳定的，请求体是推理引擎认的那一套，响应也原样返回。StarForge 负责认证、路由到该部署当前
推广中的 revision、并记录这次调用——它不改写请求内容。

## 基础地址

```text theme={"theme":{"light":"github-light","dark":"github-dark-dimmed"}}
https://<你的部署域名>/inference/{deployment_id}/v1
```

任何 OpenAI 兼容客户端指向这里即可直接工作：

<CodeGroup>
  ```python Python theme={"theme":{"light":"github-light","dark":"github-dark-dimmed"}}
  from openai import OpenAI

  client = OpenAI(
      base_url="https://starforge.your-company.com/inference/dep-7c1e/v1",
      api_key=os.environ["DEPLOYMENT_TOKEN"],
  )

  response = client.chat.completions.create(
      model="default",
      messages=[{"role": "user", "content": "帮我概括这段合同条款。"}],
  )
  ```

  ```typescript TypeScript theme={"theme":{"light":"github-light","dark":"github-dark-dimmed"}}
  import OpenAI from "openai";

  const client = new OpenAI({
    baseURL: "https://starforge.your-company.com/inference/dep-7c1e/v1",
    apiKey: process.env.DEPLOYMENT_TOKEN,
  });

  const response = await client.chat.completions.create({
    model: "default",
    messages: [{ role: "user", content: "帮我概括这段合同条款。" }],
  });
  ```

  ```bash curl theme={"theme":{"light":"github-light","dark":"github-dark-dimmed"}}
  curl https://starforge.your-company.com/inference/dep-7c1e/v1/models \
    -H "Authorization: Bearer $DEPLOYMENT_TOKEN"
  ```
</CodeGroup>

`/v1` 下的一切都会被透传：`chat/completions`、`completions`、`embeddings`、`models`，
以及[推理引擎](/zh-Hans/guides/playground)暴露的其他路径。流式输出可用。

## 认证

只有 **deployment token** 能打开这条路径。登录 token 不行，ingest token 也不行。

```bash theme={"theme":{"light":"github-light","dark":"github-dark-dimmed"}}
export DEPLOYMENT_TOKEN=sfd_...
```

| 属性 | 行为                                       |
| -- | ---------------------------------------- |
| 范围 | 单个部署。`dep-7c1e` 的 token 会被 `dep-9a44` 拒绝 |
| 过期 | 没有。吊销之前一直有效                              |
| 身份 | 代表 token 本身，不代表某个人。创建者离职后它照常工作           |
| 吊销 | 在控制台的部署页面立即生效                            |

在控制台的部署页面创建和吊销 token。流量记录里每个 token 是分开标识的，
所以同一个部署内部也能分清哪一路调用方用了多少。

<Warning>
  deployment token 是一个不过期的 bearer 凭据。请放进密钥管理系统，不要放进代码仓库；
  并且每个调用方服务发一个，这样吊销其中一个不会波及其他。
</Warning>

## 由哪个模型作答

请求体里的 `model` 字段会传给推理引擎。除非引擎被配置成同时提供多个名字，否则填 `default`。

真正作答的是该部署**当前推广中的 revision**——模型来源与服务配置的那一份快照。推广新的 revision 会改变
这个 URL 返回的内容，而 URL 本身不变；回滚同理。调用方不受影响，也不需要知道。

## 错误

| 状态码   | 含义                              |
| ----- | ------------------------------- |
| `401` | deployment token 缺失、格式不对，或已被吊销  |
| `404` | 没有这个部署                          |
| `503` | 部署处于挂起状态，或没有可路由的 ready revision |

其余错误来自推理引擎，措辞也是它的。

## 确认成功

```bash theme={"theme":{"light":"github-light","dark":"github-dark-dimmed"}}
curl -s https://starforge.your-company.com/inference/dep-7c1e/v1/models \
  -H "Authorization: Bearer $DEPLOYMENT_TOKEN" | jq
```

能列出模型，说明 token 有效且有 revision 在服务。之后在控制台的部署页面可以看到请求量、延迟；
如果开了 [Reflow](/zh-Hans/guides/reflow)，还能看到缓冲区正在被真实流量填满，
等着你挖掘成下一版的训练数据。

## Playground 会话不是这个

Playground 会话是从某次 run 的产物启动的短命 vLLM 实例，给人聊天用，会自己过期。它没有稳定地址，
也没有 deployment token。要把应用接到模型上，你要的是部署；要判断某个 checkpoint 好不好，
你要的是 Playground。
