APIGPT.Cloud - ClaudeAI 开发文档
该 API 可通过我们的沙盒平台提供。这使您有机会在开始技术集成之前评估 Claude 的能力。
01 提示格式化
默认情况下,我们的沙盒将正确处理类似“天空为什么是蓝色的?”这样的直接问题。然而,当使用API时,您必须按照以下格式设置提示:
\n\nHuman: Why is the sky blue?\n\nAssistant:
请注意每个冒号后面的两个换行符和一个空格,除了最后一个冒号。例如,在代码中使用它:
const userQuestion = "Why is the sky blue?";
const prompt = `\n\nHuman: ${userQuestion}\n\nAssistant:`;
// Send prompt to Claude via API
02 客户端库
我们提供了Python和Typescript(即将推出)的客户端库,使得使用API更加便捷。
Python 库: https://github.com/apigptcloud/anthropic-sdk-python
import os
import anthropic
client = anthropic.Client(os.environ['ANTHROPIC_API_KEY'])
response = client.completion(
prompt=f"{anthropic.HUMAN_PROMPT} How many toes do dogs have?{anthropic.AI_PROMPT}",
model="claude-1",
max_tokens_to_sample=100,
)
print(response)
Typescript 库: https://github.com/apigptcloud/anthropic-sdk-typescript
import "dotenv/config";
import { AI_PROMPT, Client, HUMAN_PROMPT } from "@anthropic-ai/sdk";
const apiKey = process.env.ANTHROPIC_API_KEY;
if (!apiKey) {
throw new Error("The ANTHROPIC_API_KEY environment variable must be set");
}
const client = new Client(apiKey);
client
.complete({
prompt: `${HUMAN_PROMPT} How many toes do dogs have?${AI_PROMPT}`,
max_tokens_to_sample: 200,
model: "claude-1",
})
.then((finalSample) => {
console.log(finalSample.completion);
})
.catch((error) => {
console.error(error);
});
03 流式传输
在进行API请求时,您可以设置"stream": true,以使用服务器发送事件(SSE)逐步流式传输响应。如果您使用我们的客户端库,则这些事件的解析将自动处理。但是,如果您正在构建直接的API集成,您需要自己处理这些事件。
流式示范请求
curl --request POST \
--url https://claude.pgpt.cloud/v1/messages \
--header "content-type: application/json" \
--header "x-api-key: $API_KEY" \
--data '
{
"model": "claude-3-opus",
"max_tokens": 1024,
"messages": [
{"role": "user", "content": "Hello, world"}
],
"stream": true
}
'
流式示范请求返回
data: {"type":"message_start","message":{"id":"msg_01SnEiBB4or27kG8YzKWTwKz","type":"message","role":"assistant","model":"claude-3-opus-20240229","content":[],"stop_reason":null,"stop_sequence":null,"usage":{"input_tokens":10,"cache_creation_input_tokens":0,"cache_read_input_tokens":0,"output_tokens":2}} }
data: {"type":"content_block_start","index":0,"content_block":{"type":"text","text":""} }
data: {"type":"content_block_delta","index":0,"delta":{"type":"text_delta","text":"Hello!"} }
data: {"type":"content_block_delta","index":0,"delta":{"type":"text_delta","text":" Hello! How can I assist you today"} }
data: {"type":"content_block_delta","index":0,"delta":{"type":"text_delta","text":" Hello! How can I assist you today?"} }
data: {"type":"content_block_stop","index":0 }
data: {"type":"message_delta","delta":{"stop_reason":"end_turn","stop_sequence":null},"usage":{"output_tokens":12} }
data: {"type":"message_stop" }
data: [DONE]
04 事件
每个事件都包括一个命名的事件类型和相关的JSON数据。
我们可能会偶尔在事件流中发送错误。例如,在高使用期间,您可能会收到一个overloaded_error,这通常对应于非流式上下文中的HTTP 529:
data: {"type":"message_start","message":{"id":"msg_01SnEiBB4or27kG8YzKWTwKz","type":"message","role":"assistant","model":"claude-3-opus-20240229","content":[],"stop_reason":null,"stop_sequence":null,"usage":{"input_tokens":10,"cache_creation_input_tokens":0,"cache_read_input_tokens":0,"output_tokens":2}} }
event: error
data: {"error": {"type": "overloaded_error", "message": "Overloaded"}}
05 模型
我们目前提供两个模型系列,两者都支持10万个标记的上下文窗口:
- Claude-instant:低延迟,高吞吐量
- Claude:在需要复杂推理的任务中表现出色
在向我们的 Claude API 发送请求时,您必须使用模型参数指定要执行完成的模型。我们建议您指定最新的主要版本,这样您将在发布更新时自动获得模型的更新。或者,如果您依赖于精确的输出形状,您可以指定完整的模型版本。
有关模型更多详细信息,请参见模型。
06 Messages API
发送结构化输入消息列表,模型将生成对话中的下一条消息。
Messages API 可用于单次查询或无状态多轮对话。
API - Create a completion
创建一个补全
import requests
url = 'https://claude.pgpt.cloud/v1/messages'
api_key = 'your_api_key'
headers = {'x-api-key': api_key}
payload = {
"model": "claude-3-opus",
"max_tokens": 1024,
"messages": [
{"role": "user", "content": "Hello, world"}
],
"stream": True
}
res = requests.post(url, json=payload, headers=headers, stream=True)
for chunk in res.iter_content(chunk_size=1024):
print(chunk.decode('utf-8'))
POST https://claude.pgpt.cloud/v1/messages
Request body
参数 - model string
Required
将会完成您的提示的模型。
当 model
参数未指定或提供的模型不在下面的模型列表中时,则默认为 claude-3-haiku
。
APIGPT ClaudeAI 目前支持的模型包括并不限于下列:
model | 描述 |
---|---|
claude-3-opus | 顶级智力、流利程度和理解力 |
claude-3-haiku | 快速、准确的目标表现 |
claude-3.5-haiku | Claude最快的模型 |
claude-3.7-sonnet | Claude最智能的模型,具有高水平的智能和能力,以及可切换的扩展思维 |
参数 - messages object[]
Required
输入的消息。
创建新消息时,您可以使用 messages
参数指定之前的对话轮次,然后模型会生成对话中的下一条消息。请求中连续的用户或助手轮次将被合并为一个轮次。
每条输入消息都必须是一个具有角色和内容的对象。您可以指定一条用户(user
)角色消息,也可以包含多条用户(user
)和助手(assistant
)消息。
如果最后一条消息使用了 assistant
角色,则响应内容将立即延续该消息的内容。这可以用来限制模型的部分响应。
单个
user
消息的示例:
[{"role": "user", "content": "Hello, Claude"}]
具有多个对话轮次的示例:
[
{"role": "user", "content": "Hello there."},
{"role": "assistant", "content": "Hi, I'm Claude. How can I help you?"},
{"role": "user", "content": "Can you explain LLMs in plain English?"},
]
每条输入消息的内容可以是单个字符串,也可以是内容块的数组,其中每个块都有特定的类型。使用字符串作为内容,相当于使用一个包含“文本”类型内容块的数组。
使用内容块的消息示例:
{"role": "user", "content": [{"type": "text", "text": "Hello, Claude"}]}
参数 - max_tokens integer
required
停止前最多可生成的 token 数量。
请注意,我们的模型可能在达到此最大值之前停止。此参数仅指定要生成的 token 数量的绝对最大值。
不同模型对此参数的最大值有不同的要求。
model | Max tokens |
---|---|
claude-3-opus | 4096 |
claude-3-haiku | 4096 |
claude-3.5-haiku | 8192 |
claude-3.7-sonnet | 6400 |
参数 - stop_sequences array of strings
会导致模型停止生成的自定义文本序列。
我们的模型通常会在自然完成其轮次后停止,这将导致响应 stop_reason
为“end_turn”。
如果您希望模型在遇到自定义文本字符串时停止生成,可以使用 stop_sequences
参数。如果模型遇到其中一个自定义序列,响应 stop_reason
值将为“stop_sequence”,并且响应 stop_sequence
值将包含匹配的停止序列。
参数 - temperature number
注入响应中的随机性量。
默认值为 1.0。范围为 0.0 到 1.0。对于分析性/多项选择题,使用接近 0.0 的温度;对于创造性和生成性任务,使用接近 1.0 的温度。
请注意,即使温度为 0.0,结果也并非完全确定。
参数 - top_p number
使用核心采样。
在核心采样中,我们按减少的概率顺序计算每个后续标记的所有选项的累积分布,并在达到由top_p指定的特定概率时将其截断。您应该更改温度或top_p,但不能两者同时更改。
参数 - top_k integer
只从每个后续标记的前K个选项中进行采样。
用于删除“长尾”低概率响应。在此处了解更多技术细节。
参数 - metadata object
描述请求元数据的对象。
user_id字符串 与请求相关联的用户的外部标识符。
这应该是uuid、哈希值或其他不透明标识符。Anthropic可能使用此id来帮助检测滥用行为。不要包括任何识别信息,例如姓名、电子邮件地址或电话号码。
参数 - stream boolean
是否使用服务器发送事件逐步流式传输响应,见上面流式传输章节。
07 Completions API (Legacy)
ClaudeAI 补全API
API - Create a completion
POST https://claude.pgpt.cloud/v1/complete
创建一个补全
Request body
参数 - model string
Required
将会完成您的提示的模型。
随着我们改进 Claude,我们会开发新的版本供您查询。这个参数控制着 Claude 回答您请求的版本。目前我们提供两个模型系列:Claude 和 Claude-instant。您可以通过将模型设置为“claude-2”或“claude-instant-1”来使用它们。有关更多详细信息,请参见模型。
参数 - prompt blob
Required
您想让Claude完成的提示。
为了生成适当的响应,您需要按照以下格式设置您的提示,就像我们在上面提示格式化章节介绍的一样:
const userQuestion = r"Why is the sky blue?";
const prompt = `\n\nHuman: ${userQuestion}\n\nAssistant:`;
参数 - max_tokens_to_sample integer
required
在停止生成之前生成的最大标记数。
请注意,我们的模型可能在达到此最大值之前就停止。此参数仅指定要生成的绝对最大标记数。
参数 - stop_sequences array of strings
会导致模型停止生成完整文本的序列。
我们的模型会在"\n\nHuman:"处停止,将来可能会包括其他内置的停止序列。通过提供stop_sequences参数,您可以包括其他字符串,这些字符串将导致模型停止生成。
参数 - temperature number
注入响应中的随机性量。
默认为1。范围从0到1。将temp设置得更接近0可用于分析/多选题,而将其设置得更接近1可用于创造性和生成性任务。
参数 - top_p number
使用核心采样。
在核心采样中,我们按减少的概率顺序计算每个后续标记的所有选项的累积分布,并在达到由top_p指定的特定概率时将其截断。您应该更改温度或top_p,但不能两者同时更改。
参数 - top_k integer
只从每个后续标记的前K个选项中进行采样。
用于删除“长尾”低概率响应。在此处了解更多技术细节。
参数 - metadata object
描述请求元数据的对象。
user_id字符串 与请求相关联的用户的外部标识符。
这应该是uuid、哈希值或其他不透明标识符。Anthropic可能使用此id来帮助检测滥用行为。不要包括任何识别信息,例如姓名、电子邮件地址或电话号码。
参数 - stream boolean
是否使用服务器发送事件逐步流式传输响应,见上面流式传输章节。
错误代码
Error Code | Meaning |
---|---|
400 | Invalid request: there was an issue with the format or content of your request. |
401 | Unauthorized: there's an issue with your API key. |
403 | Forbidden: your API key does not have permission to use the specified resource. |
404 | Not found: the requested resource was not found. |
429 | Your account has hit a rate limit. |
500 | An unexpected error has occurred internal to Anthropic's systems. |
529 | Your API is temporarily overloaded. |
When receiving a streaming response via SSE, it's possible that an error can occur after returning a 200 response, in which case error handling wouldn't follow these standard mechanisms.