インプット・プロンプトのエンジニアリングをフレームワークにアウトソーシングしてはならない。
ところで。これは斬新な提案とは言い難い:
フレームワークの中には、このような「ブラックボックス」的なアプローチを提供するものもある:
agent = Agent(
role="...",
goal="...",
personality="...",
tools=[tool1, tool2, tool3]
)
task = Task(
instructions="...",
expected_output=OutputModel
)
result = agent.run(task)
これは、一流のインプット・プロンプト・エンジニアリングを導入してスタートダッシュに役立てるには便利だが、適切なインプット・プロンプト・エンジニアリングの量を調整したり、リバースエンジニアリングしたりするのは難しいことが多い。 トークン モデルへの入力。
その代わりに、入力プロンプトをコントロールし、一流市民のコードとして扱うべきだ:
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 }}
下一步应该做什么?
"#
}
(上記の例では BAML 入力プロンプトを生成するが、入力プロンプトエンジニアリングツールを使用してもよいし、テンプレートを手動で作成してもよい)
この関数シグネチャが少し奇妙に思えるなら、新しい関数シグネチャを 要素4 - 構造化されたアウトプットとしてのツール で論じた。
function DetermineNextStep(thread: string) -> DoneForNow | ListGitTags | DeployBackend | DeployFrontend | RequestMoreInformation {
入力プロンプトをコントロールする主なメリット
- トータル・コントロールあなたのインテリジェンスが必要とするコマンドを正確に書くこと!
- テストと評価他のコードと同じように、入力プロンプトのテストと評価を作成します!
- 反復実際のパフォーマンスに基づいて入力プロンプトを素早く修正
- 透明性インテリジェンスが使用しているコマンドを正確に把握する
- 役割のハッキング例えば、OpenAIの "completion "APIの非チャット版などです。これには、いわゆる「モデルのガスライティング」テクニックが数多く含まれます。
覚えておいてください:入力プロンプトは、アプリケーションロジックとラージ言語モデル(LLM)の間の主要なインターフェイスです。
入力プロンプトを完全にコントロールすることで、プロダクションレベルのインテリジェンスに必要な柔軟性と入力プロンプトのコントロールが可能になります。
最良のインプットプロンプトが何かはわからないが、何でも試せるフレキシビリティが欲しいということはわかる。