文本生成
Claude 消息接口
POST
/
v1
/
messages
curl -X POST https://www.qingbo.dev/v1/messages \
-H "Authorization: Bearer YOUR_API_KEY" \
-H "Content-Type: application/json" \
-H "anthropic-version: 2023-06-01" \
-d '{
"model": "claude-sonnet-4.5",
"max_tokens": 1024,
"system": "你是一个专业的AI助手。",
"messages": [
{
"role": "user",
"content": "解释一下冒泡排序算法。"
}
]
}'
import anthropic
client = anthropic.Anthropic(
base_url="https://www.qingbo.dev/v1",
api_key="YOUR_API_KEY"
)
message = client.messages.create(
model="claude-sonnet-4.5",
max_tokens=1024,
system="你是一个专业的AI助手。",
messages=[
{"role": "user", "content": "解释一下冒泡排序算法。"}
]
)
print(message.content[0].text)
import Anthropic from '@anthropic-ai/sdk';
const client = new Anthropic({
baseURL: 'https://www.qingbo.dev/v1',
apiKey: 'YOUR_API_KEY'
});
const message = await client.messages.create({
model: 'claude-sonnet-4.5',
max_tokens: 1024,
system: '你是一个专业的AI助手。',
messages: [
{ role: 'user', content: '解释一下冒泡排序算法。' }
]
});
console.log(message.content[0].text);
package main
import (
"bytes"
"encoding/json"
"fmt"
"io"
"net/http"
)
func main() {
payload := map[string]interface{}{
"model": "claude-sonnet-4.5",
"max_tokens": 1024,
"system": "你是一个专业的AI助手。",
"messages": []map[string]string{
{"role": "user", "content": "解释一下冒泡排序算法。"},
},
}
body, _ := json.Marshal(payload)
req, _ := http.NewRequest("POST", "https://www.qingbo.dev/v1/messages", bytes.NewBuffer(body))
req.Header.Set("Authorization", "Bearer YOUR_API_KEY")
req.Header.Set("Content-Type", "application/json")
req.Header.Set("anthropic-version", "2023-06-01")
resp, err := http.DefaultClient.Do(req)
if err != nil {
panic(err)
}
defer resp.Body.Close()
result, _ := io.ReadAll(resp.Body)
fmt.Println(string(result))
}
import java.net.http.*;
import java.net.URI;
public class Main {
public static void main(String[] args) throws Exception {
String payload = """
{
"model": "claude-sonnet-4.5",
"max_tokens": 1024,
"system": "你是一个专业的AI助手。",
"messages": [
{"role": "user", "content": "解释一下冒泡排序算法。"}
]
}
""";
HttpClient client = HttpClient.newHttpClient();
HttpRequest request = HttpRequest.newBuilder()
.uri(URI.create("https://www.qingbo.dev/v1/messages"))
.header("Authorization", "Bearer YOUR_API_KEY")
.header("Content-Type", "application/json")
.header("anthropic-version", "2023-06-01")
.POST(HttpRequest.BodyPublishers.ofString(payload))
.build();
HttpResponse<String> response = client.send(request,
HttpResponse.BodyHandlers.ofString());
System.out.println(response.body());
}
}
{
"id": "msg_013Zva2CMHLNnXjNJJKqJ2EF",
"type": "message",
"role": "assistant",
"content": [
{
"type": "text",
"text": "你好!我是Claude。很高兴见到你。"
}
],
"model": "claude-sonnet-4.5",
"stop_reason": "end_turn",
"stop_sequence": null,
"usage": {
"input_tokens": 12,
"output_tokens": 18
}
}
{
"error": {
"code": 400,
"message": "请求参数无效",
"type": "invalid_request_error"
}
}
{
"error": {
"code": 401,
"message": "身份验证失败,请检查您的API密钥",
"type": "authentication_error"
}
}
{
"error": {
"code": 429,
"message": "请求过于频繁,请稍后再试",
"type": "rate_limit_error"
}
}
{
"error": {
"code": 500,
"message": "服务器内部错误,请稍后重试",
"type": "server_error"
}
}
- 完全兼容 Claude Messages API 格式
- 支持多轮对话和单次查询
- 支持文本、图像等多模态内容
curl -X POST https://www.qingbo.dev/v1/messages \
-H "Authorization: Bearer YOUR_API_KEY" \
-H "Content-Type: application/json" \
-H "anthropic-version: 2023-06-01" \
-d '{
"model": "claude-sonnet-4.5",
"max_tokens": 1024,
"system": "你是一个专业的AI助手。",
"messages": [
{
"role": "user",
"content": "解释一下冒泡排序算法。"
}
]
}'
import anthropic
client = anthropic.Anthropic(
base_url="https://www.qingbo.dev/v1",
api_key="YOUR_API_KEY"
)
message = client.messages.create(
model="claude-sonnet-4.5",
max_tokens=1024,
system="你是一个专业的AI助手。",
messages=[
{"role": "user", "content": "解释一下冒泡排序算法。"}
]
)
print(message.content[0].text)
import Anthropic from '@anthropic-ai/sdk';
const client = new Anthropic({
baseURL: 'https://www.qingbo.dev/v1',
apiKey: 'YOUR_API_KEY'
});
const message = await client.messages.create({
model: 'claude-sonnet-4.5',
max_tokens: 1024,
system: '你是一个专业的AI助手。',
messages: [
{ role: 'user', content: '解释一下冒泡排序算法。' }
]
});
console.log(message.content[0].text);
package main
import (
"bytes"
"encoding/json"
"fmt"
"io"
"net/http"
)
func main() {
payload := map[string]interface{}{
"model": "claude-sonnet-4.5",
"max_tokens": 1024,
"system": "你是一个专业的AI助手。",
"messages": []map[string]string{
{"role": "user", "content": "解释一下冒泡排序算法。"},
},
}
body, _ := json.Marshal(payload)
req, _ := http.NewRequest("POST", "https://www.qingbo.dev/v1/messages", bytes.NewBuffer(body))
req.Header.Set("Authorization", "Bearer YOUR_API_KEY")
req.Header.Set("Content-Type", "application/json")
req.Header.Set("anthropic-version", "2023-06-01")
resp, err := http.DefaultClient.Do(req)
if err != nil {
panic(err)
}
defer resp.Body.Close()
result, _ := io.ReadAll(resp.Body)
fmt.Println(string(result))
}
import java.net.http.*;
import java.net.URI;
public class Main {
public static void main(String[] args) throws Exception {
String payload = """
{
"model": "claude-sonnet-4.5",
"max_tokens": 1024,
"system": "你是一个专业的AI助手。",
"messages": [
{"role": "user", "content": "解释一下冒泡排序算法。"}
]
}
""";
HttpClient client = HttpClient.newHttpClient();
HttpRequest request = HttpRequest.newBuilder()
.uri(URI.create("https://www.qingbo.dev/v1/messages"))
.header("Authorization", "Bearer YOUR_API_KEY")
.header("Content-Type", "application/json")
.header("anthropic-version", "2023-06-01")
.POST(HttpRequest.BodyPublishers.ofString(payload))
.build();
HttpResponse<String> response = client.send(request,
HttpResponse.BodyHandlers.ofString());
System.out.println(response.body());
}
}
{
"id": "msg_013Zva2CMHLNnXjNJJKqJ2EF",
"type": "message",
"role": "assistant",
"content": [
{
"type": "text",
"text": "你好!我是Claude。很高兴见到你。"
}
],
"model": "claude-sonnet-4.5",
"stop_reason": "end_turn",
"stop_sequence": null,
"usage": {
"input_tokens": 12,
"output_tokens": 18
}
}
{
"error": {
"code": 400,
"message": "请求参数无效",
"type": "invalid_request_error"
}
}
{
"error": {
"code": 401,
"message": "身份验证失败,请检查您的API密钥",
"type": "authentication_error"
}
}
{
"error": {
"code": 429,
"message": "请求过于频繁,请稍后再试",
"type": "rate_limit_error"
}
}
{
"error": {
"code": 500,
"message": "服务器内部错误,请稍后重试",
"type": "server_error"
}
}
Authorizations
API 版本号指定要使用的 Claude API 版本示例:
2023-06-01Body
模型名称
claude-opus-4.6- Claude 4.6 Opus 最新旗舰模型claude-sonnet-4.6- Claude 4.6 Sonnet 最新版claude-opus-4.5- Claude 4.5 Opus 旗舰模型claude-sonnet-4.5- Claude 4.5 Sonnet 平衡版claude-haiku-4.5- Claude 4.5 Haiku 快速响应版
最大生成 token 数生成停止前的最大 token 数量。模型可能会在达到此限制前停止。不同模型有不同的最大值,请参考模型文档。最小值:1
系统提示词系统提示词用于设置 Claude 的角色、个性、目标和指令。字符串格式:结构化格式:
{
"system": "你是一位专业的Python编程导师"
}
{
"system":
[
{
"type": "text",
"text": "你是一位专业的Python编程导师"
}
]
}
温度参数,范围 0-1控制输出的随机性:
- 低值(如 0.2):更确定、更保守
- 高值(如 0.8):更随机、更有创意
核采样参数,范围 0-1使用 nucleus sampling。建议使用
temperature 或 top_p 其中之一,不要同时使用。默认值:1.0Top-K 采样只从概率最高的 K 个选项中采样,用于移除”长尾”低概率响应。建议仅在高级用例中使用。
是否启用流式输出
true: 通过服务器发送事件 (SSE) 逐步返回响应false: 一次性返回完整响应
停止序列自定义文本序列,遇到时停止生成。最多 4 个序列,每个最长 32 个 token。
元数据用于追踪或标识请求的对象。
Response
消息的唯一标识符
对象类型,固定为
message角色类型,固定为
assistant实际使用的模型名称
停止原因可能的值:
end_turn- 自然结束max_tokens- 达到最大 token 限制stop_sequence- 遇到停止序列tool_use- 工具使用
触发停止的序列(如果有)
使用示例
单次对话
{
"model": "claude-sonnet-4.5",
"max_tokens": 1024,
"messages": [
{"role": "user", "content": "解释一下量子计算"}
]
}
多轮对话
{
"model": "claude-sonnet-4.5",
"max_tokens": 1024,
"messages": [
{"role": "user", "content": "你好"},
{"role": "assistant", "content": "你好!我是Claude。"},
{"role": "user", "content": "能解释一下AI吗?"}
]
}
使用系统提示词
{
"model": "claude-sonnet-4.5",
"max_tokens": 1024,
"system": "你是一位经验丰富的数据科学家,专长包括统计分析和机器学习。",
"messages": [
{"role": "user", "content": "如何选择合适的机器学习算法?"}
]
}
预填充响应
{
"model": "claude-sonnet-4.5",
"max_tokens": 1024,
"messages": [
{"role": "user", "content": "列出5个Python最佳实践"},
{"role": "assistant", "content": "以下是5个Python最佳实践:\n\n1."}
]
}
⌘I
curl -X POST https://www.qingbo.dev/v1/messages \
-H "Authorization: Bearer YOUR_API_KEY" \
-H "Content-Type: application/json" \
-H "anthropic-version: 2023-06-01" \
-d '{
"model": "claude-sonnet-4.5",
"max_tokens": 1024,
"system": "你是一个专业的AI助手。",
"messages": [
{
"role": "user",
"content": "解释一下冒泡排序算法。"
}
]
}'
import anthropic
client = anthropic.Anthropic(
base_url="https://www.qingbo.dev/v1",
api_key="YOUR_API_KEY"
)
message = client.messages.create(
model="claude-sonnet-4.5",
max_tokens=1024,
system="你是一个专业的AI助手。",
messages=[
{"role": "user", "content": "解释一下冒泡排序算法。"}
]
)
print(message.content[0].text)
import Anthropic from '@anthropic-ai/sdk';
const client = new Anthropic({
baseURL: 'https://www.qingbo.dev/v1',
apiKey: 'YOUR_API_KEY'
});
const message = await client.messages.create({
model: 'claude-sonnet-4.5',
max_tokens: 1024,
system: '你是一个专业的AI助手。',
messages: [
{ role: 'user', content: '解释一下冒泡排序算法。' }
]
});
console.log(message.content[0].text);
package main
import (
"bytes"
"encoding/json"
"fmt"
"io"
"net/http"
)
func main() {
payload := map[string]interface{}{
"model": "claude-sonnet-4.5",
"max_tokens": 1024,
"system": "你是一个专业的AI助手。",
"messages": []map[string]string{
{"role": "user", "content": "解释一下冒泡排序算法。"},
},
}
body, _ := json.Marshal(payload)
req, _ := http.NewRequest("POST", "https://www.qingbo.dev/v1/messages", bytes.NewBuffer(body))
req.Header.Set("Authorization", "Bearer YOUR_API_KEY")
req.Header.Set("Content-Type", "application/json")
req.Header.Set("anthropic-version", "2023-06-01")
resp, err := http.DefaultClient.Do(req)
if err != nil {
panic(err)
}
defer resp.Body.Close()
result, _ := io.ReadAll(resp.Body)
fmt.Println(string(result))
}
import java.net.http.*;
import java.net.URI;
public class Main {
public static void main(String[] args) throws Exception {
String payload = """
{
"model": "claude-sonnet-4.5",
"max_tokens": 1024,
"system": "你是一个专业的AI助手。",
"messages": [
{"role": "user", "content": "解释一下冒泡排序算法。"}
]
}
""";
HttpClient client = HttpClient.newHttpClient();
HttpRequest request = HttpRequest.newBuilder()
.uri(URI.create("https://www.qingbo.dev/v1/messages"))
.header("Authorization", "Bearer YOUR_API_KEY")
.header("Content-Type", "application/json")
.header("anthropic-version", "2023-06-01")
.POST(HttpRequest.BodyPublishers.ofString(payload))
.build();
HttpResponse<String> response = client.send(request,
HttpResponse.BodyHandlers.ofString());
System.out.println(response.body());
}
}
{
"id": "msg_013Zva2CMHLNnXjNJJKqJ2EF",
"type": "message",
"role": "assistant",
"content": [
{
"type": "text",
"text": "你好!我是Claude。很高兴见到你。"
}
],
"model": "claude-sonnet-4.5",
"stop_reason": "end_turn",
"stop_sequence": null,
"usage": {
"input_tokens": 12,
"output_tokens": 18
}
}
{
"error": {
"code": 400,
"message": "请求参数无效",
"type": "invalid_request_error"
}
}
{
"error": {
"code": 401,
"message": "身份验证失败,请检查您的API密钥",
"type": "authentication_error"
}
}
{
"error": {
"code": 429,
"message": "请求过于频繁,请稍后再试",
"type": "rate_limit_error"
}
}
{
"error": {
"code": 500,
"message": "服务器内部错误,请稍后重试",
"type": "server_error"
}
}