前提条件:SDKの設定
接続を設定する前にお好みの言語の公式クライアントライブラリをインストールしてください。ライブラリはJSONシリアライズ、リトライ、ストリーミングプロトコルを自動で処理します。
Pythonではpipでパッケージをインストールします。Node.jsではnpmまたはyarnを使用して、プロジェクトに依存関係を追加します。
関数呼び出しやJSONモードなど、すべての機能をサポートするために、SDKの最新バージョンを使用してください。
構成: ベース URL & キー
SDKクライアントを特定のベースURLにポイントし、サインアップ時に取得したAPIキーを提供してください。
ベースURLは HTTPS://api.claudellmapi.com/v1 です。これにより、すべてのリクエストがデフォルトのプロバイダーではなく、当社の無制限モデルサーバーに送信されます。
APIキーを環境変数として設定するか、クライアントコンストラクタに直接渡します。追加のヘッダーは必要ありません。
最初のリクエストを送信する
接続性と応答品質を確認するための簡単なチャット完了リクエストを送信します。制限のないモデルにアクセスするには、モデルID 'uncensored' を使用してください。
リクエストの構造は標準的なOpenAI形式と一致しており、既存の統合を簡単に置き換えることができます。
モデルの回答を含むテキストレスポンスを期待してください。
ストリーミングレスポンスの処理
生成されるトークンを受信するためにストリーミングを有効にし、長い出力の知覚されるレイテンシを軽減します。
リクエストにstreamパラメータをtrueに設定してください。SDKは利用可能になった時点でテキストチャンクをイテレートします。
これはモデルがまだ思考している間に即時フィードバックを期待するユーザーがいるチャットインターフェースに最適です。
関数呼び出しの実装
プレーンテキストの代わりに構造化データを返すためにモデルにリクエストにツールを定義します。
関数のスキーマを指定し、tool_choice を 'auto' または特定の関数名に設定します。
このモデルは、コードで実行できる関数呼び出しオブジェクトを返します。これは当社のuncensoredモデルとシームレスに連携します。
エラー処理と制限
滑らかなユーザーエクスペリエンスを維持するために、一般的なHTTPエラーを適切に処理してください。401ステータスはAPIキーが無効または未設定であることを示します。402ステータスはプリペイドクレジットが枯渇したことを意味します。429ステータスは、1分あたり300リクエストのレートリミット超過を示します。
あなたのコンテキストウィンドウは、プロンプトと補完を合わせて100,000トークンです。8 MBのボディ制限を超えるリクエストも失敗します。
cURL
curl https://api.claudellmapi.com/v1/chat/completions \
-H "Authorization: Bearer $API_KEY" \
-H "Content-Type: application/json" \
-d '{
"model": "uncensored",
"messages": [{"role": "user", "content": "What are the current rate limits for large context windows"}]
}'Python
from openai import OpenAI
client = OpenAI(base_url="https://api.claudellmapi.com/v1", api_key="YOUR_KEY")
resp = client.chat.completions.create(
model="uncensored",
messages=[{"role": "user", "content": "Summarise this thread without softening it."}],
)
print(resp.choices[0].message.content)Node.js
import OpenAI from "openai";
const client = new OpenAI({ baseURL: "https://api.claudellmapi.com/v1", apiKey: process.env.API_KEY });
const resp = await client.chat.completions.create({
model: "uncensored",
messages: [{ role: "user", content: "Draft a villain monologue for my game." }],
});
console.log(resp.choices[0].message.content);ストリーミング
stream = client.chat.completions.create(
model="uncensored",
messages=[{"role": "user", "content": "Tell the story in second person."}],
stream=True,
)
for chunk in stream:
if chunk.choices and chunk.choices[0].delta.content:
print(chunk.choices[0].delta.content, end="", flush=True)