Raku 是否有用于 Anthropic 的 SDK?
Raku 有官方 Anthropic SDK 吗?
根据 Anthropic 官方 SDK 文档,目前列出的官方 SDK 中没有 Raku,也就没有与 Python、Ruby 对应的官方 Raku SDK。这个列表不能说明社区里没有第三方实现。
如果需要官方维护的 SDK,可以用 Python 或 Ruby SDK 提供接口,再由 Raku 调用。也可以在 Raku 中使用 HTTP 客户端直接调用 Claude API。
如何查找社区实现?
可以在 Raku 模块目录中查找,也可以使用 zef 搜索:
zef search Anthropic
zef search Claude
搜索结果只能作为候选。采用之前,应检查项目维护者、最近更新和 Messages API 支持情况,以及项目是否处理超时、错误和流式响应。名称中包含 Anthropic 或 Claude,并不代表项目由 Anthropic 官方维护。
没有专用 SDK 时如何调用?
Claude API 提供 POST /v1/messages,可以通过 HTTPS 发送 JSON 请求,无须依赖专用语言 SDK。接口和字段以 Messages API 文档为准。
下面使用 HTTP::UserAgent 和 JSON::Fast 演示基本接入。先安装依赖:
zef install HTTP::UserAgent JSON::Fast
在运行环境中设置 ANTHROPIC_API_KEY,并将 ANTHROPIC_MODEL 设置为账户实际可用的模型 ID,再运行:
use HTTP::UserAgent;
use HTTP::Request;
use JSON::Fast;
my $key = %*ENV<ANTHROPIC_API_KEY>
// die 'Missing ANTHROPIC_API_KEY';
my $model = %*ENV<ANTHROPIC_MODEL>
// die 'Missing ANTHROPIC_MODEL';
my $request = HTTP::Request.new(
POST => 'https://api.anthropic.com/v1/messages'
);
$request.header('x-api-key' => $key);
$request.header('anthropic-version' => '2023-06-01');
$request.header('Content-Type' => 'application/json');
$request.add-content(to-json({
model => $model,
max_tokens => 256,
messages => [
{ role => 'user', content => 'Hello, Claude!' }
]
}));
my $ua = HTTP::UserAgent.new;
$ua.timeout = 60;
my $response = $ua.request($request);
die $response.status-line unless $response.is-success;
say $response.content;
示例显式构造 HTTP::Request 来发送 JSON。HTTP::UserAgent 文档中的 post 表单重载使用表单编码,不宜直接用来代替 JSON 请求。相关用法见模块文档。
接入时需要注意什么?
示例使用的 anthropic-version: 2023-06-01 仍在官方文档中展示。API 版本和模型 ID 是不同的配置,接入时应分别核对。示例只展示一次普通请求,未使用实际密钥验证,也未实现自动重试或流式解析。
自行封装 HTTP 调用时,需要按业务需求补充错误处理、限流重试和响应解析。如果希望减少这些维护工作,通过已有官方 SDK 接入通常更省事。
备注:内容仅供参考。
