SDKs
cURL, Python и TypeScript
Примеры используют текущий публичный шлюз https://api.51cowork.com и стандартную настройку Base URL в SDK. Модель по-прежнему выбирается динамически через /v1/models.
OpenAI SDK использует https://api.51cowork.com/v1, Anthropic SDK — https://api.51cowork.com. API Key берётся из панели управления, ID модели — из /v1/models.
- HTTP
- cURL
- Python
- openai / anthropic
- TypeScript
- openai / @anthropic-ai/sdk
- Секреты
- Переменные среды
Общие переменные среды
Terminal
bashexport COWORK_GATEWAY_URL="https://api.51cowork.com"
export COWORK_API_KEY="<key-from-dashboard>"
export COWORK_MODEL="<model-from-gateway>"cURL
OpenAI Chat Completions
bashcurl "$COWORK_GATEWAY_URL/v1/chat/completions" \
-H "Authorization: Bearer $COWORK_API_KEY" \
-H "Content-Type: application/json" \
-d '{
"model": "'"$COWORK_MODEL"'",
"messages": [{"role": "user", "content": "Hello"}]
}'Anthropic Messages
bashcurl "$COWORK_GATEWAY_URL/v1/messages" \
-H "x-api-key: $COWORK_API_KEY" \
-H "anthropic-version: 2023-06-01" \
-H "content-type: application/json" \
-d '{
"model": "'"$COWORK_MODEL"'",
"max_tokens": 256,
"messages": [{"role": "user", "content": "Hello"}]
}'Python
OpenAI SDK · pip install openai
pythonimport os
from openai import OpenAI
client = OpenAI(
api_key=os.environ["COWORK_API_KEY"],
base_url=os.environ["COWORK_GATEWAY_URL"].rstrip("/") + "/v1",
)
result = client.chat.completions.create(
model=os.environ["COWORK_MODEL"],
messages=[{"role": "user", "content": "Hello"}],
)
print(result.choices[0].message.content)Anthropic SDK · pip install anthropic
pythonimport os
from anthropic import Anthropic
client = Anthropic(
api_key=os.environ["COWORK_API_KEY"],
base_url=os.environ["COWORK_GATEWAY_URL"],
)
message = client.messages.create(
model=os.environ["COWORK_MODEL"],
max_tokens=256,
messages=[{"role": "user", "content": "Hello"}],
)
print(message.content[0].text)TypeScript / JavaScript
OpenAI SDK · npm install openai
typescriptimport OpenAI from 'openai'
const client = new OpenAI({
apiKey: process.env.COWORK_API_KEY,
baseURL: `${process.env.COWORK_GATEWAY_URL?.replace(/\/$/, '')}/v1`,
})
const result = await client.chat.completions.create({
model: process.env.COWORK_MODEL!,
messages: [{ role: 'user', content: 'Hello' }],
})
console.log(result.choices[0]?.message.content)Anthropic SDK · npm install @anthropic-ai/sdk
typescriptimport Anthropic from '@anthropic-ai/sdk'
const client = new Anthropic({
apiKey: process.env.COWORK_API_KEY,
baseURL: process.env.COWORK_GATEWAY_URL,
})
const message = await client.messages.create({
model: process.env.COWORK_MODEL!,
max_tokens: 256,
messages: [{ role: 'user', content: 'Hello' }],
})
console.log(message.content)Streaming в SDK
Используйте streaming API библиотеки и обрабатывайте события по одному. Настройте таймауты и отменяйте upstream при отмене пользователем.
Protocol smoke test
bashcurl -N "$COWORK_GATEWAY_URL/v1/chat/completions" \
-H "Authorization: Bearer $COWORK_API_KEY" \
-H "Content-Type: application/json" \
-d '{
"model": "'"$COWORK_MODEL"'",
"stream": true,
"messages": [{"role": "user", "content": "Count to five"}]
}'- Не буферизуйте весь ответ перед передачей клиенту.
- Не журналируйте события, Prompt или полный ключ по умолчанию.
- Осторожно повторяйте разорванный поток, чтобы не создать дубликат и расход.
Перед production
- Передавайте ключ через Secret Manager или платформу развёртывания.
- Задайте таймаут, отмену и ограниченные повторы.
- Создавайте бизнес-ID запроса и связывайте его с request_id в панели управления.
- Ограничивайте длину и содержание пользовательского ввода.
- Следите за балансом и ошибками, пополняйте заранее.
