# SDK とフレームワーク

NezhaGate は OpenAI 互換 API と Anthropic API の両方を提供しているため、公式 SDK は新しいベース URL とキーを設定するだけで使えます。

> https://nezhagate.com/ja/docs/integrations/sdks

## 2 つのベース URL

| プロトコル | Base URL | 用途 |
| --- | --- | --- |
| OpenAI | `https://nezhagate.com/v1` | すべての対話モデル、および画像・動画のエンドポイント |
| Anthropic | `https://nezhagate.com/anthropic` | Claude モデル（Anthropic SDK が自動で `/v1/messages` を付け加えます） |

サンプルコードは `NEZHAGATE_API_KEY` 環境変数からキーを読み取ります。キーをコードに直接書かないでください。

## OpenAI SDK

```
import os
from openai import OpenAI

client = OpenAI(base_url="https://nezhagate.com/v1", api_key=os.environ["NEZHAGATE_API_KEY"])
r = client.chat.completions.create(
    model="gpt-5.5",
    messages=[{"role": "user", "content": "Hello"}],
)
print(r.choices[0].message.content)
```

```
import OpenAI from "openai";

const client = new OpenAI({ baseURL: "https://nezhagate.com/v1", apiKey: process.env.NEZHAGATE_API_KEY });
const r = await client.chat.completions.create({
  model: "gpt-5.5",
  messages: [{ role: "user", content: "Hello" }],
});
console.log(r.choices[0].message.content);
```

OpenAI SDK は `OPENAI_BASE_URL` と `OPENAI_API_KEY` の環境変数も読み取ります。`client.responses.create(...)` は Responses API を呼び出すもので、GPT モデルだけに対応しています。

## Anthropic SDK

```
import os
from anthropic import Anthropic

client = Anthropic(base_url="https://nezhagate.com/anthropic", api_key=os.environ["NEZHAGATE_API_KEY"])
m = client.messages.create(
    model="claude-sonnet-5",
    max_tokens=1024,
    messages=[{"role": "user", "content": "Hello"}],
)
print(next(b.text for b in m.content if b.type == "text"))
```

```
import Anthropic from "@anthropic-ai/sdk";

const client = new Anthropic({ baseURL: "https://nezhagate.com/anthropic", apiKey: process.env.NEZHAGATE_API_KEY });
const msg = await client.messages.create({
  model: "claude-sonnet-5",
  max_tokens: 1024,
  messages: [{ role: "user", content: "Hello" }],
});
const first = msg.content[0];
if (first.type === "text") console.log(first.text);
```

`base_url` は `/v1` を付けずに `/anthropic` までにしてください。`ANTHROPIC_BASE_URL` と `ANTHROPIC_API_KEY` の環境変数も使えます。

## LangChain

```
import os
from langchain_openai import ChatOpenAI

llm = ChatOpenAI(
    model="gpt-5.5",
    base_url="https://nezhagate.com/v1",
    api_key=os.environ["NEZHAGATE_API_KEY"],
    use_responses_api=False,
    stream_usage=True,
)
print(llm.invoke("Hello").content)
```

```
import { ChatOpenAI } from "@langchain/openai";

const llm = new ChatOpenAI({
  model: "gpt-5.5",
  apiKey: process.env.NEZHAGATE_API_KEY,
  configuration: { baseURL: "https://nezhagate.com/v1" },
  useResponsesApi: false,
});
console.log((await llm.invoke("Hello")).content);
```

LangChain は、一部の GPT モデルや特定のパラメータを使ったリクエストを、自動で Responses API に切り替えることがあります。`use_responses_api=False`（JavaScript では `useResponsesApi: false`）にすると、対話エンドポイントのままになります。カスタムの `base_url` を設定している場合、ストリーミングで使用量を受け取るには `stream_usage=True` を指定する必要があります。

## Vercel AI SDK

```
import { createOpenAI } from "@ai-sdk/openai";
import { generateText } from "ai";

const gw = createOpenAI({ baseURL: "https://nezhagate.com/v1", apiKey: process.env.NEZHAGATE_API_KEY });
const { text } = await generateText({ model: gw.chat("gpt-5.5"), prompt: "Hello" });
console.log(text);
```

AI SDK 5 以降、`gw("model-id")` は Responses API を使います。`gw.chat("model-id")` は対話エンドポイントを使い、すべてのモデルで動きます。`@ai-sdk/anthropic` を使う場合は、baseURL を `https://nezhagate.com/anthropic/v1`（`/v1` を含む）に設定してください。

## よくあるエラー

**OpenAI SDK で 404 になる**

`base_url` に `/v1` が付いていません。`https://nezhagate.com/v1` としてください。

**Anthropic SDK で 404 になる**

`base_url` が `/v1` で終わっているため、リクエストが `/anthropic/v1/v1/messages` に送られてしまいます。`/anthropic` までにしてください。

**フレームワーク経由で GPT 以外のモデルが失敗する**

フレームワークが Responses API に切り替えてしまった可能性があります。このエンドポイントは GPT モデルだけに対応しています。LangChain では `use_responses_api=False` を設定し、Vercel AI SDK では `gw.chat(...)` を使ってください。
