Geben Sie Ihre Eingabeaufforderung nicht an ein Framework ab.
Im Übrigen.Dieser Vorschlag ist alles andere als neu:
Einige Frameworks bieten einen solchen "Black-Box"-Ansatz:
agent = Agent(
role="...",
goal="...",
personality="...",
tools=[tool1, tool2, tool3]
)
task = Task(
instructions="...",
expected_output=OutputModel
)
result = agent.run(task)
Dies ist nützlich für die Einführung einer erstklassigen Eingabeaufforderungstechnik, um Ihnen den Einstieg zu erleichtern, aber es ist oft schwer zu optimieren und/oder umzukehren, um genau die richtige Menge an Token Eingabe in Ihr Modell.
Stattdessen sollten Sie die Kontrolle über Ihre Eingabeaufforderungen übernehmen und sie als Code für Bürger erster Klasse behandeln:
function DetermineNextStep(thread: string) -> DoneForNow | ListGitTags | DeployBackend | DeployFrontend | RequestMoreInformation {
prompt #"
{{ _.role("system") }}
你是一个乐于助人的助手,负责管理前端和后端系统的部署。
你通过遵循最佳实践和正确的部署程序,努力确保部署的安全和成功。
在部署任何系统之前,你应该检查:
- 部署环境 (预发环境 vs 生产环境)
- 要部署的正确标签/版本
- 当前的系统状态
你可以使用 deploy_backend、deploy_frontend 和 check_deployment_status 等工具来管理部署。对于敏感部署,使用 request_approval 来获得人工验证。
始终首先考虑该做什么,例如:
- 检查当前部署状态
- 验证部署标签是否存在
- 如果需要,请求批准
- 在部署到生产环境之前,先部署到预发环境
- 监控部署进度
{{ _.role("user") }}
{{ thread }}
下一步应该做什么?
"#
}
(Das obige Beispiel verwendet BAML Generieren Sie Eingabeaufforderungen, aber Sie können dafür jedes beliebige Tool zur Erstellung von Eingabeaufforderungen verwenden oder sogar manuell Vorlagen erstellen)
Wenn diese Funktionssignatur ein wenig seltsam erscheint, fügen wir eine neue Funktionssignatur zur Element 4 - Werkzeuge als strukturierte Outputs Diskutiert in.
function DetermineNextStep(thread: string) -> DoneForNow | ListGitTags | DeployBackend | DeployFrontend | RequestMoreInformation {
Die wichtigsten Vorteile, wenn Sie die Kontrolle über Ihre Eingabeaufforderungen übernehmen:
- Vollständige KontrolleSchreiben Sie genau die Befehle, die Ihre Intelligenz braucht, keine Blackbox-Abstraktionen!
- Prüfung und BewertungErstellen Sie Tests und Auswertungen für Ihre Eingabeaufforderungen wie für jeden anderen Code auch!
- Iteration (math.)Schnelles Ändern von Eingabeaufforderungen auf der Grundlage der tatsächlichen Leistung
- TransparenzGenau wissen, welche Befehle Ihre Intelligenzen verwenden
- Role HackingNutzung von APIs, die eine nicht standardisierte Verwendung von Benutzer-/Assistentenrollen unterstützen - z.B. eine Nicht-Chat-Version der mittlerweile veralteten OpenAI "completions"-API. Dazu gehören einige der sogenannten "Model Gaslighting"-Techniken
Denken Sie daran: Ihre Eingabeaufforderungen sind die primäre Schnittstelle zwischen Ihrer Anwendungslogik und dem Large Language Model (LLM).
Die vollständige Kontrolle über Ihre Eingabeaufforderungen gibt Ihnen die Flexibilität und die Kontrolle über die Eingabeaufforderungen, die Sie für produktionsgerechte Intelligenz benötigen.
Ich weiß nicht, was die beste Eingabeaufforderung ist, aber ich weiß, dass man die Flexibilität haben möchte, alles ausprobieren zu können.