الانتقال إلى المحتوى الرئيسي
POST
/
v1
/
chat
/
completions
from openai import OpenAI
client = OpenAI(
    base_url="https://api.cometapi.com/v1",
    api_key="<COMETAPI_KEY>",
)

completion = client.chat.completions.create(
    model="gpt-5.4",
    messages=[
        {"role": "system", "content": "You are a helpful assistant."},
        {"role": "user", "content": "Hello!"},
    ],
)

print(completion.choices[0].message)
{
  "id": "chatcmpl-DNA27oKtBUL8TmbGpBM3B3zhWgYfZ",
  "object": "chat.completion",
  "created": 1774412483,
  "model": "gpt-4.1-nano-2025-04-14",
  "choices": [
    {
      "index": 0,
      "message": {
        "role": "assistant",
        "content": "Four",
        "refusal": null,
        "annotations": []
      },
      "logprobs": null,
      "finish_reason": "stop"
    }
  ],
  "usage": {
    "prompt_tokens": 29,
    "completion_tokens": 2,
    "total_tokens": 31,
    "prompt_tokens_details": {
      "cached_tokens": 0,
      "audio_tokens": 0
    },
    "completion_tokens_details": {
      "reasoning_tokens": 0,
      "audio_tokens": 0,
      "accepted_prediction_tokens": 0,
      "rejected_prediction_tokens": 0
    }
  },
  "service_tier": "default",
  "system_fingerprint": "fp_490a4ad033"
}

Documentation Index

Fetch the complete documentation index at: https://apidoc.cometapi.com/llms.txt

Use this file to discover all available pages before exploring further.

يقوم CometAPI بتوجيه Chat Completions إلى عدة مزودين — بما في ذلك OpenAI وClaude وGemini — من خلال واجهة واحدة متوافقة مع OpenAI. يمكنك التبديل بين النماذج عبر تغيير المعامل model؛ وتعمل معظم حِزم SDK المتوافقة مع OpenAI عند ضبط base_url على https://api.cometapi.com/v1.
تدعم النماذج المختلفة مجموعات فرعية مختلفة من المعاملات وتُرجع حقول استجابة مختلفة قليلًا. على سبيل المثال، ينطبق reasoning_effort فقط على نماذج الاستدلال (سلسلة o، GPT-5.1+)، وبعض النماذج لا تدعم logprobs أو n > 1.
بالنسبة إلى نماذج OpenAI Pro، ونماذج الاستدلال من سلسلة o، ونماذج Codex، استخدم نقطة النهاية Responses بدلًا من ذلك. تتمتع عائلات النماذج هذه بدعم أكثر اكتمالًا في Responses API.

أدوار الرسائل

RoleDescription
systemيحدد سلوك المساعد وشخصيته. يوضع في بداية المحادثة.
developerيستبدل system للنماذج الأحدث (o1+). يوفّر تعليمات يجب على النموذج اتباعها بغض النظر عن مدخلات المستخدم.
userرسائل من المستخدم النهائي.
assistantردود النموذج السابقة، وتُستخدم للحفاظ على سجل المحادثة.
toolنتائج استدعاءات الأداة/الدالة. يجب أن تتضمن tool_call_id المطابق لاستدعاء الأداة الأصلي.
بالنسبة إلى النماذج الأحدث (GPT-4.1، وسلسلة GPT-5، وسلسلة o)، يُفضّل استخدام developer بدلًا من system لرسائل التعليمات. كلاهما يعمل، لكن developer يوفّر سلوكًا أقوى في اتباع التعليمات.

إرسال إدخال Multimodal

تدعم العديد من النماذج الصور والصوت إلى جانب النص. لإرسال رسائل متعددة الوسائط، استخدم تنسيق المصفوفة لـ content:
{
  "role": "user",
  "content": [
    {"type": "text", "text": "Describe this image"},
    {
      "type": "image_url",
      "image_url": {
        "url": "https://example.com/image.png",
        "detail": "high"
      }
    }
  ]
}
يتحكم المعامل detail في عمق تحليل الصورة:
  • low — أسرع، ويستخدم Tokens أقل (بتكلفة ثابتة)
  • high — تحليل مفصل، مع استهلاك عدد أكبر من Tokens
  • auto — يقرر النموذج (الافتراضي)

بث Responses

لتلقي المخرجات بشكل تدريجي، اضبط stream على true. يتم تسليم الاستجابة على هيئة Server-Sent Events (SSE)، حيث يحتوي كل حدث على كائن chat.completion.chunk:
data: {"id":"chatcmpl-xxx","object":"chat.completion.chunk","choices":[{"index":0,"delta":{"role":"assistant"},"finish_reason":null}]}

data: {"id":"chatcmpl-xxx","object":"chat.completion.chunk","choices":[{"index":0,"delta":{"content":"Hello"},"finish_reason":null}]}

data: {"id":"chatcmpl-xxx","object":"chat.completion.chunk","choices":[{"index":0,"delta":{"content":"!"},"finish_reason":null}]}

data: {"id":"chatcmpl-xxx","object":"chat.completion.chunk","choices":[{"index":0,"delta":{},"finish_reason":"stop"}]}

data: [DONE]
لتضمين إحصاءات استخدام Token في استجابات البث، اضبط stream_options.include_usage على true. تظهر بيانات الاستخدام في الجزء الأخير قبل [DONE].

طلب مخرجات منظّمة

لإجبار النموذج على إرجاع JSON صالح يطابق schema محددًا، استخدم response_format:
{
  "response_format": {
    "type": "json_schema",
    "json_schema": {
      "name": "result",
      "strict": true,
      "schema": {
        "type": "object",
        "properties": {
          "answer": {"type": "string"},
          "confidence": {"type": "number"}
        },
        "required": ["answer", "confidence"],
        "additionalProperties": false
      }
    }
  }
}
يضمن وضع JSON Schema (json_schema) أن يطابق الناتج schema الخاص بك تمامًا. أما وضع JSON Object (json_object) فيضمن فقط JSON صالحًا — ولا يفرض البنية.

استدعاء الأدوات والدوال

لتمكين النموذج من استدعاء دوال خارجية، وفّر تعريفات الأدوات:
{
  "tools": [
    {
      "type": "function",
      "function": {
        "name": "get_weather",
        "description": "Get current weather for a city",
        "parameters": {
          "type": "object",
          "properties": {
            "location": {"type": "string", "description": "City name"}
          },
          "required": ["location"]
        }
      }
    }
  ],
  "tool_choice": "auto"
}
عندما يقرر النموذج استدعاء أداة، سيحتوي الرد على finish_reason: "tool_calls" وستحتوي المصفوفة message.tool_calls على اسم الدالة والوسائط. بعد ذلك تنفّذ الدالة وترسل النتيجة مرة أخرى كرسالة tool مع tool_call_id المطابق.

ملاحظات عبر المزوّدين

ParameterOpenAI GPTClaude (via compat)Gemini (via compat)
temperature0–20–10–2
top_p0–10–10–1
n1–1281 فقط1–8
stopحتى 4حتى 4حتى 5
tools
response_format✅ (json_schema)
logprobs
reasoning_efforto-series, GPT-5.1+❌ (استخدم thinking لـ Gemini native)
  • max_tokens — المعامل القديم. يعمل مع معظم النماذج لكنه مهمل في نماذج OpenAI الأحدث.
  • max_completion_tokens — المعامل الموصى به لنماذج GPT-4.1 وGPT-5 series ونماذج o-series. وهو مطلوب لنماذج reasoning لأنه يتضمن كلًا من output tokens وreasoning tokens.
يتولى CometAPI تلقائيًا معالجة المواءمة عند التوجيه إلى مزوّدين مختلفين.
  • system — دور التعليمات التقليدي. يعمل مع جميع النماذج.
  • developer — قُدّم مع نماذج o1. ويوفر اتباعًا أقوى للتعليمات في النماذج الأحدث. ويعود إلى سلوك system في النماذج الأقدم.
استخدم developer في المشاريع الجديدة التي تستهدف نماذج GPT-4.1+ أو o-series.

الأسئلة الشائعة

كيفية التعامل مع حدود المعدل؟

عند مواجهة 429 Too Many Requests، نفّذ exponential backoff:
import time
import random
from openai import OpenAI, RateLimitError

client = OpenAI(
    base_url="https://api.cometapi.com/v1",
    api_key="<COMETAPI_KEY>",
)

def chat_with_retry(messages, max_retries=3):
    for i in range(max_retries):
        try:
            return client.chat.completions.create(
                model="gpt-5.4",
                messages=messages,
            )
        except RateLimitError:
            if i < max_retries - 1:
                wait_time = (2 ** i) + random.random()
                time.sleep(wait_time)
            else:
                raise

كيفية الحفاظ على سياق المحادثة؟

قم بتضمين سجل المحادثة الكامل في المصفوفة messages:
messages = [
    {"role": "developer", "content": "You are a helpful assistant."},
    {"role": "user", "content": "What is Python?"},
    {"role": "assistant", "content": "Python is a high-level programming language..."},
    {"role": "user", "content": "What are its main advantages?"},
]

ماذا يعني finish_reason؟

القيمةالمعنى
stopاكتمال طبيعي أو الوصول إلى تسلسل إيقاف.
lengthتم الوصول إلى حد max_tokens أو max_completion_tokens.
tool_callsاستدعى model استدعاء أداة/دالة واحدًا أو أكثر.
content_filterتمت تصفية المخرجات بسبب سياسة المحتوى.

كيفية التحكم في التكاليف؟

  1. استخدم max_completion_tokens لوضع حد لطول المخرجات.
  2. اختر نماذج فعّالة من حيث التكلفة (مثل gpt-5.4-mini أو gpt-5.4-nano للمهام الأبسط).
  3. اجعل Prompts موجزة — وتجنّب السياق المكرر.
  4. راقب استخدام Token في الحقل usage ضمن الاستجابة.

التفويضات

Authorization
string
header
مطلوب

Bearer token authentication. Use your CometAPI key.

الجسم

application/json
model
string
افتراضي:gpt-5.4
مطلوب

Model ID to use for this request. See the Models page for current options.

مثال:

"gpt-4.1"

messages
object[]
مطلوب

A list of messages forming the conversation. Each message has a role (system, user, assistant, or developer) and content (text string or multimodal content array).

stream
boolean

If true, partial response tokens are delivered incrementally via server-sent events (SSE). The stream ends with a data: [DONE] message.

temperature
number
افتراضي:1

Sampling temperature between 0 and 2. Higher values (e.g., 0.8) produce more random output; lower values (e.g., 0.2) make output more focused and deterministic. Recommended to adjust this or top_p, but not both.

النطاق المطلوب: 0 <= x <= 2
top_p
number
افتراضي:1

Nucleus sampling parameter. The model considers only the tokens whose cumulative probability reaches top_p. For example, 0.1 means only the top 10% probability tokens are considered. Recommended to adjust this or temperature, but not both.

النطاق المطلوب: 0 <= x <= 1
n
integer
افتراضي:1

Number of completion choices to generate for each input message. Defaults to 1.

stop
string

Up to 4 sequences where the API will stop generating further tokens. Can be a string or an array of strings.

max_tokens
integer

Maximum number of tokens to generate in the completion. The total of input + output tokens is capped by the model's context length.

presence_penalty
number
افتراضي:0

Number between -2.0 and 2.0. Positive values penalize tokens based on whether they have already appeared, encouraging the model to explore new topics.

النطاق المطلوب: -2 <= x <= 2
frequency_penalty
number
افتراضي:0

Number between -2.0 and 2.0. Positive values penalize tokens proportionally to how often they have appeared, reducing verbatim repetition.

النطاق المطلوب: -2 <= x <= 2
logit_bias
object

A JSON object mapping token IDs to bias values from -100 to 100. The bias is added to the model's logits before sampling. Values between -1 and 1 subtly adjust likelihood; -100 or 100 effectively ban or force selection of a token.

user
string

A unique identifier for your end-user. Helps with abuse detection and monitoring.

max_completion_tokens
integer

An upper bound for the number of tokens to generate, including visible output tokens and reasoning tokens. Use this instead of max_tokens for GPT-4.1+, GPT-5 series, and o-series models.

response_format
object

Specifies the output format. Use {"type": "json_object"} for JSON mode, or {"type": "json_schema", "json_schema": {...}} for strict structured output.

tools
object[]

A list of tools the model may call. Currently supports function type tools.

tool_choice
افتراضي:auto

Controls how the model selects tools. auto (default): model decides. none: no tools. required: must call a tool.

logprobs
boolean
افتراضي:false

Whether to return log probabilities of the output tokens.

top_logprobs
integer

Number of most likely tokens to return at each position (0-20). Requires logprobs to be true.

النطاق المطلوب: 0 <= x <= 20
reasoning_effort
enum<string>

Controls the reasoning effort for o-series and GPT-5.1+ models.

الخيارات المتاحة:
low,
medium,
high
stream_options
object

Options for streaming. Only valid when stream is true.

service_tier
enum<string>

Specifies the processing tier.

الخيارات المتاحة:
auto,
default,
flex,
priority

الاستجابة

Successful chat completion response.

id
string

Unique completion identifier.

مثال:

"chatcmpl-abc123"

object
enum<string>
الخيارات المتاحة:
chat.completion
مثال:

"chat.completion"

created
integer

Unix timestamp of creation.

مثال:

1774412483

model
string

The model used (may include version suffix).

مثال:

"gpt-5.4-2025-07-16"

choices
object[]

Array of completion choices.

usage
object
service_tier
string
مثال:

"default"

system_fingerprint
string | null
مثال:

"fp_490a4ad033"