Retserĉo
Agordu web_search: true kaj la modelo bazas sian respondon sur vivaj rezultoj.
POST https://api.shannon-ai.com/v1/chat/completions
from openai import OpenAI
client = OpenAI(api_key="YOUR_API_KEY", base_url="https://api.shannon-ai.com/v1")
response = client.chat.completions.create(
model="shannon-3",
messages=[{"role": "user", "content": "What is the weather forecast for Lisbon this weekend?"}],
extra_body={"web_search": True}, # a Shannon field, so it goes in extra_body
)
print(response.choices[0].message.content) import OpenAI from "openai";
const client = new OpenAI({ apiKey: "YOUR_API_KEY", baseURL: "https://api.shannon-ai.com/v1" });
const response = await client.chat.completions.create({
model: "shannon-3",
messages: [{ role: "user", content: "What is the weather forecast for Lisbon this weekend?" }],
web_search: true,
});
console.log(response.choices[0].message.content); curl https://api.shannon-ai.com/v1/chat/completions \
-H "Authorization: Bearer YOUR_API_KEY" \
-H "Content-Type: application/json" \
-d '{
"model": "shannon-3",
"messages": [
{"role": "user", "content": "What is the weather forecast for Lisbon this weekend?"}
],
"web_search": true
}' La respondo estas ordinara babila kompletigo kun du aldonaĵoj. La respondo montras al la serĉrezultoj per nombroj en rektaj krampoj, sources diras, kion signifas ĉiu nombro, kaj annotations markas, kie ĉiu estas citita:
{
"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"
}
]
} Ŝalto de serĉo
Serĉo estas kampo de la peto, defaŭlte malŝaltita. Nenio estas serĉata, krom se peto sendas ĝin.
| Kampo | Tipo | Defaŭlto | Priskribo | Aplikata de |
|---|---|---|---|---|
web_search | boolean | false | true faras retserĉon por ĉi tiu peto kaj donas la rezultojn al la modelo antaŭ ol ĝi respondas. | Ĉiu Shannon-modelo krom shannon-coder-1 |
| Endpoint | Retserĉo | Kiel |
|---|---|---|
/v1/chat/completions | Jes | "web_search": true en la korpo de la peto. |
/v1/messages | Jes | "web_search": true en la korpo de la peto. |
/v1/responses | — | Ĉi tiu endpoint respondas nur el la modelo. Uzu unu el la du supraj por respondo kun serĉo. |
Ĉe /v1/messages la kampo troviĝas ĉe la supra nivelo de la korpo, apud model kaj messages:
{
"model": "shannon-3",
"web_search": true,
"messages": [
{
"role": "user",
"content": "What is the weather forecast for Lisbon this weekend?"
}
]
} Kion faras peto kun serĉo
- La API serĉas en la reto pri la lasta mesaĝo de la uzanto. Pli fruaj vicoj de la konversacio donas al la serĉo ĝian kuntekston.
- La serĉo okazas ĉe ĉiu peto, kiu sendas
web_search: true. La modelo ne elektas ĉu serĉi. - La rezultoj estas metitaj antaŭ la modelon kiel numeritaj fontoj, kaj la modelo skribas sian respondon el ili.
- La respondo komenciĝas kiam la serĉo finiĝis. Fluata peto sendas nenion, nek kapojn nek eventojn, ĝis tiam, do kalkulu kun pli longa atendo antaŭ la unua peco.
Kion la respondo enhavas
- La respondo havas la kutiman formon de sia endpoint. La respondo estas en
choices[0].message.content(blokotextĉe/v1/messages). - La teksto povas porti markojn kiel
[1]kaj[2]post la asertoj, kiujn ili subtenas. Ĉiu nombro reprezentas unu el la rezultoj, kiujn la modelo legis. sourcesnomas tiujn rezultojn: unu enskribo por ĉiu rezulto, kiun la modelo ricevis, kunindex,titlekajurl. La marko[1]estas la enskribo kunindex1. Rezultoj, kiujn la respondo ne citas, estas listigitaj ankaŭ.- Ĉe
/v1/chat/completionsla mesaĝo havas ankaŭannotations, en la formo de OpenAI: unuurl_citationpor ĉiu fonto, kiun marko nomas, kunurl,title, kajstart_indexkajend_index, la pozicio de la marko encontentkalkulita en signoj (la fino ne estas inkluzivita). - En fluo
sourcesvenas kun la lasta peco, kaj ĉe/v1/messageskun la eventomessage_delta. La notoj venas en unu peco tuj antaŭ la lasta, kieldelta.annotations. sourcesĉeestas nur se la serĉo de ĉi tiu peto trovis ion. Respondo sen ĝi estis skribita sen serĉrezultoj.
Kiel serĉoj estas kalkulataj
Ĉiu plano inkluzivas certan nombron da serĉoj tage:
| Plano | Serĉoj tage |
|---|---|
| Senpaga | 3 |
| Plusa | 30 |
| Standard | 50 |
| Profesia | 60 |
- Peto, kies serĉo trovis ion, uzas unu serĉon de la tagokvoto. Serĉo, kiu trovis nenion, uzas neniun.
- Babilo kaj API kunuzas la kvoton de la konto, kiu posedas la ŝlosilon.
- La kalkulo rekomenciĝas ĉiutage je 00:00 UTC.
- La serĉrezultoj estas enigaj tokenoj de la peto kaj estas kalkulataj kun la cetero de la prompt.
Kiam la serĉoj de la tago estas elĉerpitaj
Peto, kiu sendas web_search: true post la lasta serĉo de la tago, ne estas rifuzata. Ĝi estas respondata sen serĉo: la stato estas 200 kaj la respondo ne havas sources.
Serĉo kiel propra ilo
web_search: true estas la sola ŝaltilo de la ĉi tie priskribita serĉo. Funkcio, kiun vi difinas en tools kaj nomas web_search, estas unu el viaj propraj iloj: la modelo redonas vokon, kaj via kodo plenumas la serĉon kaj resendas la rezulton.
Tipoj de serĉiloj de aliaj platformoj, kiel web_search_20250305 ĉe /v1/messages aŭ {"type": "web_search"} ĉe /v1/responses, ne ekigas serĉon ĉi tie.
Eraroj
Retserĉo aldonas neniun statokodon kaj neniun tipon de eraro. Serĉo, kiu trovas nenion, aŭ tago sen restantaj serĉoj, donas normalan respondon sen serĉrezultoj. Ĉiu alia eraro estas sama kiel ĉe peto sen serĉo. Erarotraktado