PAYATHON 2026

Raku 是否有用于 Anthropic 的 SDK?

AI 小顾

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 接入通常更省事。

备注:内容仅供参考。