API 測試
填入你自己的 API 金鑰,挑一種接入類型和模型,再把想問的那句話寫進去,下面五種語言的程式碼會同時跟著變。 複製出去就能跑;點「傳送請求」則由你的瀏覽器直連閘道送出——金鑰不經過文件站,回應也不經過。 服務位址不用填:文件站就掛在閘道自己身上,範例裡已經寫好本站的位址。
「傳送請求」是真實呼叫:會消耗你帳戶裡的 Token 並按實際用量計費。只複製程式碼不會產生費用。
金鑰只留在目前分頁,關掉就清除,不會傳給文件站。
curl https://llm.usmm.cn/v1/chat/completions \
-H "Content-Type: application/json" \
-H "Authorization: Bearer YOUR_API_KEY" \
-d '{
"model": "deepseek-v4.1-flash",
"messages": [{ "role": "user", "content": "用一句話解釋什麼是 API 閘道。" }]
}'curl https://llm.usmm.cn/v1/responses \
-H "Content-Type: application/json" \
-H "Authorization: Bearer YOUR_API_KEY" \
-d '{
"model": "deepseek-v4.1-flash",
"input": "用一句話解釋什麼是 API 閘道。"
}'curl https://llm.usmm.cn/v1/messages \
-H "Content-Type: application/json" \
-H "x-api-key: YOUR_API_KEY" \
-H "anthropic-version: 2023-06-01" \
-d '{
"model": "deepseek-v4.1-flash",
"max_tokens": 1024,
"messages": [{ "role": "user", "content": "用一句話解釋什麼是 API 閘道。" }]
}'curl https://llm.usmm.cn/v1beta/models/deepseek-v4.1-flash:generateContent \
-H "Content-Type: application/json" \
-H "x-goog-api-key: YOUR_API_KEY" \
-d '{
"contents": [{ "parts": [{ "text": "用一句話解釋什麼是 API 閘道。" }] }]
}'curl --no-buffer https://llm.usmm.cn/v1/chat/completions \
-H "Content-Type: application/json" \
-H "Authorization: Bearer YOUR_API_KEY" \
-d '{
"model": "deepseek-v4.1-flash",
"messages": [{ "role": "user", "content": "用一句話解釋什麼是 API 閘道。" }],
"stream": true
}'curl --no-buffer https://llm.usmm.cn/v1/responses \
-H "Content-Type: application/json" \
-H "Authorization: Bearer YOUR_API_KEY" \
-d '{
"model": "deepseek-v4.1-flash",
"input": "用一句話解釋什麼是 API 閘道。",
"stream": true
}'curl --no-buffer https://llm.usmm.cn/v1/messages \
-H "Content-Type: application/json" \
-H "x-api-key: YOUR_API_KEY" \
-H "anthropic-version: 2023-06-01" \
-d '{
"model": "deepseek-v4.1-flash",
"max_tokens": 1024,
"messages": [{ "role": "user", "content": "用一句話解釋什麼是 API 閘道。" }],
"stream": true
}'curl --no-buffer https://llm.usmm.cn/v1beta/models/deepseek-v4.1-flash:streamGenerateContent?alt=sse \
-H "Content-Type: application/json" \
-H "x-goog-api-key: YOUR_API_KEY" \
-d '{
"contents": [{ "parts": [{ "text": "用一句話解釋什麼是 API 閘道。" }] }]
}' import requests
response = requests.post(
"https://llm.usmm.cn/v1/chat/completions",
headers={
"Content-Type": "application/json",
"Authorization": "Bearer YOUR_API_KEY",
},
json={
"model": "deepseek-v4.1-flash",
"messages": [{ "role": "user", "content": "用一句話解釋什麼是 API 閘道。" }]
},
timeout=60,
)
response.raise_for_status()
print(response.json())import requests
response = requests.post(
"https://llm.usmm.cn/v1/responses",
headers={
"Content-Type": "application/json",
"Authorization": "Bearer YOUR_API_KEY",
},
json={
"model": "deepseek-v4.1-flash",
"input": "用一句話解釋什麼是 API 閘道。"
},
timeout=60,
)
response.raise_for_status()
print(response.json())import requests
response = requests.post(
"https://llm.usmm.cn/v1/messages",
headers={
"Content-Type": "application/json",
"x-api-key": "YOUR_API_KEY",
"anthropic-version": "2023-06-01",
},
json={
"model": "deepseek-v4.1-flash",
"max_tokens": 1024,
"messages": [{ "role": "user", "content": "用一句話解釋什麼是 API 閘道。" }]
},
timeout=60,
)
response.raise_for_status()
print(response.json())import requests
response = requests.post(
"https://llm.usmm.cn/v1beta/models/deepseek-v4.1-flash:generateContent",
headers={
"Content-Type": "application/json",
"x-goog-api-key": "YOUR_API_KEY",
},
json={
"contents": [{ "parts": [{ "text": "用一句話解釋什麼是 API 閘道。" }] }]
},
timeout=60,
)
response.raise_for_status()
print(response.json())import requests
with requests.post(
"https://llm.usmm.cn/v1/chat/completions",
headers={
"Content-Type": "application/json",
"Authorization": "Bearer YOUR_API_KEY",
},
json={
"model": "deepseek-v4.1-flash",
"messages": [{ "role": "user", "content": "用一句話解釋什麼是 API 閘道。" }],
"stream": True
},
stream=True,
timeout=60,
) as response:
response.raise_for_status()
for line in response.iter_lines():
if line:
print(line.decode())import requests
with requests.post(
"https://llm.usmm.cn/v1/responses",
headers={
"Content-Type": "application/json",
"Authorization": "Bearer YOUR_API_KEY",
},
json={
"model": "deepseek-v4.1-flash",
"input": "用一句話解釋什麼是 API 閘道。",
"stream": True
},
stream=True,
timeout=60,
) as response:
response.raise_for_status()
for line in response.iter_lines():
if line:
print(line.decode())import requests
with requests.post(
"https://llm.usmm.cn/v1/messages",
headers={
"Content-Type": "application/json",
"x-api-key": "YOUR_API_KEY",
"anthropic-version": "2023-06-01",
},
json={
"model": "deepseek-v4.1-flash",
"max_tokens": 1024,
"messages": [{ "role": "user", "content": "用一句話解釋什麼是 API 閘道。" }],
"stream": True
},
stream=True,
timeout=60,
) as response:
response.raise_for_status()
for line in response.iter_lines():
if line:
print(line.decode())import requests
with requests.post(
"https://llm.usmm.cn/v1beta/models/deepseek-v4.1-flash:streamGenerateContent?alt=sse",
headers={
"Content-Type": "application/json",
"x-goog-api-key": "YOUR_API_KEY",
},
json={
"contents": [{ "parts": [{ "text": "用一句話解釋什麼是 API 閘道。" }] }]
},
stream=True,
timeout=60,
) as response:
response.raise_for_status()
for line in response.iter_lines():
if line:
print(line.decode()) const response = await fetch("https://llm.usmm.cn/v1/chat/completions", {
method: "POST",
headers: {
"Content-Type": "application/json",
"Authorization": "Bearer YOUR_API_KEY",
},
body: JSON.stringify({
"model": "deepseek-v4.1-flash",
"messages": [{ "role": "user", "content": "用一句話解釋什麼是 API 閘道。" }]
}),
});
console.log(await response.json());const response = await fetch("https://llm.usmm.cn/v1/responses", {
method: "POST",
headers: {
"Content-Type": "application/json",
"Authorization": "Bearer YOUR_API_KEY",
},
body: JSON.stringify({
"model": "deepseek-v4.1-flash",
"input": "用一句話解釋什麼是 API 閘道。"
}),
});
console.log(await response.json());const response = await fetch("https://llm.usmm.cn/v1/messages", {
method: "POST",
headers: {
"Content-Type": "application/json",
"x-api-key": "YOUR_API_KEY",
"anthropic-version": "2023-06-01",
},
body: JSON.stringify({
"model": "deepseek-v4.1-flash",
"max_tokens": 1024,
"messages": [{ "role": "user", "content": "用一句話解釋什麼是 API 閘道。" }]
}),
});
console.log(await response.json());const response = await fetch("https://llm.usmm.cn/v1beta/models/deepseek-v4.1-flash:generateContent", {
method: "POST",
headers: {
"Content-Type": "application/json",
"x-goog-api-key": "YOUR_API_KEY",
},
body: JSON.stringify({
"contents": [{ "parts": [{ "text": "用一句話解釋什麼是 API 閘道。" }] }]
}),
});
console.log(await response.json());const response = await fetch("https://llm.usmm.cn/v1/chat/completions", {
method: "POST",
headers: {
"Content-Type": "application/json",
"Authorization": "Bearer YOUR_API_KEY",
},
body: JSON.stringify({
"model": "deepseek-v4.1-flash",
"messages": [{ "role": "user", "content": "用一句話解釋什麼是 API 閘道。" }],
"stream": true
}),
});
const decoder = new TextDecoder();
for await (const chunk of response.body) {
process.stdout.write(decoder.decode(chunk, { stream: true }));
}const response = await fetch("https://llm.usmm.cn/v1/responses", {
method: "POST",
headers: {
"Content-Type": "application/json",
"Authorization": "Bearer YOUR_API_KEY",
},
body: JSON.stringify({
"model": "deepseek-v4.1-flash",
"input": "用一句話解釋什麼是 API 閘道。",
"stream": true
}),
});
const decoder = new TextDecoder();
for await (const chunk of response.body) {
process.stdout.write(decoder.decode(chunk, { stream: true }));
}const response = await fetch("https://llm.usmm.cn/v1/messages", {
method: "POST",
headers: {
"Content-Type": "application/json",
"x-api-key": "YOUR_API_KEY",
"anthropic-version": "2023-06-01",
},
body: JSON.stringify({
"model": "deepseek-v4.1-flash",
"max_tokens": 1024,
"messages": [{ "role": "user", "content": "用一句話解釋什麼是 API 閘道。" }],
"stream": true
}),
});
const decoder = new TextDecoder();
for await (const chunk of response.body) {
process.stdout.write(decoder.decode(chunk, { stream: true }));
}const response = await fetch("https://llm.usmm.cn/v1beta/models/deepseek-v4.1-flash:streamGenerateContent?alt=sse", {
method: "POST",
headers: {
"Content-Type": "application/json",
"x-goog-api-key": "YOUR_API_KEY",
},
body: JSON.stringify({
"contents": [{ "parts": [{ "text": "用一句話解釋什麼是 API 閘道。" }] }]
}),
});
const decoder = new TextDecoder();
for await (const chunk of response.body) {
process.stdout.write(decoder.decode(chunk, { stream: true }));
} package main
import (
"fmt"
"io"
"net/http"
"strings"
)
func main() {
payload := `{
"model": "deepseek-v4.1-flash",
"messages": [{ "role": "user", "content": "用一句話解釋什麼是 API 閘道。" }]
}`
req, err := http.NewRequest(http.MethodPost, "https://llm.usmm.cn/v1/chat/completions", strings.NewReader(payload))
if err != nil {
panic(err)
}
req.Header.Set("Content-Type", "application/json")
req.Header.Set("Authorization", "Bearer YOUR_API_KEY")
resp, err := http.DefaultClient.Do(req)
if err != nil {
panic(err)
}
defer resp.Body.Close()
out, err := io.ReadAll(resp.Body)
if err != nil {
panic(err)
}
fmt.Println(string(out))
}package main
import (
"fmt"
"io"
"net/http"
"strings"
)
func main() {
payload := `{
"model": "deepseek-v4.1-flash",
"input": "用一句話解釋什麼是 API 閘道。"
}`
req, err := http.NewRequest(http.MethodPost, "https://llm.usmm.cn/v1/responses", strings.NewReader(payload))
if err != nil {
panic(err)
}
req.Header.Set("Content-Type", "application/json")
req.Header.Set("Authorization", "Bearer YOUR_API_KEY")
resp, err := http.DefaultClient.Do(req)
if err != nil {
panic(err)
}
defer resp.Body.Close()
out, err := io.ReadAll(resp.Body)
if err != nil {
panic(err)
}
fmt.Println(string(out))
}package main
import (
"fmt"
"io"
"net/http"
"strings"
)
func main() {
payload := `{
"model": "deepseek-v4.1-flash",
"max_tokens": 1024,
"messages": [{ "role": "user", "content": "用一句話解釋什麼是 API 閘道。" }]
}`
req, err := http.NewRequest(http.MethodPost, "https://llm.usmm.cn/v1/messages", strings.NewReader(payload))
if err != nil {
panic(err)
}
req.Header.Set("Content-Type", "application/json")
req.Header.Set("x-api-key", "YOUR_API_KEY")
req.Header.Set("anthropic-version", "2023-06-01")
resp, err := http.DefaultClient.Do(req)
if err != nil {
panic(err)
}
defer resp.Body.Close()
out, err := io.ReadAll(resp.Body)
if err != nil {
panic(err)
}
fmt.Println(string(out))
}package main
import (
"fmt"
"io"
"net/http"
"strings"
)
func main() {
payload := `{
"contents": [{ "parts": [{ "text": "用一句話解釋什麼是 API 閘道。" }] }]
}`
req, err := http.NewRequest(http.MethodPost, "https://llm.usmm.cn/v1beta/models/deepseek-v4.1-flash:generateContent", strings.NewReader(payload))
if err != nil {
panic(err)
}
req.Header.Set("Content-Type", "application/json")
req.Header.Set("x-goog-api-key", "YOUR_API_KEY")
resp, err := http.DefaultClient.Do(req)
if err != nil {
panic(err)
}
defer resp.Body.Close()
out, err := io.ReadAll(resp.Body)
if err != nil {
panic(err)
}
fmt.Println(string(out))
}package main
import (
"bufio"
"fmt"
"net/http"
"strings"
)
func main() {
payload := `{
"model": "deepseek-v4.1-flash",
"messages": [{ "role": "user", "content": "用一句話解釋什麼是 API 閘道。" }],
"stream": true
}`
req, err := http.NewRequest(http.MethodPost, "https://llm.usmm.cn/v1/chat/completions", strings.NewReader(payload))
if err != nil {
panic(err)
}
req.Header.Set("Content-Type", "application/json")
req.Header.Set("Authorization", "Bearer YOUR_API_KEY")
resp, err := http.DefaultClient.Do(req)
if err != nil {
panic(err)
}
defer resp.Body.Close()
scanner := bufio.NewScanner(resp.Body)
for scanner.Scan() {
fmt.Println(scanner.Text())
}
}package main
import (
"bufio"
"fmt"
"net/http"
"strings"
)
func main() {
payload := `{
"model": "deepseek-v4.1-flash",
"input": "用一句話解釋什麼是 API 閘道。",
"stream": true
}`
req, err := http.NewRequest(http.MethodPost, "https://llm.usmm.cn/v1/responses", strings.NewReader(payload))
if err != nil {
panic(err)
}
req.Header.Set("Content-Type", "application/json")
req.Header.Set("Authorization", "Bearer YOUR_API_KEY")
resp, err := http.DefaultClient.Do(req)
if err != nil {
panic(err)
}
defer resp.Body.Close()
scanner := bufio.NewScanner(resp.Body)
for scanner.Scan() {
fmt.Println(scanner.Text())
}
}package main
import (
"bufio"
"fmt"
"net/http"
"strings"
)
func main() {
payload := `{
"model": "deepseek-v4.1-flash",
"max_tokens": 1024,
"messages": [{ "role": "user", "content": "用一句話解釋什麼是 API 閘道。" }],
"stream": true
}`
req, err := http.NewRequest(http.MethodPost, "https://llm.usmm.cn/v1/messages", strings.NewReader(payload))
if err != nil {
panic(err)
}
req.Header.Set("Content-Type", "application/json")
req.Header.Set("x-api-key", "YOUR_API_KEY")
req.Header.Set("anthropic-version", "2023-06-01")
resp, err := http.DefaultClient.Do(req)
if err != nil {
panic(err)
}
defer resp.Body.Close()
scanner := bufio.NewScanner(resp.Body)
for scanner.Scan() {
fmt.Println(scanner.Text())
}
}package main
import (
"bufio"
"fmt"
"net/http"
"strings"
)
func main() {
payload := `{
"contents": [{ "parts": [{ "text": "用一句話解釋什麼是 API 閘道。" }] }]
}`
req, err := http.NewRequest(http.MethodPost, "https://llm.usmm.cn/v1beta/models/deepseek-v4.1-flash:streamGenerateContent?alt=sse", strings.NewReader(payload))
if err != nil {
panic(err)
}
req.Header.Set("Content-Type", "application/json")
req.Header.Set("x-goog-api-key", "YOUR_API_KEY")
resp, err := http.DefaultClient.Do(req)
if err != nil {
panic(err)
}
defer resp.Body.Close()
scanner := bufio.NewScanner(resp.Body)
for scanner.Scan() {
fmt.Println(scanner.Text())
}
} import java.net.URI;
import java.net.http.HttpClient;
import java.net.http.HttpRequest;
import java.net.http.HttpResponse;
var payload = """
{
"model": "deepseek-v4.1-flash",
"messages": [{ "role": "user", "content": "用一句話解釋什麼是 API 閘道。" }]
}
""";
var request = HttpRequest.newBuilder()
.uri(URI.create("https://llm.usmm.cn/v1/chat/completions"))
.header("Content-Type", "application/json")
.header("Authorization", "Bearer YOUR_API_KEY")
.POST(HttpRequest.BodyPublishers.ofString(payload))
.build();
var response = HttpClient.newHttpClient()
.send(request, HttpResponse.BodyHandlers.ofString());
System.out.println(response.body());import java.net.URI;
import java.net.http.HttpClient;
import java.net.http.HttpRequest;
import java.net.http.HttpResponse;
var payload = """
{
"model": "deepseek-v4.1-flash",
"input": "用一句話解釋什麼是 API 閘道。"
}
""";
var request = HttpRequest.newBuilder()
.uri(URI.create("https://llm.usmm.cn/v1/responses"))
.header("Content-Type", "application/json")
.header("Authorization", "Bearer YOUR_API_KEY")
.POST(HttpRequest.BodyPublishers.ofString(payload))
.build();
var response = HttpClient.newHttpClient()
.send(request, HttpResponse.BodyHandlers.ofString());
System.out.println(response.body());import java.net.URI;
import java.net.http.HttpClient;
import java.net.http.HttpRequest;
import java.net.http.HttpResponse;
var payload = """
{
"model": "deepseek-v4.1-flash",
"max_tokens": 1024,
"messages": [{ "role": "user", "content": "用一句話解釋什麼是 API 閘道。" }]
}
""";
var request = HttpRequest.newBuilder()
.uri(URI.create("https://llm.usmm.cn/v1/messages"))
.header("Content-Type", "application/json")
.header("x-api-key", "YOUR_API_KEY")
.header("anthropic-version", "2023-06-01")
.POST(HttpRequest.BodyPublishers.ofString(payload))
.build();
var response = HttpClient.newHttpClient()
.send(request, HttpResponse.BodyHandlers.ofString());
System.out.println(response.body());import java.net.URI;
import java.net.http.HttpClient;
import java.net.http.HttpRequest;
import java.net.http.HttpResponse;
var payload = """
{
"contents": [{ "parts": [{ "text": "用一句話解釋什麼是 API 閘道。" }] }]
}
""";
var request = HttpRequest.newBuilder()
.uri(URI.create("https://llm.usmm.cn/v1beta/models/deepseek-v4.1-flash:generateContent"))
.header("Content-Type", "application/json")
.header("x-goog-api-key", "YOUR_API_KEY")
.POST(HttpRequest.BodyPublishers.ofString(payload))
.build();
var response = HttpClient.newHttpClient()
.send(request, HttpResponse.BodyHandlers.ofString());
System.out.println(response.body());import java.net.URI;
import java.net.http.HttpClient;
import java.net.http.HttpRequest;
import java.net.http.HttpResponse;
var payload = """
{
"model": "deepseek-v4.1-flash",
"messages": [{ "role": "user", "content": "用一句話解釋什麼是 API 閘道。" }],
"stream": true
}
""";
var request = HttpRequest.newBuilder()
.uri(URI.create("https://llm.usmm.cn/v1/chat/completions"))
.header("Content-Type", "application/json")
.header("Authorization", "Bearer YOUR_API_KEY")
.POST(HttpRequest.BodyPublishers.ofString(payload))
.build();
HttpClient.newHttpClient()
.send(request, HttpResponse.BodyHandlers.ofLines())
.body()
.forEach(System.out::println);import java.net.URI;
import java.net.http.HttpClient;
import java.net.http.HttpRequest;
import java.net.http.HttpResponse;
var payload = """
{
"model": "deepseek-v4.1-flash",
"input": "用一句話解釋什麼是 API 閘道。",
"stream": true
}
""";
var request = HttpRequest.newBuilder()
.uri(URI.create("https://llm.usmm.cn/v1/responses"))
.header("Content-Type", "application/json")
.header("Authorization", "Bearer YOUR_API_KEY")
.POST(HttpRequest.BodyPublishers.ofString(payload))
.build();
HttpClient.newHttpClient()
.send(request, HttpResponse.BodyHandlers.ofLines())
.body()
.forEach(System.out::println);import java.net.URI;
import java.net.http.HttpClient;
import java.net.http.HttpRequest;
import java.net.http.HttpResponse;
var payload = """
{
"model": "deepseek-v4.1-flash",
"max_tokens": 1024,
"messages": [{ "role": "user", "content": "用一句話解釋什麼是 API 閘道。" }],
"stream": true
}
""";
var request = HttpRequest.newBuilder()
.uri(URI.create("https://llm.usmm.cn/v1/messages"))
.header("Content-Type", "application/json")
.header("x-api-key", "YOUR_API_KEY")
.header("anthropic-version", "2023-06-01")
.POST(HttpRequest.BodyPublishers.ofString(payload))
.build();
HttpClient.newHttpClient()
.send(request, HttpResponse.BodyHandlers.ofLines())
.body()
.forEach(System.out::println);import java.net.URI;
import java.net.http.HttpClient;
import java.net.http.HttpRequest;
import java.net.http.HttpResponse;
var payload = """
{
"contents": [{ "parts": [{ "text": "用一句話解釋什麼是 API 閘道。" }] }]
}
""";
var request = HttpRequest.newBuilder()
.uri(URI.create("https://llm.usmm.cn/v1beta/models/deepseek-v4.1-flash:streamGenerateContent?alt=sse"))
.header("Content-Type", "application/json")
.header("x-goog-api-key", "YOUR_API_KEY")
.POST(HttpRequest.BodyPublishers.ofString(payload))
.build();
HttpClient.newHttpClient()
.send(request, HttpResponse.BodyHandlers.ofLines())
.body()
.forEach(System.out::println); 回應
還沒有傳送過請求。上面的程式碼可以直接複製執行,也可以在這裡送出去看真實回傳。
完整介面文件
Section titled “完整介面文件”上面四種接入類型涵蓋了閘道所講的幾種協定方言。差異集中在兩處:
- 認證標頭。Chat 與 Responses 用
Authorization,Claude 用x-api-key,Gemini 用x-goog-api-key。跨方言呼叫時最常踩的就是這個坑。 - 串流怎麼表達。前三種在請求主體裡寫
"stream": true,Gemini 原生格式改的是 URL 上的 action(:streamGenerateContent)。
閘道實際提供的介面不只這四個。下面是完整清單,含參數說明、請求主體結構與回應範例,同樣可以就地試呼叫。 介面的文字說明與使用 API 與遊樂場是同一套內容,那一頁更適合通讀。
正在載入介面文件…