ਵੈੱਬ ਖੋਜ
web_search: true ਸੈੱਟ ਕਰੋ ਅਤੇ ਮਾਡਲ ਆਪਣੇ ਜਵਾਬ ਨੂੰ ਲਾਈਵ ਨਤੀਜਿਆਂ ਨਾਲ ਆਧਾਰਿਤ ਕਰਦਾ ਹੈ।
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
}' ਜਵਾਬ ਇੱਕ ਆਮ ਚੈਟ completion ਹੈ, ਜਿਸ ਵਿੱਚ ਦੋ ਚੀਜ਼ਾਂ ਵਾਧੂ ਹਨ। ਜਵਾਬ ਵਰਗ ਬਰੈਕਟਾਂ ਵਿੱਚ ਨੰਬਰਾਂ ਰਾਹੀਂ ਖੋਜ ਨਤੀਜਿਆਂ ਵੱਲ ਇਸ਼ਾਰਾ ਕਰਦਾ ਹੈ, sources ਦੱਸਦਾ ਹੈ ਕਿ ਹਰ ਨੰਬਰ ਕਿਸ ਨੂੰ ਦਰਸਾਉਂਦਾ ਹੈ, ਅਤੇ annotations ਦਰਸਾਉਂਦਾ ਹੈ ਕਿ ਹਰ ਇੱਕ ਦਾ ਹਵਾਲਾ ਕਿੱਥੇ ਦਿੱਤਾ ਗਿਆ ਹੈ:
{
"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 | — | ਇਹ 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 ਆਖਰੀ user ਸੰਦੇਸ਼ ਲਈ ਵੈੱਬ ਖੋਜਦਾ ਹੈ। ਗੱਲਬਾਤ ਦੇ ਪਿਛਲੇ ਮੋੜ ਖੋਜ ਨੂੰ ਉਸਦਾ ਸੰਦਰਭ ਦਿੰਦੇ ਹਨ।
- ਖੋਜ ਹਰ ਉਸ ਰਿਕੁਐਸਟ ਉੱਤੇ ਚੱਲਦੀ ਹੈ ਜੋ
web_search: trueਭੇਜਦੀ ਹੈ। ਮਾਡਲ ਇਹ ਨਹੀਂ ਚੁਣਦਾ ਕਿ ਖੋਜਣਾ ਹੈ ਜਾਂ ਨਹੀਂ। - ਨਤੀਜੇ ਨੰਬਰ ਵਾਲੇ ਸਰੋਤਾਂ ਵਜੋਂ ਮਾਡਲ ਦੇ ਸਾਹਮਣੇ ਰੱਖੇ ਜਾਂਦੇ ਹਨ, ਅਤੇ ਮਾਡਲ ਉਨ੍ਹਾਂ ਤੋਂ ਆਪਣਾ ਜਵਾਬ ਲਿਖਦਾ ਹੈ।
- ਜਵਾਬ ਖੋਜ ਪੂਰੀ ਹੋਣ ਉੱਤੇ ਸ਼ੁਰੂ ਹੁੰਦਾ ਹੈ। ਸਟ੍ਰੀਮ ਵਾਲੀ ਰਿਕੁਐਸਟ ਉਦੋਂ ਤੱਕ ਕੁਝ ਨਹੀਂ ਭੇਜਦੀ, ਨਾ headers ਨਾ ਇਵੈਂਟ, ਇਸ ਲਈ ਪਹਿਲੇ ਚੰਕ ਤੋਂ ਪਹਿਲਾਂ ਲੰਬੀ ਉਡੀਕ ਦਾ ਹਿਸਾਬ ਰੱਖੋ।
ਜਵਾਬ ਵਿੱਚ ਕੀ ਹੁੰਦਾ ਹੈ
- ਜਵਾਬ ਦੀ ਸ਼ਕਲ ਉਸਦੇ endpoint ਦੀ ਆਮ ਸ਼ਕਲ ਹੁੰਦੀ ਹੈ। ਜਵਾਬ
choices[0].message.contentਵਿੱਚ ਹੁੰਦਾ ਹੈ (/v1/messagesਉੱਤੇ ਇੱਕtextਬਲਾਕ)। - ਟੈਕਸਟ ਵਿੱਚ ਉਨ੍ਹਾਂ ਕਥਨਾਂ ਤੋਂ ਬਾਅਦ
[1]ਅਤੇ[2]ਵਰਗੇ ਚਿੰਨ੍ਹ ਹੋ ਸਕਦੇ ਹਨ ਜਿਨ੍ਹਾਂ ਨੂੰ ਉਹ ਸਹਾਰਦੇ ਹਨ। ਹਰ ਨੰਬਰ ਉਨ੍ਹਾਂ ਨਤੀਜਿਆਂ ਵਿੱਚੋਂ ਇੱਕ ਨੂੰ ਦਰਸਾਉਂਦਾ ਹੈ ਜੋ ਮਾਡਲ ਨੇ ਪੜ੍ਹੇ। sourcesਉਨ੍ਹਾਂ ਨਤੀਜਿਆਂ ਦੇ ਨਾਮ ਦੱਸਦਾ ਹੈ: ਮਾਡਲ ਨੂੰ ਦਿੱਤੇ ਹਰ ਨਤੀਜੇ ਲਈ ਇੱਕ ਐਂਟਰੀ, ਜਿਸ ਵਿੱਚindex,titleਅਤੇurlਹੁੰਦੇ ਹਨ। ਚਿੰਨ੍ਹ[1]ਉਹ ਐਂਟਰੀ ਹੈ ਜਿਸਦਾindex1 ਹੈ। ਜਿਨ੍ਹਾਂ ਨਤੀਜਿਆਂ ਦਾ ਹਵਾਲਾ ਜਵਾਬ ਵਿੱਚ ਨਹੀਂ ਦਿੱਤਾ ਗਿਆ, ਉਹ ਵੀ ਸੂਚੀ ਵਿੱਚ ਹੁੰਦੇ ਹਨ।/v1/chat/completionsਉੱਤੇ ਸੁਨੇਹੇ ਵਿੱਚannotationsਵੀ ਹੁੰਦਾ ਹੈ, OpenAI ਦੀ ਸ਼ਕਲ ਵਿੱਚ: ਚਿੰਨ੍ਹ ਦੁਆਰਾ ਦੱਸੇ ਹਰ ਸਰੋਤ ਲਈ ਇੱਕurl_citation, ਜਿਸ ਵਿੱਚurl,title, ਅਤੇstart_indexਤੇend_indexਹੁੰਦੇ ਹਨ, ਯਾਨੀcontentਵਿੱਚ ਚਿੰਨ੍ਹ ਦੀ ਥਾਂ, ਜੋ ਅੱਖਰਾਂ ਵਿੱਚ ਗਿਣੀ ਜਾਂਦੀ ਹੈ (ਅੰਤ ਸ਼ਾਮਲ ਨਹੀਂ)।- ਸਟ੍ਰੀਮ ਵਿੱਚ
sourcesਆਖਰੀ ਚੰਕ ਨਾਲ ਆਉਂਦਾ ਹੈ, ਅਤੇ/v1/messagesਉੱਤੇmessage_deltaਇਵੈਂਟ ਨਾਲ। Annotations ਆਖਰੀ ਚੰਕ ਤੋਂ ਠੀਕ ਪਹਿਲਾਂ ਦੇ ਇੱਕ ਚੰਕ ਵਿੱਚdelta.annotationsਵਜੋਂ ਆਉਂਦੇ ਹਨ। sourcesਸਿਰਫ਼ ਤਦ ਹੁੰਦਾ ਹੈ ਜਦੋਂ ਇਸ ਰਿਕੁਐਸਟ ਦੀ ਖੋਜ ਨੂੰ ਕੁਝ ਮਿਲਿਆ ਹੋਵੇ। ਜਿਸ ਜਵਾਬ ਵਿੱਚ ਇਹ ਨਹੀਂ ਹੈ, ਉਹ ਖੋਜ ਨਤੀਜਿਆਂ ਤੋਂ ਬਿਨਾਂ ਲਿਖਿਆ ਗਿਆ ਸੀ।
ਖੋਜਾਂ ਕਿਵੇਂ ਗਿਣੀਆਂ ਜਾਂਦੀਆਂ ਹਨ
ਹਰ ਪਲਾਨ ਵਿੱਚ ਪ੍ਰਤੀ ਦਿਨ ਕੁਝ ਖੋਜਾਂ ਸ਼ਾਮਲ ਹਨ:
| ਪਲਾਨ | ਪ੍ਰਤੀ ਦਿਨ ਖੋਜਾਂ |
|---|---|
| ਮੁਫਤ | 3 |
| ਪਲੱਸ | 30 |
| Standard | 50 |
| ਪ੍ਰੋ | 60 |
- ਜਿਸ ਰਿਕੁਐਸਟ ਦੀ ਖੋਜ ਵਿੱਚ ਕੁਝ ਮਿਲਿਆ, ਉਹ ਦਿਨ ਦੇ ਭੱਤੇ ਵਿੱਚੋਂ ਇੱਕ ਖੋਜ ਵਰਤਦੀ ਹੈ। ਜਿਸ ਖੋਜ ਵਿੱਚ ਕੁਝ ਨਹੀਂ ਮਿਲਿਆ, ਉਹ ਕੋਈ ਨਹੀਂ ਵਰਤਦੀ।
- ਚੈਟ ਅਤੇ API ਉਸ ਖਾਤੇ ਦਾ ਭੱਤਾ ਸਾਂਝਾ ਕਰਦੇ ਹਨ ਜੋ key ਦਾ ਮਾਲਕ ਹੈ।
- ਗਿਣਤੀ ਹਰ ਦਿਨ 00:00 UTC ਉੱਤੇ ਦੁਬਾਰਾ ਸ਼ੁਰੂ ਹੁੰਦੀ ਹੈ।
- ਖੋਜ ਨਤੀਜੇ ਰਿਕੁਐਸਟ ਦੇ ਇਨਪੁਟ ਟੋਕਨ ਹਨ ਅਤੇ ਬਾਕੀ ਪ੍ਰੋਂਪਟ ਦੇ ਨਾਲ ਬਿਲ ਕੀਤੇ ਜਾਂਦੇ ਹਨ।
ਜਦੋਂ ਦਿਨ ਦੀਆਂ ਖੋਜਾਂ ਮੁੱਕ ਜਾਣ
ਜੋ ਰਿਕੁਐਸਟ ਦਿਨ ਦੀ ਆਖਰੀ ਖੋਜ ਤੋਂ ਬਾਅਦ web_search: true ਭੇਜਦੀ ਹੈ, ਉਹ ਰੱਦ ਨਹੀਂ ਕੀਤੀ ਜਾਂਦੀ। ਉਸਦਾ ਜਵਾਬ ਖੋਜ ਤੋਂ ਬਿਨਾਂ ਦਿੱਤਾ ਜਾਂਦਾ ਹੈ: ਸਟੇਟਸ 200 ਹੁੰਦਾ ਹੈ ਅਤੇ ਜਵਾਬ ਵਿੱਚ ਕੋਈ sources ਨਹੀਂ ਹੁੰਦਾ।
ਆਪਣੇ ਟੂਲ ਵਜੋਂ ਖੋਜ
web_search: true ਇੱਥੇ ਦੱਸੀ ਖੋਜ ਦਾ ਇੱਕੋ ਇੱਕ ਸਵਿੱਚ ਹੈ। ਜੋ ਫੰਕਸ਼ਨ ਤੁਸੀਂ tools ਵਿੱਚ ਪਰਿਭਾਸ਼ਿਤ ਕਰਦੇ ਹੋ ਅਤੇ ਜਿਸਦਾ ਨਾਮ web_search ਰੱਖਦੇ ਹੋ, ਉਹ ਤੁਹਾਡਾ ਆਪਣਾ ਟੂਲ ਹੈ: ਮਾਡਲ ਇੱਕ ਕਾਲ ਵਾਪਸ ਕਰਦਾ ਹੈ, ਅਤੇ ਤੁਹਾਡਾ ਕੋਡ ਖੋਜ ਚਲਾਉਂਦਾ ਹੈ ਅਤੇ ਨਤੀਜਾ ਵਾਪਸ ਭੇਜਦਾ ਹੈ।
ਹੋਰ ਪਲੇਟਫਾਰਮਾਂ ਦੀਆਂ ਖੋਜ ਟੂਲ ਕਿਸਮਾਂ, ਜਿਵੇਂ /v1/messages ਉੱਤੇ web_search_20250305 ਜਾਂ /v1/responses ਉੱਤੇ {"type": "web_search"}, ਇੱਥੇ ਖੋਜ ਸ਼ੁਰੂ ਨਹੀਂ ਕਰਦੀਆਂ।
ਗਲਤੀਆਂ
ਵੈੱਬ ਸਰਚ ਕੋਈ ਨਵਾਂ ਸਟੇਟਸ ਕੋਡ ਜਾਂ ਗਲਤੀ ਦੀ ਕਿਸਮ ਨਹੀਂ ਜੋੜਦੀ। ਜਿਸ ਖੋਜ ਵਿੱਚ ਕੁਝ ਨਾ ਮਿਲੇ, ਜਾਂ ਜਿਸ ਦਿਨ ਖੋਜਾਂ ਨਾ ਬਚੀਆਂ ਹੋਣ, ਉਹ ਖੋਜ ਨਤੀਜਿਆਂ ਤੋਂ ਬਿਨਾਂ ਆਮ ਜਵਾਬ ਦਿੰਦੀ ਹੈ। ਹਰ ਹੋਰ ਗਲਤੀ ਖੋਜ ਤੋਂ ਬਿਨਾਂ ਰਿਕੁਐਸਟ ਵਾਂਗ ਹੀ ਹੈ। ਗਲਤੀਆਂ