Zugang aus Übersee: www.kdjingpai.com
Ctrl + D Lesezeichen für diese Seite
Derzeitige Position:Abb. Anfang " Informationen zum Kurs

12-Faktoren-Agenten 3. die Kontrolle über Ihr Kontextfenster übernehmen

2025-07-22 46

Sie sind nicht verpflichtet, ein standardisiertes, nachrichtenbasiertes Format zu verwenden, um den Kontext an das große Sprachmodell zu übergeben.

Der Input, den Sie dem großen Sprachmodell in den KI-Intelligenzen geben, lautet zu jedem Zeitpunkt: "Hier ist alles, was bisher passiert ist, und hier ist, was als Nächstes zu tun ist".

Alles ist kontextbezogene Technik. Große Sprachmodelle sind zustandslose FunktionenSie wandeln Inputs in Outputs um. Um den besten Output zu erhalten, muss man ihnen den besten Input geben.

Qualitativen Kontext zu schaffen bedeutet:

  • Hinweise und Anweisungen, die Sie dem Modell geben
  • Alle Dokumente oder externen Daten, die Sie abrufen (z. B. RAG)
  • Frühere Zustände, Tool-Aufrufe, Ergebnisse oder andere Vorgänge
  • Alle vergangenen Nachrichten oder Ereignisse aus verwandten, aber unabhängigen Quellen (Erinnerungen)
  • Anweisungen, welche strukturierten Daten ausgegeben werden sollen

12-Faktoren-Agenten 3. die Kontrolle über Ihr Kontextfenster übernehmen-1

Über kontextbezogene Technik

Ziel dieses Leitfadens ist es, herauszufinden, wie man die Leistung der heutigen Modelle maximieren kann. Es ist wichtig zu beachten, dass dieser Leitfaden nicht auf die folgenden Punkte eingeht:

  • Änderungen an Modellparametern wie Temperatur, top_p, frequency_penalty, presence_penalty, etc.
  • Trainieren Sie Ihre eigenen ergänzenden oder einbettenden Modelle
  • Feinabstimmung der bestehenden Modelle

Auch hier weiß ich nicht, wie man den Kontext am besten an ein großes Sprachmodell übergibt, aber ich weiß, dass man die Flexibilität haben muss, alle Möglichkeiten auszuprobieren.

Standard- und benutzerdefinierte Kontextformate

Die meisten Big Language Model-Clients verwenden ein standardisiertes, nachrichtenbasiertes Format, wie unten dargestellt:

[
{
"role": "system",
"content": "你是一个乐于助人的助手..."
},
{
"role": "user",
"content": "你能部署后端吗?"
},
{
"role": "assistant",
"content": null,
"tool_calls": [
{
"id": "1",
"name": "list_git_tags",
"arguments": "{}"
}
]
},
{
"role": "tool",
"name": "list_git_tags",
"content": "{\"tags\": [{\"name\": \"v1.2.3\", \"commit\": \"abc123\", \"date\": \"2024-03-15T10:00:00Z\"}, {\"name\": \"v1.2.2\", \"commit\": \"def456\", \"date\": \"2024-03-14T15:30:00Z\"}, {\"name\": \"v1.2.1\", \"commit\": \"abe033d\", \"date\": \"2024-03-13T09:15:00Z\"}]}",
"tool_call_id": "1"
}
]

Dieser Ansatz funktioniert zwar in den meisten Anwendungsfällen gut, aber wenn Sie die Leistung der heutigen großen Sprachmodelle wirklich maximieren wollen, müssen Sie so vorgehen, dass Sie so viel wie möglich an Token und die Aufmerksamkeit für effiziente Wege zur Eingabe von Kontext in ein großes Sprachmodell.

Als Alternative zu standardisierten, nachrichtenbasierten Formaten können Sie benutzerdefinierte Kontextformate erstellen, die für Ihre Anwendungsfälle optimiert sind. Sie können zum Beispiel benutzerdefinierte Objekte verwenden und sie je nach Bedarf in eine oder mehrere Benutzer-, System-, Helfer- oder Werkzeugmeldungen verpacken/verstreuen.

Dies ist ein Beispiel dafür, wie ein ganzes Kontextfenster in eine einzige Benutzernachricht eingefügt werden kann:

[
{
"role": "system",
"content": "你是一个乐于助人的助手..."
},
{
"role": "user",
"content": |
这是目前为止发生的所有事情:
        
<slack_message>
来自: @alex
频道: #deployments
内容: 你能部署后端吗?
</slack_message>
<list_git_tags>
intent: "list_git_tags"
</list_git_tags>
<list_git_tags_result>
tags:
- name: "v1.2.3"
commit: "abc123"
date: "2024-03-15T10:00:00Z"
- name: "v1.2.2"
commit: "def456"
date: "2024-03-14T15:30:00Z"
- name: "v1.2.1"
commit: "ghi789"
date: "2024-03-13T09:15:00Z"
</list_git_tags_result>
下一步该怎么做?
}
]

Das Modell kann aus den von Ihnen bereitgestellten Schemata ableiten, dass Sie nach folgenden Informationen fragen what's the next stepaber es schadet nie, sie explizit in Ihre Eingabeaufforderungsvorlage aufzunehmen.

Code-Beispiel

Wir können sie mit einem Code ähnlich dem folgenden erstellen:

class Thread:
events: List[Event]
class Event:
# 可以只使用字符串,也可以是显式的 - 由你决定
type: Literal["list_git_tags", "deploy_backend", "deploy_frontend", "request_more_information", "done_for_now", "list_git_tags_result", "deploy_backend_result", "deploy_frontend_result", "request_more_information_result", "done_for_now_result", "error"]
data: ListGitTags | DeployBackend | DeployFrontend | RequestMoreInformation |  
ListGitTagsResult | DeployBackendResult | DeployFrontendResult | RequestMoreInformationResult | string
def event_to_prompt(event: Event) -> str:
data = event.data if isinstance(event.data, str) \
else stringifyToYaml(event.data)
return f"<{event.type}>\n{data}\n</{event.type}>"
def thread_to_prompt(thread: Thread) -> str:
return '\n\n'.join(event_to_prompt(event) for event in thread.events)

Beispiel für ein Kontextfenster

Mit diesem Ansatz könnte das Kontextfenster wie folgt aussehen:

Erste Slack-Anfrage:

<slack_message>
来自: @alex
频道: #deployments
内容: 你能将最新的后端部署到生产环境吗?
</slack_message>

Nach der Auflistung der Git-Tags:

<slack_message>
来自: @alex
频道: #deployments
内容: 你能将最新的后端部署到生产环境吗?
Thread: []
</slack_message>
<list_git_tags>
intent: "list_git_tags"
</list_git_tags>
<list_git_tags_result>
tags:
- name: "v1.2.3"
commit: "abc123"
date: "2024-03-15T10:00:00Z"
- name: "v1.2.2"
commit: "def456"
date: "2024-03-14T15:30:00Z"
- name: "v1.2.1"
commit: "ghi789"
date: "2024-03-13T09:15:00Z"
</list_git_tags_result>

Fehler und Wiederherstellung nach:

<slack_message>
来自: @alex
频道: #deployments
内容: 你能将最新的后端部署到生产环境吗?
Thread: []
</slack_message>
<deploy_backend>
intent: "deploy_backend"
tag: "v1.2.3"
environment: "production"
</deploy_backend>
<error>
运行 deploy_backend 时出错: 连接部署服务失败
</error>
<request_more_information>
intent: "request_more_information_from_human"
问题: "我连接部署服务时遇到问题,你能提供更多详细信息和/或检查一下该服务的状态吗?"
</request_more_information>
<human_response>
data:
回复: "我不确定发生了什么,你能检查一下最新工作流的状态吗?"
</human_response>

Von hier aus könnte Ihr nächster Schritt sein:

nextStep = await determine_next_step(thread_to_prompt(thread))
{
"intent": "get_workflow_status",
"workflow_name": "tag_push_prod.yaml",
}

Dieses XML-ähnliche Format ist nur ein Beispiel - der Punkt ist, dass Sie benutzerdefinierte Formate erstellen können, die zu Ihrer Anwendung passen. Wenn Sie die Flexibilität haben, mit verschiedenen Kontextstrukturen zu experimentieren und zu entscheiden, was Sie speichern und was Sie an das größere Sprachmodell weitergeben wollen, erhalten Sie eine bessere Qualität.

Der Hauptvorteil ist, dass Sie die Kontrolle über Ihr Kontextfenster haben:

  1. InformationsdichteOrganisation von Informationen in einer Weise, die das Verständnis von großen Sprachmodellen maximiert
  2. FehlerbehandlungEinfügen von Fehlermeldungen in einem Format, das die Wiederherstellung von großen Sprachmodellen erleichtert. Sobald Fehler und fehlgeschlagene Aufrufe behoben sind, sollten sie aus dem Kontextfenster ausgeblendet werden.
  3. SicherheitBig Language Model: Kontrolle der an das Big Language Model weitergeleiteten Informationen, Herausfiltern sensibler Daten
  4. GeschicklichkeitFormat: Passen Sie das Format an, wenn Sie mehr über bewährte Verfahren für Anwendungsfälle erfahren.
  5. Token-EffizienzOptimising Context Formats for Token Efficiency and Comprehension of Large Language Models

Kontext umfasst: Eingabeaufforderungen, Befehle, RAG-Dokumente, Verlauf, Werkzeugaufrufe, Speicher

Denken Sie daran: Das Kontextfenster ist Ihre primäre Schnittstelle für die Interaktion mit dem größeren Sprachmodell. Wenn Sie die Kontrolle über die Art und Weise übernehmen, wie Sie Informationen organisieren und präsentieren, können Sie die Leistung Ihrer Intelligenz erheblich verbessern.

Beispiel - Nachrichtendichte - gleiche Nachricht, weniger Tokens:

12-Faktoren-Agenten 3: Übernehmen Sie die Kontrolle über Ihr Kontextfenster - 2

Verlassen Sie sich nicht auf mein Wort.

Ungefähr 2 Monate nach der Veröffentlichung von 12-Faktor-Agenten wurde Context Engineering zu einem ziemlich populären Begriff.

12 - Factor Agents 3: Übernehmen Sie die Kontrolle über Ihr Kontextfenster - 3   12-Faktoren-Agenten 3. übernehmen Sie die Kontrolle über Ihr Kontextfenster -4

Darüber hinaus.@lenadroid Im Juli 2025 wurde auch eine recht gute Kurzreferenztabelle für kontextbezogene Technik.

12-Faktoren-Agenten 3. die Kontrolle über Ihr Kontextfenster übernehmen - 5

Der rote Faden ist, dass ich nicht weiß, was der beste Ansatz ist, aber ich weiß, dass man die Flexibilität haben muss, alle Möglichkeiten auszuprobieren.

Empfohlen

Sie können keine AI-Tools finden? Versuchen Sie es hier!

Geben Sie einfach das Schlüsselwort Barrierefreiheit Bing-SucheDer Bereich KI-Tools auf dieser Website bietet eine schnelle und einfache Möglichkeit, alle KI-Tools auf dieser Website zu finden.

Posteingang

Kontakt

zurück zum Anfang

de_DEDeutsch