OpenAI
GPT-4o-2024-11-20
openai/gpt-4o-2024-11-20/v1/chat/completions/v1/messages/v1/responses/v1beta/models/*/v1/models/*GPT 4o是OpenAI智能水平最高、通用性最强的旗舰模型。它支持文本与图像输入,并生成文本输出(包括结构化结果),在大多数任务中表现出色,是目前除o系列专用模型外能力最强的通用模型。
- Input / output modalities
- 文本 · 图像 · 视频 to 文本
- Reference input / output price
- Input¥35Output¥105per 1M tokens
- Context window
- 128K
- Added to catalog
- Apr 8, 2025
Providers and pricing
| Provider | Input /M | Output /M | Cached /M | Context | Max output | Details |
|---|---|---|---|---|---|---|
| OpenRouter | ¥35 | ¥105 | ¥8.75 | 128K | 16.4K | |
| Azure | ¥35 | ¥140 | ¥17.5 | 128K | 16.4K |
GPT-4o-2024-11-20 code examples and API guide
Modelmesh normalizes requests and responses across service providers behind one consistent API.
Modelmesh provides an OpenAI-compatible Completion API for more than 300 models and service providers. Call it directly, through the OpenAI SDK, or with supported third-party SDKs.
Modelmesh-specific request headers in these examples are optional. When supplied, your application can appear on the Modelmesh rankings.
Supported endpointsSelect an endpoint to switch the example below.
/v1/chat/completions
from openai import OpenAI
API_KEY = "$SSY_API_KEY"
client = OpenAI(
base_url="https://router.shengsuanyun.com/api/v1",
api_key=API_KEY,
)
try:
completion = client.chat.completions.create(
model="openai/gpt-4o-2024-11-20",
messages=[{"role": "user", "content": "Which number is larger, 9.11 or 9.8?"}],
temperature=0.6,
top_p=0.7,
stream=True,
)
response_text = ""
for chunk in completion:
if chunk.choices and chunk.choices[0].delta.content is not None:
content = chunk.choices[0].delta.content
print(content, end="", flush=True)
response_text += content
except Exception as error:
print(f"Request failed: {error}")
import OpenAI from "openai";
const apiKey = "$SSY_API_KEY";
const openai = new OpenAI({
baseURL: "https://router.shengsuanyun.com/api/v1",
apiKey,
});
async function main() {
try {
const stream = await openai.chat.completions.create({
model: "openai/gpt-4o-2024-11-20",
messages: [{ role: "user", content: "Which number is larger, 9.11 or 9.8?" }],
temperature: 0.6,
top_p: 0.7,
stream: true,
});
for await (const chunk of stream) {
const content = chunk.choices[0]?.delta?.content;
if (content) process.stdout.write(content);
}
console.log("\n[chat complete]");
} catch (error) {
const message = error instanceof Error ? error.message : String(error);
console.error("Request failed:", message);
process.exitCode = 1;
}
}
main();
#!/usr/bin/env bash
set -euo pipefail
API_KEY="$SSY_API_KEY"
BASE_URL="https://router.shengsuanyun.com/api/v1/chat/completions"
MODEL='openai/gpt-4o-2024-11-20'
curl --fail-with-body --silent --show-error --no-buffer -X POST "${BASE_URL}" \
-H "Content-Type: application/json" \
-H "Authorization: Bearer ${API_KEY}" \
-d '{
"model": "'"${MODEL}"'",
"messages": [{"role": "user", "content": "Which number is larger, 9.11 or 9.8?"}],
"temperature": 0.6,
"top_p": 0.7,
"stream": true
}'
printf '\n[chat complete]\n'
import requests
API_KEY = "$SSY_API_KEY"
url = "https://router.shengsuanyun.com/api/v1/messages"
headers = {
"Authorization": f"Bearer {API_KEY}",
"Content-Type": "application/json",
}
payload = {
"model": "openai/gpt-4o-2024-11-20",
"messages": [{"role": "user", "content": "Hello"}],
}
response = requests.post(url, headers=headers, json=payload, timeout=30)
response.raise_for_status()
print(response.json())
const apiKey = "$SSY_API_KEY";
async function main() {
const response = await fetch("https://router.shengsuanyun.com/api/v1/messages", {
method: "POST",
headers: {
Authorization: "Bearer " + apiKey,
"Content-Type": "application/json",
},
body: JSON.stringify({
model: "openai/gpt-4o-2024-11-20",
messages: [{ role: "user", content: "Hello" }],
}),
});
if (!response.ok) {
const text = await response.text();
throw new Error(`Request failed with status ${response.status}: ${text}`);
}
console.log(await response.json());
}
main().catch((error) => {
const message = error instanceof Error ? error.message : String(error);
console.error("Request failed:", message);
});
#!/usr/bin/env bash
set -euo pipefail
API_KEY="$SSY_API_KEY"
BASE_URL="https://router.shengsuanyun.com/api/v1/messages"
MODEL='openai/gpt-4o-2024-11-20'
curl --fail-with-body --silent --show-error -X POST "${BASE_URL}" \
-H "Content-Type: application/json" \
-H "Authorization: Bearer ${API_KEY}" \
-d '{
"model": "'"${MODEL}"'",
"messages": [{"role": "user", "content": "Hello"}]
}'
from openai import OpenAI
API_KEY = "$SSY_API_KEY"
client = OpenAI(
base_url="https://router.shengsuanyun.com/api/v1",
api_key=API_KEY,
)
messages = [
{"role": "user", "content": "Describe Romance of the Three Kingdoms in 100 words."},
]
response = client.responses.create(
model="openai/gpt-4o-2024-11-20",
input=messages,
)
print(response.output_text)
import OpenAI from "openai";
const apiKey = "$SSY_API_KEY";
const client = new OpenAI({
baseURL: "https://router.shengsuanyun.com/api/v1",
apiKey,
});
async function main() {
const messages = [
{ role: "user", content: "Describe Romance of the Three Kingdoms in 100 words." },
];
const response = await client.responses.create({
model: "openai/gpt-4o-2024-11-20",
input: messages,
});
console.log(response.output_text);
}
main().catch((error) => {
const message = error instanceof Error ? error.message : String(error);
console.error("Request failed:", message);
});
#!/usr/bin/env bash
set -euo pipefail
API_KEY="$SSY_API_KEY"
MODEL='openai/gpt-4o-2024-11-20'
BASE_URL="https://router.shengsuanyun.com/api/v1/responses"
curl --fail-with-body --silent --show-error -X POST "${BASE_URL}" \
-H "Content-Type: application/json" \
-H "Authorization: Bearer ${API_KEY}" \
-d '{
"model": "'"${MODEL}"'",
"input": [
{
"role": "user",
"content": "Describe Romance of the Three Kingdoms in 100 words."
}
]
}' | python3 -c 'import json,sys
data=json.load(sys.stdin)
text=data.get("output_text") or "".join(
part.get("text", "")
for item in data.get("output", [])
for part in item.get("content", [])
if part.get("type") == "output_text"
)
print(text)'
import requests
API_KEY = "$SSY_API_KEY"
MODEL = "openai/gpt-4o-2024-11-20"
URL = f"https://router.shengsuanyun.com/api/v1beta/models/{MODEL}:generateContent"
messages = [
{"role": "user", "content": "Which number is larger, 9.11 or 9.8?"}
]
payload = {
"contents": [
{
"role": message["role"],
"parts": [{"text": message["content"]}],
}
for message in messages
],
"generationConfig": {
"temperature": 0.6,
"topP": 0.7,
"maxOutputTokens": 1024,
},
}
headers = {
"Content-Type": "application/json",
# This endpoint uses API-key auth, not Bearer auth.
"x-goog-api-key": API_KEY,
}
# Gemini-style generateContent uses contents, so messages are mapped into contents.
response = requests.post(URL, headers=headers, json=payload, timeout=30)
response.raise_for_status()
data = response.json()
candidates = data.get("candidates") or [{}]
parts = (candidates[0].get("content") or {}).get("parts") or []
print("".join(part.get("text", "") for part in parts))
const API_KEY = "$SSY_API_KEY";
const MODEL = "openai/gpt-4o-2024-11-20";
const url = `https://router.shengsuanyun.com/api/v1beta/models/${MODEL}:generateContent`;
const messages = [
{ role: "user", content: "Which number is larger, 9.11 or 9.8?" },
];
async function main() {
const response = await fetch(url, {
method: "POST",
headers: {
"Content-Type": "application/json",
"x-goog-api-key": API_KEY,
},
body: JSON.stringify({
contents: messages.map((message) => ({
role: message.role,
parts: [{ text: message.content }],
})),
generationConfig: {
temperature: 0.6,
topP: 0.7,
maxOutputTokens: 1024,
},
}),
});
if (!response.ok) {
const text = await response.text();
throw new Error(`Request failed with status ${response.status}: ${text}`);
}
const data = await response.json();
const text = (data.candidates?.[0]?.content?.parts ?? [])
.map((part) => part.text ?? "")
.join("");
console.log(text);
}
main().catch((error) => {
const message = error instanceof Error ? error.message : String(error);
console.error("Request failed:", message);
});
#!/usr/bin/env bash
set -euo pipefail
API_KEY="$SSY_API_KEY"
MODEL='openai/gpt-4o-2024-11-20'
BASE_URL="https://router.shengsuanyun.com/api/v1beta/models/${MODEL}:generateContent"
# This endpoint uses API-key auth, not Bearer auth.
curl --fail-with-body --silent --show-error -X POST "${BASE_URL}" \
-H "Content-Type: application/json" \
-H "x-goog-api-key: ${API_KEY}" \
-d '{
"contents": [
{
"role": "user",
"parts": [{"text": "Which number is larger, 9.11 or 9.8?"}]
}
],
"generationConfig": {
"temperature": 0.6,
"topP": 0.7,
"maxOutputTokens": 1024
}
}' | python3 -c 'import json,sys
data=json.load(sys.stdin)
candidates=data.get("candidates") or [{}]
parts=(candidates[0].get("content") or {}).get("parts") or []
print("".join(part.get("text", "") for part in parts))'
import requests
API_KEY = "$SSY_API_KEY"
MODEL = "openai/gpt-4o-2024-11-20"
URL = f"https://router.shengsuanyun.com/api/v1/models/{MODEL}:generateContent"
messages = [
{"role": "user", "content": "Which number is larger, 9.11 or 9.8?"}
]
payload = {
"contents": [
{
"role": message["role"],
"parts": [{"text": message["content"]}],
}
for message in messages
],
"generationConfig": {
"temperature": 0.6,
"topP": 0.7,
"maxOutputTokens": 1024,
},
}
headers = {
"Content-Type": "application/json",
# This endpoint uses API-key auth, not Bearer auth.
"x-goog-api-key": API_KEY,
}
# Gemini-style generateContent uses contents, so messages are mapped into contents.
response = requests.post(URL, headers=headers, json=payload, timeout=30)
response.raise_for_status()
data = response.json()
candidates = data.get("candidates") or [{}]
parts = (candidates[0].get("content") or {}).get("parts") or []
print("".join(part.get("text", "") for part in parts))
const API_KEY = "$SSY_API_KEY";
const MODEL = "openai/gpt-4o-2024-11-20";
const url = `https://router.shengsuanyun.com/api/v1/models/${MODEL}:generateContent`;
const messages = [
{ role: "user", content: "Which number is larger, 9.11 or 9.8?" },
];
async function main() {
const response = await fetch(url, {
method: "POST",
headers: {
"Content-Type": "application/json",
"x-goog-api-key": API_KEY,
},
body: JSON.stringify({
contents: messages.map((message) => ({
role: message.role,
parts: [{ text: message.content }],
})),
generationConfig: {
temperature: 0.6,
topP: 0.7,
maxOutputTokens: 1024,
},
}),
});
if (!response.ok) {
const text = await response.text();
throw new Error(`Request failed with status ${response.status}: ${text}`);
}
const data = await response.json();
const text = (data.candidates?.[0]?.content?.parts ?? [])
.map((part) => part.text ?? "")
.join("");
console.log(text);
}
main().catch((error) => {
const message = error instanceof Error ? error.message : String(error);
console.error("Request failed:", message);
});
#!/usr/bin/env bash
set -euo pipefail
API_KEY="$SSY_API_KEY"
MODEL='openai/gpt-4o-2024-11-20'
BASE_URL="https://router.shengsuanyun.com/api/v1/models/${MODEL}:generateContent"
# This endpoint uses API-key auth, not Bearer auth.
curl --fail-with-body --silent --show-error -X POST "${BASE_URL}" \
-H "Content-Type: application/json" \
-H "x-goog-api-key: ${API_KEY}" \
-d '{
"contents": [
{
"role": "user",
"parts": [{"text": "Which number is larger, 9.11 or 9.8?"}]
}
],
"generationConfig": {
"temperature": 0.6,
"topP": 0.7,
"maxOutputTokens": 1024
}
}' | python3 -c 'import json,sys
data=json.load(sys.stdin)
candidates=data.get("candidates") or [{}]
parts=(candidates[0].get("content") or {}).get("parts") or []
print("".join(part.get("text", "") for part in parts))'
Public model applications
Want to feature your application here? Click here to discuss ecosystem collaboration.- public applications
- 11
- SSY ChatroomPublic model application
- Kilo Code ChinesePublic model application
- ClineShengsuanPublic model application
- clinePublic model application
- cline-chinesePublic model application
- Cherry StudioPublic model application
- ClineShengsuanPublic model application
- SSY ChatroomPublic model application
- RikkaHubPublic model application
- PostmanPublic model application
- ClaudeCodeProxyPublic model application