рд╣рдо cookies рдЗрд╕реНрддреЗрдорд╛рд▓ рдХрд░рддреЗ рд╣реИрдВ. Cookies рдФрд░ рдмреНрд░рд╛рдЙрдЬрд╝рд░ рд╕реНрдЯреЛрд░реЗрдЬ рдЖрдкрдХреЛ рд╕рд╛рдЗрди рдЗрди рд░рдЦрддреЗ рд╣реИрдВ рдФрд░ рдЖрдкрдХреА рдкреНрд░рд╛рдердорд┐рдХрддрд╛рдПрдВ рдпрд╛рдж рд░рдЦрддреЗ рд╣реИрдВред рдЖрдкрдХреА рдЕрдиреБрдорддрд┐ рд╕реЗ рд╣рдо рдпрд╣ рднреА рдорд╛рдкрддреЗ рд╣реИрдВ рдХрд┐ рд╕рд╛рдЗрдЯ рдХреИрд╕реЗ рдЗрд╕реНрддреЗрдорд╛рд▓ рд╣реЛрддреА рд╣реИред рдЖрдк рдХрднреА рднреА ред рд╣рдорд╛рд░реА cookie рдиреАрддрд┐ рджреЗрдЦреЗрдВред

рдЧрд╛рдЗрдб: рдмреИрдЪ рдкреНрд░реЛрд╕реЗрд╕рд┐рдВрдЧ

рд╢реБрд░реБрдЖрдд

рдЧрд╛рдЗрдб: рдмреИрдЪ рдкреНрд░реЛрд╕реЗрд╕рд┐рдВрдЧ

рд░реЗрдЯ рд▓рд┐рдорд┐рдЯ рдХреЗ рднреАрддрд░ рдмрдбрд╝реЗ рдкреИрдорд╛рдиреЗ рдкрд░ рдЕрдиреБрд╡рд╛рдж, рд╡рд░реНрдЧреАрдХрд░рдг рдФрд░ рдбреЗрдЯрд╛ рдирд┐рдХрд╛рд╕реА рдХрд░реЗрдВ, рд░реАрдЯреНрд░рд╛рдИ, рдХреИрд╢рд┐рдВрдЧ рдФрд░ рд╕рд╕реНрддреЗ рдореЙрдбрд▓ рдХреЗ рд╕рд╛рде рдкреВрд░реЗ рдХреЛрдб рдЙрджрд╛рд╣рд░рдг рджреЗрдЦреЗрдВред

рдмреИрдЪ рдЬреЙрдм (рдкреНрд░реЛрдбрдХреНрдЯ рдХреИрдЯрд▓реЙрдЧ рдХрд╛ рдЕрдиреБрд╡рд╛рдж, рд╕рдкреЛрд░реНрдЯ рдЯрд┐рдХрдЯ рдХрд╛ рд╡рд░реНрдЧреАрдХрд░рдг, рд╣рдЬрд╝рд╛рд░реЛрдВ рджрд╕реНрддрд╛рд╡реЗрдЬрд╝реЛрдВ рд╕реЗ рдлрд╝реАрд▓реНрдб рдирд┐рдХрд╛рд▓рдирд╛) рдПрдХ рд╣реА рддрд░рд╣ рдХрд╛ рдЕрдиреБрд░реЛрдз рдХрдИ рдмрд╛рд░ рднреЗрдЬрддреЗ рд╣реИрдВред рдХрд╛рдо рд╕рд░рд▓ рд╣реИ; рдХрдард┐рди рд╣рд┐рд╕реНрд╕реЗ рд╣реИрдВ рдереНрд░реВрдкреБрдЯ, рд╡рд┐рдлрд▓рддрд╛рдПрдБ рдФрд░ рд▓рд╛рдЧрддред рдпрд╣ рдЧрд╛рдЗрдб рдЖрдзрд┐рдХрд╛рд░рд┐рдХ openai рдкреИрдХреЗрдЬ рдФрд░ рдмреЗрд╕ URL https://api14.com/api/v1 рдХреЗ рд╕рд╛рде рддреАрдиреЛрдВ рдХреЛ рдХрд╡рд░ рдХрд░рддреА рд╣реИред

рдХреЛрдИ рдЕрд▓рдЧ рдмреИрдЪ рдПрдВрдбрдкреЙрдЗрдВрдЯ рдирд╣реАрдВ рд╣реИ: OpenAI рдХреА Batch API api14 рдкрд░ рдЙрдкрд▓рдмреНрдз рдирд╣реАрдВ рд╣реИ (рджреЗрдЦреЗрдВ OpenAI SDK рд╕рдВрдЧрддрддрд╛)ред рдЖрдк рдмреИрдЪ рдХреЛ рдирд┐рдпрдВрддреНрд░рд┐рдд рд╕рдорд╡рд░реНрддреАрддрд╛ (concurrency) рдХреЗ рд╕рд╛рде рд╕рд╛рдорд╛рдиреНрдп рдЕрдиреБрд░реЛрдзреЛрдВ рдХреЗ рд░реВрдк рдореЗрдВ рдЪрд▓рд╛рддреЗ рд╣реИрдВред

рдЕрдкрдиреА рд░реЗрдЯ рд▓рд┐рдорд┐рдЯ рдЬрд╛рдиреЗрдВ

рд╕реАрдорд╛рдПрдБ рдкреНрд░рддрд┐ API рдХреБрдВрдЬреА рдкреНрд░рддрд┐ рдорд┐рдирдЯ рдЕрдиреБрд░реЛрдз (RPM) рдореЗрдВ рдЧрд┐рдиреА рдЬрд╛рддреА рд╣реИрдВ рдФрд░ рдЖрдкрдХреЗ рдкреНрд▓рд╛рди рд╕реЗ рд╕реАрдорд┐рдд рд╣реЛрддреА рд╣реИрдВ:

рдкреНрд▓рд╛рдирдкреНрд░рддрд┐ рдорд┐рдирдЯ рдЕрдиреБрд░реЛрдз
Free5
Pro100
Team3,000
Enterprise3,000+

рдЬрд┐рд╕ рдХреБрдВрдЬреА рдХреА рдЕрдкрдиреА RPM рд╕реАрдорд╛ рд╣реЛ, рдЙрд╕ рдкрд░ рджреЛрдиреЛрдВ рдореЗрдВ рд╕реЗ рдХрдо рд╕реАрдорд╛ рд▓рд╛рдЧреВ рд╣реЛрддреА рд╣реИред рдЕрдкрдиреА рд╕реАрдорд╛ GET /key рд╕реЗ рдЬрд╛рдБрдЪреЗрдВ (рдЬрдм рдХреБрдВрдЬреА рдкреНрд▓рд╛рди рдХреА рд╕реАрдорд╛ рдЗрд╕реНрддреЗрдорд╛рд▓ рдХрд░рддреА рд╣реИ рддрдм rate_limit.requests null рд╣реЛрддрд╛ рд╣реИ), рджреЗрдЦреЗрдВ рдмреИрд▓реЗрдВрд╕ рдФрд░ рдХреБрдВрдЬреА рдЬрд╛рдирдХрд╛рд░реАред рд╕реАрдорд╛ рдкрд╛рд░ рд╣реЛрдиреЗ рдкрд░ Retry-After: 60 рдХреЗ рд╕рд╛рде 429 rate_limited рд▓реМрдЯрддрд╛ рд╣реИред

RPM рдпрд╣ рд╕реАрдорд┐рдд рдХрд░рддрд╛ рд╣реИ рдХрд┐ рдкреНрд░рддрд┐ рдорд┐рдирдЯ рдХрд┐рддрдиреЗ рдЕрдиреБрд░реЛрдз рд╢реБрд░реВ рд╣реЛрддреЗ рд╣реИрдВ, рдпрд╣ рдирд╣реАрдВ рдХрд┐ рдПрдХ рд╕рд╛рде рдХрд┐рддрдиреЗ рдЪрд▓рддреЗ рд╣реИрдВред рдпрджрд┐ рдФрд╕рдд рдЕрдиреБрд░реЛрдз рдореЗрдВ 4 рд╕реЗрдХрдВрдб рд▓рдЧрддреЗ рд╣реИрдВ рдФрд░ рдЖрдкрдХреА рд╕реАрдорд╛ 100 RPM рд╣реИ, рддреЛ рд▓рдЧрднрдЧ 7 рдЕрдиреБрд░реЛрдз рдПрдХ рд╕рд╛рде рдЪрд▓рдиреЗ рдкрд░ рд╣реА рд╕реАрдорд╛ рдЖ рдЬрд╛рддреА рд╣реИред рдЕрдиреБрд░реЛрдзреЛрдВ рдХреЛ рдЙрдирдХреЗ рд╢реБрд░реВ рд╣реЛрдиреЗ рдХреЗ рд╕рдордп рдХреЗ рдЕрдиреБрд╕рд╛рд░ рдЧрддрд┐ рджреЗрдВ, рдФрд░ рд╕рдорд╡рд░реНрддреАрддрд╛ рд╕рдВрддреБрд▓рд┐рдд рд░рдЦреЗрдВред

рдЧрддрд┐-рдирд┐рдпрдВрддреНрд░рд┐рдд, рд╕рдорд╡рд░реНрддреА рд░рдирд░ (Python)

import asyncio, json, os, time
from openai import AsyncOpenAI, APIStatusError

client = AsyncOpenAI(base_url="https://api14.com/api/v1", api_key=os.environ["API14_API_KEY"], max_retries=4)

RPM = 100           # рдЖрдкрдХреЗ рдкреНрд▓рд╛рди рдпрд╛ рдХреБрдВрдЬреА рдХреА рд╕реАрдорд╛
CONCURRENCY = 10
FATAL = {"daily_limit_reached", "insufficient_balance", "invalid_api_key", "model_not_allowed"}

class Pacer:
    """Spaces request starts evenly so we never exceed RPM."""
    def __init__(self, rpm):
        self.interval, self.next, self.lock = 60 / rpm, 0.0, asyncio.Lock()
    async def wait(self):
        async with self.lock:
            now = time.monotonic()
            self.next = max(self.next, now)
            delay, self.next = self.next - now, self.next + self.interval
        await asyncio.sleep(delay)

SYSTEM = "Translate the user's text to German. Keep product names and units unchanged. Reply with the translation only."

async def translate(item, pacer, sem):
    async with sem:
        await pacer.wait()
        r = await client.chat.completions.create(
            model="openai/gpt-5-mini",
            messages=[{"role": "system", "content": SYSTEM}, {"role": "user", "content": item["text"]}],
            max_tokens=500,
        )
        return {"id": item["id"], "text": r.choices[0].message.content, "cost": r.usage.cost}

async def main(items, out_path="out.jsonl"):
    done = set()
    if os.path.exists(out_path):
        done = {json.loads(line)["id"] for line in open(out_path)}
    todo = [i for i in items if i["id"] not in done]

    pacer, sem = Pacer(RPM), asyncio.Semaphore(CONCURRENCY)
    with open(out_path, "a") as out:
        for task in asyncio.as_completed([translate(i, pacer, sem) for i in todo]):
            try:
                out.write(json.dumps(await task) + "\n")
            except APIStatusError as e:
                if e.code in FATAL:
                    raise SystemExit(f"Stopping batch: {e.code}")
                print("failed:", e.status_code, e.code)  # рд▓реЙрдЧ рдХрд┐рдпрд╛ рдЧрдпрд╛; рд░реАрдЯреНрд░рд╛рдИ рдХреЗ рд▓рд┐рдП рджреЛрдмрд╛рд░рд╛ рдЪрд▓рд╛рдПрдБ

items = [json.loads(line) for line in open("items.jsonl")]  # [{"id": "...", "text": "..."}]
asyncio.run(main(items))

рдпрд╣ рдХреНрдпрд╛ рдХрд░рддрд╛ рд╣реИ:

  • рдЧрддрд┐ рдирд┐рдпрдВрддреНрд░рдг: Pacer рдкреНрд░рддрд┐ рдорд┐рдирдЯ рдЕрдзрд┐рдХрддрдо RPM рдЕрдиреБрд░реЛрдз рд╢реБрд░реВ рдХрд░рддрд╛ рд╣реИ; рд╕реЗрдорд╛рдлрд╝реЛрд░ рд╕реАрдорд┐рдд рдХрд░рддрд╛ рд╣реИ рдХрд┐ рдХрд┐рддрдиреЗ рдЕрдиреБрд░реЛрдз рдПрдХ рд╕рд╛рде рдЪрд▓ рд░рд╣реЗ рд╣реИрдВред
  • рд░реАрдЯреНрд░рд╛рдИ: SDK 429 рдФрд░ 5xx рдХреЛ exponential backoff рдХреЗ рд╕рд╛рде рджреЛрдмрд╛рд░рд╛ рдЖрдЬрд╝рдорд╛рддрд╛ рд╣реИ рдФрд░ Retry-After рдХрд╛ рд╕рдореНрдорд╛рди рдХрд░рддрд╛ рд╣реИ (max_retries=4)ред рдЕрдкрд╕реНрдЯреНрд░реАрдо рдкреНрд░реЛрд╡рд╛рдЗрдбрд░ рдХреЗ 429 рднреА рдЗрд╕реА рддрд░рд╣ рд░реАрдЯреНрд░рд╛рдИ рд╣реЛрддреЗ рд╣реИрдВред
  • рдШрд╛рддрдХ рдХреЛрдб рдЬреЙрдм рд░реЛрдХ рджреЗрддреЗ рд╣реИрдВ: daily_limit_reached рдФрд░ insufficient_balance рд░реАрдЯреНрд░рд╛рдИ рд╕реЗ рдареАрдХ рдирд╣реАрдВ рд╣реЛрдВрдЧреЗ, рдЗрд╕рд▓рд┐рдП рдЬреЙрдм рдкреНрд░рдпрд╛рд╕ рдмрд░реНрдмрд╛рдж рдХрд░рдиреЗ рдХреЗ рдмрдЬрд╛рдп рдмрд╛рд╣рд░ рдирд┐рдХрд▓ рдЬрд╛рддрд╛ рд╣реИред
  • рдЪреЗрдХрдкреЙрдЗрдВрдЯрд┐рдВрдЧ: рдирддреАрдЬреЗ рдкреВрд░реЗ рд╣реЛрддреЗ рд╣реА JSONL рдлрд╝рд╛рдЗрд▓ рдореЗрдВ рдЬреЛрдбрд╝реЗ рдЬрд╛рддреЗ рд╣реИрдВред рд╕реНрдХреНрд░рд┐рдкреНрдЯ рджреЛрдмрд╛рд░рд╛ рдЪрд▓рд╛рдиреЗ рдкрд░ рдкреВрд░реЗ рд╣реЛ рдЪреБрдХреЗ id рдЫреЛрдбрд╝ рджрд┐рдП рдЬрд╛рддреЗ рд╣реИрдВ, рдЗрд╕рд▓рд┐рдП рдХреНрд░реИрд╢ рдпрд╛ рд░реБрдХреЗ рд╣реБрдП рдЬреЙрдм рдореЗрдВ рдХреБрдЫ рдирд╣реАрдВ рдЦреЛрддрд╛ред

Node рдореЗрдВ рдпрд╣реА рд╕рдВрд░рдЪрдирд╛ рдПрдХ рд╕рд╛рдЭрд╛ рдХрддрд╛рд░ рд╕реЗ рдХрд╛рдо рдЙрдард╛рдиреЗ рд╡рд╛рд▓реЗ рдирд┐рд╢реНрдЪрд┐рдд рд╕рдВрдЦреНрдпрд╛ рдХреЗ рд╡рд░реНрдХрд░ рдкрд░ Promise.all рдХреЗ рд╕рд╛рде рдХрд╛рдо рдХрд░рддреА рд╣реИ, рдЬрд╣рд╛рдБ рд╣рд░ рд╡рд░реНрдХрд░ рд╢реБрд░реВ рдХрд░рдиреЗ рдХреЗ рдмреАрдЪ 60_000 / RPM ms рд░реБрдХрддрд╛ рд╣реИред

рдПрдХ рдЕрдиреБрд░реЛрдз рдореЗрдВ рдХрдИ рдЖрдЗрдЯрдо рд░рдЦреЗрдВ

рдЫреЛрдЯреЗ рдЖрдЗрдЯрдо рдХреЗ рд▓рд┐рдП рд╣рд░ рдЖрдЗрдЯрдо рдкрд░ рдПрдХ рдЕрдиреБрд░реЛрдз RPM рдмрд░реНрдмрд╛рдж рдХрд░рддрд╛ рд╣реИ рдФрд░ рд╣рд░ рдмрд╛рд░ рдирд┐рд░реНрджреЗрд╢ рджреЛрд╣рд░рд╛рддрд╛ рд╣реИред рд╕реНрдЯреНрд░рдХреНрдЪрд░реНрдб рдЖрдЙрдЯрдкреБрдЯ рдХреЗ рд╕рд╛рде рдкреНрд░рддрд┐ рдЕрдиреБрд░реЛрдз 20-50 рдЖрдЗрдЯрдо рд╡рд░реНрдЧреАрдХреГрдд рдХрд░реЗрдВ, рдФрд░ рдЕрдиреБрд░реЛрдзреЛрдВ рдХреА рд╕рдВрдЦреНрдпрд╛ рдЙрддрдиреЗ рд╣реА рдЧреБрдирд╛ рдШрдЯ рдЬрд╛рддреА рд╣реИ:

schema = {
    "type": "object",
    "properties": {"labels": {"type": "array", "items": {
        "type": "object",
        "properties": {"id": {"type": "string"}, "label": {"type": "string", "enum": ["billing", "bug", "feature", "other"]}},
        "required": ["id", "label"], "additionalProperties": False,
    }}},
    "required": ["labels"], "additionalProperties": False,
}

tickets = "\n".join(f"{t['id']}: {t['text']}" for t in batch_of_30)
r = await client.chat.completions.create(
    model="openai/gpt-5-mini",
    messages=[{"role": "system", "content": "Label each ticket."}, {"role": "user", "content": tickets}],
    response_format={"type": "json_schema", "json_schema": {"name": "labels", "strict": True, "schema": schema}},
)
labels = json.loads(r.choices[0].message.content)["labels"]

рдЬрд╛рдБрдЪреЗрдВ рдХрд┐ рд╣рд░ рдЗрдирдкреБрдЯ id рд▓реМрдЯрд╛ рд╣реИ; рдЬреЛ рдЫреВрдЯ рдЧрдП рдЙрдиреНрд╣реЗрдВ рджреЛрдмрд╛рд░рд╛ рднреЗрдЬреЗрдВред рдпрджрд┐ finish_reason "length" рд╣реИ, рддреЛ рдмреИрдЪ max_tokens рдХреЗ рд▓рд┐рдП рдмрд╣реБрдд рдмрдбрд╝рд╛ рдерд╛, рдЙрд╕реЗ рдмрд╛рдБрдЯ рджреЗрдВред рджреЗрдЦреЗрдВ рд╕реНрдЯреНрд░рдХреНрдЪрд░реНрдб рдЖрдЙрдЯрдкреБрдЯред рдПрдореНрдмреЗрдбрд┐рдВрдЧ рдХреЗ рд▓рд┐рдП рдПрдХ input рдРрд░реЗ рдореЗрдВ 100 рддрдХ рд╕реНрдЯреНрд░рд┐рдВрдЧ рднреЗрдЬреЗрдВ, рджреЗрдЦреЗрдВ рдПрдореНрдмреЗрдбрд┐рдВрдЧред

рдкреНрд░реЙрдореНрдкреНрдЯ рдХреИрд╢рд┐рдВрдЧ рд╕реЗ рд▓рд╛рдЧрдд рдШрдЯрд╛рдПрдБ

рдмреИрдЪ рдореЗрдВ рдирд┐рд░реНрджреЗрд╢, рдЙрджрд╛рд╣рд░рдг рдФрд░ schema рд╣рд░ рдЕрдиреБрд░реЛрдз рдореЗрдВ рдПрдХ рдЬреИрд╕реЗ рд╣реЛрддреЗ рд╣реИрдВред рдЙрдиреНрд╣реЗрдВ рдкрд╣рд▓реЗ рдФрд░ рдмрджрд▓рдиреЗ рд╡рд╛рд▓реЗ рдЖрдЗрдЯрдо рдХреЛ рдЖрдЦрд╝рд┐рд░ рдореЗрдВ рд░рдЦреЗрдВ, рддрд╛рдХрд┐ рдкреНрд░реЛрд╡рд╛рдЗрдбрд░ рдХреИрд╢реНрдб рдкреНрд░реАрдлрд╝рд┐рдХреНрд╕ рджреЛрдмрд╛рд░рд╛ рдЗрд╕реНрддреЗрдорд╛рд▓ рдХрд░ рд╕рдХреЗрдВ:

  • OpenAI, DeepSeek, Gemini 2.5 рдФрд░ рдЕрдиреНрдп рдкреНрд░реАрдлрд╝рд┐рдХреНрд╕ рдкрд░реНрдпрд╛рдкреНрдд рд▓рдВрдмрд╛ рд╣реЛрддреЗ рд╣реА рдЕрдкрдиреЗ рдЖрдк рдХреИрд╢ рдХрд░рддреЗ рд╣реИрдВ (OpenAI рдХреЗ рд▓рд┐рдП 1,024 рдЯреЛрдХрди)ред рдХреИрд╢ рд░реАрдб рдХреА рд▓рд╛рдЧрдд рд╕рд╛рдорд╛рдиреНрдп рдЗрдирдкреБрдЯ рдХрд╛ рдПрдХ рдЫреЛрдЯрд╛ рд╣рд┐рд╕реНрд╕рд╛ рд╣реЛрддреА рд╣реИред
  • Anthropic рдореЙрдбрд▓ рдХреЛ рдкреНрд░реЙрдореНрдкреНрдЯ рдХреЗ рд╕реНрдерд┐рд░ рд╣рд┐рд╕реНрд╕реЗ рдкрд░ рд╕реНрдкрд╖реНрдЯ cache_control рдмреНрд░реЗрдХрдкреЙрдЗрдВрдЯ рдЪрд╛рд╣рд┐рдПред

рдЗрд╕рд▓рд┐рдП рдХреБрдЫ рдЙрджрд╛рд╣рд░рдгреЛрдВ рд╡рд╛рд▓рд╛ рд▓рдВрдмрд╛, рд╡рд┐рд╕реНрддреГрдд рд╕рд┐рд╕реНрдЯрдо рдкреНрд░реЙрдореНрдкреНрдЯ рдЫреЛрдЯреЗ рдкреНрд░реЙрдореНрдкреНрдЯ рд╕реЗ рдмрд╣реБрдд рдЬрд╝реНрдпрд╛рджрд╛ рдорд╣рдБрдЧрд╛ рдирд╣реАрдВ рдкрдбрд╝рддрд╛ рдФрд░ рдЖрдорддреМрд░ рдкрд░ рдЧреБрдгрд╡рддреНрддрд╛ рдмрдврд╝рд╛рддрд╛ рд╣реИред рд╣рд┐рдЯ рдХреА рдкреБрд╖реНрдЯрд┐ usage.prompt_tokens_details.cached_tokens рдореЗрдВ рдХрд░реЗрдВред рджреЗрдЦреЗрдВ рдкреНрд░реЙрдореНрдкреНрдЯ рдХреИрд╢рд┐рдВрдЧред

рд╕рд╕реНрддрд╛ рдореЙрдбрд▓ рдЪреБрдиреЗрдВ, рдлрд┐рд░ рдЬрд╛рдБрдЪреЗрдВ

рдЕрдиреБрд╡рд╛рдж, рд╡рд░реНрдЧреАрдХрд░рдг рдФрд░ рдбреЗрдЯрд╛ рдирд┐рдХрд╛рд╕реА рдХреЗ рд▓рд┐рдП рдЫреЛрдЯреЗ рдореЙрдбрд▓ рдЕрдХреНрд╕рд░ рдХреАрдордд рдХреЗ рдПрдХ рдЕрдВрд╢ рдкрд░ рдкрд░реНрдпрд╛рдкреНрдд рдЕрдЪреНрдЫреЗ рд╣реЛрддреЗ рд╣реИрдВред рдЯреЗрдХреНрд╕реНрдЯ рдореЙрдбрд▓ рдХреЛ рдЗрдирдкреБрдЯ рдХреАрдордд рдХреЗ рдЕрдиреБрд╕рд╛рд░ рд╕реВрдЪреАрдмрджреНрдз рдХрд░реЗрдВ:

curl -s "https://api14.com/api/v1/models?category=text" \
  | jq -r '.data | sort_by(.pricing.prompt | tonumber) | .[:15][] | "\(.id)  \(.pricing.prompt)  \(.pricing.completion)"'

рдлрд┐рд░ рдкреНрд░рддрд┐рдмрджреНрдз рд╣реЛрдиреЗ рд╕реЗ рдкрд╣рд▓реЗ рдорд╛рдкреЗрдВ:

  1. 50-100 рдкреНрд░рддрд┐рдирд┐рдзрд┐ рдЖрдЗрдЯрдо рд▓реЗрдВ рдФрд░ рдЕрдкреЗрдХреНрд╖рд┐рдд рдЖрдЙрдЯрдкреБрдЯ рд╣рд╛рде рд╕реЗ рд▓реЗрдмрд▓ рдХрд░реЗрдВред
  2. рдЙрдиреНрд╣реЗрдВ рджреЛ рдпрд╛ рддреАрди рдЙрдореНрдореАрджрд╡рд╛рд░ рдореЙрдбрд▓ рд╕реЗ рдЪрд▓рд╛рдПрдБ рдФрд░ рд╕рдЯреАрдХрддрд╛ рддрдерд╛ рдЬреЛрдбрд╝реЗ рдЧрдП usage.cost рдХреА рддреБрд▓рдирд╛ рдХрд░реЗрдВред
  3. рдкреНрд░рддрд┐ рдЖрдЗрдЯрдо рд▓рд╛рдЧрдд рдХреЛ рдХреБрд▓ рдЖрдЗрдЯрдо рд╕рдВрдЦреНрдпрд╛ рд╕реЗ рдЧреБрдгрд╛ рдХрд░рдХреЗ рдкреВрд░реЗ рдЬреЙрдм рдХрд╛ рдЕрдиреБрдорд╛рди рд▓рдЧрд╛рдПрдБ, рдФрд░ GET /credits рд╕реЗ рдЬрд╛рдБрдЪреЗрдВ рдХрд┐ рдЖрдкрдХрд╛ рдмреИрд▓реЗрдВрд╕ рдкрд░реНрдпрд╛рдкреНрдд рд╣реИред

:free рд╡реЗрд░рд┐рдПрдВрдЯ рдХрд┐рд╕реА рдореЙрдбрд▓ рдХрд╛ рдореБрдлрд╝реНрдд рдПрдВрдбрдкреЙрдЗрдВрдЯ рдЗрд╕реНрддреЗрдорд╛рд▓ рдХрд░рддреЗ рд╣реИрдВ рдЬрд╣рд╛рдБ рд╡рд╣ рдореМрдЬреВрдж рд╣реЛ, рд▓реЗрдХрд┐рди рдЙрди рдкрд░ рдЕрдкрд╕реНрдЯреНрд░реАрдо рд░реЗрдЯ рд▓рд┐рдорд┐рдЯ рд╕рдЦрд╝реНрдд рд╣реЛрддреА рд╣реИ, рдЗрд╕рд▓рд┐рдП рд╡реЗ рдмрдбрд╝реЗ рдмреИрдЪ рдХреЗ рдмрдЬрд╛рдп рдкрд░реАрдХреНрд╖рдг рдХреЗ рд▓рд┐рдП рдЙрдкрдпреБрдХреНрдд рд╣реИрдВред рджреЗрдЦреЗрдВ рдореЙрдбрд▓ id рдФрд░ рд╡реЗрд░рд┐рдПрдВрдЯред

рдмрдбрд╝реЗ рд░рди рд╕реЗ рдкрд╣рд▓реЗ

  • рджреИрдирд┐рдХ USD рд╕реАрдорд╛ рд╡рд╛рд▓реА рдЕрд▓рдЧ рдХреБрдВрдЬреА рдмрдирд╛рдПрдБ рддрд╛рдХрд┐ рдХреЛрдИ рдмрдЧ рдЖрдкрдХрд╛ рдмреИрд▓реЗрдВрд╕ рдЦрд╛рд▓реА рди рдХрд░ рд╕рдХреЗред рддрдм рдЬреЙрдм 429 daily_limit_reached рдХреЗ рд╕рд╛рде рд░реБрдХ рдЬрд╛рддрд╛ рд╣реИред рджреЗрдЦреЗрдВ рд░реЗрдЯ рд▓рд┐рдорд┐рдЯред
  • рд╣рд░ рдЕрдиреБрд░реЛрдз рдкрд░ max_tokens рд╕реЗрдЯ рдХрд░реЗрдВред
  • рдкрд╣рд▓реЗ 1% рдЖрдЗрдЯрдо рдЪрд▓рд╛рдПрдБ, рдЖрдЙрдЯрдкреБрдЯ рдФрд░ рд▓рд╛рдЧрдд рдЬрд╛рдБрдЪреЗрдВ, рдлрд┐рд░ рдмрд╛рдХреА рд╢реБрд░реВ рдХрд░реЗрдВред
  • рд╡рд┐рдлрд▓ рдЕрдиреБрд░реЛрдзреЛрдВ (рдХреЛрдИ рднреА 4xx рдпрд╛ 5xx) рдкрд░ рд╢реБрд▓реНрдХ рдирд╣реАрдВ рд▓рдЧрддрд╛, рдЗрд╕рд▓рд┐рдП рд╡рд┐рдлрд▓рддрд╛рдУрдВ рдХреЛ рджреЛрдмрд╛рд░рд╛ рдЪрд▓рд╛рдирд╛ рд╕реБрд░рдХреНрд╖рд┐рдд рд╣реИред рджреЗрдЦреЗрдВ рддреНрд░реБрдЯрд┐рдпрд╛рдБред