Browse Source

set max output token limit to 32_000

Dax Raad 7 months ago
parent
commit
469f667774
1 changed files with 5 additions and 5 deletions
  1. 5 5
      packages/opencode/src/session/index.ts

+ 5 - 5
packages/opencode/src/session/index.ts

@@ -42,6 +42,8 @@ import { ReadTool } from "../tool/read"
 export namespace Session {
 export namespace Session {
   const log = Log.create({ service: "session" })
   const log = Log.create({ service: "session" })
 
 
+  const OUTPUT_TOKEN_MAX = 32_000
+
   export const Info = z
   export const Info = z
     .object({
     .object({
       id: Identifier.schema("session"),
       id: Identifier.schema("session"),
@@ -319,15 +321,13 @@ export namespace Session {
     }
     }
 
 
     const previous = msgs.at(-1) as MessageV2.Assistant
     const previous = msgs.at(-1) as MessageV2.Assistant
+    const outputLimit = Math.min(model.info.limit.output, OUTPUT_TOKEN_MAX)
 
 
     // auto summarize if too long
     // auto summarize if too long
     if (previous) {
     if (previous) {
       const tokens =
       const tokens =
         previous.tokens.input + previous.tokens.cache.read + previous.tokens.cache.write + previous.tokens.output
         previous.tokens.input + previous.tokens.cache.read + previous.tokens.cache.write + previous.tokens.output
-      if (
-        model.info.limit.context &&
-        tokens > Math.max((model.info.limit.context - (model.info.limit.output ?? 0)) * 0.9, 0)
-      ) {
+      if (model.info.limit.context && tokens > Math.max((model.info.limit.context - outputLimit) * 0.9, 0)) {
         await summarize({
         await summarize({
           sessionID: input.sessionID,
           sessionID: input.sessionID,
           providerID: input.providerID,
           providerID: input.providerID,
@@ -580,7 +580,7 @@ export namespace Session {
     const result = streamText({
     const result = streamText({
       onError() {},
       onError() {},
       maxRetries: 10,
       maxRetries: 10,
-      maxOutputTokens: input.modelID.includes("grok-4") ? undefined : Math.max(0, model.info.limit.output) || undefined,
+      maxOutputTokens: outputLimit,
       abortSignal: abort.signal,
       abortSignal: abort.signal,
       stopWhen: stepCountIs(1000),
       stopWhen: stepCountIs(1000),
       providerOptions: model.info.options,
       providerOptions: model.info.options,