refactor(ai): unify prompt cache configuration
This commit is contained in:
parent
f6ea6b1762
commit
a214ac39de
19 changed files with 64 additions and 59 deletions
|
|
@ -258,7 +258,7 @@ const make = (dependencies: Dependencies) => {
|
|||
.stream(
|
||||
LLM.request({
|
||||
model: plan.model,
|
||||
promptCacheKey: SessionPromptCacheKey.make(plan.session.id),
|
||||
cache: { mode: "auto", key: SessionPromptCacheKey.make(plan.session.id) },
|
||||
http: { headers: SessionModelHeaders.make(plan.session, dependencies.app) },
|
||||
messages: [Message.user(plan.prompt)],
|
||||
tools: [],
|
||||
|
|
|
|||
|
|
@ -69,7 +69,7 @@ export const layer = Layer.effect(
|
|||
LLM.request({
|
||||
model: model.model,
|
||||
http: { headers: SessionModelHeaders.make(selection.session, app) },
|
||||
promptCacheKey: SessionPromptCacheKey.make(selection.session.id),
|
||||
cache: { mode: "auto", key: SessionPromptCacheKey.make(selection.session.id) },
|
||||
system: contextEvent.system,
|
||||
messages: contextEvent.messages,
|
||||
tools: hookedTools,
|
||||
|
|
|
|||
|
|
@ -213,7 +213,7 @@ export const layer = Layer.effect(
|
|||
http: {
|
||||
headers: SessionModelHeaders.make(session, app),
|
||||
},
|
||||
promptCacheKey: SessionPromptCacheKey.make(session.id),
|
||||
cache: { mode: "auto", key: SessionPromptCacheKey.make(session.id) },
|
||||
system: contextEvent.system,
|
||||
messages: boundImages(unsupportedParts(contextEvent.messages, resolved.capabilities)),
|
||||
tools: hookedTools,
|
||||
|
|
|
|||
|
|
@ -81,7 +81,7 @@ const make = (dependencies: Dependencies) => {
|
|||
.stream(
|
||||
LLM.request({
|
||||
model: resolved.model,
|
||||
promptCacheKey: SessionPromptCacheKey.make(session.id),
|
||||
cache: { mode: "auto", key: SessionPromptCacheKey.make(session.id) },
|
||||
http: { headers: SessionModelHeaders.make(session, dependencies.app) },
|
||||
system: agent.system,
|
||||
messages: [Message.user(firstUser.text)],
|
||||
|
|
|
|||
|
|
@ -235,7 +235,7 @@ it.effect("manual compaction summarizes short context instead of no-op", () =>
|
|||
expect(Array.from(yield* Fiber.join(delta)).map((event) => event.data.text)).toEqual(["manual summary"])
|
||||
|
||||
expect(requests).toHaveLength(1)
|
||||
expect(requests[0]?.promptCacheKey).toBe(sessionID)
|
||||
expect(requests[0]?.cache).toEqual({ mode: "auto", key: sessionID })
|
||||
expect(requests[0]?.http?.headers).toEqual({
|
||||
"x-session-affinity": sessionID,
|
||||
"X-Session-Id": sessionID,
|
||||
|
|
|
|||
|
|
@ -287,7 +287,7 @@ it.effect("generates from fresh settled Session context without durable mutation
|
|||
expect(requests[0]?.system[0]?.text).toBe("Hooked system")
|
||||
expect(requests[0]?.system.map((part) => part.text)).toContain("Initial context")
|
||||
expect(requests[0]?.http?.headers).toMatchObject({ "X-Session-Id": sessionID })
|
||||
expect(requests[0]?.promptCacheKey).toBe(sessionID)
|
||||
expect(requests[0]?.cache).toEqual({ mode: "auto", key: sessionID })
|
||||
const instructionUpdates = requests[0]?.messages.flatMap((message) =>
|
||||
message.role === "system"
|
||||
? message.content.flatMap((content) => (content.type === "text" ? [content.text] : []))
|
||||
|
|
|
|||
|
|
@ -3210,7 +3210,7 @@ describe("SessionRunnerLLM", () => {
|
|||
yield* stream.started
|
||||
|
||||
expect(requests).toHaveLength(2)
|
||||
expect(requests.map((request) => request.promptCacheKey)).toEqual([
|
||||
expect(requests.map((request) => (request.cache !== "none" ? request.cache?.key : undefined))).toEqual([
|
||||
sessionID,
|
||||
otherSessionID,
|
||||
])
|
||||
|
|
@ -3241,7 +3241,7 @@ describe("SessionRunnerLLM", () => {
|
|||
yield* session.resume(longSessionID)
|
||||
yield* session.resume(otherLongSessionID)
|
||||
|
||||
const keys = requests.map((request) => request.promptCacheKey)
|
||||
const keys = requests.map((request) => (request.cache !== "none" ? request.cache?.key : undefined))
|
||||
expect(keys).toEqual([longSessionID.slice(4), otherLongSessionID.slice(4)])
|
||||
expect(keys.every((key) => typeof key === "string" && key.length === 64)).toBe(true)
|
||||
expect(keys[0]).not.toBe(keys[1])
|
||||
|
|
|
|||
|
|
@ -153,7 +153,7 @@ it.effect("generates a title from the sole user message and renames the session"
|
|||
yield* title.generateForFirstPrompt(sessionID)
|
||||
|
||||
expect(requests).toHaveLength(1)
|
||||
expect(requests[0]?.promptCacheKey).toBe(sessionID)
|
||||
expect(requests[0]?.cache).toEqual({ mode: "auto", key: sessionID })
|
||||
expect(requests[0]?.http?.headers).toEqual({
|
||||
"x-session-affinity": sessionID,
|
||||
"X-Session-Id": sessionID,
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue