mirror of
https://github.com/IfcOpenShell/IfcOpenShell.git
synced 2026-09-10 22:16:41 +00:00
feat: Reduce token usage in ifcchat and default to IFC4X3
- Add Anthropic prompt caching (cache_control on system prompt and tools) to reduce repeated token costs by ~90% - Truncate large tool results in conversation history (2000 char cap) to prevent context bloat from ifc_tree/ifc_select responses - Add sliding window (40 messages) on conversation history, trimming at user message boundaries to avoid breaking tool-call sequences - Default "New IFC" button to IFC4X3 schema instead of IFC4 - Constrain ifc_new schema parameter with enum to prevent invalid schema strings like "IFC4X3ADD2" Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
This commit is contained in:
committed by
Thomas Krijnen
parent
12123baafe
commit
5b1ec85f75
@@ -146,15 +146,22 @@ function toChatCompletionResponse(response) {
|
||||
|
||||
export async function chat({ apiKey, model, messages, tools }) {
|
||||
const request = splitSystemAndMessages(messages);
|
||||
const anthropicTools = toAnthropicTools(tools);
|
||||
|
||||
// Mark the last tool with cache_control so the entire tool list is cached
|
||||
if (anthropicTools.length > 0) {
|
||||
anthropicTools[anthropicTools.length - 1].cache_control = { type: "ephemeral" };
|
||||
}
|
||||
|
||||
const body = {
|
||||
model,
|
||||
max_tokens: 4096,
|
||||
messages: request.messages,
|
||||
tools: toAnthropicTools(tools),
|
||||
tools: anthropicTools,
|
||||
};
|
||||
|
||||
if (request.system) {
|
||||
body.system = request.system;
|
||||
body.system = [{ type: "text", text: request.system, cache_control: { type: "ephemeral" } }];
|
||||
}
|
||||
|
||||
const res = await fetch("https://api.anthropic.com/v1/messages", {
|
||||
|
||||
Reference in New Issue
Block a user