feat: initial Lam Agent extension (#1)
This commit was merged in pull request #1.
This commit is contained in:
@@ -0,0 +1,30 @@
|
||||
import { DEFAULT_SYSTEM_PROMPT, RECENCY_HINT } from "./constants";
|
||||
import type { ApiMessage, ChatTurn } from "./types";
|
||||
|
||||
/**
|
||||
* Turns stored turns into the message array sent to the model.
|
||||
*
|
||||
* Only completed question/answer pairs are replayed. The intermediate tool
|
||||
* messages from a previous turn are intentionally dropped: they are noise once
|
||||
* the answer is written, and replaying them would re-send large page contents
|
||||
* on every subsequent request.
|
||||
*/
|
||||
export function buildMessages(systemPrompt: string, turns: ChatTurn[], prompt: string): ApiMessage[] {
|
||||
const messages: ApiMessage[] = [{ role: "system", content: systemPrompt }];
|
||||
|
||||
for (const turn of turns) {
|
||||
if (!turn.response) continue;
|
||||
messages.push({ role: "user", content: turn.prompt });
|
||||
messages.push({ role: "assistant", content: turn.response });
|
||||
}
|
||||
|
||||
messages.push({ role: "user", content: prompt });
|
||||
return messages;
|
||||
}
|
||||
|
||||
/** Uses the user's prompt if they set one, otherwise Lam's default. */
|
||||
export function composeSystemPrompt(customPrompt: string, webEnabled: boolean): string {
|
||||
const parts = [customPrompt.trim() || DEFAULT_SYSTEM_PROMPT];
|
||||
if (webEnabled) parts.push(RECENCY_HINT);
|
||||
return parts.join("\n\n");
|
||||
}
|
||||
Reference in New Issue
Block a user