跳到正文
SDK

SDK

任何 OpenAI 或 Anthropic SDK 均可开箱即用。

Shannon 支持 OpenAI 和 Anthropic 的传输格式,因此你可以原样使用这两家的官方 SDK。你只需更改客户端中的三个值:基础 URL、API 密钥和模型 id。其余代码保持不变。

要设置什么

设置 OpenAI SDK Anthropic SDK
基础 URL https://api.shannon-ai.com/v1 https://api.shannon-ai.com
API 密钥 你的 Shannon 密钥。SDK 以 Authorization: Bearer 发送它。 你的 Shannon 密钥。SDK 以 x-api-key 发送它。
模型 已发布的模型 id,例如 shannon-3。 已发布的模型 id,例如 shannon-1.6-lite。
可访问的端点 /v1/chat/completions、/v1/responses、/v1/models /v1/messages、/v1/messages/count_tokens
环境变量 OPENAI_API_KEY 和 OPENAI_BASE_URL,在你没有传入值时由 Python 和 JavaScript SDK 读取。 ANTHROPIC_API_KEY 和 ANTHROPIC_BASE_URL,在你没有传入值时由 Python 和 TypeScript SDK 读取。

两个基础 URL 相差 /v1:OpenAI SDK 会在其基础 URL 后添加 /chat/completions,Anthropic SDK 会添加 /v1/messages。Shannon 未发布的模型名称会返回 400 和 unknown model。 模型与定价

你的密钥在密钥与用量页面。 密钥与用量

OpenAI SDK

官方 OpenAI SDK 调用 POST /v1/chat/completions 和 POST /v1/responses。每个示例发送一条用户消息并输出答案。

# pip install openai
from openai import OpenAI

client = OpenAI(
    api_key="YOUR_API_KEY",
    base_url="https://api.shannon-ai.com/v1",
)

response = client.chat.completions.create(
    model="shannon-3",
    messages=[{"role": "user", "content": "Hello, Shannon!"}],
)
print(response.choices[0].message.content)
语言 安装 基础 URL 选项 来源
Python pip install openai base_url openai/openai-python
JavaScript / TypeScript npm install openai baseURL openai/openai-node
Go go get github.com/openai/openai-go/v3 option.WithBaseURL openai/openai-go
Java com.openai:openai-java baseUrl openai/openai-java
.NET dotnet add package OpenAI OpenAIClientOptions.Endpoint openai/openai-dotnet

这两个端点的每个字段都在各自的页面中说明。 Chat Completions Responses API

Anthropic SDK

官方 Anthropic SDK 调用 POST /v1/messages。它们要求每次调用都带 max_tokens,因此示例使用会应用它的 shannon-1.6-lite。每个示例都会输出答案中的文本块。

# pip install anthropic
import anthropic

client = anthropic.Anthropic(
    api_key="YOUR_API_KEY",
    base_url="https://api.shannon-ai.com",
)

message = client.messages.create(
    model="shannon-1.6-lite",
    max_tokens=1024,
    messages=[{"role": "user", "content": "Hello, Shannon!"}],
)
for block in message.content:
    if block.type == "text":
        print(block.text)
语言 安装 基础 URL 选项 来源
Python pip install anthropic base_url anthropics/anthropic-sdk-python
TypeScript npm install @anthropic-ai/sdk baseURL anthropics/anthropic-sdk-typescript
Go go get github.com/anthropics/anthropic-sdk-go option.WithBaseURL anthropics/anthropic-sdk-go
Java com.anthropic:anthropic-java baseUrl anthropics/anthropic-sdk-java

Messages 格式及其差异见 Anthropic 兼容性页面。 Anthropic 格式

SDK 可以依赖的行为

  • API 不使用的请求字段会被接受。API 认识但类型错误的字段,会返回 422。
  • SDK 添加的版本和 beta 标头(anthropic-version、anthropic-beta、openai-beta)会被接受。它们都不是必需的。
  • 回复的 model 是已发布的 id,因此你可以原样将其发回。
  • 在 /v1/messages 上,回复可能以 thinking 块开头。请读取类型为 text 的块,而不是取第一个块。
  • 流式传输通过 SDK 自带的流辅助工具工作。用量信息在每个流的末尾到达。
  • 每个回复都带有 x-request-id 标头。发送你自己的 x-request-id,同样的值会原样返回。

社区 SDK

其他作者为 OpenAI API 编写的客户端以同样的方式工作:给客户端提供带 /v1 的基础 URL、你的密钥和一个 Shannon 模型 id。这些客户端由其作者维护,而不是由 Shannon 维护。

语言 安装 客户端
Go go get github.com/sashabaranov/go-openai sashabaranov/go-openai
Ruby gem install ruby-openai alexrudall/ruby-openai
PHP composer require openai-php/client openai-php/client
Rust cargo add async-openai 64bit/async-openai

不使用 SDK

你不需要 SDK。任何能发送 JSON 的 HTTP 客户端都可以:

  • 使用 POST,带 JSON 请求体和标头 Content-Type: application/json。缺少它时,请求会返回 415。
  • 将你的密钥放在 Authorization: Bearer <key> 或 x-api-key: <key> 中。两者在所有端点上都有效。
  • 请求体最大 32 MiB。
  • 使用 "stream": true 时,回复是服务器发送事件流(text/event-stream)。请逐行读取,不要缓冲。
  • 错误是一个带有 error.type 和 error.message 的 JSON 响应体,同时带有 HTTP 状态码。
curl https://api.shannon-ai.com/v1/chat/completions \
  -H "Authorization: Bearer YOUR_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{
    "model": "shannon-3",
    "messages": [{"role": "user", "content": "Hello, Shannon!"}]
  }'

关于流的事件和错误类型,请参阅: 流式 错误处理