diff --git a/backend/open_webui/tools/builtin.py b/backend/open_webui/tools/builtin.py index 2b28f46846..29000b5d30 100644 --- a/backend/open_webui/tools/builtin.py +++ b/backend/open_webui/tools/builtin.py @@ -2909,7 +2909,8 @@ async def view_file( return JSONCodec.dumps(result, ensure_ascii=False) sliced = content[offset : offset + max_chars] - is_truncated = (offset + len(sliced)) < total_chars + returned_chars = len(sliced) + is_truncated = (offset + returned_chars) < total_chars if line_numbers: start_ln = content[:offset].count('\n') + 1 @@ -2927,10 +2928,10 @@ async def view_file( if is_truncated or offset > 0: result['truncated'] = is_truncated result['total_chars'] = total_chars - result['returned_chars'] = len(sliced) + result['returned_chars'] = returned_chars result['offset'] = offset if is_truncated: - result['next_offset'] = offset + len(sliced) + result['next_offset'] = offset + returned_chars return JSONCodec.dumps(result, ensure_ascii=False) except Exception as e: @@ -3052,7 +3053,8 @@ async def view_knowledge_file( return JSONCodec.dumps(result, ensure_ascii=False) sliced = content[offset : offset + max_chars] - is_truncated = (offset + len(sliced)) < total_chars + returned_chars = len(sliced) + is_truncated = (offset + returned_chars) < total_chars if line_numbers: start_ln = content[:offset].count('\n') + 1 @@ -3073,10 +3075,10 @@ async def view_knowledge_file( if is_truncated or offset > 0: result['truncated'] = is_truncated result['total_chars'] = total_chars - result['returned_chars'] = len(sliced) + result['returned_chars'] = returned_chars result['offset'] = offset if is_truncated: - result['next_offset'] = offset + len(sliced) + result['next_offset'] = offset + returned_chars return JSONCodec.dumps(result, ensure_ascii=False) except Exception as e: