# PromptComposer `PromptComposer` は、`PromptContext` と会話履歴からシステムプロンプト文字列を生成するクロージャをラップし、LLM へ送信するメッセージ列を構築します。 ```rust use std::sync::Arc; use worker::prompt::{PromptComposer, PromptContext, PromptError, SystemPromptFn}; use worker_types::Message; fn build_context() -> PromptContext { // WorkspaceDetector などからアプリ固有の情報を収集して埋め込む todo!() } fn generator(ctx: &PromptContext, messages: &[Message]) -> Result { Ok(format!( "Project {} has {} prior messages.", ctx.workspace .project_name .clone() .unwrap_or_else(|| \"unknown\".into()), messages.len() )) } let context = build_context(); let composer = PromptComposer::new(context, Arc::new(generator)); let conversation = vec![Message::new(worker_types::Role::User, \"Hello\".into())]; let final_messages = composer.compose(&conversation)?; ``` `compose_with_tools` を使うと、`tools_schema` をテンプレート変数として渡した上でシステムプロンプトを再生成できます。