هر کتابخانهای که با OpenAI کار میکند با نِت اَرز کار میکند؛ فقط آدرس پایه و کلید را بدهید. نمونههای زیر همگی همین دو مقدار را تنظیم میکنند.
نسخهٔ کامل این نمونهها، بهعلاوهٔ LangChain، n8n، ربات تلگرام و یک نمونهٔ جدا برای هر خانوادهٔ مدل (OpenAI، Claude، Gemini و DeepSeek)، در مخزن netarz/ai-api-examples است. بقیهٔ مخزنهای کد باز نِت اَرز را در صفحهٔ کد باز معرفی کردهایم.
SDKهای رسمی OpenAI
# pip install openai
from openai import OpenAI
client = OpenAI(base_url="https://netarz.ir/api/ai/v1", api_key="sk-ntz-v1-...")
r = client.chat.completions.create(
model="gpt-4o-mini",
messages=[{"role": "user", "content": "سلام، خودتان را معرفی کنید."}],
)
print(r.choices[0].message.content)
// npm install openai
import OpenAI from "openai";
const client = new OpenAI({ baseURL: "https://netarz.ir/api/ai/v1", apiKey: process.env.NETARZ_API_KEY });
const r = await client.chat.completions.create({
model: "gpt-4o-mini",
messages: [{ role: "user", content: "سلام، خودتان را معرفی کنید." }],
});
console.log(r.choices[0].message.content);
import OpenAI from "openai";
import type { ChatCompletionMessageParam } from "openai/resources/chat/completions";
const client = new OpenAI({ baseURL: "https://netarz.ir/api/ai/v1", apiKey: process.env.NETARZ_API_KEY! });
const messages: ChatCompletionMessageParam[] = [{ role: "user", content: "سلام، خودتان را معرفی کنید." }];
// Claude فقط از مسیر OpenRouter صدا زده میشود؛ اتصال مستقیم Anthropic باز نیست.
const r = await client.chat.completions.create({ model: "openrouter/anthropic/claude-haiku-4.5", messages, max_tokens: 200 });
console.log(r.choices[0].message.content);
// composer require openai-php/client (یا با Http facade لاراول — پایین)
$client = OpenAI::factory()
->withApiKey(env('NETARZ_API_KEY'))
->withBaseUri('https://netarz.ir/api/ai/v1')
->make();
$result = $client->chat()->create([
'model' => 'gpt-4o-mini',
'messages' => [['role' => 'user', 'content' => 'سلام، خودتان را معرفی کنید.']],
]);
echo $result->choices[0]->message->content;
// Laravel Http facade — بدون پکیج اضافه
$response = Http::withToken(env('NETARZ_API_KEY'))->timeout(120)
->post('https://netarz.ir/api/ai/v1/chat/completions', [
'model' => 'gpt-4o-mini',
'messages' => [['role' => 'user', 'content' => 'سلام، خودتان را معرفی کنید.']],
]);
echo $response->json('choices.0.message.content');
// go get github.com/openai/openai-go
package main
import (
"context"
"fmt"
"github.com/openai/openai-go"
"github.com/openai/openai-go/option"
)
func main() {
client := openai.NewClient(
option.WithBaseURL("https://netarz.ir/api/ai/v1"),
option.WithAPIKey("sk-ntz-v1-..."),
)
resp, err := client.Chat.Completions.New(context.TODO(), openai.ChatCompletionNewParams{
Model: "gpt-4o-mini",
Messages: []openai.ChatCompletionMessageParamUnion{
openai.UserMessage("سلام، خودتان را معرفی کنید."),
},
})
if err != nil {
panic(err)
}
fmt.Println(resp.Choices[0].Message.Content)
}
curl https://netarz.ir/api/ai/v1/chat/completions \
-H "Authorization: Bearer $NETARZ_API_KEY" \
-H "Content-Type: application/json" \
-d '{"model": "gpt-4o-mini", "messages": [{"role": "user", "content": "سلام، خودتان را معرفی کنید."}]}'
SDKهای رسمی پایتون و Node مقادیر OPENAI_API_KEY و OPENAI_BASE_URL را خودشان میخوانند؛ میتوانید بدون تغییر کد فقط این دو را تنظیم کنید.
فریمورکها و ابزارهای بدون کد
# pip install langchain-openai
from langchain_openai import ChatOpenAI, OpenAIEmbeddings
llm = ChatOpenAI(
base_url="https://netarz.ir/api/ai/v1",
api_key="sk-ntz-v1-...",
model="gpt-4o-mini", # یا openrouter/anthropic/claude-sonnet-4.5، gemini-3.5-flash، …
max_tokens=500,
)
print(llm.invoke("سلام، خودتان را معرفی کنید.").content)
embeddings = OpenAIEmbeddings(
base_url="https://netarz.ir/api/ai/v1",
api_key="sk-ntz-v1-...",
model="text-embedding-3-small",
)
// npm install ai @ai-sdk/openai
import { createOpenAI } from "@ai-sdk/openai";
import { generateText, streamText } from "ai";
const netarz = createOpenAI({
baseURL: "https://netarz.ir/api/ai/v1",
apiKey: process.env.NETARZ_API_KEY,
});
const { text } = await generateText({
model: netarz.chat("gpt-4o-mini"), // .chat → Chat Completions (برای همهٔ ارائهدهندگان)
prompt: "سلام، خودتان را معرفی کنید.",
});
console.log(text);
// استریم در Next.js Route Handler
export async function POST(req: Request) {
const { messages } = await req.json();
const result = streamText({ model: netarz.chat("openrouter/anthropic/claude-haiku-4.5"), messages });
return result.toTextStreamResponse();
}
# pip install llama-index llama-index-llms-openai-like llama-index-embeddings-openai
from llama_index.llms.openai_like import OpenAILike
from llama_index.embeddings.openai import OpenAIEmbedding
llm = OpenAILike(
api_base="https://netarz.ir/api/ai/v1",
api_key="sk-ntz-v1-...",
model="gpt-4o-mini",
is_chat_model=True,
is_function_calling_model=True,
)
print(llm.complete("سلام، خودتان را معرفی کنید."))
embed_model = OpenAIEmbedding(
api_base="https://netarz.ir/api/ai/v1",
api_key="sk-ntz-v1-...",
model="text-embedding-3-small",
)
n8n → Settings → Credentials → New → "OpenAI"
API Key : sk-ntz-v1-...
Base URL : https://netarz.ir/api/ai/v1
نود «OpenAI Chat Model» (برای AI Agent / Basic LLM Chain) یا نود «OpenAI»
Credential : همان credential بالا
Model : gpt-4o-mini ← هر شناسهٔ دیگری را هم دستی مینویسید؛ مثلاً openrouter/anthropic/claude-sonnet-4.5
نود «Embeddings OpenAI» هم با همین credential کار میکند (model: text-embedding-3-small).
سایر ابزارها
| ابزار | کجا تنظیم کنید |
|---|---|
| Dify | Model Provider → OpenAI-API-compatible → API endpoint URL = https://netarz.ir/api/ai/v1 |
| Flowise | ChatOpenAI Custom → Base Path = https://netarz.ir/api/ai/v1 |
| Open WebUI | Settings → Connections → OpenAI API → URL = https://netarz.ir/api/ai/v1 |
| Cursor | Settings → Models → Override OpenAI Base URL = https://netarz.ir/api/ai/v1 (+ نام مدل دلخواه) |
| Continue (VS Code) | provider: openai، apiBase: https://netarz.ir/api/ai/v1 |
| LibreChat / AnythingLLM / Chatbox | Custom OpenAI-compatible endpoint با همان base URL |
| Home Assistant، Zapier، Make | ماژول OpenAI با گزینهٔ Base URL سفارشی (یا ماژول HTTP عمومی) |
در همهٔ این ابزارها شناسهٔ هر مدلی از فهرست مدلها را وارد میکنید. شناسهٔ Claude و بقیهٔ مدلهای OpenRouter با openrouter/ شروع میشود؛ قاعدهٔ کامل در مدلها و قیمتها.
نکات عمومی
- برای مدلهای استدلالی یا پاسخهای بلند، timeout کلاینت را بالا ببرید (۱۲۰ ثانیه یا بیشتر) و ترجیحاً از استریم استفاده کنید.
- SDKهای رسمی روی خطاهای ۴۲۹ و ۵xx تلاش مجدد خودکار دارند؛ برای ۴۰۲ (اعتبار) تلاش مجدد بیفایده است — هشدار شارژ بگذارید.
- هدر
X-Request-Idرا در لاگهای خودتان ذخیره کنید تا پیگیری با پشتیبانی آسان باشد.