Langkau ke kandungan
Carian Web Terbina dalam

Carian Web Terbina dalam

Tetapkan web_search: true dan model mengukuhkan jawapannya dengan hasil langsung.

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

Balasan ialah chat completion biasa dengan dua tambahan. Jawapan menunjuk kepada hasil carian dengan nombor dalam kurungan segi empat, sources menyatakan apa yang diwakili setiap nombor, dan annotations menandakan tempat setiap satu dipetik:

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"
    }
  ]
}

Menghidupkan carian

Carian ialah medan permintaan, mati secara lalai. Tiada apa-apa dicari melainkan permintaan menghantarnya.

Medan Jenis Lalai Penerangan Dilaksanakan oleh
web_search boolean false true menjalankan carian web untuk permintaan ini dan memberikan hasilnya kepada model sebelum ia menjawab. Setiap model Shannon kecuali shannon-coder-1
Endpoint Carian web Caranya
/v1/chat/completions Ya "web_search": true dalam badan permintaan.
/v1/messages Ya "web_search": true dalam badan permintaan.
/v1/responses — Endpoint ini menjawab daripada model sahaja. Gunakan salah satu daripada dua di atas untuk jawapan yang disertai carian.

Pada /v1/messages, medan itu terletak di peringkat atas badan, di sebelah model dan messages:

Badan permintaan
{
  "model": "shannon-3",
  "web_search": true,
  "messages": [
    {
      "role": "user",
      "content": "What is the weather forecast for Lisbon this weekend?"
    }
  ]
}

Apa yang dilakukan oleh permintaan yang disertai carian

  • API mencari di web untuk mesej pengguna yang terakhir. Giliran perbualan terdahulu memberikan konteks kepada carian.
  • Carian berjalan pada setiap permintaan yang menghantar web_search: true. Model tidak memilih sama ada hendak mencari.
  • Hasil diletakkan di hadapan model sebagai sumber bernombor, dan model menulis jawapannya daripadanya.
  • Balasan bermula apabila carian selesai. Permintaan yang di-stream tidak menghantar apa-apa, sama ada header atau peristiwa, sehingga ketika itu, jadi sediakan penantian yang lebih lama sebelum chunk pertama.

Apa yang terkandung dalam balasan

  • Balasan mempunyai bentuk lazim endpointnya. Jawapan berada dalam choices[0].message.content (blok text pada /v1/messages).
  • Teks boleh membawa penanda seperti [1] dan [2] selepas pernyataan yang disokongnya. Setiap nombor mewakili salah satu hasil yang dibaca model.
  • sources menamakan hasil tersebut: satu entri bagi setiap hasil yang diberikan kepada model, dengan index, title dan url. Penanda [1] ialah entri dengan index 1. Hasil yang tidak dipetik oleh jawapan turut disenaraikan.
  • Pada /v1/chat/completions mesej juga mempunyai annotations, dalam bentuk OpenAI: satu url_citation bagi setiap sumber yang dinamakan oleh sesuatu penanda, dengan url, title, serta start_index dan end_index, iaitu kedudukan penanda dalam content yang dikira dalam aksara (hujungnya tidak termasuk).
  • Dalam stream, sources datang bersama chunk terakhir, dan pada /v1/messages bersama peristiwa message_delta. Anotasi datang dalam satu chunk sebelum chunk terakhir, sebagai delta.annotations.
  • sources hanya ada apabila carian bagi permintaan ini menemui sesuatu. Balasan tanpanya ditulis tanpa hasil carian.

Cara carian dikira

Setiap pelan termasuk sejumlah carian sehari:

Pelan Carian sehari
Percuma 3
Tambahan pula 30
Standard 50
Pro 60
  • Permintaan yang carinya menemui sesuatu menggunakan satu carian daripada kuota hari itu. Carian yang tidak menemui apa-apa tidak menggunakan satu pun.
  • Sembang dan API berkongsi kuota akaun yang memiliki kunci.
  • Kiraan bermula semula setiap hari pada 00:00 UTC.
  • Hasil carian ialah token input permintaan dan dibilkan bersama selebihnya prompt.

Bandingkan pelan

Apabila carian hari itu telah habis

Permintaan yang menghantar web_search: true selepas carian terakhir pada hari itu tidak ditolak. Ia dijawab tanpa carian: statusnya 200 dan balasan tidak mempunyai sources.

Carian sebagai alat anda sendiri

web_search: true ialah satu-satunya suis carian yang diterangkan di sini. Fungsi yang anda takrifkan dalam tools dan namakan web_search ialah salah satu alat anda sendiri: model memulangkan panggilan, dan kod anda menjalankan carian dan menghantar keputusan kembali.

Jenis alat carian platform lain, seperti web_search_20250305 pada /v1/messages atau {"type": "web_search"} pada /v1/responses, tidak memulakan carian di sini.

Ralat

Carian web tidak menambah kod status atau jenis ralat. Carian yang tidak menemui apa-apa, atau hari tanpa carian yang berbaki, memberikan jawapan biasa tanpa hasil carian. Setiap ralat lain adalah sama seperti bagi permintaan tanpa carian. Pengendalian Ralat