Open4
Claude OpusをDenoから使ってみる
アカウント作成からAPIキー作成まで
- https://console.anthropic.com/create にアクセスしてアカウントを作る
- ダッシュボードから "Get API Keys" をクリック
- Create Key ボタンをクリック
- APIキーが生成される
動かしてみる
上で入手したAPIキーを AUTHROPIC_API_KEY
という環境変数に入れておく(ここでは .envrc
に書いて direnv でロードしている)
.envrc
export AUTHROPIC_API_KEY='<put your api key>'
適当なファイルを作成し、以下の内容を貼り付ける (ほぼそのまま https://docs.anthropic.com/claude/reference/client-sdks#typescript から持ってきたもの)
main.ts
import Anthropic from "npm:@anthropic-ai/sdk";
const anthropic = new Anthropic({
apiKey: Deno.env.get("ANTHROPIC_API_KEY"),
});
const msg = await anthropic.messages.create({
model: "claude-3-opus-20240229",
max_tokens: 1024,
messages: [{ role: "user", content: "Hello, Claude" }],
});
console.log(msg);
実行してみる
deno run main.ts
いくつか環境変数に対するアクセスとapi.anthropic.com
に対するネットワークアクセスを要求される。すべて妥当な要求なので許可していくと、以下のように「あなたのプランだとそのモデルは使えないよ」(意訳)と言われる
✅ Granted env access to "ANTHROPIC_API_KEY".
✅ Granted env access to "ANTHROPIC_BASE_URL".
✅ Granted env access to "ANTHROPIC_AUTH_TOKEN".
✅ Granted env access to "DEBUG".
✅ Granted net access to "api.anthropic.com".
error: Uncaught (in promise) Error: 400 {"type":"error","error":{"type":"invalid_request_error","message":"Your credit balance is too low to access the Claude API. Please go to Plans & Billing to upgrade or purchase credits."}}
at Function.generate (file:///Users/yusuktan/Library/Caches/deno/npm/registry.npmjs.org/@anthropic-ai/sdk/0.16.1/error.mjs:36:20)
at Anthropic.makeStatusError (file:///Users/yusuktan/Library/Caches/deno/npm/registry.npmjs.org/@anthropic-ai/sdk/0.16.1/core.mjs:256:25)
at Anthropic.makeRequest (file:///Users/yusuktan/Library/Caches/deno/npm/registry.npmjs.org/@anthropic-ai/sdk/0.16.1/core.mjs:299:30)
at eventLoopTick (ext:core/01_core.js:166:7)
at async file:///Users/yusuktan/claude/main.ts:7:13
無料クレジットを取得する
$5分のクレジットが無料で利用可能ということなので、取得する
https://console.anthropic.com/settings/plans で Claim をクリック
電話番号を入力してSMSで届く認証コードを入力
$5のクレジットを入手することができた
再度実行してみる
main.ts
を再度実行してみる。前回の実行でいくつかの環境変数に対するアクセスとapi.anthropic.com
へのネットワークアクセスが要求されることが分かったので、それらを許可するオプションも追加しておく
deno run --allow-env --allow-net=api.anthropic.com main.ts
正しく返答を得ることができた!
{
id: "msg_014L3UxoLjJyF4XrHEE5BAjg",
type: "message",
role: "assistant",
content: [
{
type: "text",
text: "Hello! It's nice to meet you. How can I assist you today?"
}
],
model: "claude-3-opus-20240229",
stop_reason: "end_turn",
stop_sequence: null,
usage: { input_tokens: 10, output_tokens: 19 }
}