fix: tool_end SSE-Event nicht mehr auf 500 Zeichen kürzen + tool_result History-Truncation
- tool_end SSE-Event: 500-Zeichen-Limit entfernt (2 Stellen), damit todo_write und andere Tools beim Streaming vollständig angezeigt werden - BuildHistoryFromDb: TruncateToolResult (20k) auf tool_result-Messages angewendet, um Token-Overflow bei History-Rebuild zu verhindern (609k Tokens > 200k Limit nach awaiting_user_choice) - TruncateToolResult/MaxToolResultChars auf internal geändert - TODO.md: todo_write-Bug als erledigt markiert
This commit is contained in:
1 parent
dcedbaa074
commit
cdad7faad4
3 files changed
+7
-7
No files matched your search
@@ -741,7 +741,7 @@ public class AnthropicService
|
|||||||
toolName,
|
toolName,
|
||||||
toolId,
|
toolId,
|
||||||
input = toolInput.ToString(),
|
input = toolInput.ToString(),
|
||||||
result = toolResult.Length > 500 ? toolResult[..500] + "..." : toolResult,
|
result = toolResult,
|
||||||
isError,
|
isError,
|
||||||
agentName
|
agentName
|
||||||
}, cancellationToken);
|
}, cancellationToken);
|
||||||
@@ -1195,7 +1195,7 @@ public class AnthropicService
|
|||||||
{
|
{
|
||||||
name = currentToolName,
|
name = currentToolName,
|
||||||
input = currentToolInputJson.ToString(),
|
input = currentToolInputJson.ToString(),
|
||||||
result = toolResult.Length > 500 ? toolResult[..500] + "..." : toolResult,
|
result = toolResult,
|
||||||
isError
|
isError
|
||||||
}, cancellationToken);
|
}, cancellationToken);
|
||||||
}
|
}
|
||||||
@@ -1293,9 +1293,9 @@ public class AnthropicService
|
|||||||
|
|
||||||
// ── Shared Helpers ──
|
// ── Shared Helpers ──
|
||||||
|
|
||||||
private const int MaxToolResultChars = 20_000;
|
internal const int MaxToolResultChars = 20_000;
|
||||||
|
|
||||||
private static string TruncateToolResult(string result)
|
internal static string TruncateToolResult(string result)
|
||||||
{
|
{
|
||||||
return result.Length > MaxToolResultChars
|
return result.Length > MaxToolResultChars
|
||||||
? result[..MaxToolResultChars] + $"\n\n[... gekürzt, {result.Length - MaxToolResultChars} weitere Zeichen ...]"
|
? result[..MaxToolResultChars] + $"\n\n[... gekürzt, {result.Length - MaxToolResultChars} weitere Zeichen ...]"
|
||||||
|
|||||||
@@ -370,7 +370,7 @@ Für welche Plattform soll die App entwickelt werden? Web, Mobile oder Desktop?
|
|||||||
dict.TryGetValue("role", out var role) && role.ToString() == "user" &&
|
dict.TryGetValue("role", out var role) && role.ToString() == "user" &&
|
||||||
dict.TryGetValue("content", out var existingContent) && existingContent is List<object> contentList)
|
dict.TryGetValue("content", out var existingContent) && existingContent is List<object> contentList)
|
||||||
{
|
{
|
||||||
contentList.Add(new { type = "tool_result", tool_use_id = msg.ToolCallId, content = msg.Content ?? "", is_error = msg.IsError });
|
contentList.Add(new { type = "tool_result", tool_use_id = msg.ToolCallId, content = AnthropicService.TruncateToolResult(msg.Content ?? ""), is_error = msg.IsError });
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
@@ -379,7 +379,7 @@ Für welche Plattform soll die App entwickelt werden? Web, Mobile oder Desktop?
|
|||||||
["role"] = "user",
|
["role"] = "user",
|
||||||
["content"] = new List<object>
|
["content"] = new List<object>
|
||||||
{
|
{
|
||||||
new { type = "tool_result", tool_use_id = msg.ToolCallId, content = msg.Content ?? "", is_error = msg.IsError }
|
new { type = "tool_result", tool_use_id = msg.ToolCallId, content = AnthropicService.TruncateToolResult(msg.Content ?? ""), is_error = msg.IsError }
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -23,7 +23,7 @@
|
|||||||
- [x] Größere Tasks brechen irgendwann ab, könnte an der Limitierung von Antrophic/Claude liegen. Jedoch sollte wird es scheinbar nicht behandelt: Der Status bleibt auf "Streaming..." aber es passiert nichts mehr
|
- [x] Größere Tasks brechen irgendwann ab, könnte an der Limitierung von Antrophic/Claude liegen. Jedoch sollte wird es scheinbar nicht behandelt: Der Status bleibt auf "Streaming..." aber es passiert nichts mehr
|
||||||
- [x] Session -> Chat öffnen im Frontend soll nicht möglich sein, wenn kein Agent gesetzt ist
|
- [x] Session -> Chat öffnen im Frontend soll nicht möglich sein, wenn kein Agent gesetzt ist
|
||||||
- [x] Falsche Nachrichtenanzahl im Dashboard (tool uses werden fälschicherweise mitgezählt) - dasselbe bei "Ältere Nachrichten laden" im Chat
|
- [x] Falsche Nachrichtenanzahl im Dashboard (tool uses werden fälschicherweise mitgezählt) - dasselbe bei "Ältere Nachrichten laden" im Chat
|
||||||
- [ ] Beim Benutzen vom Tool "todo_write": beim streamen ist der text abgeschnitten (limitiert), nach dem poll (history laden) passt es wieder. es soll beim stream auch vollständig angezeigt werden und nicht mit "..." enden
|
- [x] Beim Benutzen vom Tool "todo_write": beim streamen ist der text abgeschnitten (limitiert), nach dem poll (history laden) passt es wieder. es soll beim stream auch vollständig angezeigt werden und nicht mit "..." enden
|
||||||
- [ ] Manchmal passiert es wenn ein Agent die Memory-Funktion hat, dass er sich selbst Memories einträgt - das ist auch ok so, aber, manchmal werden "dumme" erinnerungen gesetzt, die nur session-bezogen sind (und nicht agent-bezogen) und diese sind dann fast immer einfach nur copy&paste aus dem session system-prompt. Woran kann das liegen bzw. wie kann man das optimieren?
|
- [ ] Manchmal passiert es wenn ein Agent die Memory-Funktion hat, dass er sich selbst Memories einträgt - das ist auch ok so, aber, manchmal werden "dumme" erinnerungen gesetzt, die nur session-bezogen sind (und nicht agent-bezogen) und diese sind dann fast immer einfach nur copy&paste aus dem session system-prompt. Woran kann das liegen bzw. wie kann man das optimieren?
|
||||||
|
|
||||||
## Backend
|
## Backend
|
||||||
|
|||||||
Reference in new issue
Block a user