Μετάβαση στο περιεχόμενο
Ενσωματωμένη αναζήτηση ιστού

Ενσωματωμένη αναζήτηση ιστού

Ορίστε web_search: true και το μοντέλο τεκμηριώνει την απάντησή του με ζωντανά αποτελέσματα.

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

Η απάντηση είναι ένα συνηθισμένο chat completion με δύο προσθήκες. Η απάντηση παραπέμπει στα αποτελέσματα αναζήτησης με αριθμούς σε αγκύλες, το 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 εκτός από το shannon-coder-1
Endpoint Αναζήτηση στον ιστό Πώς
/v1/chat/completions Ναι "web_search": true στο σώμα του αιτήματος.
/v1/messages Ναι "web_search": true στο σώμα του αιτήματος.
/v1/responses — Αυτό το endpoint απαντά μόνο από το μοντέλο. Χρησιμοποιήστε ένα από τα δύο παραπάνω για απάντηση με αναζήτηση.

Στο /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. Το μοντέλο δεν επιλέγει αν θα κάνει αναζήτηση.
  • Τα αποτελέσματα τοποθετούνται μπροστά στο μοντέλο ως αριθμημένες πηγές, και το μοντέλο γράφει την απάντησή του από αυτά.
  • Η απάντηση ξεκινά όταν τελειώσει η αναζήτηση. Ένα αίτημα με streaming δεν στέλνει τίποτα, ούτε κεφαλίδες ούτε συμβάντα, μέχρι τότε, οπότε υπολογίστε μεγαλύτερη αναμονή πριν από το πρώτο chunk.

Τι περιέχει η απάντηση

  • Η απάντηση έχει τη συνηθισμένη μορφή του endpoint της. Η απάντηση βρίσκεται στο choices[0].message.content (block text στο /v1/messages).
  • Το κείμενο μπορεί να φέρει δείκτες όπως [1] και [2] μετά τους ισχυρισμούς που στηρίζουν. Κάθε αριθμός αντιστοιχεί σε ένα από τα αποτελέσματα που διάβασε το μοντέλο.
  • Το sources ονομάζει αυτά τα αποτελέσματα: μία εγγραφή για κάθε αποτέλεσμα που δόθηκε στο μοντέλο, με index, title και url. Ο δείκτης [1] είναι η εγγραφή με index 1. Αναφέρονται και τα αποτελέσματα που η απάντηση δεν παραθέτει.
  • Στο /v1/chat/completions το μήνυμα έχει επίσης annotations, στη μορφή του OpenAI: ένα url_citation για κάθε πηγή που κατονομάζει ένας δείκτης, με url, title, καθώς και start_index και end_index, τη θέση του δείκτη στο content μετρημένη σε χαρακτήρες (το τέλος δεν περιλαμβάνεται).
  • Σε ένα stream το sources έρχεται με το τελευταίο chunk και στο /v1/messages με το γεγονός message_delta. Οι σημειώσεις έρχονται σε ένα chunk αμέσως πριν από το τελευταίο, ως delta.annotations.
  • Το sources υπάρχει μόνο αν η αναζήτηση αυτού του αιτήματος βρήκε κάτι. Μια απάντηση χωρίς αυτό γράφτηκε χωρίς αποτελέσματα αναζήτησης.

Πώς μετρώνται οι αναζητήσεις

Κάθε πλάνο περιλαμβάνει έναν αριθμό αναζητήσεων ανά ημέρα:

Πλάνο Αναζητήσεις ανά ημέρα
Δωρεάν 3
Πλέον 30
Standard 50
Επαγγελματικό 60
  • Ένα αίτημα του οποίου η αναζήτηση βρήκε κάτι χρησιμοποιεί μία αναζήτηση από το ημερήσιο όριο. Μια αναζήτηση που δεν βρήκε τίποτα δεν χρησιμοποιεί καμία.
  • Το chat και το API μοιράζονται το όριο του λογαριασμού στον οποίο ανήκει το κλειδί.
  • Η μέτρηση ξεκινά ξανά κάθε μέρα στις 00:00 UTC.
  • Τα αποτελέσματα αναζήτησης είναι tokens εισόδου του αιτήματος και χρεώνονται μαζί με το υπόλοιπο prompt.

Σύγκριση πλάνων

Όταν εξαντληθούν οι αναζητήσεις της ημέρας

Ένα αίτημα που στέλνει web_search: true μετά την τελευταία αναζήτηση της ημέρας δεν απορρίπτεται. Απαντάται χωρίς αναζήτηση: η κατάσταση είναι 200 και η απάντηση δεν έχει sources.

Η αναζήτηση ως δικό σας εργαλείο

Το web_search: true είναι ο μόνος διακόπτης της αναζήτησης που περιγράφεται εδώ. Μια συνάρτηση που ορίζετε στο tools και ονομάζετε web_search είναι ένα από τα δικά σας εργαλεία: το μοντέλο επιστρέφει μια κλήση και ο κώδικάς σας εκτελεί την αναζήτηση και στέλνει πίσω το αποτέλεσμα.

Τύποι εργαλείων αναζήτησης άλλων πλατφορμών, όπως το web_search_20250305 στο /v1/messages ή το {"type": "web_search"} στο /v1/responses, δεν ξεκινούν αναζήτηση εδώ.

Σφάλματα

Η αναζήτηση στον ιστό δεν προσθέτει κωδικό κατάστασης ούτε τύπο σφάλματος. Μια αναζήτηση που δεν βρίσκει τίποτα, ή μια ημέρα χωρίς αναζητήσεις που απομένουν, δίνει κανονική απάντηση χωρίς αποτελέσματα αναζήτησης. Κάθε άλλο σφάλμα είναι ίδιο με ένα αίτημα χωρίς αναζήτηση. Χειρισμός σφαλμάτων