কনটেন্টে যান
ওয়েব সার্চ

ওয়েব সার্চ

web_search: true সেট করুন, তাহলে মডেল লাইভ ফলাফল দিয়ে তার উত্তর ভিত্তিযুক্ত করে।

POST https://api.shannon-ai.com/v1/chat/completions

উত্তরটি একটি সাধারণ চ্যাট কমপ্লিশন, তবে দুটি বাড়তি জিনিস আছে। উত্তর বর্গ বন্ধনীর সংখ্যা দিয়ে সার্চ ফলাফলের দিকে ইঙ্গিত করে, sources বলে প্রতিটি সংখ্যা কীসের জন্য, আর annotations চিহ্নিত করে প্রতিটি কোথায় উদ্ধৃত হয়েছে:

200 JSON
{
  "id": "chatcmpl-3e5a7c9b1d2f4a6c8e0b2d4f6a8c1e3b",
  "object": "chat.completion",
  "created": 1791590400,
  "model": "shannon-3",
  "choices": [
    {
      "index": 0,
      "message": {
        "role": "assistant",
        "content": "Saturday in Lisbon is forecast to be sunny with a high near 24 °C [1]. Sunday turns cloudy, with a chance of light rain in the afternoon [2].",
        "reasoning_content": null,
        "annotations": [
          {
            "type": "url_citation",
            "url_citation": {
              "start_index": 66,
              "end_index": 69,
              "url": "https://weather.example/lisbon/weekend",
              "title": "Lisbon weather: weekend outlook"
            }
          },
          {
            "type": "url_citation",
            "url_citation": {
              "start_index": 137,
              "end_index": 140,
              "url": "https://forecast.example/pt/lisbon/sunday",
              "title": "Sunday forecast for Lisbon"
            }
          }
        ]
      },
      "finish_reason": "stop"
    }
  ],
  "usage": {
    "prompt_tokens": 2874,
    "completion_tokens": 41,
    "total_tokens": 2915
  },
  "sources": [
    {
      "index": 1,
      "title": "Lisbon weather: weekend outlook",
      "url": "https://weather.example/lisbon/weekend"
    },
    {
      "index": 2,
      "title": "Sunday forecast for Lisbon",
      "url": "https://forecast.example/pt/lisbon/sunday"
    },
    {
      "index": 3,
      "title": "Portugal: the week ahead",
      "url": "https://news.example/portugal/weather-week"
    }
  ]
}

সার্চ চালু করা

সার্চ রিকোয়েস্টের একটি ফিল্ড, ডিফল্টভাবে বন্ধ। কোনো রিকোয়েস্ট এটি না পাঠালে কিছু সার্চ হয় না।

ফিল্ড টাইপ ডিফল্ট বিবরণ যারা প্রয়োগ করে
web_search boolean false true এই রিকোয়েস্টের জন্য একটি ওয়েব সার্চ চালায় এবং উত্তর দেওয়ার আগে ফলাফল মডেলকে দেয়। shannon-coder-1 ছাড়া প্রতিটি Shannon মডেল
এন্ডপয়েন্ট ওয়েব সার্চ কীভাবে
/v1/chat/completions হ্যাঁ রিকোয়েস্ট বডিতে "web_search": true।
/v1/messages হ্যাঁ রিকোয়েস্ট বডিতে "web_search": true।
/v1/responses — এই এন্ডপয়েন্ট শুধু মডেল থেকে উত্তর দেয়। সার্চ করা উত্তরের জন্য ওপরের দুটির একটি ব্যবহার করুন।

/v1/messages-এ ফিল্ডটি বডির শীর্ষস্তরে থাকে, model ও messages-এর পাশে:

রিকোয়েস্ট বডি
{
  "model": "shannon-3",
  "web_search": true,
  "messages": [
    {
      "role": "user",
      "content": "What is the weather forecast for Lisbon this weekend?"
    }
  ]
}

সার্চ করা রিকোয়েস্ট কী করে

  • API শেষ ইউজার মেসেজের জন্য ওয়েবে সার্চ করে। কথোপকথনের আগের টার্নগুলো সার্চকে প্রেক্ষাপট দেয়।
  • web_search: true পাঠানো প্রতিটি রিকোয়েস্টে সার্চ চলে। সার্চ করবে কি না তা মডেল ঠিক করে না।
  • ফলাফল নম্বর দেওয়া উৎস হিসেবে মডেলের সামনে রাখা হয়, এবং মডেল সেগুলো থেকে উত্তর লেখে।
  • সার্চ শেষ হলে উত্তর শুরু হয়। স্ট্রিম করা রিকোয়েস্ট তার আগে হেডার বা ইভেন্ট কিছুই পাঠায় না, তাই প্রথম চাঙ্কের আগে দীর্ঘতর অপেক্ষার জন্য প্রস্তুত থাকুন।

উত্তরে কী থাকে

  • উত্তর তার এন্ডপয়েন্টের স্বাভাবিক আকারে থাকে। উত্তর থাকে choices[0].message.content-এ (/v1/messages-এ একটি text ব্লক)।
  • টেক্সটে সমর্থিত বক্তব্যের পরে [1] ও [2]-এর মতো চিহ্ন থাকতে পারে। প্রতিটি সংখ্যা মডেলের পড়া একটি ফলাফল বোঝায়।
  • sources সেই ফলাফলগুলোর নাম দেয়: মডেলকে দেওয়া প্রতিটি ফলাফলের জন্য একটি এন্ট্রি, তাতে index, title ও url থাকে। [1] মার্কারটি হলো index 1 সহ এন্ট্রি। উত্তর যে ফলাফল উদ্ধৃত করে না সেগুলোও তালিকায় থাকে।
  • /v1/chat/completions-এ মেসেজে OpenAI-এর আকারে annotations-ও থাকে: মার্কারের নাম করা প্রতিটি উৎসের জন্য একটি url_citation, তাতে url, title, এবং start_index ও end_index থাকে, যা content-এ মার্কারের অবস্থান, অক্ষরে গোনা (শেষটি অন্তর্ভুক্ত নয়)।
  • স্ট্রিমে sources আসে শেষ চাঙ্কের সঙ্গে, আর /v1/messages-এ message_delta ইভেন্টের সঙ্গে। অ্যানোটেশন আসে শেষটির ঠিক আগের একটি চাঙ্কে, delta.annotations হিসেবে।
  • sources থাকে শুধু যখন এই রিকোয়েস্টের সার্চে কিছু পাওয়া গেছে। এটি ছাড়া উত্তর লেখা হয়েছে সার্চ ফলাফল ছাড়াই।

সার্চ কীভাবে গোনা হয়

প্রতিটি প্ল্যানে প্রতিদিন কিছু সার্চ অন্তর্ভুক্ত:

প্ল্যান প্রতিদিন সার্চ
ফ্রি 3
প্লাস 30
Standard 50
প্রো 60
  • যে রিকোয়েস্টের সার্চে কিছু পাওয়া গেছে তা দিনের এলাউন্সের একটি সার্চ ব্যবহার করে। যে সার্চে কিছু পাওয়া যায়নি তা কিছুই ব্যবহার করে না।
  • চ্যাট ও API key-এর মালিক অ্যাকাউন্টের এলাউন্স ভাগ করে নেয়।
  • গণনা প্রতিদিন 00:00 UTC-তে আবার শুরু হয়।
  • সার্চের ফলাফল রিকোয়েস্টের ইনপুট tokens এবং প্রম্পটের বাকি অংশের সাথে বিল হয়।

প্ল্যানগুলো তুলনা করুন

দিনের সার্চ শেষ হয়ে গেলে

দিনের শেষ সার্চের পরে web_search: true পাঠানো রিকোয়েস্ট প্রত্যাখ্যাত হয় না। তার উত্তর সার্চ ছাড়া দেওয়া হয়: স্ট্যাটাস 200 এবং উত্তরে sources থাকে না।

নিজের টুল হিসেবে সার্চ

web_search: true এখানে বর্ণিত সার্চের একমাত্র সুইচ। আপনি tools-এ যে ফাংশন সংজ্ঞায়িত করে নাম দেন web_search তা আপনার নিজের টুলগুলোর একটি: মডেল একটি কল ফেরত দেয়, আর আপনার কোড সার্চ চালিয়ে ফলাফল ফেরত পাঠায়।

অন্য প্ল্যাটফর্মের সার্চ টুলের type, যেমন /v1/messages-এ web_search_20250305 বা /v1/responses-এ {"type": "web_search"}, এখানে সার্চ শুরু করে না।

এরর

ওয়েব সার্চ কোনো স্ট্যাটাস কোড বা এররের type যোগ করে না। যে সার্চে কিছু পাওয়া যায় না, বা যে দিনে সার্চ বাকি নেই, তাতে সার্চ ফলাফল ছাড়া একটি স্বাভাবিক উত্তর আসে। অন্য প্রতিটি এরর সার্চ ছাড়া রিকোয়েস্টের মতোই। এরর হ্যান্ডলিং