1.2 KiB
1.2 KiB
PromptComposer
PromptComposer は、PromptContext と会話履歴からシステムプロンプト文字列を生成するクロージャをラップし、LLM へ送信するメッセージ列を構築します。
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<String, PromptError> {
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 をテンプレート変数として渡した上でシステムプロンプトを再生成できます。