mirror of
https://github.com/memohai/Memoh.git
synced 2026-04-27 07:16:19 +09:00
refactor: replace context_token_budget with model context_window for context trimming
The per-bot context_token_budget column was unused (no frontend UI) and has been removed. Context trimming now derives the budget from the chat model's context_window setting, which is already configured per model.
This commit is contained in:
@@ -155,7 +155,6 @@ CREATE TABLE IF NOT EXISTS bots (
|
|||||||
discuss_probe_model_id UUID REFERENCES models(id) ON DELETE SET NULL,
|
discuss_probe_model_id UUID REFERENCES models(id) ON DELETE SET NULL,
|
||||||
tts_model_id UUID REFERENCES models(id) ON DELETE SET NULL,
|
tts_model_id UUID REFERENCES models(id) ON DELETE SET NULL,
|
||||||
browser_context_id UUID REFERENCES browser_contexts(id) ON DELETE SET NULL,
|
browser_context_id UUID REFERENCES browser_contexts(id) ON DELETE SET NULL,
|
||||||
context_token_budget INTEGER,
|
|
||||||
persist_full_tool_results BOOLEAN NOT NULL DEFAULT false,
|
persist_full_tool_results BOOLEAN NOT NULL DEFAULT false,
|
||||||
metadata JSONB NOT NULL DEFAULT '{}'::jsonb,
|
metadata JSONB NOT NULL DEFAULT '{}'::jsonb,
|
||||||
created_at TIMESTAMPTZ NOT NULL DEFAULT now(),
|
created_at TIMESTAMPTZ NOT NULL DEFAULT now(),
|
||||||
|
|||||||
@@ -0,0 +1,4 @@
|
|||||||
|
-- 0067_drop_context_token_budget (down)
|
||||||
|
-- Restore the context_token_budget column.
|
||||||
|
|
||||||
|
ALTER TABLE bots ADD COLUMN IF NOT EXISTS context_token_budget INTEGER;
|
||||||
@@ -0,0 +1,5 @@
|
|||||||
|
-- 0067_drop_context_token_budget
|
||||||
|
-- Remove the unused context_token_budget column from bots table.
|
||||||
|
-- Context trimming now derives the budget from the chat model's context_window.
|
||||||
|
|
||||||
|
ALTER TABLE bots DROP COLUMN IF EXISTS context_token_budget;
|
||||||
@@ -20,7 +20,6 @@ SELECT
|
|||||||
image_models.id AS image_model_id,
|
image_models.id AS image_model_id,
|
||||||
tts_models.id AS tts_model_id,
|
tts_models.id AS tts_model_id,
|
||||||
browser_contexts.id AS browser_context_id,
|
browser_contexts.id AS browser_context_id,
|
||||||
bots.context_token_budget,
|
|
||||||
bots.persist_full_tool_results
|
bots.persist_full_tool_results
|
||||||
FROM bots
|
FROM bots
|
||||||
LEFT JOIN models AS chat_models ON chat_models.id = bots.chat_model_id
|
LEFT JOIN models AS chat_models ON chat_models.id = bots.chat_model_id
|
||||||
@@ -56,11 +55,10 @@ WITH updated AS (
|
|||||||
image_model_id = COALESCE(sqlc.narg(image_model_id)::uuid, bots.image_model_id),
|
image_model_id = COALESCE(sqlc.narg(image_model_id)::uuid, bots.image_model_id),
|
||||||
tts_model_id = COALESCE(sqlc.narg(tts_model_id)::uuid, bots.tts_model_id),
|
tts_model_id = COALESCE(sqlc.narg(tts_model_id)::uuid, bots.tts_model_id),
|
||||||
browser_context_id = COALESCE(sqlc.narg(browser_context_id)::uuid, bots.browser_context_id),
|
browser_context_id = COALESCE(sqlc.narg(browser_context_id)::uuid, bots.browser_context_id),
|
||||||
context_token_budget = COALESCE(sqlc.narg(context_token_budget)::integer, bots.context_token_budget),
|
|
||||||
persist_full_tool_results = sqlc.arg(persist_full_tool_results),
|
persist_full_tool_results = sqlc.arg(persist_full_tool_results),
|
||||||
updated_at = now()
|
updated_at = now()
|
||||||
WHERE bots.id = sqlc.arg(id)
|
WHERE bots.id = sqlc.arg(id)
|
||||||
RETURNING bots.id, bots.language, bots.reasoning_enabled, bots.reasoning_effort, bots.heartbeat_enabled, bots.heartbeat_interval, bots.heartbeat_prompt, bots.compaction_enabled, bots.compaction_threshold, bots.compaction_ratio, bots.timezone, bots.chat_model_id, bots.heartbeat_model_id, bots.compaction_model_id, bots.title_model_id, bots.image_model_id, bots.search_provider_id, bots.memory_provider_id, bots.tts_model_id, bots.browser_context_id, bots.context_token_budget, bots.persist_full_tool_results
|
RETURNING bots.id, bots.language, bots.reasoning_enabled, bots.reasoning_effort, bots.heartbeat_enabled, bots.heartbeat_interval, bots.heartbeat_prompt, bots.compaction_enabled, bots.compaction_threshold, bots.compaction_ratio, bots.timezone, bots.chat_model_id, bots.heartbeat_model_id, bots.compaction_model_id, bots.title_model_id, bots.image_model_id, bots.search_provider_id, bots.memory_provider_id, bots.tts_model_id, bots.browser_context_id, bots.persist_full_tool_results
|
||||||
)
|
)
|
||||||
SELECT
|
SELECT
|
||||||
updated.id AS bot_id,
|
updated.id AS bot_id,
|
||||||
@@ -83,7 +81,6 @@ SELECT
|
|||||||
image_models.id AS image_model_id,
|
image_models.id AS image_model_id,
|
||||||
tts_models.id AS tts_model_id,
|
tts_models.id AS tts_model_id,
|
||||||
browser_contexts.id AS browser_context_id,
|
browser_contexts.id AS browser_context_id,
|
||||||
updated.context_token_budget,
|
|
||||||
updated.persist_full_tool_results
|
updated.persist_full_tool_results
|
||||||
FROM updated
|
FROM updated
|
||||||
LEFT JOIN models AS chat_models ON chat_models.id = updated.chat_model_id
|
LEFT JOIN models AS chat_models ON chat_models.id = updated.chat_model_id
|
||||||
@@ -116,7 +113,6 @@ SET language = 'auto',
|
|||||||
memory_provider_id = NULL,
|
memory_provider_id = NULL,
|
||||||
tts_model_id = NULL,
|
tts_model_id = NULL,
|
||||||
browser_context_id = NULL,
|
browser_context_id = NULL,
|
||||||
context_token_budget = NULL,
|
|
||||||
persist_full_tool_results = false,
|
persist_full_tool_results = false,
|
||||||
updated_at = now()
|
updated_at = now()
|
||||||
WHERE id = $1;
|
WHERE id = $1;
|
||||||
|
|||||||
@@ -287,10 +287,9 @@ func (r *Resolver) resolve(ctx context.Context, req conversation.ChatRequest) (r
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
botSettings, _ := r.loadBotSettings(ctx, req.BotID)
|
|
||||||
contextTokenBudget := 0
|
contextTokenBudget := 0
|
||||||
if botSettings.ContextTokenBudget > 0 {
|
if chatModel.Config.ContextWindow != nil && *chatModel.Config.ContextWindow > 0 {
|
||||||
contextTokenBudget = botSettings.ContextTokenBudget
|
contextTokenBudget = *chatModel.Config.ContextWindow
|
||||||
}
|
}
|
||||||
|
|
||||||
var messages []conversation.ModelMessage
|
var messages []conversation.ModelMessage
|
||||||
|
|||||||
@@ -511,7 +511,7 @@ WITH updated AS (
|
|||||||
SET display_name = $1,
|
SET display_name = $1,
|
||||||
updated_at = now()
|
updated_at = now()
|
||||||
WHERE bots.id = $2
|
WHERE bots.id = $2
|
||||||
RETURNING id, owner_user_id, display_name, avatar_url, timezone, is_active, status, language, reasoning_enabled, reasoning_effort, chat_model_id, search_provider_id, memory_provider_id, heartbeat_enabled, heartbeat_interval, heartbeat_prompt, heartbeat_model_id, compaction_enabled, compaction_threshold, compaction_ratio, compaction_model_id, title_model_id, image_model_id, discuss_probe_model_id, tts_model_id, browser_context_id, context_token_budget, persist_full_tool_results, metadata, created_at, updated_at, acl_default_effect
|
RETURNING id, owner_user_id, display_name, avatar_url, timezone, is_active, status, language, reasoning_enabled, reasoning_effort, chat_model_id, search_provider_id, memory_provider_id, heartbeat_enabled, heartbeat_interval, heartbeat_prompt, heartbeat_model_id, compaction_enabled, compaction_threshold, compaction_ratio, compaction_model_id, title_model_id, image_model_id, discuss_probe_model_id, tts_model_id, browser_context_id, persist_full_tool_results, metadata, created_at, updated_at, acl_default_effect
|
||||||
)
|
)
|
||||||
SELECT
|
SELECT
|
||||||
updated.id AS id,
|
updated.id AS id,
|
||||||
|
|||||||
@@ -35,7 +35,6 @@ type Bot struct {
|
|||||||
DiscussProbeModelID pgtype.UUID `json:"discuss_probe_model_id"`
|
DiscussProbeModelID pgtype.UUID `json:"discuss_probe_model_id"`
|
||||||
TtsModelID pgtype.UUID `json:"tts_model_id"`
|
TtsModelID pgtype.UUID `json:"tts_model_id"`
|
||||||
BrowserContextID pgtype.UUID `json:"browser_context_id"`
|
BrowserContextID pgtype.UUID `json:"browser_context_id"`
|
||||||
ContextTokenBudget pgtype.Int4 `json:"context_token_budget"`
|
|
||||||
PersistFullToolResults bool `json:"persist_full_tool_results"`
|
PersistFullToolResults bool `json:"persist_full_tool_results"`
|
||||||
Metadata []byte `json:"metadata"`
|
Metadata []byte `json:"metadata"`
|
||||||
CreatedAt pgtype.Timestamptz `json:"created_at"`
|
CreatedAt pgtype.Timestamptz `json:"created_at"`
|
||||||
|
|||||||
@@ -31,7 +31,6 @@ SET language = 'auto',
|
|||||||
memory_provider_id = NULL,
|
memory_provider_id = NULL,
|
||||||
tts_model_id = NULL,
|
tts_model_id = NULL,
|
||||||
browser_context_id = NULL,
|
browser_context_id = NULL,
|
||||||
context_token_budget = NULL,
|
|
||||||
persist_full_tool_results = false,
|
persist_full_tool_results = false,
|
||||||
updated_at = now()
|
updated_at = now()
|
||||||
WHERE id = $1
|
WHERE id = $1
|
||||||
@@ -64,7 +63,6 @@ SELECT
|
|||||||
image_models.id AS image_model_id,
|
image_models.id AS image_model_id,
|
||||||
tts_models.id AS tts_model_id,
|
tts_models.id AS tts_model_id,
|
||||||
browser_contexts.id AS browser_context_id,
|
browser_contexts.id AS browser_context_id,
|
||||||
bots.context_token_budget,
|
|
||||||
bots.persist_full_tool_results
|
bots.persist_full_tool_results
|
||||||
FROM bots
|
FROM bots
|
||||||
LEFT JOIN models AS chat_models ON chat_models.id = bots.chat_model_id
|
LEFT JOIN models AS chat_models ON chat_models.id = bots.chat_model_id
|
||||||
@@ -100,7 +98,6 @@ type GetSettingsByBotIDRow struct {
|
|||||||
ImageModelID pgtype.UUID `json:"image_model_id"`
|
ImageModelID pgtype.UUID `json:"image_model_id"`
|
||||||
TtsModelID pgtype.UUID `json:"tts_model_id"`
|
TtsModelID pgtype.UUID `json:"tts_model_id"`
|
||||||
BrowserContextID pgtype.UUID `json:"browser_context_id"`
|
BrowserContextID pgtype.UUID `json:"browser_context_id"`
|
||||||
ContextTokenBudget pgtype.Int4 `json:"context_token_budget"`
|
|
||||||
PersistFullToolResults bool `json:"persist_full_tool_results"`
|
PersistFullToolResults bool `json:"persist_full_tool_results"`
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -128,7 +125,6 @@ func (q *Queries) GetSettingsByBotID(ctx context.Context, id pgtype.UUID) (GetSe
|
|||||||
&i.ImageModelID,
|
&i.ImageModelID,
|
||||||
&i.TtsModelID,
|
&i.TtsModelID,
|
||||||
&i.BrowserContextID,
|
&i.BrowserContextID,
|
||||||
&i.ContextTokenBudget,
|
|
||||||
&i.PersistFullToolResults,
|
&i.PersistFullToolResults,
|
||||||
)
|
)
|
||||||
return i, err
|
return i, err
|
||||||
@@ -156,11 +152,10 @@ WITH updated AS (
|
|||||||
image_model_id = COALESCE($17::uuid, bots.image_model_id),
|
image_model_id = COALESCE($17::uuid, bots.image_model_id),
|
||||||
tts_model_id = COALESCE($18::uuid, bots.tts_model_id),
|
tts_model_id = COALESCE($18::uuid, bots.tts_model_id),
|
||||||
browser_context_id = COALESCE($19::uuid, bots.browser_context_id),
|
browser_context_id = COALESCE($19::uuid, bots.browser_context_id),
|
||||||
context_token_budget = COALESCE($20::integer, bots.context_token_budget),
|
persist_full_tool_results = $20,
|
||||||
persist_full_tool_results = $21,
|
|
||||||
updated_at = now()
|
updated_at = now()
|
||||||
WHERE bots.id = $22
|
WHERE bots.id = $21
|
||||||
RETURNING bots.id, bots.language, bots.reasoning_enabled, bots.reasoning_effort, bots.heartbeat_enabled, bots.heartbeat_interval, bots.heartbeat_prompt, bots.compaction_enabled, bots.compaction_threshold, bots.compaction_ratio, bots.timezone, bots.chat_model_id, bots.heartbeat_model_id, bots.compaction_model_id, bots.title_model_id, bots.image_model_id, bots.search_provider_id, bots.memory_provider_id, bots.tts_model_id, bots.browser_context_id, bots.context_token_budget, bots.persist_full_tool_results
|
RETURNING bots.id, bots.language, bots.reasoning_enabled, bots.reasoning_effort, bots.heartbeat_enabled, bots.heartbeat_interval, bots.heartbeat_prompt, bots.compaction_enabled, bots.compaction_threshold, bots.compaction_ratio, bots.timezone, bots.chat_model_id, bots.heartbeat_model_id, bots.compaction_model_id, bots.title_model_id, bots.image_model_id, bots.search_provider_id, bots.memory_provider_id, bots.tts_model_id, bots.browser_context_id, bots.persist_full_tool_results
|
||||||
)
|
)
|
||||||
SELECT
|
SELECT
|
||||||
updated.id AS bot_id,
|
updated.id AS bot_id,
|
||||||
@@ -183,7 +178,6 @@ SELECT
|
|||||||
image_models.id AS image_model_id,
|
image_models.id AS image_model_id,
|
||||||
tts_models.id AS tts_model_id,
|
tts_models.id AS tts_model_id,
|
||||||
browser_contexts.id AS browser_context_id,
|
browser_contexts.id AS browser_context_id,
|
||||||
updated.context_token_budget,
|
|
||||||
updated.persist_full_tool_results
|
updated.persist_full_tool_results
|
||||||
FROM updated
|
FROM updated
|
||||||
LEFT JOIN models AS chat_models ON chat_models.id = updated.chat_model_id
|
LEFT JOIN models AS chat_models ON chat_models.id = updated.chat_model_id
|
||||||
@@ -217,7 +211,6 @@ type UpsertBotSettingsParams struct {
|
|||||||
ImageModelID pgtype.UUID `json:"image_model_id"`
|
ImageModelID pgtype.UUID `json:"image_model_id"`
|
||||||
TtsModelID pgtype.UUID `json:"tts_model_id"`
|
TtsModelID pgtype.UUID `json:"tts_model_id"`
|
||||||
BrowserContextID pgtype.UUID `json:"browser_context_id"`
|
BrowserContextID pgtype.UUID `json:"browser_context_id"`
|
||||||
ContextTokenBudget pgtype.Int4 `json:"context_token_budget"`
|
|
||||||
PersistFullToolResults bool `json:"persist_full_tool_results"`
|
PersistFullToolResults bool `json:"persist_full_tool_results"`
|
||||||
ID pgtype.UUID `json:"id"`
|
ID pgtype.UUID `json:"id"`
|
||||||
}
|
}
|
||||||
@@ -243,7 +236,6 @@ type UpsertBotSettingsRow struct {
|
|||||||
ImageModelID pgtype.UUID `json:"image_model_id"`
|
ImageModelID pgtype.UUID `json:"image_model_id"`
|
||||||
TtsModelID pgtype.UUID `json:"tts_model_id"`
|
TtsModelID pgtype.UUID `json:"tts_model_id"`
|
||||||
BrowserContextID pgtype.UUID `json:"browser_context_id"`
|
BrowserContextID pgtype.UUID `json:"browser_context_id"`
|
||||||
ContextTokenBudget pgtype.Int4 `json:"context_token_budget"`
|
|
||||||
PersistFullToolResults bool `json:"persist_full_tool_results"`
|
PersistFullToolResults bool `json:"persist_full_tool_results"`
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -268,7 +260,6 @@ func (q *Queries) UpsertBotSettings(ctx context.Context, arg UpsertBotSettingsPa
|
|||||||
arg.ImageModelID,
|
arg.ImageModelID,
|
||||||
arg.TtsModelID,
|
arg.TtsModelID,
|
||||||
arg.BrowserContextID,
|
arg.BrowserContextID,
|
||||||
arg.ContextTokenBudget,
|
|
||||||
arg.PersistFullToolResults,
|
arg.PersistFullToolResults,
|
||||||
arg.ID,
|
arg.ID,
|
||||||
)
|
)
|
||||||
@@ -294,7 +285,6 @@ func (q *Queries) UpsertBotSettings(ctx context.Context, arg UpsertBotSettingsPa
|
|||||||
&i.ImageModelID,
|
&i.ImageModelID,
|
||||||
&i.TtsModelID,
|
&i.TtsModelID,
|
||||||
&i.BrowserContextID,
|
&i.BrowserContextID,
|
||||||
&i.ContextTokenBudget,
|
|
||||||
&i.PersistFullToolResults,
|
&i.PersistFullToolResults,
|
||||||
)
|
)
|
||||||
return i, err
|
return i, err
|
||||||
|
|||||||
@@ -5,7 +5,6 @@ import (
|
|||||||
"errors"
|
"errors"
|
||||||
"fmt"
|
"fmt"
|
||||||
"log/slog"
|
"log/slog"
|
||||||
"math"
|
|
||||||
"strings"
|
"strings"
|
||||||
|
|
||||||
"github.com/google/uuid"
|
"github.com/google/uuid"
|
||||||
@@ -184,14 +183,6 @@ func (s *Service) UpsertBot(ctx context.Context, botID string, req UpsertRequest
|
|||||||
}
|
}
|
||||||
browserContextUUID = ctxID
|
browserContextUUID = ctxID
|
||||||
}
|
}
|
||||||
contextTokenBudgetValue := pgtype.Int4{}
|
|
||||||
if req.ContextTokenBudget != nil && *req.ContextTokenBudget >= 0 {
|
|
||||||
v := *req.ContextTokenBudget
|
|
||||||
if v > math.MaxInt32 {
|
|
||||||
v = math.MaxInt32
|
|
||||||
}
|
|
||||||
contextTokenBudgetValue = pgtype.Int4{Int32: int32(v), Valid: true} //nolint:gosec // G115: clamped above
|
|
||||||
}
|
|
||||||
|
|
||||||
updated, err := s.queries.UpsertBotSettings(ctx, sqlc.UpsertBotSettingsParams{
|
updated, err := s.queries.UpsertBotSettings(ctx, sqlc.UpsertBotSettingsParams{
|
||||||
ID: pgID,
|
ID: pgID,
|
||||||
@@ -214,7 +205,6 @@ func (s *Service) UpsertBot(ctx context.Context, botID string, req UpsertRequest
|
|||||||
MemoryProviderID: memoryProviderUUID,
|
MemoryProviderID: memoryProviderUUID,
|
||||||
TtsModelID: ttsModelUUID,
|
TtsModelID: ttsModelUUID,
|
||||||
BrowserContextID: browserContextUUID,
|
BrowserContextID: browserContextUUID,
|
||||||
ContextTokenBudget: contextTokenBudgetValue,
|
|
||||||
PersistFullToolResults: current.PersistFullToolResults,
|
PersistFullToolResults: current.PersistFullToolResults,
|
||||||
})
|
})
|
||||||
if err != nil {
|
if err != nil {
|
||||||
@@ -309,7 +299,6 @@ func normalizeBotSettingsReadRow(row sqlc.GetSettingsByBotIDRow) Settings {
|
|||||||
row.MemoryProviderID,
|
row.MemoryProviderID,
|
||||||
row.TtsModelID,
|
row.TtsModelID,
|
||||||
row.BrowserContextID,
|
row.BrowserContextID,
|
||||||
row.ContextTokenBudget,
|
|
||||||
row.PersistFullToolResults,
|
row.PersistFullToolResults,
|
||||||
)
|
)
|
||||||
}
|
}
|
||||||
@@ -334,7 +323,6 @@ func normalizeBotSettingsWriteRow(row sqlc.UpsertBotSettingsRow) Settings {
|
|||||||
row.MemoryProviderID,
|
row.MemoryProviderID,
|
||||||
row.TtsModelID,
|
row.TtsModelID,
|
||||||
row.BrowserContextID,
|
row.BrowserContextID,
|
||||||
row.ContextTokenBudget,
|
|
||||||
row.PersistFullToolResults,
|
row.PersistFullToolResults,
|
||||||
)
|
)
|
||||||
}
|
}
|
||||||
@@ -358,7 +346,6 @@ func normalizeBotSettingsFields(
|
|||||||
memoryProviderID pgtype.UUID,
|
memoryProviderID pgtype.UUID,
|
||||||
ttsModelID pgtype.UUID,
|
ttsModelID pgtype.UUID,
|
||||||
browserContextID pgtype.UUID,
|
browserContextID pgtype.UUID,
|
||||||
contextTokenBudget pgtype.Int4,
|
|
||||||
persistFullToolResults bool,
|
persistFullToolResults bool,
|
||||||
) Settings {
|
) Settings {
|
||||||
settings := normalizeBotSetting(language, "", reasoningEnabled, reasoningEffort, heartbeatEnabled, heartbeatInterval, compactionEnabled, compactionThreshold, compactionRatio)
|
settings := normalizeBotSetting(language, "", reasoningEnabled, reasoningEffort, heartbeatEnabled, heartbeatInterval, compactionEnabled, compactionThreshold, compactionRatio)
|
||||||
@@ -392,9 +379,6 @@ func normalizeBotSettingsFields(
|
|||||||
if browserContextID.Valid {
|
if browserContextID.Valid {
|
||||||
settings.BrowserContextID = uuid.UUID(browserContextID.Bytes).String()
|
settings.BrowserContextID = uuid.UUID(browserContextID.Bytes).String()
|
||||||
}
|
}
|
||||||
if contextTokenBudget.Valid {
|
|
||||||
settings.ContextTokenBudget = int(contextTokenBudget.Int32)
|
|
||||||
}
|
|
||||||
settings.PersistFullToolResults = persistFullToolResults
|
settings.PersistFullToolResults = persistFullToolResults
|
||||||
return settings
|
return settings
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -27,7 +27,6 @@ type Settings struct {
|
|||||||
CompactionRatio int `json:"compaction_ratio"`
|
CompactionRatio int `json:"compaction_ratio"`
|
||||||
CompactionModelID string `json:"compaction_model_id,omitempty"`
|
CompactionModelID string `json:"compaction_model_id,omitempty"`
|
||||||
DiscussProbeModelID string `json:"discuss_probe_model_id,omitempty"`
|
DiscussProbeModelID string `json:"discuss_probe_model_id,omitempty"`
|
||||||
ContextTokenBudget int `json:"context_token_budget"`
|
|
||||||
PersistFullToolResults bool `json:"persist_full_tool_results"`
|
PersistFullToolResults bool `json:"persist_full_tool_results"`
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -52,6 +51,5 @@ type UpsertRequest struct {
|
|||||||
CompactionRatio *int `json:"compaction_ratio,omitempty"`
|
CompactionRatio *int `json:"compaction_ratio,omitempty"`
|
||||||
CompactionModelID *string `json:"compaction_model_id,omitempty"`
|
CompactionModelID *string `json:"compaction_model_id,omitempty"`
|
||||||
DiscussProbeModelID string `json:"discuss_probe_model_id,omitempty"`
|
DiscussProbeModelID string `json:"discuss_probe_model_id,omitempty"`
|
||||||
ContextTokenBudget *int `json:"context_token_budget,omitempty"`
|
|
||||||
PersistFullToolResults *bool `json:"persist_full_tool_results,omitempty"`
|
PersistFullToolResults *bool `json:"persist_full_tool_results,omitempty"`
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user