问题背景与适用场景
在使用 Claude Code 进行 AI 辅助开发时,开发者经常需要调用外部 REST API 来扩展功能、集成第三方服务或构建自动化工作流。然而,Claude Code 本身并不直接暴露底层 HTTP 请求能力,开发者需要通过特定方式实现 API 调用。本教程将介绍三种经过验证的调用 REST API 的方法,帮助开发者快速集成 HolySheep 等 AI 服务,完成 base_url 配置、认证授权和错误处理等关键步骤。
前置条件
- 已安装 Claude Code 最新版本并完成基础配置
- 拥有 HolySheep AI 账户并获取有效 API Key(格式:hs-xxxxxxxxxxxx)
- 熟悉命令行操作和基础 Python/Bash 脚本编写
- 了解 RESTful API 的基本概念(HTTP 方法、请求头、JSON 格式)
- 网络环境可正常访问 https://api.holysheep.ai 域名
配置步骤详解
以下是通过 Claude Code 调用 REST API 的三种核心方法,每种方法适用于不同的使用场景和集成需求。
方法一:使用 Python 脚本调用 API
通过 Claude Code 的 /api 工具或外部脚本执行器,调用 Python 脚本实现 API 请求。这是灵活性最高的方式,支持完整的请求/响应处理。
import requests
import json
import os
class HolySheepAPIClient:
"""HolySheep AI API 客户端封装"""
def __init__(self, api_key: str = None, base_url: str = "https://api.holysheep.ai"):
self.api_key = api_key or os.environ.get("HOLYSHEEP_API_KEY")
if not self.api_key:
raise ValueError("API Key 未设置,请设置 HOLYSHEEP_API_KEY 环境变量")
self.base_url = base_url.rstrip("/")
self.session = requests.Session()
self.session.headers.update({
"Authorization": f"Bearer {self.api_key}",
"Content-Type": "application/json",
"User-Agent": "ClaudeCode-Integration/1.0"
})
def create_chat_completion(self, model: str = "claude-sonnet-4-20250514",
messages: list = None, max_tokens: int = 1024):
"""创建聊天补全请求"""
endpoint = f"{self.base_url}/v1/chat/completions"
payload = {
"model": model,
"messages": messages or [],
"max_tokens": max_tokens,
"temperature": 0.7
}
try:
response = self.session.post(endpoint, json=payload, timeout=30)
response.raise_for_status()
return response.json()
except requests.exceptions.HTTPError as e:
error_detail = response.json() if response.content else {}
raise APIError(f"HTTP错误 {response.status_code}: {error_detail}") from e
def list_models(self):
"""获取可用模型列表"""
endpoint = f"{self.base_url}/v1/models"
response = self.session.get(endpoint)
response.raise_for_status()
return response.json()
使用示例
if __name__ == "__main__":
client = HolySheepAPIClient()
result = client.create_chat_completion(
messages=[{"role": "user", "content": "解释 REST API 调用流程"}]
)
print(json.dumps(result, indent=2, ensure_ascii=False))
方法二:使用 curl 命令直接调用
适用于快速测试和脚本化调用场景,无需编写额外代码即可完成 API 请求。
#!/bin/bash
HolySheep API 调用脚本示例
配置区
API_KEY="YOUR_HOLYSHEEP_API_KEY"
BASE_URL="https://api.holysheep.ai"
MODEL="claude-sonnet-4-20250514"
创建聊天补全
create_chat_completion() {
curl -X POST "${BASE_URL}/v1/chat/completions" \
-H "Authorization: Bearer ${API_KEY}" \
-H "Content-Type: application/json" \
-H "User-Agent: ClaudeCode-Shell/1.0" \
-d '{
"model": "'"${MODEL}"'",
"messages": [
{"role": "user", "content": "用中文解释什么是 API"}
],
"max_tokens": 512,
"temperature": 0.7
}' \
--silent --show-error --max-time 30
}
获取模型列表
list_models() {
curl -X GET "${BASE_URL}/v1/models" \
-H "Authorization: Bearer ${API_KEY}" \
-H "User-Agent: ClaudeCode-Shell/1.0" \
--silent --show-error --max-time 15
}
主逻辑
case "$1" in
chat)
create_chat_completion | jq -r '.choices[0].message.content'
;;
models)
list_models | jq '.data[] | {id, object, created}'
;;
*)
echo "用法: $0 {chat|models}"
exit 1
;;
esac
方法三:使用 Node.js 环境调用
适用于需要在 JavaScript/TypeScript 环境中集成 API 的场景,与前端项目无缝衔接。
const https = require('https');
class HolySheepNodeClient {
constructor(apiKey, baseUrl = 'https://api.holysheep.ai') {
this.apiKey = apiKey;
this.baseUrl = baseUrl;
}
request(method, path, data = null) {
return new Promise((resolve, reject) => {
const url = new URL(this.baseUrl + path);
const options = {
hostname: url.hostname,
path: url.pathname,
method: method,
headers: {
'Authorization': Bearer ${this.apiKey},
'Content-Type': 'application/json',
'User-Agent': 'ClaudeCode-Node/1.0'
}
};
const req = https.request(options, (res) => {
let body = '';
res.on('data', chunk => body += chunk);
res.on('end', () => {
try {
const json = JSON.parse(body);
if (res.statusCode >= 400) {
reject(new Error(API Error: ${res.statusCode} - ${json.error?.message || body}));
} else {
resolve(json);
}
} catch (e) {
reject(new Error(JSON Parse Error: ${body}));
}
});
});
req.on('error', reject);
req.setTimeout(30000, () => {
req.destroy();
reject(new Error('Request timeout'));
});
if (data) {
req.write(JSON.stringify(data));
}
req.end();
});
}
chat(messages, model = 'claude-sonnet-4-20250514') {
return this.request('POST', '/v1/chat/completions', {
model,
messages,
max_tokens: 1024,
temperature: 0.7
});
}
}
// 使用示例
const client = new HolySheep