claude-session-x-7

内容来源:clawhub · 原始地址 · 查看安装指南

原始内容


name: claude description: Call the Claude API (claude-opus, claude-sonnet, claude-haiku) through RunAPI using the official Anthropic SDK, OpenAI SDK, Gemini contents clients, or compatible clients. Use when the user asks for Claude / Anthropic chat, streaming messages, multimodal vision input, tool use, extended thinking, token counting, OpenAI or Gemini protocol compatibility, or when they want to point an existing LLM SDK setup at RunAPI as the base URL. documentation: https://runapi.ai/models/claude.md provider_page: https://runapi.ai/providers/anthropic.md catalog: https://runapi.ai/models.md metadata: openclaw: homepage: https://runapi.ai/models/claude primaryEnv: ANTHROPIC_API_KEY requires: env: - ANTHROPIC_API_KEY - ANTHROPIC_BASE_URL envVars: - name: ANTHROPIC_API_KEY required: true description: RunAPI API key used by Anthropic-compatible SDKs. - name: ANTHROPIC_BASE_URL required: true description: Set to https://runapi.ai for Claude on RunAPI.


Claude on RunAPI

Use the official Anthropic SDK (Python, TypeScript, Ruby) -- or any Anthropic-compatible HTTP client — and switch the base URL to https://runapi.ai. The endpoint speaks the Anthropic Messages protocol (POST /v1/messages), so no client code changes beyond base_url and api_key.

Setup

ANTHROPIC_API_KEY=YOUR_RUNAPI_TOKEN
ANTHROPIC_BASE_URL=https://runapi.ai

Get a RunAPI API Key at https://runapi.ai/api_keys.

Language Init
Python anthropic.Anthropic(api_key=..., base_url="https://runapi.ai")
TypeScript new Anthropic({ apiKey: ..., baseURL: "https://runapi.ai" })
Ruby Anthropic::Client.new(api_key: ..., base_url: "https://runapi.ai")
curl POST https://runapi.ai/v1/messages with x-api-key: header

x-api-key and Authorization: Bearer ... both work; the SDK uses x-api-key by default.

Core recipe — non-streaming message

import anthropic

client = anthropic.Anthropic(
    api_key="YOUR_RUNAPI_TOKEN",
    base_url="https://runapi.ai",
)

message = client.messages.create(
    model="claude-sonnet-4-6",
    max_tokens=1024,
    system="You are a helpful assistant.",
    messages=[{"role": "user", "content": "Explain quantum computing simply."}],
)
print(message.content[0].text)
print(message.usage)  # input_tokens / output_tokens
import Anthropic from "@anthropic-ai/sdk";

const client = new Anthropic({
  apiKey: "YOUR_RUNAPI_TOKEN",
  baseURL: "https://runapi.ai",
});

const message = await client.messages.create({
  model: "claude-sonnet-4-6",
  max_tokens: 1024,
  system: "You are a helpful assistant.",
  messages: [{ role: "user", content: "Explain quantum computing simply." }],
});

max_tokens is required by the Anthropic API.

Streaming

with client.messages.stream(
    model="claude-sonnet-4-6",
    max_tokens=1024,
    messages=[{"role": "user", "content": "Write a haiku about coding."}],
) as stream:
    for text in stream.text_stream:
        print(text, end="", flush=True)
const stream = await client.messages.stream({
  model: "claude-sonnet-4-6",
  max_tokens: 1024,
  messages: [{ role: "user", content: "Write a haiku about coding." }],
});

for await (const event of stream) {
  if (event.type === "content_block_delta") {
    process.stdout.write(event.delta.text);
  }
}

Streaming runs through a regional edge proxy so the request does not hold a Rails/Puma thread. Long generations (extended thinking, large max_tokens) should always stream.

Vision / multimodal

{
  "model": "claude-sonnet-4-6",
  "max_tokens": 1024,
  "messages": [
    {
      "role": "user",
      "content": [
        { "type": "text", "text": "What is in this image?" },
        {
          "type": "image_url",
          "image_url": { "url": "https://cdn.runapi.ai/public/samples/mask.png" }
        }
      ]
    }
  ]
}

Image input uses the standard Anthropic image_url block. URLs must be publicly fetchable.

Tool use / web search / reasoning

{
  "model": "claude-sonnet-4-6",
  "max_tokens": 1024,
  "reasoning_effort": "high",
  "include_thoughts": true,
  "tools": [
    { "type": "function", "function": { "name": "googleSearch" } }
  ],
  "messages": [
    { "role": "user", "content": "What's the latest on Claude 4.7?" }
  ]
}
  • reasoning_effort: "low" or "high". Supported on every model below.
  • include_thoughts: returns reasoning content. Only claude-sonnet-4-5-20250929 and claude-sonnet-4-6 support this.
  • Web access uses a googleSearch function tool.
  • Set header anthropic-beta: interleaved-thinking-2025-05-14 to interleave thinking blocks with output.

Token counting

curl -X POST "https://runapi.ai/v1/messages/count_tokens" \
  -H "x-api-key: YOUR_RUNAPI_TOKEN" \
  -H "anthropic-version: 2023-06-01" \
  -H "Content-Type: application/json" \
  -d '{
    "model": "claude-sonnet-4-6",
    "messages": [{"role": "user", "content": "How many tokens?"}]
  }'

Returns {"input_tokens": <n>}. Image blocks use a 512-token heuristic; for exact response usage read usage from the actual POST /v1/messages response.

List models

curl https://runapi.ai/v1/models -H "x-api-key: YOUR_RUNAPI_TOKEN"

Returns Anthropic-compatible model objects.

Protocol compatibility

Claude models are also available through RunAPI's OpenAI-compatible and Gemini contents client surfaces. Use these protocol paths when an existing agent runtime already speaks Chat Completions, Responses, or Gemini generateContent / streamGenerateContent; for new Claude-specific code, prefer the Anthropic Messages setup above.

curl -X POST "https://runapi.ai/v1/chat/completions" \
  -H "Authorization: Bearer YOUR_RUNAPI_TOKEN" \
  -H "Content-Type: application/json" \
  -d '{
    "model": "claude-sonnet-4-6",
    "messages": [{"role": "user", "content": "Draft a concise answer."}]
  }'
curl -X POST "https://runapi.ai/v1/responses" \
  -H "Authorization: Bearer YOUR_RUNAPI_TOKEN" \
  -H "Content-Type: application/json" \
  -d '{
    "model": "claude-sonnet-4-6",
    "input": "Draft a concise answer."
  }'
curl -X POST \
  "https://runapi.ai/v1beta/models/claude-sonnet-4-6:streamGenerateContent" \
  -H "x-goog-api-key: YOUR_RUNAPI_TOKEN" \
  -H "Content-Type: application/json" \
  -d '{"contents":[{"role":"user","parts":[{"text":"Hello, Claude!"}]}]}'

Token counting remains specific to the Anthropic-compatible /v1/messages/count_tokens endpoint.

Supported models

Model ID Use when
claude-fable-5 Flagship — state-of-the-art coding, reasoning, and vision (1M context)
claude-sonnet-5 Near-Opus coding and agentic skill at Sonnet cost (1M context)
claude-opus-5 Latest Opus — frontier reasoning and long-workflow reliability
claude-opus-4-8 Strongest general model — agents, complex reasoning
claude-opus-4-7 Previous Opus generation for stable workloads
claude-opus-4-6 High-end reasoning workloads
claude-sonnet-4-6 Balanced default for production chat
claude-opus-4-5-20251101 Pin Opus 4.5 snapshot
claude-sonnet-4-5-20250929 Pin Sonnet 4.5 snapshot (supports include_thoughts)
claude-haiku-4-5-20251001 Highest throughput lightweight model
claude-opus-4-1-20250805 Pin Opus 4.1 snapshot

Aliases auto-resolve to dated snapshots: claude-opus-4-5, claude-sonnet-4-5, claude-haiku-4-5.

Connect Claude Code itself

ANTHROPIC_BASE_URL=https://runapi.ai \
ANTHROPIC_API_KEY=YOUR_RUNAPI_TOKEN \
claude

Agent rules

  • Always pass max_tokens — the Anthropic API rejects requests without it.
  • Use streaming for any response longer than a few hundred tokens. Do not hold the agent on a long blocking request.
  • Default Claude-native integrations to the Anthropic Messages endpoint. Use OpenAI-compatible or Gemini contents paths only for existing clients that require those request shapes.
  • include_thoughts only works on the two Sonnet models listed above; do not send it on Opus or Haiku.
  • Pricing, rate limits, quotas — link to https://runapi.ai/models/claude.md, not this skill file.
  • For exact token usage read usage from the POST /v1/messages response, not from /v1/messages/count_tokens.

Routing