Rivya AI ডকস

কথোপকথন API

স্ট্রিমবিহীন বা SSE কথোপকথনের পালা, API-তৈরি করা সেশন, file_id ছবি সংযুক্তি এবং টোকেন-ভিত্তিক ক্রেডিট নিষ্পত্তির জন্য Rivya কথোপকথন API ব্যবহার করুন।

শেষ পর্যালোচনা 2026/08/29

একটি সম্পূর্ণ স্ট্রিমবিহীন কথোপকথনের উত্তরের জন্য POST /api/v1/chat/completions ব্যবহার করুন, অথবা সার্ভার থেকে পাঠানো ঘটনার জন্য POST /api/v1/chat/completions/stream ব্যবহার করুন।

কথোপকথন API সেশন-ভিত্তিক। নতুন API কথোপকথন সেশন শুরু করতে session_id বাদ দিন। একই API-তে তৈরি সেশন চালিয়ে যেতে উত্তরে পাওয়া session_id ব্যবহার করুন।

এই পাতা বাস্তবায়িত প্রকাশ্য API v1 সংযোগের চুক্তি ব্যাখ্যা করে। এটি ব্যবহারের জন্য স্থাপনায় প্রকাশ্য API চালু থাকতে হবে, অ্যাকাউন্টে একটি সক্রিয় API কী থাকতে হবে এবং বাছাই করা মডেলের API অবস্থা বর্তমানে পাওয়া যায় হিসেবে দেখাতে হবে। উৎপাদনের অনুরোধ পাঠানোর আগে বর্তমানে পাওয়া মডেলের তালিকা দেখুন।

বর্তমান পরিধি

কথোপকথন API v1 সমর্থন করে:

  • স্ট্রিমবিহীন সহকারীর উত্তর

  • text/event-stream সহ SSE স্ট্রিমিং

  • API-তৈরি করা কথোপকথন সেশন

  • অ্যাকাউন্টের ক্রেডিট সংরক্ষণ এবং চূড়ান্ত টোকেন-ভিত্তিক হিসাব

  • নির্বাচিত মডেল সমর্থন করলে ঐচ্ছিক ওয়েব অনুসন্ধান, যুক্তির মাত্রা ও চিন্তার পদ্ধতি

  • ফাইল API-র file_id মান দিয়ে ছবি সংযুক্তি

কথোপকথন API v1 সমর্থন করে না:

  • ব্যবহারকারীর পাঠানো কাঁচা messages ইতিহাস

  • শুধু Studio-র কথোপকথন সেশন চালিয়ে যাওয়া

  • ইচ্ছামতো বাইরের সংযুক্তির URL

  • কথোপকথন ওয়েবহুক ঘটনা

প্রয়োজনীয় অনুমতির পরিধি

এই অনুমতির পরিধিগুলো থাকা API কী ব্যবহার করুন:

chat:create
chat:read

বিন্যাসে তৈরি নতুন কীতে পূর্বনির্ধারিতভাবে দুটি অনুমতির পরিসর থাকে। কথোপকথন API কল করার আগে পুরোনো কী আবার তৈরি করতে হতে পারে।

তৈরি A কথোপকথন সম্পন্ন হওয়া

curl https://rivya.ai/api/v1/chat/completions \
  -H "Authorization: Bearer rvya_sk_..." \
  -H "Content-Type: application/json" \
  -H "Idempotency-Key: chat-turn-001" \
  -d '{
    "model": "claude-sonnet-5-chat",
    "message": "Write a concise launch plan for a new product image campaign",
    "client_request_id": "chat-001"
  }'

প্রতিক্রিয়া:

{
  "id": "chatcmpl_...",
  "object": "chat.completion",
  "session_id": "session_id",
  "model": "claude-sonnet-5-chat",
  "created_at": "2026-05-11T00:00:00.000Z",
  "message": {
    "id": "assistant_message_id",
    "role": "assistant",
    "content": "..."
  },
  "usage": {
    "input_tokens": 1200,
    "output_tokens": 320,
    "total_tokens": 1520
  },
  "credits": {
    "reserved": 3,
    "final": 2
  }
}

কথোপকথন সম্পন্ন হওয়ার স্ট্রিম

আপনার সার্ভার সহকারীর উত্তরের খণ্ডগুলো আসার সঙ্গে সঙ্গে পেতে চাইলে POST /api/v1/chat/completions/stream ব্যবহার করুন:

curl -N https://rivya.ai/api/v1/chat/completions/stream \
  -H "Authorization: Bearer rvya_sk_..." \
  -H "Content-Type: application/json" \
  -H "Accept: text/event-stream" \
  -H "Idempotency-Key: chat-stream-001" \
  -d '{
    "model": "claude-sonnet-5-chat",
    "message": "Write a concise launch plan for a new product image campaign",
    "client_request_id": "chat-stream-001"
  }'

স্ট্রিমিং প্রতিক্রিয়া Content-Type: text/event-stream; charset=utf-8 ব্যবহার করে।

ঘটনা:

ঘটনাঅর্থ
session.createdAPI কী, মডেল, সেশন, সংযুক্তি, অনুরোধের হারসীমা ও ক্রেডিট সংরক্ষণ যাচাইয়ের চেষ্টা হয়েছে।
message.deltaসহকারীর বার্তার প্রদর্শনযোগ্য খণ্ড। এটি এখনো স্থায়ী বার্তা নয়।
message.completedসহকারীর বার্তাটি API-তে তৈরি সেশনে স্থায়ী হয়েছে।
usage.completedটোকেন ব্যবহার ও চূড়ান্ত ক্রেডিটের হিসাব সম্পূর্ণ হয়েছে।
heartbeatদীর্ঘ বিরতির সময় সংযোগ সচল রাখার ঘটনা।
errorস্ট্রিমিং শুরু হওয়ার পর ব্যর্থতা হলে প্রকাশ্য API ত্রুটির মোড়ক।
doneস্ট্রিম সফলভাবে সম্পূর্ণ হয়েছে।

উদাহরণ স্ট্রিম:

event: session.created
data: {"request_id":"req_...","session_id":"session_id","model":"claude-sonnet-5-chat"}

event: message.delta
data: {"request_id":"req_...","session_id":"session_id","delta":"Draft ","index":0}

event: message.completed
data: {"request_id":"req_...","session_id":"session_id","message":{"id":"assistant_message_id","role":"assistant","content":"Draft ...","created_at":"2026-05-11T00:00:00.000Z"}}

event: usage.completed
data: {"request_id":"req_...","session_id":"session_id","usage":{"input_tokens":1200,"output_tokens":320,"total_tokens":1520},"credits":{"reserved":3,"final":2}}

event: done
data: {"request_id":"req_...","ok":true}

প্রথম SSE ঘটনার পরে ত্রুটি ঘটলে স্ট্রিম event: error পাঠায় এবং তারপর বন্ধ হয়:

event: error
data: {"error":{"code":"internal_error","message":"The request could not be completed.","requestId":"req_..."}}

গ্রাহক সম্পূর্ণ হওয়ার আগে সংযোগ বিচ্ছিন্ন করলে Rivya সম্ভব হলে চলমান তৈরির স্ট্রিম থামায়। আংশিক খণ্ড চূড়ান্ত সহকারীর বার্তা হিসেবে সংরক্ষিত হয় না। সার্ভার ইতিমধ্যে message.completed স্থায়ী করে থাকলে চূড়ান্ত ফলাফল পরে GET /api/v1/chat/sessions/{sessionId} দিয়ে পড়া যায়।

চালিয়ে যাওয়া A সেশন

ফেরত পাওয়া session_id ব্যবহার করুন:

curl https://rivya.ai/api/v1/chat/completions \
  -H "Authorization: Bearer rvya_sk_..." \
  -H "Content-Type: application/json" \
  -H "Idempotency-Key: chat-turn-002" \
  -d '{
    "model": "claude-sonnet-5-chat",
    "session_id": "session_id",
    "message": "Now turn that into a 5-step execution checklist."
  }'

সেশন-টি একই Rivya হিসাব-এর হতে হবে এবং প্রকাশ্য API দিয়ে তৈরি করা হতে হবে। Studio-শুধু কথোপকথন সেশন কথোপকথন API ফেরত দেয় বা চালিয়ে যাওয়া করে না।

ছবি সংযুক্তি

কথোপকথনের সংযুক্তিতে বাইরের URL নয়, Files API নথি ব্যবহার করা হয়।

  1. POST /api/v1/files দিয়ে ছবি আপলোড করুন।

  2. ফেরত পাওয়া id-টি attachments[].file_id হিসেবে ব্যবহার করুন।

{
  "model": "<image-capable-chat-model-id>",
  "message": "Review this product photo and suggest a cleaner editorial direction.",
  "attachments": [
    {
      "file_id": "file_..."
    }
  ]
}

ফাইলটি একই অ্যাকাউন্টের হতে হবে, kind: "image" থাকতে হবে এবং ব্যবহারযোগ্য হতে হবে। স্থানধারকের জায়গায় বর্তমানে ব্যবহারযোগ্য এমন Chat মডেল ID দিন, যার /api/v1/models এন্ট্রির chat_capabilities ছবি সংযুক্তির সমর্থন দেখায়। এই পাতার অন্য জায়গায় ব্যবহৃত claude-sonnet-5-chat শুধু পাঠ্য উদাহরণ; সংযুক্তির অনুরোধে সেটি ব্যবহার করবেন না। ছবি সংযুক্তি সমর্থন না করা মডেল chat_attachment_not_supported ফেরত দেয়।

ঐচ্ছিক নিয়ন্ত্রণ

{
  "model": "claude-sonnet-5-chat",
  "message": "Compare three launch options.",
  "enable_web_search": false,
  "reasoning_effort": "default",
  "thought_mode": "default"
}

নিয়ন্ত্রণের সমর্থন মডেল অনুযায়ী বদলায়। ব্যবহারকারী পর্দায় নিয়ন্ত্রণ দেখানোর আগে /api/v1/models পড়ুন এবং chat_capabilities যাচাই করুন।

তালিকা সেশন

chat:read থাকা কী দিয়ে GET /api/v1/chat/sessions ব্যবহার করুন।

curl https://rivya.ai/api/v1/chat/sessions \
  -H "Authorization: Bearer rvya_sk_..."

এটি শুধু API-তৈরি করা সেশন ফেরত দেয় করে:

{
  "object": "list",
  "data": [
    {
      "id": "session_id",
      "object": "chat.session",
      "model": "claude-sonnet-5-chat",
      "tool_slug": null,
      "title": "Write a concise launch plan...",
      "controls": {
        "enable_web_search": false,
        "reasoning_effort": null,
        "thought_mode": null
      },
      "created_at": "2026-05-11T00:00:00.000Z",
      "updated_at": "2026-05-11T00:00:00.000Z",
      "last_message_at": "2026-05-11T00:00:00.000Z"
    }
  ]
}

একটি সেশন নিন

API দিয়ে তৈরি সেশন ও তাতে স্থায়ীভাবে সংরক্ষিত বার্তা পড়তে GET /api/v1/chat/sessions/{sessionId} ব্যবহার করুন।

curl https://rivya.ai/api/v1/chat/sessions/session_id \
  -H "Authorization: Bearer rvya_sk_..."

প্রতিক্রিয়ায় স্থায়ীভাবে সংরক্ষিত ব্যবহারকারী ও সহকারীর বার্তা থাকে। সেবাদাতার অভ্যন্তরীণ ঘর এতে প্রকাশ করা হয় না।

একই অনুরোধের নিরাপত্তা

প্রতিটি উৎপাদন POST /api/v1/chat/completions এবং POST /api/v1/chat/completions/stream অনুরোধ-এর জন্য Idempotency-Key ব্যবহার করুন।

আবার চেষ্টা করার সময় একই কী ও একই অনুরোধ-বডি ব্যবহার করলে Rivya আরেকটি বার্তা তৈরি বা ক্রেডিট খরচ না করে সংরক্ষিত প্রতিক্রিয়া ফেরত দিতে পারে। একই কী ভিন্ন ইনপুট দিয়ে আবার ব্যবহার করলে API idempotency_conflict ফেরত দেয়।

স্ট্রিমিংয়ে আবার চেষ্টা করলে Rivya আগের টোকেনের পরিবর্তনগুলো আবার পাঠায় না। সম্পন্ন অনুরোধ আবার চালালে সংক্ষিপ্ত SSE ক্রম ফেরত আসে, যেখানে session.created, message.completed, usage.completeddone থাকে।

সাধারণ ত্রুটি

কোডঅর্থ
chat_model_not_supportedনির্বাচিত মডেল কথোপকথন API-এর জন্য পাওয়া যায় নয়।
chat_session_conflictএই অনুরোধ-এর জন্য সেশন ব্যবহার করা যাবে না।
chat_attachment_not_supportedসংযুক্তি নেই, হিসাবটির নয়, ছবি নয় অথবা মডেলটি সমর্থন করে না।
insufficient_creditsকথোপকথনের পালা-এর জন্য হিসাব-এ পর্যাপ্ত ক্রেডিট নেই।
idempotency_conflictএকই-অনুরোধ নিশ্চিত করার কী ভিন্ন ইনপুট দিয়ে আবার ব্যবহার করা হয়েছে।

সংশ্লিষ্ট পাতা