Ce face sampling/createMessage (Sampling, depreciat)
Sampling este depreciat din revizia 2026-07-28 (SEP-2577): rămâne funcțional cel puțin 12 luni, dar implementările noi nu ar trebui să-l adopte, iar cele existente ar trebui să treacă la integrarea directă cu API-ul furnizorului LLM. Funcția permite serverului să ceară o generare de la modelul clientului; clientul păstrează controlul asupra accesului la model, alegerii modelului și permisiunilor. Specificația recomandă ca utilizatorul să poată vedea, edita sau refuza cererea și să poată revizui răspunsul.
În 2026-07-28 serverul nu mai trimite sampling/createMessage ca cerere separată. Îl pune în inputRequests al unui InputRequiredResult, iar clientul întoarce CreateMessageResult în inputResponses la reîncercarea cererii originale. Clientul declară capabilitatea sampling; sampling.tools permite cereri cu unelte, iar sampling.context (depreciat) permite includeContext. Dacă utilizatorul refuză, clientul nu trebuie să reia cererea inițială cu un mesaj de eroare.
Parametrii: messages (roluri user/assistant, conținut text, imagine sau audio), modelPreferences (hints ca subșiruri de nume de model, plus priorități 0–1 pentru cost, viteză și inteligență), systemPrompt, includeContext (implicit none; thisServer și allServers sunt depreciate), temperature, maxTokens (obligatoriu, respectat de client), stopSequences, metadata, tools și toolChoice. Clientul poate modifica sau ignora systemPrompt, includeContext, temperature, stopSequences și metadata.
Sintaxă și opțiuni
| Opțiune / Parametru | Descriere |
|---|---|
messages |
Mesajele trimise modelului. Nu ar trebui păstrate între cereri separate. |
modelPreferences.hints |
Sugestii de model (subșiruri, în ordinea preferinței); clientul alege modelul final. |
costPriority / speedPriority / intelligencePriority |
Priorități normalizate 0–1. |
systemPrompt |
Prompt de sistem cerut; clientul îl poate modifica sau ignora. |
includeContext |
none (implicit). thisServer și allServers sunt depreciate. |
maxTokens |
Obligatoriu. Clientul trebuie să-l respecte. |
temperature / stopSequences / metadata |
Opționale; clientul le poate modifica sau ignora. |
tools / toolChoice |
Unelte pentru această cerere; toolChoice.mode: auto (implicit), required, none. |
role / content / model / stopReason |
Rezultatul. stopReason: endTurn, stopSequence, maxTokens, toolUse sau valori proprii. |
Exemple practice
Exemplul 1: Cererea de sampling din inputRequests
{
"method": "sampling/createMessage",
"params": {
"messages": [
{
"role": "user",
"content": {
"type": "text",
"text": "What is the capital of France?"
}
}
],
"modelPreferences": {
"hints": [
{
"name": "claude-3-sonnet"
}
],
"costPriority": 0.3,
"intelligencePriority": 0.8,
"speedPriority": 0.5
},
"temperature": 0.1,
"systemPrompt": "You are a helpful assistant.",
"includeContext": "thisServer",
"maxTokens": 100
}
}
Exemplul 2: Rezultatul trimis de client în inputResponses
{
"role": "assistant",
"content": {
"type": "text",
"text": "The capital of France is Paris."
},
"model": "claude-3-sonnet-20240307",
"stopReason": "endTurn"
}
Greșeli frecvente și bune practici
- Începi un proiect nou pe Sampling. Specificația îl depreciază și recomandă apelarea directă a API-ului furnizorului LLM.
- Amesteci într-un mesaj
tool_resultcu text sau imagini. Un mesaj cu rezultate de unelte conține doar rezultate, câte unul pentru fiecaretool_use. - Trimiți cereri cu
toolsunui client care n-a declaratsampling.tools. Specificația interzice asta.