Lassen Sie Ihre Server Vervollständigungen von LLMs anfordernSampling ist eine leistungsstarke MCP-Funktion, die es Servern ermöglicht, LLM-Vervollständigungen über den Client anzufordern, was anspruchsvolle agentische Verhaltensweisen ermöglicht und gleichzeitig Sicherheit und Datenschutz gewährleistet.Diese Funktion von MCP wird im Claude Desktop-Client noch nicht unterstützt.Der Sampling-Ablauf umfasst die folgenden Schritte:1.
Der Server sendet eine sampling/createMessage-Anfrage an den Client
2.
Der Client überprüft die Anfrage und kann sie ändern
3.
Der Client führt ein Sampling von einem LLM durch
4.
Der Client überprüft die Vervollständigung
5.
Der Client gibt das Ergebnis an den Server zurück
Dieses Human-in-the-Loop-Design stellt sicher, dass die Benutzer die Kontrolle darüber behalten, was das LLM sieht und generiert.Sampling-Anfragen verwenden ein standardisiertes Nachrichtenformat:Anfrageparameter#
Nachrichten#
Das messages-Array enthält den Konversationsverlauf, der an das LLM gesendet werden soll. Jede Nachricht hat:role: Entweder "user" oder "assistant"
: Der Nachrichteninhalt, der Folgendes sein kann:Textinhalt mit einem text-Feld
Bildinhalt mit data (base64) und mimeType-Feldern
Das modelPreferences-Objekt ermöglicht es Servern, ihre Modellauswahlpräferenzen anzugeben:hints: Array von Modellnamensvorschlägen, die Clients verwenden können, um ein geeignetes Modell auszuwählen:name: String, der vollständige oder teilweise Modellnamen abgleichen kann (z. B. "claude-3", "sonnet")
Clients können Hinweise auf äquivalente Modelle von verschiedenen Anbietern abbilden
Mehrere Hinweise werden in der Reihenfolge ihrer Präferenz ausgewertet
Prioritätswerte (0-1 normalisiert):costPriority: Bedeutung der Minimierung von Kosten
speedPriority: Bedeutung einer geringen Latenzzeit
intelligencePriority: Bedeutung fortschrittlicher Modellfähigkeiten
Clients treffen die endgültige Modellauswahl basierend auf diesen Präferenzen und ihren verfügbaren Modellen.Ein optionales systemPrompt-Feld ermöglicht es Servern, einen bestimmten System Prompt anzufordern. Der Client kann dies ändern oder ignorieren.Der Parameter includeContext gibt an, welcher MCP-Kontext einbezogen werden soll:"none": Kein zusätzlicher Kontext
"thisServer": Kontext vom anfordernden Server einschließen
"allServers": Kontext von allen verbundenen MCP-Servern einschließen
Der Client steuert, welcher Kontext tatsächlich einbezogen wird.Feinabstimmung des LLM-Sampling mit:temperature: Steuert die Zufälligkeit (0.0 bis 1.0)
maxTokens: Maximale Anzahl zu generierender Token
stopSequences: Array von Sequenzen, die die Generierung stoppen
metadata: Zusätzliche anbieterspezifische Parameter
Der Client gibt ein Vervollständigungsergebnis zurück:Hier ist ein Beispiel für die Anforderung von Sampling von einem Client:{
"method": "sampling/createMessage",
"params": {
"messages": [
{
"role": "user",
"content": {
"type": "text",
"text": "What files are in the current directory?"
}
}
],
"systemPrompt": "You are a helpful file system assistant.",
"includeContext": "thisServer",
"maxTokens": 100
}
}
Bei der Implementierung von Sampling:1.
Immer klare, gut strukturierte Prompts bereitstellen
2.
Text- und Bildinhalte angemessen verarbeiten
3.
Angemessene Token-Limits festlegen
4.
Relevanter Kontext durch includeContext einbeziehen
5.
Antworten vor der Verwendung validieren
6.
Fehler ordnungsgemäß behandeln
7.
Ratenbegrenzung von Sampling-Anfragen in Betracht ziehen
8.
Erwartetes Sampling-Verhalten dokumentieren
9.
Mit verschiedenen Modellparametern testen
10.
Sampling-Kosten überwachen
Sampling ist auf menschliche Aufsicht ausgelegt:Clients sollten Benutzern den vorgeschlagenen Prompt anzeigen
Benutzer sollten in der Lage sein, Prompts zu ändern oder abzulehnen
System Prompts können gefiltert oder geändert werden
Kontextinklusion wird vom Client gesteuert
Clients sollten Benutzern die Vervollständigung anzeigen
Benutzer sollten in der Lage sein, Vervollständigungen zu ändern oder abzulehnen
Clients können Vervollständigungen filtern oder ändern
Benutzer steuern, welches Modell verwendet wird
Bei der Implementierung von Sampling:Alle Nachrichteninhalte validieren
Sensible Informationen bereinigen
Angemessene Ratenbegrenzungen implementieren
Sampling-Nutzung überwachen
Daten bei der Übertragung verschlüsseln
Datenschutz der Benutzerdaten behandeln
Kostenrisiko kontrollieren
Modellfehler ordnungsgemäß behandeln
Sampling ermöglicht agentische Muster wie:Lesen und Analysieren von Ressourcen
Treffen von Entscheidungen basierend auf dem Kontext
Generieren von strukturierten Daten
Bearbeiten von mehrstufigen Aufgaben
Bereitstellung interaktiver Unterstützung
Bewährte Praktiken für den Kontext:Minimal notwendigen Kontext anfordern
Kontext klar strukturieren
Kontextgrößenbeschränkungen behandeln
Kontext bei Bedarf aktualisieren
Veralteten Kontext bereinigen
Eine robuste Fehlerbehandlung sollte:Ratenbegrenzungen verwalten
Fallback-Verhaltensweisen bereitstellen
Fehler ordnungsgemäß protokollieren
Beachten Sie diese Einschränkungen:Sampling hängt von den Client-Fähigkeiten ab
Benutzer steuern das Sampling-Verhalten
Ratenbegrenzungen können gelten
Kosten sollten berücksichtigt werden
Modellverfügbarkeit variiert
Nicht alle Inhaltstypen werden unterstützt
Modified at 2025-03-13 04:03:56