الانتقال إلى المحتوى الرئيسي
POST
/
v1
/
chat
/
completions
import os
from openai import OpenAI
client = OpenAI(
    base_url="https://api.cometapi.com/v1",
    api_key=os.environ["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"
}
يقوم CometAPI بتوجيه Chat Completions إلى عدة مزودين — بما في ذلك OpenAI وClaude وGemini — عبر واجهة واحدة متوافقة مع OpenAI. يمكنك التبديل بين النماذج عبر تغيير المعامل model؛ وتعمل معظم حِزم SDK المتوافقة مع OpenAI عند ضبط base_url على https://api.cometapi.com/v1.
قد تختلف معاملات الطلب وحقول الاستجابة بشكل كبير بين مزودي النماذج. راجع الوثائق الرسمية للمزود المسؤول عن النموذج الذي تستخدمه كلما احتجت إلى القائمة الكاملة للمعاملات أو إلى سلوك خاص بالمزود. على سبيل المثال، ينطبق reasoning_effort فقط على نماذج الاستدلال (o-series وGPT-5.1+)، وبعض النماذج لا تدعم logprobs أو n > 1.
بالنسبة إلى نماذج OpenAI Pro، ونماذج الاستدلال من o-series، ونماذج Codex، استخدم نقطة النهاية Responses بدلًا من ذلك. تتمتع عائلات النماذج هذه بدعم أكثر اكتمالًا على Responses API.

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

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

بث الاستجابات

لتلقي المخرجات بشكل تدريجي، اضبط 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]
لتضمين إحصاءات استخدام Tokens في استجابات Streaming، اضبط stream_options.include_usage على true. تظهر بيانات الاستخدام في الجزء الأخير قبل [DONE].

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

لفرض أن يعيد model قيمة JSON صالحة تطابق مخططًا محددًا، استخدم 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) أن يطابق الناتج المخطط الخاص بك تمامًا. أما وضع JSON Object (json_object) فيضمن فقط أن يكون JSON صالحًا — ولا يتم فرض البنية.

استدعاء الأدوات والوظائف

لتمكين model من استدعاء وظائف خارجية، قدّم تعريفات الأدوات:
{
  "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"
}
عندما يقرر model استدعاء أداة، ستحتوي الاستجابة على finish_reason: "tool_calls" وسيحتوي المصفوفة message.tool_calls على اسم الوظيفة والوسائط. بعد ذلك تنفّذ الوظيفة وترسل النتيجة مرة أخرى كرسالة tool مع tool_call_id المطابق.

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

المعلمةOpenAI 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، طبّق التراجع الأسي:
import os
import time
import random
from openai import OpenAI, RateLimitError

client = OpenAI(
    base_url="https://api.cometapi.com/v1",
    api_key=os.environ["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استدعى النموذج أداة واحدة أو أكثر/استدعاءات دوال.
content_filterجرى تصفية المخرجات بسبب سياسة المحتوى.

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

  1. استخدم max_completion_tokens لتحديد الحد الأقصى لطول المخرجات.
  2. اختر نماذج منخفضة التكلفة (مثل gpt-5.4 أو 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"