llm-worker-rs/docs/prompt-composer.md

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 をテンプレート変数として渡した上でシステムプロンプトを再生成できます。