التوثيق
الاتصال

OpenAI SDK

Markdown

تعمل مكتبات OpenAI الرسمية لـPython وNode.js مع Ailoot دون تعديل الكود؛ يتغير العنوان والمفتاح فقط.

الدليل الكامل

التثبيت

pip install openai

الاتصال

حدد العنوان الأساسي https://api.ailoot.ai/v1. يمكن تحديده في الكود أو عبر المتغيرات OPENAI_BASE_URL و OPENAI_API_KEY — وعندئذ لا يتغير الكود إطلاقاً.

from openai import OpenAI
import os

client = OpenAI(max_retries=0, 
    base_url="https://api.ailoot.ai/v1",
    api_key=os.environ["AILOOT_API_KEY"],
)

resp = client.chat.completions.create(
    model="claude-sonnet-5-5",
    messages=[{"role": "user", "content": "اشرح في جملتين ما هي API."}],
)
print(resp.choices[0].message.content)

Responses API

صيغة OpenAI الجديدة. تتوفر لدى النماذج التي يذكر الكتالوج أنها تدعم Responses (53 معرّفات تشمل Claude وGPT وDeepSeek وQwen وKimi وGLM).

resp = client.responses.create(
    model="gpt-6.1-sol",
    instructions="أجب بإيجاز وبما يتصل بالموضوع.",
    input="ما الفرق بين TCP و UDP؟",
)
print(resp.output_text)

الأدوات (function calling)

tools = [{
    "type": "function",
    "function": {
        "name": "get_weather",
        "description": "الطقس في المدينة",
        "parameters": {
            "type": "object",
            "properties": {"city": {"type": "string"}},
            "required": ["city"],
        },
    },
}]

import json

messages = [{"role": "user", "content": "كيف هو الطقس في قازان؟"}]
# عطّل إعادة المحاولة التلقائية: بعد انتهاء المهلة، تحقّق أولًا من Request ID في سجل الاستخدام.
client = client.with_options(max_retries=0)
for turn in range(4):
    resp = client.chat.completions.create(
        model="claude-sonnet-5-5", messages=messages, tools=tools,
    )
    message = resp.choices[0].message
    messages.append(message.model_dump(exclude_none=True))
    if not message.tool_calls:
        print(message.content)
        break
    for call in message.tool_calls:
        if call.function.name != "get_weather":
            raise ValueError("Unexpected function")
        arguments = json.loads(call.function.arguments)
        # استبدلها بدالة الطقس الخاصة بك؛ بيانات هذا المثال توضيحية صراحةً.
        result = {"city": arguments["city"], "temperature_c": 20, "demo": True}
        messages.append({"role": "tool", "tool_call_id": call.id,
                         "content": json.dumps(result, ensure_ascii=False)})
else:
    raise RuntimeError("Tool loop limit reached")

التضمينات

emb = client.embeddings.create(
    model="nvidia/nemotron-3-embed-1b",
    input=["المستند الأول", "المستند الثاني"],
)
print(len(emb.data), len(emb.data[0].embedding))

صور الإدخال

resp = client.chat.completions.create(
    model="gpt-6.1-sol",
    messages=[{
        "role": "user",
        "content": [
            {"type": "text", "text": "ما الذي يظهر في هذه الصورة؟"},
            {"type": "image_url", "image_url": {"url": "https://example.com/photo.jpg"}},
        ],
    }],
)

معالجة الأخطاء

تأتي أخطاء Ailoot بصيغة OpenAI، فتتعامل معها استثناءات SDK القياسية. يتضمن النص Request ID.

import openai

try:
    resp = client.chat.completions.create(model="claude-sonnet-5-5", messages=[{"role": "user", "content": "مرحبًا"}])
except openai.APIStatusError as e:
    print(e.status_code, e.response.json()["error"]["code"])
    print(e.response.headers.get("x-request-id"))
هل لديك أسئلة أخرى؟ أرسل Request ID ووصفاً للمشكلة وسنساعدك على فهمها.مراسلة الدعم